BUG #17008: pg_dump doesn't dump a sequence with bigint type

Started by PG Bug reporting formalmost 5 years ago9 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 17008
Logged by: Jaime Acevedo
Email address: jacevedo@we-techs.com
PostgreSQL version: 12.6
Operating system: ubuntu 20.04
Description:

I'm using pg_dump to dump my database version 12.5 (RDS), pg_dump version
12.6 but I have a the following table

CREATE TABLE public.projects_historydata
(
id bigint NOT NULL DEFAULT
nextval('projects_historydata_id_seq'::regclass),
value double precision NOT NULL,
value_at timestamp with time zone NOT NULL,
var_id integer NOT NULL,
created timestamp with time zone NOT NULL,
CONSTRAINT projects_historydata_pkey PRIMARY KEY (id),
CONSTRAINT projects_historydata_var_id_21f99477_fk_projects_var_id
FOREIGN KEY (var_id)
REFERENCES public.projects_var (id) MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION
DEFERRABLE INITIALLY DEFERRED
)

WITH (
autovacuum_enabled = TRUE
)
TABLESPACE pg_default;

ALTER TABLE public.projects_historydata
OWNER to wedbmaster;

GRANT SELECT ON TABLE public.projects_historydata TO read_only_user;

GRANT SELECT ON TABLE public.projects_historydata TO readaccess;

GRANT ALL ON TABLE public.projects_historydata TO wedbmaster;
-- Index: projects_historydata_db9d0193

-- DROP INDEX public.projects_historydata_db9d0193;

CREATE INDEX projects_historydata_db9d0193
ON public.projects_historydata USING btree
(var_id ASC NULLS LAST)
TABLESPACE pg_default;
-- Index: projects_historydata_var_id_value_at_idx

-- DROP INDEX public.projects_historydata_var_id_value_at_idx;

CREATE INDEX projects_historydata_var_id_value_at_idx
ON public.projects_historydata USING btree
(var_id ASC NULLS LAST, value_at ASC NULLS LAST)
TABLESPACE pg_default;

-- Trigger: after_insert_projects_historydata_trigger

-- DROP TRIGGER after_insert_projects_historydata_trigger ON
public.projects_historydata;

CREATE TRIGGER after_insert_projects_historydata_trigger
AFTER INSERT
ON public.projects_historydata
FOR EACH ROW
EXECUTE FUNCTION public.projects_historydata_delete_master();

-- Trigger: before_insert_projects_historydata_trigger

-- DROP TRIGGER before_insert_projects_historydata_trigger ON
public.projects_historydata;

CREATE TRIGGER before_insert_projects_historydata_trigger
BEFORE INSERT
ON public.projects_historydata
FOR EACH ROW
EXECUTE FUNCTION public.projects_historydata_insert_child();

this table make references to the sequence projects_historydata_id_seq
-- SEQUENCE: public.projects_project_id_seq

-- DROP SEQUENCE public.projects_project_id_seq;

CREATE SEQUENCE public.projects_project_id_seq
INCREMENT 1
START 1
MINVALUE 1
MAXVALUE 9223372036854775807
CACHE 1;

ALTER SEQUENCE public.projects_project_id_seq
OWNER TO wedbmaster;

GRANT SELECT ON SEQUENCE public.projects_project_id_seq TO read_only_user;

GRANT ALL ON SEQUENCE public.projects_project_id_seq TO wedbmaster;

At the moment to do a pg_dump the pg_dump doesn't make the script for the
sequence, then the restore fail to create the table.

Please see that the id value for the table (the value handle by the
sequences is not an integer is biginteger)

Regards,
Jaime Acevedo E.

