From: Bram van der Vos <bram.van.der.vos@axisinto.nl>
To: pgsql-bugs@lists.postgresql.org
Subject: file corruption goes undetected
Date: Thu, 6 Aug 2026 16:11:21 +0200
Message-ID: <943a83bf-78d1-4231-a9de-c24740e09d7a@axisinto.nl> (raw)
*ISSUE*
External modified datafile not detected, no error given but result produced;
*REPRODUCTION*
script.sh
---
psql <<DO_CLEAN_1
drop database corruption;
DO_CLEAN_1
rm -rf /tmp/oscmd.sh
rm rf /tmp/output_1.txt
rm rf /tmp/output_2.txt
psql <<END_SCRIPT
\o '/tmp/output_1.txt'
select version();
create database corruption;
\c corruption
show data_checksums;
show ignore_checksum_failure;
create table demo ( a serial, t timestamp with time zone);
insert into demo (t) values (now());
select max(t) from demo;
select pg_relation_filepath('demo');
copy (select command || setting ||'/'||file
from (select * from (select 1 as my_order, 'rm -rf ' as command,
pg_relation_filepath('demo') as file
union all
select 2 as my_order , 'touch ' as command ,
pg_relation_filepath('demo') as file )
cross join (select setting from pg_settings where
name='data_directory')) order by my_order) to '/tmp/oscmd.sh';
END_SCRIPT
cat /tmp/output_1.txt
chmod 700 /tmp/oscmd.sh
/tmp/oscmd.sh
psql -d corruption <<END_SCRIPT_2
\o '/tmp/output_2.txt'
select max(t) from demo;
END_SCRIPT_2
cat /tmp/output_2.txt
---
*ETC*
Result in tmp/output_1.txt en tmp/output_2.txt. After file has been
removed and recreated with touch a NULL result is returned. The same
happens when the has been replaced with dd -if /dev/zero of=<file>
bs=1024 count=64000
When replacing file with bogus data (/dev/random) an error is being
returned. Result when the datafile is being nullified
side info: pg_backrest does recognise the file as not valid an replaces
is during restore
regards
Bram
--
vrijdags afwezig
LOGO <https://www.axisintoict.nl;
Bram van der Vos
bram.van.der.vos@axisinto.nl
06 127 27 547
Albert Schweitzerlaan 10b
3451 EC Vleuten
Twitter <https://twitter.com/AxisintoICT>Linkedin
<https://nl.linkedin.com/in/bramvandervos;
Attachments:
[image/png] LOGO.png (4.1K, ../943a83bf-78d1-4231-a9de-c24740e09d7a@axisinto.nl/3-LOGO.png)
download | view image
[image/png] TWITTER.png (966B, ../943a83bf-78d1-4231-a9de-c24740e09d7a@axisinto.nl/4-TWITTER.png)
download | view image
[image/png] LINKEDIN.png (951B, ../943a83bf-78d1-4231-a9de-c24740e09d7a@axisinto.nl/5-LINKEDIN.png)
download | view image
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-bugs@postgresql.org
Cc: bram.van.der.vos@axisinto.nl, pgsql-bugs@lists.postgresql.org
Subject: Re: file corruption goes undetected
In-Reply-To: <943a83bf-78d1-4231-a9de-c24740e09d7a@axisinto.nl>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox