Errors creating partitioned tables from existing using (LIKE <table>) after renaming table constraints

From: Stuart <sfbarbee(at)gmail(dot)com>
To: pgsql-bugs(at)postgresql(dot)org
Subject: Errors creating partitioned tables from existing using (LIKE <table>) after renaming table constraints
Date: 2018-12-12 20:00:22
Message-ID: 2047094.V130LYfLq4@station53.ousa.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Dear team,

I am using PostGreSQL 11.1, I compiled from source on openSuSE Tumbleweed.
ousa_new=# SELECT version() ; version ---------------------------------------------------------------------------------------------------------------------------- PostgreSQL 11.1 on x86_64-pc-linux-gnu, compiled by gcc (SUSE Linux) 8.2.1 20181025 [gcc-8-branch revision 265488], 64-bit

I imported a table definition from another database using:

pg_dump -d ousa -t knowledge_vectors -s | psql ousa_new

The table inherits from a hierarchy and I imported those parent tables first. I want to test partitioning so in the new db, I renamed the table and all its indexes and constraints so I can create a new table partitioned table based on this design using (like <table>).

ousa_new=# \d+ knowledge_vectors_old
Table "public.knowledge_vectors_old"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
---------------+-----------------------------+-----------+----------+--------------------------------+----------+--------------+-------------
entry_date | timestamp(3) with time zone | | not null | now() | plain | |
revision_date | timestamp(3) with time zone | | | NULL::timestamp with time zone | plain | |
entered_by | text | | not null | "current_user"() | extended | |
revised_by | text | | | ''::text | extended | |
source_id | bigint | | | | plain | |
object_id | bigint | | not null | | plain | |
description | text | | | ''::text | extended | |
vectors | tsvector | | not null | | extended | |
Indexes:
"knowledgevectorsold_pk" PRIMARY KEY, btree (object_id), tablespace "pgindex"
"knowledgevectorsold_vector_idx" gin (vectors), tablespace "pgindex"
Check constraints:
"knowledgevectors_vectors_ck" CHECK (vectors <> ''::tsvector)
Foreign-key constraints:
"knowledgevectorsold_objectid_fk" FOREIGN KEY (object_id) REFERENCES knowledge(object_id)
Triggers:
knowledgevectors_revision_tr BEFORE UPDATE ON knowledge_vectors_old FOR EACH ROW EXECUTE PROCEDURE revised()
Inherits: ousa_objects

ousa_new=# alter table knowledge_vectors_old rename constraint knowledgevectors_vectors_ck to knowledgevectorsold_vectors_ck ;
ALTER TABLE

ousa_new=# \d+ knowledge_vectors_old
Table "public.knowledge_vectors_old"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
---------------+-----------------------------+-----------+----------+--------------------------------+----------+--------------+-------------
entry_date | timestamp(3) with time zone | | not null | now() | plain | |
revision_date | timestamp(3) with time zone | | | NULL::timestamp with time zone | plain | |
entered_by | text | | not null | "current_user"() | extended | |
revised_by | text | | | ''::text | extended | |
source_id | bigint | | | | plain | |
object_id | bigint | | not null | | plain | |
description | text | | | ''::text | extended | |
vectors | tsvector | | not null | | extended | |
Indexes:
"knowledgevectorsold_pk" PRIMARY KEY, btree (object_id), tablespace "pgindex"
"knowledgevectorsold_vector_idx" gin (vectors), tablespace "pgindex"
Check constraints:
"knowledgevectorsold_vectors_ck" CHECK (vectors <> ''::tsvector)
Foreign-key constraints:
"knowledgevectorsold_objectid_fk" FOREIGN KEY (object_id) REFERENCES knowledge(object_id)
Triggers:
knowledgevectors_revision_tr BEFORE UPDATE ON knowledge_vectors_old FOR EACH ROW EXECUTE PROCEDURE revised()
Inherits: ousa_objects

On my attempt to create the new partitioned table using like, I get error that the constraint by the old name doesn't exist:

ousa_new=# create table knowledge_vectors (like knowledge_vectors_old INCLUDING ALL ) PARTITION BY RANGE ( object_id ) ;
ERROR: constraint "knowledgevectors_vectors_ck" for table "knowledge_vectors_old" does not exist