#2David G. Johnston
david.g.johnston@gmail.com
In reply to: PG Bug reporting form (#1)
Re: BUG #17008: pg_dump doesn't dump a sequence with bigint type

On Thu, May 13, 2021 at 9:04 AM PG Bug reporting form <
noreply@postgresql.org> wrote:

The following bug has been logged on the website:

Bug reference: 17008
Logged by: Jaime Acevedo
Email address: jacevedo@we-techs.com
PostgreSQL version: 12.6
Operating system: ubuntu 20.04
Description:

I'm using pg_dump to dump my database version 12.5 (RDS), pg_dump version
12.6 but I have a the following table

CREATE TABLE public.projects_historydata
(
id bigint NOT NULL DEFAULT
nextval('projects_historydata_id_seq'::regclass),
[...]
this table make references to the sequence projects_historydata_id_seq
-- SEQUENCE: public.projects_project_id_seq

-- DROP SEQUENCE public.projects_project_id_seq;

CREATE SEQUENCE public.projects_project_id_seq
INCREMENT 1
START 1
MINVALUE 1
MAXVALUE 9223372036854775807
CACHE 1;
[...]

At the moment to do a pg_dump the pg_dump doesn't make the script for the
sequence, then the restore fail to create the table.

Please see that the id value for the table (the value handle by the
sequences is not an integer is biginteger)

I'm confused regarding the complaint. I see that the sequence used by the
history table is different from the single sequence shown in the email. Is
the script in the email the entire dump script? What dump command did you
use?

The sequence you show is a bigint sequence since that is the default and
there is nothing overriding it. Though since you seem to be showing
mis-matched information that observation is only a general one.

David J.

#3Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: PG Bug reporting form (#1)
Re: BUG #17008: pg_dump doesn't dump a sequence with bigint type

On 2021-May-13, PG Bug reporting form wrote:

I'm using pg_dump to dump my database version 12.5 (RDS), pg_dump version
12.6 but I have a the following table

CREATE TABLE public.projects_historydata
(
id bigint NOT NULL DEFAULT
nextval('projects_historydata_id_seq'::regclass),
value double precision NOT NULL,
value_at timestamp with time zone NOT NULL,
var_id integer NOT NULL,
created timestamp with time zone NOT NULL,
CONSTRAINT projects_historydata_pkey PRIMARY KEY (id),
CONSTRAINT projects_historydata_var_id_21f99477_fk_projects_var_id
FOREIGN KEY (var_id)
REFERENCES public.projects_var (id) MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION
DEFERRABLE INITIALLY DEFERRED
)

WITH (
autovacuum_enabled = TRUE
)
TABLESPACE pg_default;

Hello Jaime

How did you get this table definition?

I suggest to run this:
ALTER SEQUENCE projects_historydata_id_seq OWNED BY public.projects_historydata.id
and then things will work better.

Cheers

--
�lvaro Herrera Valdivia, Chile

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alvaro Herrera (#3)
Re: BUG #17008: pg_dump doesn't dump a sequence with bigint type

Alvaro Herrera <alvherre@alvh.no-ip.org> writes:

On 2021-May-13, PG Bug reporting form wrote:

I'm using pg_dump to dump my database version 12.5 (RDS), pg_dump version
12.6 but I have a the following table

How did you get this table definition?

Indeed. It seems unlikely to me that this is pg_dump's fault;
I think it's just reporting the way things are in the source
database. If projects_historydata_id_seq is the wrong width,
that's probably because it was manually created that way and
then manually attached to projects_historydata.id.

I suggest to run this:
ALTER SEQUENCE projects_historydata_id_seq OWNED BY public.projects_historydata.id
and then things will work better.

This won't in itself fix the sequence's width; you'd need
to do some additional ALTERs if that's wrong.

regards, tom lane

#5Jaime Acevedo
jacevedo@we-techs.com
In reply to: Tom Lane (#4)
Re: BUG #17008: pg_dump doesn't dump a sequence with bigint type

Sorry, I made a mistake at the moment to copy & paste the sequences.

But this finally the problems was the filter to do dump, when I use
--exclude-table option with pattern projects_historydata_* for some reason
the sequences was excluded finally I used the pattern
projects_historydata_[0-9]* to exclude only the tables that I want to
exclude.

I don´t know if that behavior is right.

Regards,
Jaime Acevedo E.

El jue, 13 may 2021 a las 14:11, Tom Lane (<tgl@sss.pgh.pa.us>) escribió:

Show quoted text

Alvaro Herrera <alvherre@alvh.no-ip.org> writes:

On 2021-May-13, PG Bug reporting form wrote:

I'm using pg_dump to dump my database version 12.5 (RDS), pg_dump

version

12.6 but I have a the following table

How did you get this table definition?

Indeed. It seems unlikely to me that this is pg_dump's fault;
I think it's just reporting the way things are in the source
database. If projects_historydata_id_seq is the wrong width,
that's probably because it was manually created that way and
then manually attached to projects_historydata.id.

I suggest to run this:
ALTER SEQUENCE projects_historydata_id_seq OWNED BY

public.projects_historydata.id

and then things will work better.

This won't in itself fix the sequence's width; you'd need
to do some additional ALTERs if that's wrong.

regards, tom lane

#6Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Tom Lane (#4)
Re: BUG #17008: pg_dump doesn't dump a sequence with bigint type

On 2021-May-13, Tom Lane wrote:

Alvaro Herrera <alvherre@alvh.no-ip.org> writes:

I suggest to run this:
ALTER SEQUENCE projects_historydata_id_seq OWNED BY public.projects_historydata.id
and then things will work better.

This won't in itself fix the sequence's width; you'd need
to do some additional ALTERs if that's wrong.

True.

What I'm thinking is that Jaime misunderstood what the actual problem
is; note that he posted the CREATE SEQUENCE statement for an unrelated
sequence, and didn't post any statement for the correct one. He thinks
the problem is related to the sequence being bigint, but I doubt it
really is.

--
�lvaro Herrera Valdivia, Chile
"No tengo por qu� estar de acuerdo con lo que pienso"
(Carlos Caszeli)

#7Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Jaime Acevedo (#5)
Re: BUG #17008: pg_dump doesn't dump a sequence with bigint type

On 2021-May-13, Jaime Acevedo wrote:

Sorry, I made a mistake at the moment to copy & paste the sequences.

But this finally the problems was the filter to do dump, when I use
--exclude-table option with pattern projects_historydata_* for some reason
the sequences was excluded finally I used the pattern
projects_historydata_[0-9]* to exclude only the tables that I want to
exclude.

Ah, that makes sense.

I don�t know if that behavior is right.

Hmm, I think --exclude-tables should exclude tables only, not sequences.
And it does behave like that for me, in a quick test with version 10.
What version of Postgres are you using?

--
�lvaro Herrera 39�49'30"S 73�17'W
"Estoy de acuerdo contigo en que la verdad absoluta no existe...
El problema es que la mentira s� existe y tu est�s mintiendo" (G. Lama)

#8Tom Lane
tgl@sss.pgh.pa.us
In reply to: Alvaro Herrera (#7)
Re: BUG #17008: pg_dump doesn't dump a sequence with bigint type

Alvaro Herrera <alvherre@alvh.no-ip.org> writes:

Hmm, I think --exclude-tables should exclude tables only, not sequences.
And it does behave like that for me, in a quick test with version 10.

Probably your original thought is right: the sequence isn't properly owned
by the table column, so it doesn't get dumped in a selective dump.

regards, tom lane

#9Jaime Acevedo
jacevedo@we-techs.com
In reply to: Tom Lane (#8)
Re: BUG #17008: pg_dump doesn't dump a sequence with bigint type

Ok, thanks.

El jue, 13 may 2021 a las 14:34, Tom Lane (<tgl@sss.pgh.pa.us>) escribió:

Show quoted text

Alvaro Herrera <alvherre@alvh.no-ip.org> writes:

Hmm, I think --exclude-tables should exclude tables only, not sequences.
And it does behave like that for me, in a quick test with version 10.

Probably your original thought is right: the sequence isn't properly owned
by the table column, so it doesn't get dumped in a selective dump.

regards, tom lane