Re: BUG #12259: Bug in restore Serial definition

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: fcs1(at)poczta(dot)onet(dot)pl
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #12259: Bug in restore Serial definition
Date: 2014-12-17 17:46:23
Message-ID: 4094.1418838383@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

fcs1(at)poczta(dot)onet(dot)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

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Mark Kirkwood 2014-12-17 20:52:12 Re: BUG #12258: run php file
Previous Message David G Johnston 2014-12-17 16:21:57 Re: BUG #12257: Cause for: Exception 0xC0000005