The age() of a column?

Started by Ronover 7 years ago3 messagesgeneral
Jump to latest
#1Ron
ronljohnsonjr@gmail.com

What does it mean, and where is it documented?  The only place in the docs I
see reference to age() is
https://www.postgresql.org/docs/9.6/functions-datetime.html and this doesn't
seem to fit that use case.

Thanks

TAPb=# select COALESCE(ta.schemaname, 'pg_toast') || '.' || cl.relname,
       cl.relfrozenxid,
       age(cl.relfrozenxid)
from pg_class cl FULL JOIN pg_tables ta
    ON ta.tablename = cl.relname
where not cl.relfrozenxid = xid '0'
  --and age(cl.relfrozenxid) > 4000000
order by 1
limit 30;
           ?column?            | relfrozenxid |   age
-------------------------------+--------------+---------
cds.ach_return_batch           |     58569152 | 2111005
cds.ach_return_detail          |     58569152 | 2111005
cds.all_day_event              |     58569152 | 2111005
cds.all_day_event_trigger      |     58569152 | 2111005
[snip]
cds.bank_ftp                   |     58569152 | 2111005
cds.bank_health_care_job       |     58569152 | 2111005
cds.bank_inbound_file          |     58569152 | 2111005
cds.bank_input_format          |     58569152 | 2111005
(30 rows)

--
Angular momentum makes the world go 'round.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Ron (#1)
Re: The age() of a column?

Ron <ronljohnsonjr@gmail.com> writes:

What does it mean, and where is it documented?

age(xid) returns the difference between the given xid and the current xid.
It's not terribly well documented, but psql's \df gives some info:

regression=# \df+ age
Schema | Name | Result data type | Argument data types | Type | Volatility | Parallel | Owner | Security | Access privileges | Language | Source code | Description
...
pg_catalog | age | integer | xid | func | stable | restricted | postgres | invoker | | internal | xid_age | age of a transaction ID, in transactions before current transaction

The only reference I could find in the SGML docs is in the maintenance
chapter.

regards, tom lane

#3Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Ron (#1)
Re: The age() of a column?

On 11/28/18 7:32 PM, Ron wrote:

What does it mean, and where is it documented?  The only place in the

https://www.postgresql.org/docs/10/routine-vacuuming.html

"The age column measures the number of transactions from the cutoff XID
to the current transaction's XID."

docs I see reference to age() is
https://www.postgresql.org/docs/9.6/functions-datetime.html and this
doesn't seem to fit that use case.

Thanks

TAPb=# select COALESCE(ta.schemaname, 'pg_toast') || '.' || cl.relname,
       cl.relfrozenxid,
       age(cl.relfrozenxid)
from pg_class cl FULL JOIN pg_tables ta
    ON ta.tablename = cl.relname
where not cl.relfrozenxid = xid '0'
  --and age(cl.relfrozenxid) > 4000000
order by 1
limit 30;
           ?column?            | relfrozenxid |   age
-------------------------------+--------------+---------
cds.ach_return_batch           |     58569152 | 2111005
cds.ach_return_detail          |     58569152 | 2111005
cds.all_day_event              |     58569152 | 2111005
cds.all_day_event_trigger      |     58569152 | 2111005
[snip]
cds.bank_ftp                   |     58569152 | 2111005
cds.bank_health_care_job       |     58569152 | 2111005
cds.bank_inbound_file          |     58569152 | 2111005
cds.bank_input_format          |     58569152 | 2111005
(30 rows)

--
Adrian Klaver
adrian.klaver@aklaver.com