amdelivery_prod=> select proname,prosrc from pg_proc where proname='delivery_order_metric_insert_trigger_func';
proname | prosrc
-------------------------------------------+------------------------------------------------------------------------------------
delivery_order_metric_insert_trigger_func | +
| DECLARE +
| date_str VARCHAR; +
| partition_name VARCHAR; +
| BEGIN +
| date_str := TO_CHAR(NEW.creation_date,'yyyy_mm'); +
| partition_name := 'delivery_order_metric_' || date_str; +
| PERFORM create_delivery_order_metric_partition(date_str); +
| EXECUTE format('INSERT INTO %I VALUES ($1.*)', partition_name)+
| USING NEW; +
| RETURN NULL; +
| END; +
|
proname | prosrc
----------------------------------------+----------------------------------------------------------------------------------------------------------------------
create_delivery_order_metric_partition | +
| DECLARE +
| partition_name VARCHAR; +
| idx_name VARCHAR; +
| next_date date; +
| curdate date; +
| BEGIN +
| partition_name := 'delivery_order_metric_' || $1; +
| idx_name := partition_name || '_idx'; +
| curdate := to_date($1, 'yyyy_mm'); +
| next_date := to_date($1, 'yyyy_mm') + interval '1 month'; +
| IF (SELECT EXISTS (SELECT 1 FROM information_schema.tables +
| WHERE table_catalog = 'amdelivery' AND table_name=partition_name)) THEN +
| ELSE +
| EXECUTE format('CREATE TABLE IF NOT EXISTS %I ( +
| CHECK (creation_date >= date %L AND creation_date < date %L) +
| ) INHERITS (delivery_order_metric)', partition_name, curdate, next_date); +
| EXECUTE format('CREATE INDEX IF NOT EXISTS %I ON %I (creation_date)', idx_name, partition_name);+
| END IF; +
| RETURN NULL; +
| END; +
|