RE: In-placre persistance change of a relation - Mailing list pgsql-hackers
From | Jakub Wartak |
---|---|
Subject | RE: In-placre persistance change of a relation |
Date | |
Msg-id | AM8PR07MB8248A16331D6C8E34234B786F67B9@AM8PR07MB8248.eurprd07.prod.outlook.com Whole thread Raw |
In response to | Re: In-placre persistance change of a relation (Kyotaro Horiguchi <horikyota.ntt@gmail.com>) |
Responses |
Re: In-placre persistance change of a relation
|
List | pgsql-hackers |
Hi Kyotaro, > At Mon, 20 Dec 2021 17:39:27 +0900 (JST), Kyotaro Horiguchi > <horikyota.ntt@gmail.com> wrote in > > At Mon, 20 Dec 2021 07:59:29 +0000, Jakub Wartak > > <Jakub.Wartak@tomtom.com> wrote in > > > BTW fast feedback regarding that ALTER patch (there were 4 unlogged > tables): > > > # ALTER TABLE ALL IN TABLESPACE tbs1 set logged; > > > WARNING: unrecognized node type: 349 > > > > lol I met a server crash. Will fix. Thanks! > > That crash vanished after a recompilation for me and I don't see that error. On > my dev env node# 349 is T_ALterTableSetLoggedAllStmt, which > 0002 adds. So perhaps make clean/make all would fix that. The fastest I could - I've repeated the whole cycle about that one with fresh v9 (make clean, configure, make install, freshinitdb) and I've found two problems: 1) check-worlds seems OK but make -C src/test/recovery check shows a couple of failing tests here locally and in https://cirrus-ci.com/task/4699985735319552?logs=test#L807: t/009_twophase.pl (Wstat: 256 Tests: 24 Failed: 1) Failed test: 21 Non-zero exit status: 1 t/014_unlogged_reinit.pl (Wstat: 512 Tests: 12 Failed: 2) Failed tests: 9-10 Non-zero exit status: 2 t/018_wal_optimize.pl (Wstat: 7424 Tests: 0 Failed: 0) Non-zero exit status: 29 Parse errors: Bad plan. You planned 38 tests but ran 0. t/022_crash_temp_files.pl (Wstat: 7424 Tests: 6 Failed: 0) Non-zero exit status: 29 Parse errors: Bad plan. You planned 9 tests but ran 6. 018 made no sense, I've tried to take a quick look with wal_level=minimal why it is failing , it is mystery to me as thesequence seems to be pretty basic but the outcome is not: ~> cat repro.sql create tablespace tbs1 location '/tbs1'; CREATE TABLE moved (id int); INSERT INTO moved VALUES (1); BEGIN; ALTER TABLE moved SET TABLESPACE tbs1; CREATE TABLE originated (id int); INSERT INTO originated VALUES (1); CREATE UNIQUE INDEX ON originated(id) TABLESPACE tbs1; COMMIT; ~> psql -f repro.sql z3; sleep 1; /usr/pgsql-15/bin/pg_ctl -D /var/lib/pgsql/15/data -l logfile -m immediate stop CREATE TABLESPACE CREATE TABLE INSERT 0 1 BEGIN ALTER TABLE CREATE TABLE INSERT 0 1 CREATE INDEX COMMIT waiting for server to shut down.... done server stopped ~> /usr/pgsql-15/bin/pg_ctl -D /var/lib/pgsql/15/data -l logfile start waiting for server to start.... done server started z3# select * from moved; ERROR: could not open file "pg_tblspc/32834/PG_15_202112131/32833/32838": No such file or directory z3=# select * from originated; ERROR: could not open file "base/32833/32839": No such file or directory z3=# \dt+ List of relations Schema | Name | Type | Owner | Persistence | Size | Description --------+------------+-------+----------+-------------+---------+------------- public | moved | table | postgres | permanent | 0 bytes | public | originated | table | postgres | permanent | 0 bytes | This happens even without placing on tablespace at all {for originated table , but no for moved on}, some major mishap isthere (commit should guarantee correctness) or I'm tired and having sloppy fingers. 2) minor one testcase, still something is odd. drop tablespace tbs1; create tablespace tbs1 location '/tbs1'; CREATE UNLOGGED TABLE t4 (a int) tablespace tbs1; CREATE UNLOGGED TABLE t5 (a int) tablespace tbs1; CREATE UNLOGGED TABLE t6 (a int) tablespace tbs1; CREATE TABLE t7 (a int) tablespace tbs1; insert into t7 values (1); insert into t5 values (1); insert into t6 values (1); \dt+ List of relations Schema | Name | Type | Owner | Persistence | Size | Description --------+------+-------+----------+-------------+------------+------------- public | t4 | table | postgres | unlogged | 0 bytes | public | t5 | table | postgres | unlogged | 8192 bytes | public | t6 | table | postgres | unlogged | 8192 bytes | public | t7 | table | postgres | permanent | 8192 bytes | (4 rows) ALTER TABLE ALL IN TABLESPACE tbs1 set logged; ==> STILL WARNING: unrecognized node type: 349 \dt+ List of relations Schema | Name | Type | Owner | Persistence | Size | Description --------+------+-------+----------+-------------+------------+------------- public | t4 | table | postgres | permanent | 0 bytes | public | t5 | table | postgres | permanent | 8192 bytes | public | t6 | table | postgres | permanent | 8192 bytes | public | t7 | table | postgres | permanent | 8192 bytes | So it did rewrite however this warning seems to be unfixed. I've tested on e2c52beecdea152ca680a22ef35c6a7da55aa30f. -J.
pgsql-hackers by date: