mirror of https://github.com/postgres/postgres
parent
443f21737d
commit
11a0c3741f
@ -0,0 +1,26 @@ |
||||
-- test the shared hash |
||||
create function setme(key text, val text) returns void language plperl as $$ |
||||
|
||||
my $key = shift; |
||||
my $val = shift; |
||||
$_SHARED{$key}= $val; |
||||
|
||||
$$; |
||||
create function getme(key text) returns text language plperl as $$ |
||||
|
||||
my $key = shift; |
||||
return $_SHARED{$key}; |
||||
|
||||
$$; |
||||
select setme('ourkey','ourval'); |
||||
setme |
||||
------- |
||||
|
||||
(1 row) |
||||
|
||||
select getme('ourkey'); |
||||
getme |
||||
-------- |
||||
ourval |
||||
(1 row) |
||||
|
@ -0,0 +1,67 @@ |
||||
-- test plperl triggers |
||||
CREATE TABLE trigger_test ( |
||||
i int, |
||||
v varchar |
||||
); |
||||
CREATE OR REPLACE FUNCTION valid_id() RETURNS trigger AS $$ |
||||
|
||||
if (($_TD->{new}{i}>=100) || ($_TD->{new}{i}<=0)) |
||||
{ |
||||
return "SKIP"; # Skip INSERT/UPDATE command |
||||
} |
||||
elsif ($_TD->{new}{v} ne "immortal") |
||||
{ |
||||
$_TD->{new}{v} .= "(modified by trigger)"; |
||||
return "MODIFY"; # Modify tuple and proceed INSERT/UPDATE command |
||||
} |
||||
else |
||||
{ |
||||
return; # Proceed INSERT/UPDATE command |
||||
} |
||||
$$ LANGUAGE plperl; |
||||
CREATE TRIGGER "test_valid_id_trig" BEFORE INSERT OR UPDATE ON trigger_test |
||||
FOR EACH ROW EXECUTE PROCEDURE "valid_id"(); |
||||
INSERT INTO trigger_test (i, v) VALUES (1,'first line'); |
||||
INSERT INTO trigger_test (i, v) VALUES (2,'second line'); |
||||
INSERT INTO trigger_test (i, v) VALUES (3,'third line'); |
||||
INSERT INTO trigger_test (i, v) VALUES (4,'immortal'); |
||||
INSERT INTO trigger_test (i, v) VALUES (101,'bad id'); |
||||
SELECT * FROM trigger_test; |
||||
i | v |
||||
---+---------------------------------- |
||||
1 | first line(modified by trigger) |
||||
2 | second line(modified by trigger) |
||||
3 | third line(modified by trigger) |
||||
4 | immortal |
||||
(4 rows) |
||||
|
||||
UPDATE trigger_test SET i = 5 where i=3; |
||||
UPDATE trigger_test SET i = 100 where i=1; |
||||
SELECT * FROM trigger_test; |
||||
i | v |
||||
---+------------------------------------------------------ |
||||
1 | first line(modified by trigger) |
||||
2 | second line(modified by trigger) |
||||
4 | immortal |
||||
5 | third line(modified by trigger)(modified by trigger) |
||||
(4 rows) |
||||
|
||||
CREATE OR REPLACE FUNCTION immortal() RETURNS trigger AS $$ |
||||
if ($_TD->{old}{v} eq $_TD->{args}[0]) |
||||
{ |
||||
return "SKIP"; # Skip DELETE command |
||||
} |
||||
else |
||||
{ |
||||
return; # Proceed DELETE command |
||||
}; |
||||
$$ LANGUAGE plperl; |
||||
CREATE TRIGGER "immortal_trig" BEFORE DELETE ON trigger_test |
||||
FOR EACH ROW EXECUTE PROCEDURE immortal('immortal'); |
||||
DELETE FROM trigger_test; |
||||
SELECT * FROM trigger_test; |
||||
i | v |
||||
---+---------- |
||||
4 | immortal |
||||
(1 row) |
||||
|
@ -0,0 +1,22 @@ |
||||
-- test the shared hash |
||||
|
||||
create function setme(key text, val text) returns void language plperl as $$ |
||||
|
||||
my $key = shift; |
||||
my $val = shift; |
||||
$_SHARED{$key}= $val; |
||||
|
||||
$$; |
||||
|
||||
create function getme(key text) returns text language plperl as $$ |
||||
|
||||
my $key = shift; |
||||
return $_SHARED{$key}; |
||||
|
||||
$$; |
||||
|
||||
select setme('ourkey','ourval'); |
||||
|
||||
select getme('ourkey'); |
||||
|
||||
|
@ -0,0 +1,61 @@ |
||||
-- test plperl triggers |
||||
|
||||
CREATE TABLE trigger_test ( |
||||
i int, |
||||
v varchar |
||||
); |
||||
|
||||
CREATE OR REPLACE FUNCTION valid_id() RETURNS trigger AS $$ |
||||
|
||||
if (($_TD->{new}{i}>=100) || ($_TD->{new}{i}<=0)) |
||||
{ |
||||
return "SKIP"; # Skip INSERT/UPDATE command |
||||
} |
||||
elsif ($_TD->{new}{v} ne "immortal") |
||||
{ |
||||
$_TD->{new}{v} .= "(modified by trigger)"; |
||||
return "MODIFY"; # Modify tuple and proceed INSERT/UPDATE command |
||||
} |
||||
else |
||||
{ |
||||
return; # Proceed INSERT/UPDATE command |
||||
} |
||||
$$ LANGUAGE plperl; |
||||
|
||||
CREATE TRIGGER "test_valid_id_trig" BEFORE INSERT OR UPDATE ON trigger_test |
||||
FOR EACH ROW EXECUTE PROCEDURE "valid_id"(); |
||||
|
||||
INSERT INTO trigger_test (i, v) VALUES (1,'first line'); |
||||
INSERT INTO trigger_test (i, v) VALUES (2,'second line'); |
||||
INSERT INTO trigger_test (i, v) VALUES (3,'third line'); |
||||
INSERT INTO trigger_test (i, v) VALUES (4,'immortal'); |
||||
|
||||
INSERT INTO trigger_test (i, v) VALUES (101,'bad id'); |
||||
|
||||
SELECT * FROM trigger_test; |
||||
|
||||
UPDATE trigger_test SET i = 5 where i=3; |
||||
|
||||
UPDATE trigger_test SET i = 100 where i=1; |
||||
|
||||
SELECT * FROM trigger_test; |
||||
|
||||
CREATE OR REPLACE FUNCTION immortal() RETURNS trigger AS $$ |
||||
if ($_TD->{old}{v} eq $_TD->{args}[0]) |
||||
{ |
||||
return "SKIP"; # Skip DELETE command |
||||
} |
||||
else |
||||
{ |
||||
return; # Proceed DELETE command |
||||
}; |
||||
$$ LANGUAGE plperl; |
||||
|
||||
CREATE TRIGGER "immortal_trig" BEFORE DELETE ON trigger_test |
||||
FOR EACH ROW EXECUTE PROCEDURE immortal('immortal'); |
||||
|
||||
DELETE FROM trigger_test; |
||||
|
||||
|
||||
SELECT * FROM trigger_test; |
||||
|
Loading…
Reference in new issue