pg.ddx.io  pgsql-bugs@postgresql.org mailing list archive  
help / color / mirror / Atom feed
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

view thread (3+ messages)  latest in thread

Message-ID: <943a83bf-78d1-4231-a9de-c24740e09d7a@axisinto.nl>
Permalink:  ../943a83bf-78d1-4231-a9de-c24740e09d7a@axisinto.nl/
Also on:    postgresql.org/message-id/943a83bf-78d1-4231-a9de-c24740e09d7a@axisinto.nl

 · 

reply

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