CREATE OR REPLACE FUNCTION allow_on_condition() RETURNS trigger AS $$ BEGIN { strict->import(); } use PLPerl::CheckTrigger; my $minargc = 1; # $minargc += 2; # should be called as a row-level trigger die "should be called as a row-level trigger" unless ($_TD->{level} eq 'ROW'); # check for the correct number of arguments die "$_TD->{name}, wrong number of arguments" unless ($_TD->{argc} >= $minargc); # my $assert = shift @{$_TD->{args}}; # my $error_text = shift @{$_TD->{args}}; my $condition = shift @{$_TD->{args}}; my @args = @{$_TD->{args}}; # my $query = "SELECT tools.assert( '$assert', false, " . '$s_exec_delim$' . $ch->{errmsg} . '$s_exec_delim$' . " )"; # my $query = "SELECT tools.assert( '$assert', false, " . '$s_exec_delim$' . $error_text . '$s_exec_delim$' . " )"; # elog(DEBUG, "query: $query"); # my $rv = spi_exec_query($query); my $ch = new PLPerl::CheckTrigger($_TD); my $result; eval { $result = $ch->check_condition($condition, @args); }; die $@ if ($@); if (!$result) { die $ch->{errmsg}; } return; $$ LANGUAGE plperlu;