trap instead of error on 32 TiB table

From: Christoph Berg <christoph(dot)berg(at)credativ(dot)de>
To: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: trap instead of error on 32 TiB table
Date: 2021-09-09 11:52:41
Message-ID: YTn1iTkUYBZfcODk@msg.credativ.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

I was wondering what happens when the 32 TiB per table limit is
reached, so I faked 32767 1 GiB sparse files using dd and then tried
inserting more rows.

On a cassert-enabled build I got:

TRAP: FailedAssertion("tagPtr->blockNum != P_NEW", File: "./build/../src/backend/storage/buffer/buf_table.c", Line: 125)

On a normal build, I got:

ERROR: cannot extend file "base/18635/53332" beyond 4294967295 blocks
ORT: mdextend, md.c:443

Shouldn't the cassert build raise the ERROR instead as well?

PostgreSQL 13.4.

Christoph
--
Senior Consultant, Tel.: +49 2166 9901 187
credativ GmbH, HRB Mönchengladbach 12080, USt-ID-Nummer: DE204566209
Trompeterallee 108, 41189 Mönchengladbach
Geschäftsführung: Dr. Michael Meskes, Sascha Heuer, Geoff Richardson,
Peter Lilley; Unser Umgang mit personenbezogenen Daten unterliegt
folgenden Bestimmungen: https://www.credativ.de/datenschutz

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Eisentraut 2021-09-09 12:11:50 Re: Why does bootstrap and later initdb stages happen via client?
Previous Message Ranier Vilela 2021-09-09 11:46:25 Re: missing warning in pg_import_system_collations