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