From: | Sindhu S <sindhusanti(at)gmail(dot)com> |
---|---|
To: | Zaid Shabbir <zaidshabbir(at)gmail(dot)com> |
Cc: | pgsql-bugs(at)lists(dot)postgresql(dot)org |
Subject: | Re: Report Postgres Bug - Unlogged table sequence |
Date: | 2024-08-20 03:37:18 |
Message-ID: | CALRZP9h+gY8eGusTCjAjFw4_sFntp5DeHy5jMYmC=tL8wvKdtg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
Hi Zaid,
I had the same error while moving from 15.x to 16.3 in RDS database.
This change in latest 15 and 16 release could be the reason
Make ALTER TABLE ... ADD COLUMN create identity/serial sequences with the
same persistence as their owning tables (Peter Eisentraut)
In local, I tried from 13.15 to 15.7
Here are my commands,
./initdb --locale=C -E UTF-8 $HOMEBREW_PREFIX/var/postgresql(at)13
./pg_ctl -D '/opt/homebrew/var/postgresql(at)13' -l logfile start
psql -h localhost -p 5432 -d postgres
CREATE UNLOGGED TABLE IF NOT EXISTS queue_context
(
queue_name character varying(255) COLLATE pg_catalog."default" NOT
NULL,
correlation_id character varying(32) COLLATE pg_catalog."default" NOT
NULL,
trace_id character varying(32) COLLATE pg_catalog."default" NOT NULL,
span_id character varying(16) COLLATE pg_catalog."default" NOT NULL,
enqueued_at timestamp without time zone NOT NULL,
id bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY ( INCREMENT 1
START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1 ),
item_uid uuid NOT NULL,
CONSTRAINT pk_queue_context PRIMARY KEY (id),
CONSTRAINT uk_queue_context_queue_name_item_uuid UNIQUE (queue_name,
item_uid)
);
./pg_ctl stop -D /opt/homebrew/var/postgresql(at)13 -m fast
cd /opt/homebrew/Cellar/postgresql(at)15/15.7/bin
./pg_upgrade --old-datadir /opt/homebrew/var/postgresql(at)13/ --new-datadir
/opt/homebrew/var/postgresql(at)15/ --old-bindir
/opt/homebrew/Cellar/postgresql(at)13/13.15/bin --new-bindir
/opt/homebrew/Cellar/postgresql(at)15/15.7/bin
*failure*
Consult the last few lines of
"/opt/homebrew/var/postgresql(at)15/pg_upgrade_output.d/20240801T072509.333/log/pg_upgrade_dump_13776.log"
for
the probable cause of the failure.
pg_restore: creating TABLE "public.queue_context"
pg_restore: creating SEQUENCE "public.queue_context_id_seq"
pg_restore: while PROCESSING TOC:
pg_restore: from TOC entry 200; 1259 16384 SEQUENCE queue_context_id_seq
sindhu.selvaraj
pg_restore: error: could not execute query: ERROR: unexpected request for
new relfilenode in binary upgrade mode
Command was:
-- For binary upgrade, must preserve pg_class oids and relfilenodes
SELECT
pg_catalog.binary_upgrade_set_next_heap_pg_class_oid('16384'::pg_catalog.oid);
SELECT
pg_catalog.binary_upgrade_set_next_heap_relfilenode('16384'::pg_catalog.oid);
ALTER TABLE "public"."queue_context" ALTER COLUMN "id" ADD GENERATED BY
DEFAULT AS IDENTITY (
SEQUENCE NAME "public"."queue_context_id_seq"
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1
);
ALTER SEQUENCE "public"."queue_context_id_seq" SET LOGGED;
Regards,
Sindhu
On Mon, 19 Aug 2024, 7:11 pm Zaid Shabbir, <zaidshabbir(at)gmail(dot)com> wrote:
> Hello Sindhu,
>
> Regarding the issue you reported for Unlogged table restore, do you also
> face a similar issue while performing pg_upgrade from 15.x to 16.x.
>
> Can you please explain your scenario like the older postgresql version you
> are using and complete the command for upgradation ?
>
> Thanks & Regards,
> Zaid
>
>
>
>
>
> On Mon, Aug 19, 2024 at 10:48 AM Sindhu S <sindhusanti(at)gmail(dot)com> wrote:
>
>>
>> In 15.7 and 16.3 Release Notes, I found a change to an unlogged table's
>> sequence.
>>
>> Make ALTER TABLE ... ADD COLUMN create identity/serial sequences with the
>> same persistence as their owning tables (Peter Eisentraut)
>>
>> CREATE UNLOGGED TABLE will make any owned sequences be unlogged too.
>> ALTER TABLE missed that consideration, so that an added identity column
>> would have a logged sequence, which seems pointless.
>>
>> Major version upgrade to 15.7 or 16.3 is failing on pg_restore step with
>> following error,
>>
>> pg_restore: creating TABLE "public.X"
>> pg_restore: creating SEQUENCE "public.X_id_seq"
>> pg_restore: while PROCESSING TOC:
>> pg_restore: from TOC entry 200; 1259 <NUMBER> SEQUENCE X_id_seq
>> sindhu.selvaraj
>> pg_restore: error: could not execute query: ERROR: unexpected request
>> for new relfilenode in binary upgrade mode
>> Command was:
>> -- For binary upgrade, must preserve pg_class oids and relfilenodes
>> SELECT
>> pg_catalog.binary_upgrade_set_next_heap_pg_class_oid('<NUMBER>'::pg_catalog.oid);
>> SELECT
>> pg_catalog.binary_upgrade_set_next_heap_relfilenode('<NUMBER>'::pg_catalog.oid);
>> ALTER TABLE "public"."X" ALTER COLUMN "id" ADD GENERATED BY DEFAULT AS
>> IDENTITY (
>> SEQUENCE NAME "public"."X_id_seq"
>> START WITH 1
>> INCREMENT BY 1
>> NO MINVALUE
>> NO MAXVALUE
>> CACHE 1
>> );
>> ALTER SEQUENCE "public"."X_id_seq" SET LOGGED;
>>
>> This has been spotted in local postgres installed in MAC as well as in
>> AWS RDS.
>> We had to change the unlogged table to logged and then upgrade.
>> I am reporting this as a bug. Please keep us updated.
>>
>> Regards,
>> Sindhu
>>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Eisentraut | 2024-08-20 09:00:21 | CREATE CAST allows creation of binary-coercible cast to range over domain |
Previous Message | Matthew Clark | 2024-08-20 00:45:30 | server crash on raspberry pi for large queries |