Re: BUG #12259: Bug in restore Serial definition - Mailing list pgsql-bugs

From Tom Lane
Subject Re: BUG #12259: Bug in restore Serial definition
Date
Msg-id 4094.1418838383@sss.pgh.pa.us
Whole thread Raw
In response to BUG #12259: Bug in restore Serial definition  (fcs1@poczta.onet.pl)
List pgsql-bugs
fcs1@poczta.onet.pl writes:
> I have two schemas: public and blob01.
> In blob01 schema I have only one table "blob" with primary index ID defined
> as
> nextval('blob01.osr_blob_id_seq'::regclass)

> After restoring by PG_restore the definition is changed to
> nextval('osr_blob_id_seq'::regclass), the schema definition is dropped.
> Due to this the sequence is not accessible because it is in blob01 schema,
> not in public schema.

This report doesn't prove there's anything wrong.  A regclass constant is
not ordinarily displayed with a schema unless the target object wouldn't
be found in the current search path.  For example:


regression=# create schema blob01;
CREATE SCHEMA
regression=# create sequence blob01.osr_blob_id_seq;
CREATE SEQUENCE
regression=# create table blob01.blob(f1 int default nextval('blob01.osr_blob_id_seq'));
CREATE TABLE
regression=# \d blob01.blob
                          Table "blob01.blob"
 Column |  Type   |                      Modifiers
--------+---------+-----------------------------------------------------
 f1     | integer | default nextval('blob01.osr_blob_id_seq'::regclass)

regression=# set search_path = blob01;
SET
regression=# \d blob01.blob
                       Table "blob01.blob"
 Column |  Type   |                  Modifiers
--------+---------+----------------------------------------------
 f1     | integer | default nextval('osr_blob_id_seq'::regclass)


When I pg_dump this, I get output like


SET search_path = blob01, pg_catalog;

--
-- Name: osr_blob_id_seq; Type: SEQUENCE; Schema: blob01; Owner: postgres
--

CREATE SEQUENCE osr_blob_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER TABLE osr_blob_id_seq OWNER TO postgres;

--
-- Name: blob; Type: TABLE; Schema: blob01; Owner: postgres; Tablespace:
--

CREATE TABLE blob (
    f1 integer DEFAULT nextval('osr_blob_id_seq'::regclass)
);

ALTER TABLE blob OWNER TO postgres;


which will work just fine because of the search_path setting.

There may indeed be some bug in this vicinity, but you'll need to provide
a complete self-contained test case to prove it.

            regards, tom lane

pgsql-bugs by date:

Previous
From: David G Johnston
Date:
Subject: Re: BUG #12257: Cause for: Exception 0xC0000005
Next
From: Mark Kirkwood
Date:
Subject: Re: BUG #12258: run php file