Re: [Proposal] Fully WAL logged CREATE DATABASE - No Checkpoints

From: Neha Sharma <neha(dot)sharma(at)enterprisedb(dot)com>
To: Ashutosh Sharma <ashu(dot)coek88(at)gmail(dot)com>, Dilip Kumar <dilipbalaut(at)gmail(dot)com>
Cc: Greg Nancarrow <gregn4422(at)gmail(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: [Proposal] Fully WAL logged CREATE DATABASE - No Checkpoints
Date: 2021-12-09 13:53:17
Message-ID: CANiYTQvg4G5LTXtLc2DuL886DG9r3DckoZ8Bstq0ExBMB2cycA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Thu, Dec 9, 2021 at 11:12 AM Ashutosh Sharma <ashu(dot)coek88(at)gmail(dot)com>
wrote:

> Hi,
>
> The issue here is that we are trying to create a table that exists inside
> a non-default tablespace when doing ALTER DATABASE. I think this should be
> skipped otherwise we will come across the error like shown below:
>
> ashu(at)postgres=# alter database test set tablespace pg_default;
> ERROR: 58P02: could not create file
> "pg_tblspc/16385/PG_15_202111301/16386/16390": File exists
>

Thanks Ashutosh for the patch, the mentioned issue has been resolved with
the patch.

But I am still able to reproduce the crash consistently on top of this
patch + v7 patches,just the test case has been modified.

create tablespace tab1 location '<dir_path>/test1';
create tablespace tab location '<dir_path>/test';
create database test tablespace tab;
\c test
create table t( a int PRIMARY KEY,b text);
CREATE OR REPLACE FUNCTION large_val() RETURNS TEXT LANGUAGE SQL AS 'select
array_agg(md5(g::text))::text from generate_series(1, 256) g';
insert into t values (generate_series(1,100000), large_val());
alter table t set tablespace tab1 ;
\c postgres
create database test1 template test;
\c test1
alter table t set tablespace tab;
\c postgres
alter database test1 set tablespace tab1;

--Cancel the below command after few seconds
alter database test1 set tablespace pg_default;

\c test1
alter table t set tablespace tab1;

Logfile Snippet:
2021-12-09 17:49:18.110 +04 [18151] PANIC: could not fsync file
"base/116398/116400": No such file or directory
2021-12-09 17:49:19.105 +04 [18150] LOG: checkpointer process (PID 18151)
was terminated by signal 6: Aborted
2021-12-09 17:49:19.105 +04 [18150] LOG: terminating any other active
server processes

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Laurent Laborde 2021-12-09 14:00:24 Re: Appetite for Frama-C annotations?
Previous Message Tom Lane 2021-12-09 13:35:41 Re: The "char" type versus non-ASCII characters