Re: Table create time

From: Melvin Davidson <melvin6925(at)gmail(dot)com>
To: Achilleas Mantzios <achill(at)matrix(dot)gatewaynet(dot)com>
Cc: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: Table create time
Date: 2017-08-31 15:46:24
Message-ID: CANu8FiwHGHWs9bLYTr4METDpc_uvi68gM3ELj+-_kb87RVz3Jw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Thu, Aug 31, 2017 at 11:26 AM, Achilleas Mantzios <
achill(at)matrix(dot)gatewaynet(dot)com> wrote:

> On 31/08/2017 18:20, Melvin Davidson wrote:
>
> >you could just create an event trigger looking for CREATE TABLE as
> filter_value:
>
> I have tried that. Unfortunately, I have been unable to extract the table
> name from the event because TG_TABLE_NAME is not
> available during an event trigger, albeit perhaps I am missing something?
>
> You need to use ddl_command_end event and then select from
> pg_event_trigger_ddl_commands() . Search for some example how to do this.
>
> That being said, I still believe it is extra work that could easily be
> avoided and should be added to the postgresql catalogs simply to be
> more feature competitive with Oracle & SQL Server, as well as a boost to
> the PostgreSQL community.
>
> On Thu, Aug 31, 2017 at 10:54 AM, Michael Paquier <
> michael(dot)paquier(at)gmail(dot)com> wrote:
>
>> On Thu, Aug 31, 2017 at 10:21 PM, Melvin Davidson <melvin6925(at)gmail(dot)com>
>> wrote:
>> > Wolfgang, as David said, a column in pg_class for the creation time of
>> a table does not exist. I long ago requested that feature as it is
>> > in other DB's (Oracle & MS SQL Server), but the main reason that it was
>> not done was that no one was interested in doing it.
>>
>> Is there any need for a column in pg_class for that? You could just
>> create an event trigger looking for CREATE TABLE as filter_value:
>> https://www.postgresql.org/docs/9.6/static/sql-createeventtrigger.html
>> And then have this event trigger just save the timestamp value of
>> now() in a custom table with the name and/or OID of the relation
>> involved.
>> --
>> Michael
>>
>
>
>
> --
> *Melvin Davidson*
> I reserve the right to fantasize. Whether or not you
> wish to share my fantasy is entirely up to you.
>
> Achilleas Mantzios
> IT DEV Lead
> IT DEPT
> Dynacom Tankers Mgmt
>
>
*>You need to use ddl_command_end event and then select from
pg_event_trigger_ddl_commands()*

*I have, but the result for CREATE TABLE is an error.*

*CREATE OR REPLACE FUNCTION public.fn_notify_ddl() RETURNS event_trigger
AS$BODY$DECLARE obj record;BEGIN RAISE NOTICE 'Type: %', TG_TAG;
RAISE NOTICE 'Command: %', current_query(); RAISE NOTICE 'Table: %',
(pg_event_trigger_ddl_commands()).objid; -- < causes an error? RAISE
NOTICE 'DB Name: %', current_database(); RAISE NOTICE 'DB User: %',
session_user; RAISE NOTICE 'DB Port: %', inet_server_port(); RAISE
NOTICE 'Server Host: %', inet_server_addr(); RAISE NOTICE 'Client Host:
%', inet_client_addr();END;$BODY$ LANGUAGE plpgsql VOLATILE COST
100;ALTER FUNCTION public.fn_notify_ddl() OWNER TO postgres;*

*CREATE TABLE sneaky_pete( id_col varchar(5), col2 varchar(1),
CONSTRAINT sneaky_pete_pk PRIMARY KEY (id_col));*

*ERROR: query "SELECT (pg_event_trigger_ddl_commands()).objid" returned
more than one row*

--
*Melvin Davidson*
I reserve the right to fantasize. Whether or not you
wish to share my fantasy is entirely up to you.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message George Neuner 2017-08-31 20:04:55 pgadmin - import a CSV with nulls?
Previous Message Merlin Moncure 2017-08-31 15:29:28 Re: clustered index benchmark comparing Postgresql vs Mariadb