YS
----------------------------------------+----------------------------------------------------------------------------------------------------------------------
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; +
|
И, опять-таки, либо с форматированием, либо на paste site.