Add SQL function to show total block numbers in the relation

Started by btkimurayuzkalmost 7 years ago8 messageshackers
Beta feature

Hackorum builds and tests every patch posted to the lists, not only commitfest submissions. This is Hackorum's own CI rather than the PostgreSQL project's, and it is still under testing - please report anything that looks wrong.

won't retrysuccessCI history

You can run a PostgreSQL built from this patch straight from Docker, with no checkout and no build:

docker run --rm -p 5432:5432 ghcr.io/hackorum-dev/postgres-patch:t41438
psql -h localhost -U postgres

Built from patchset v1 (message #1), July 28, 2026 at 03:37 AM.

Every patchset is also pushed to a branch of our PostgreSQL fork, so you can check out the same tree CI built. Without a PostgreSQL checkout:

git clone --branch t41438_1 https://github.com/hackorum-dev/postgres.git

In a checkout you already have, add the fork once:

git remote add hackorum https://github.com/hackorum-dev/postgres.git

then, for this patchset and every later one:

git fetch hackorum t41438_1 && git checkout t41438_1

Patchset v1 (message #1) is on t41438_1

Jump to latest
#1btkimurayuzk
btkimurayuzk@oss.nttdata.com

Hello,

I propose new simple sql query, which shows total block numbers in the
relation.

I now reviewing this patch (https://commitfest.postgresql.org/25/2211/)
and I think,
it is usefull for knowing how many blocks there are in the relation to
determine whether we use VACUUM RESUME or not.

Of cource, we can know this value such as

select (pg_relation_size('t') /
current_setting('block_size')::bigint)::int;

but I think it is a litte bit complex.

Comment and feedback are very welcome.

Regards ,

Yu Kimura

Attachments:

t41438_1
show_total_block_numbers-20191030.patchtext/x-diff; name=show_total_block_numbers-20191030.patchDownload+41-0
#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: btkimurayuzk (#1)
Re: Add SQL function to show total block numbers in the relation

btkimurayuzk <btkimurayuzk@oss.nttdata.com> writes:

I propose new simple sql query, which shows total block numbers in the
relation.
...
Of cource, we can know this value such as
select (pg_relation_size('t') /
current_setting('block_size')::bigint)::int;

I don't really see why the existing solution isn't sufficient.

regards, tom lane

#3Michael Paquier
michael@paquier.xyz
In reply to: Tom Lane (#2)
Re: Add SQL function to show total block numbers in the relation

On Wed, Oct 30, 2019 at 10:09:47AM -0400, Tom Lane wrote:

btkimurayuzk <btkimurayuzk@oss.nttdata.com> writes:

I propose new simple sql query, which shows total block numbers in the
relation.
...
Of cource, we can know this value such as
select (pg_relation_size('t') /
current_setting('block_size')::bigint)::int;

I don't really see why the existing solution isn't sufficient.

+1.
--
Michael
#4btkimurayuzk
btkimurayuzk@oss.nttdata.com
In reply to: Tom Lane (#2)
Re: Add SQL function to show total block numbers in the relation

btkimurayuzk <btkimurayuzk@oss.nttdata.com> writes:

I propose new simple sql query, which shows total block numbers in the
relation.
...
Of cource, we can know this value such as
select (pg_relation_size('t') /
current_setting('block_size')::bigint)::int;

I don't really see why the existing solution isn't sufficient.

I think it's a little difficult to introduce the block size using two
values `current block size` and `reference size`
for beginners who are not familiar with the internal structure of
Postgres,

This is the reason why the existing solution was insufficient.

What do you think?

Regards,
Yu Kimura

#5Kyotaro Horiguchi
horikyota.ntt@gmail.com
In reply to: btkimurayuzk (#4)
Re: Add SQL function to show total block numbers in the relation

Hello, Kimura-san.

At Thu, 07 Nov 2019 17:04:51 +0900, btkimurayuzk <btkimurayuzk@oss.nttdata.com> wrote in

btkimurayuzk <btkimurayuzk@oss.nttdata.com> writes:

I propose new simple sql query, which shows total block numbers in the
relation.
...
Of cource, we can know this value such as
select (pg_relation_size('t') /
current_setting('block_size')::bigint)::int;

I don't really see why the existing solution isn't sufficient.

I think it's a little difficult to introduce the block size using two
values `current block size` and `reference size`
for beginners who are not familiar with the internal structure of
Postgres,

This is the reason why the existing solution was insufficient.

What do you think?

Sorry, but I also vote -1 for the new function.

Size in block number is useless for those who doesn't understand the
notion of block, or block size. Those who understands the notion
should come up with the simple formula (except the annoying
casts). Anyone can find the clue to the base values by searching the
document in the Web with the keywords "block size" and "relation size"
or even with "table size". (FWIW, I would even do the same for the new
function if any...) If they need it so frequently, a user-defined
function is easily made up.

regards.

--
Kyotaro Horiguchi
NTT Open Source Software Center

#6Michael Paquier
michael@paquier.xyz
In reply to: Kyotaro Horiguchi (#5)
Re: Add SQL function to show total block numbers in the relation

On Thu, Nov 07, 2019 at 06:01:34PM +0900, Kyotaro Horiguchi wrote:

Sorry, but I also vote -1 for the new function.

So do I. If there are no objections, I will mark the patch as
rejected in the CF app.

If they need it so frequently, a user-defined function is easily
made up.

Yep.
--
Michael

#7Michael Paquier
michael@paquier.xyz
In reply to: Michael Paquier (#6)
Re: Add SQL function to show total block numbers in the relation

On Fri, Nov 08, 2019 at 09:30:56AM +0900, Michael Paquier wrote:

On Thu, Nov 07, 2019 at 06:01:34PM +0900, Kyotaro Horiguchi wrote:

Sorry, but I also vote -1 for the new function.

So do I. If there are no objections, I will mark the patch as
rejected in the CF app.

And done.
--
Michael

#8btkimurayuzk
btkimurayuzk@oss.nttdata.com
In reply to: Kyotaro Horiguchi (#5)
Re: Add SQL function to show total block numbers in the relation

Size in block number is useless for those who doesn't understand the
notion of block, or block size. Those who understands the notion
should come up with the simple formula (except the annoying
casts). Anyone can find the clue to the base values by searching the
document in the Web with the keywords "block size" and "relation size"
or even with "table size". (FWIW, I would even do the same for the new
function if any...) If they need it so frequently, a user-defined
function is easily made up.

regards.

I didn't know about the existence of the user-defined function .
I fully understood , Thanks .

Regards,

Yu Kimura