From cf1dc4e05baaa6b582ba0dd14f41c4a3af068ca0 Mon Sep 17 00:00:00 2001 From: miker Date: Thu, 25 Aug 2005 18:22:53 +0000 Subject: [PATCH] stats DB stored procs git-svn-id: svn://svn.open-ils.org/ILS/trunk@1733 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/src/sql/Pg/stats/functions.sql | 30 +++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Open-ILS/src/sql/Pg/stats/functions.sql diff --git a/Open-ILS/src/sql/Pg/stats/functions.sql b/Open-ILS/src/sql/Pg/stats/functions.sql new file mode 100644 index 0000000000..b724010eca --- /dev/null +++ b/Open-ILS/src/sql/Pg/stats/functions.sql @@ -0,0 +1,30 @@ +CREATE OR REPLACE FUNCTION dim_row_hash () RETURNS TRIGGER AS $func$ + use Digest::MD5 qw/md5_hex/; + + $_TD->{new}{id} = + md5_hex( + join( '' => + map { + defined $_TD->{new}{$_} ? + ( $_TD->{new}{$_} ) : + () + } sort grep { + $_ != 'id' + } keys %{ $_TD->{new} } + ) + ); + + my $schema = spi_exec_query(<<" SQL")->{rows}[0]{nspname}; + SELECT nspname + FROM pg_class c + JOIN pg_namespace n ON (c.relnamespace = n.oid); + SQL + + return 'SKIP' if (spi_exec_query(<<" SQL")->{processed}); + SELECT 1 + FROM $schema.$$_TD{relname} + WHERE id = '$$_TD{new}{id}'; + SQL + + return 'MODIFY'; +$func$ LANGUAGE 'plperlu'; -- 2.43.2