Only after I dropped the new constraint and recreated it, did the create table (like <table>) work.

Ousa_new=# alter table knowledge_vectors_old drop constraint knowledgevectorsold_vectors_ck ;
ALTER TABLE

ousa_new=# alter table knowledge_vectors_old add constraint knowledgevectorsold_vectors_ck CHECK (vectors <> ''::tsvector) ;
ALTER TABLE

ousa_new=# \d+ knowledge_vectors_old
Table "public.knowledge_vectors_old"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
---------------+-----------------------------+-----------+----------+--------------------------------+----------+--------------+-------------
entry_date | timestamp(3) with time zone | | not null | now() | plain | |
revision_date | timestamp(3) with time zone | | | NULL::timestamp with time zone | plain | |
entered_by | text | | not null | "current_user"() | extended | |
revised_by | text | | | ''::text | extended | |
source_id | bigint | | | | plain | |
object_id | bigint | | not null | | plain | |
description | text | | | ''::text | extended | |
vectors | tsvector | | not null | | extended | |
Indexes:
"knowledgevectorsold_pk" PRIMARY KEY, btree (object_id), tablespace "pgindex"
"knowledgevectorsold_vector_idx" gin (vectors), tablespace "pgindex"
Check constraints:
"knowledgevectorsold_vectors_ck" CHECK (vectors <> ''::tsvector)
Foreign-key constraints:
"knowledgevectorsold_objectid_fk" FOREIGN KEY (object_id) REFERENCES knowledge(object_id)
Triggers:
knowledgevectors_revision_tr BEFORE UPDATE ON knowledge_vectors_old FOR EACH ROW EXECUTE PROCEDURE revised()
Inherits: ousa_objects

ousa_new=# create table knowledge_vectors (like knowledge_vectors_old INCLUDING ALL ) PARTITION BY RANGE ( object_id ) ;
CREATE TABLE

ousa_new=# \d+ knowledge_vectors
Table "public.knowledge_vectors"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
---------------+-----------------------------+-----------+----------+--------------------------------+----------+--------------+-------------
entry_date | timestamp(3) with time zone | | not null | now() | plain | |
revision_date | timestamp(3) with time zone | | | NULL::timestamp with time zone | plain | |
entered_by | text | | not null | "current_user"() | extended | |
revised_by | text | | | ''::text | extended | |
source_id | bigint | | | | plain | |
object_id | bigint | | not null | | plain | |
description | text | | | ''::text | extended | |
vectors | tsvector | | not null | | extended | |
Partition key: RANGE (object_id)
Indexes:
"knowledge_vectors_pkey" PRIMARY KEY, btree (object_id), tablespace "pgindex"
"knowledge_vectors_vectors_idx" gin (vectors), tablespace "pgindex"
Check constraints:
"knowledgevectorsold_vectors_ck" CHECK (vectors <> ''::tsvector)
Number of partitions: 0

The original table is:

ousa# \d+ knowledge_vectors
Table "public.knowledge_vectors"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
---------------+-----------------------------+-----------+----------+--------------------------------+----------+--------------+-------------
entry_date | timestamp(3) with time zone | | not null | now() | plain | |
revision_date | timestamp(3) with time zone | | | NULL::timestamp with time zone | plain | |
entered_by | text | | not null | "current_user"() | extended | |
revised_by | text | | | ''::text | extended | |
source_id | bigint | | | | plain | |
object_id | bigint | | not null | | plain | |
description | text | | | ''::text | extended | |
vectors | tsvector | | not null | | extended | |
Indexes:
"knowledgevectors_pk" PRIMARY KEY, btree (object_id), tablespace "pgindex"
"knowledgevectors_vector_idx" gin (vectors), tablespace "pgindex"
Check constraints:
"knowledgevectors_vectors_ck" CHECK (vectors <> ''::tsvector)
Triggers:
knowledgevectors_revision_tr BEFORE UPDATE ON knowledge_vectors FOR EACH ROW EXECUTE PROCEDURE revised()
Inherits: ousa_objects

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message PG Bug reporting form 2018-12-12 20:00:45 BUG #15548: Unaccent does not remove combining diacritical characters
Previous Message Tom Lane 2018-12-12 17:53:58 Re: segmentation fault with simple UPDATE statement (postgres 10.5)