terça-feira, 9 de outubro de 2012

PostgreSQL - Função que retorna o custo da query


CREATE OR REPLACE FUNCTION public.getsqlcost(p_sql text) RETURNS numeric AS
$BODY$
DECLARE
v varchar;
BEGIN
-- Result  (cost=0.00..0.01 rows=1 width=0)
EXECUTE 'EXPLAIN ' || p_sql INTO v;
RETURN CAST(split_part(TRIM(SUBSTRING(upper(v) FROM 'COST=(.+) ROWS')), '..', 2) AS numeric);
END;
$BODY$
LANGUAGE plpgsql;

SELECT * FROM getsqlcost('SELECT clock_timestamp()');

sexta-feira, 18 de maio de 2012

PostgreSQL - Campo timestamp sem milissegundos

CREATE OR REPLACE FUNCTION self_destroy() RETURNS void AS
$BODY$
BEGIN
DROP TABLE IF EXISTS mslxp_self_destroy;
CREATE TEMP TABLE mslxp_self_destroy
(
dt1 timestamp    without time zone,
dt2 timestamp(0) without time zone
);
INSERT INTO mslxp_self_destroy(dt1, dt2) VALUES (clock_timestamp(), clock_timestamp());
DROP FUNCTION self_destroy();
END;
$BODY$
LANGUAGE plpgsql;

SELECT self_destroy();
SELECT * FROM self_destroy;

Resultado:
2012-05-18 11:10:03.414 | 2012-05-18 11:10:03