Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
11a0c374
Commit
11a0c374
authored
May 24, 2005
by
Neil Conway
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add regression tests for previously-untested PL/Perl features. From
Andrew Dunstan.
parent
443f2173
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
178 additions
and
2 deletions
+178
-2
src/pl/plperl/GNUmakefile
src/pl/plperl/GNUmakefile
+2
-2
src/pl/plperl/expected/plperl_shared.out
src/pl/plperl/expected/plperl_shared.out
+26
-0
src/pl/plperl/expected/plperl_trigger.out
src/pl/plperl/expected/plperl_trigger.out
+67
-0
src/pl/plperl/sql/plperl_shared.sql
src/pl/plperl/sql/plperl_shared.sql
+22
-0
src/pl/plperl/sql/plperl_trigger.sql
src/pl/plperl/sql/plperl_trigger.sql
+61
-0
No files found.
src/pl/plperl/GNUmakefile
View file @
11a0c374
# Makefile for PL/Perl
# $PostgreSQL: pgsql/src/pl/plperl/GNUmakefile,v 1.2
0 2005/05/17 18:26:22 tgl
Exp $
# $PostgreSQL: pgsql/src/pl/plperl/GNUmakefile,v 1.2
1 2005/05/24 08:05:36 neilc
Exp $
subdir
=
src/pl/plperl
top_builddir
=
../../..
...
...
@@ -37,7 +37,7 @@ OBJS = plperl.o spi_internal.o SPI.o
SHLIB_LINK
=
$(perl_embed_ldflags)
$(BE_DLLLIBS)
REGRESS_OPTS
=
--dbname
=
$(PL_TESTDB)
--load-language
=
plperl
REGRESS
=
plperl
REGRESS
=
plperl
plperl_trigger plperl_shared
include
$(top_srcdir)/src/Makefile.shlib
...
...
src/pl/plperl/expected/plperl_shared.out
0 → 100644
View file @
11a0c374
-- 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)
src/pl/plperl/expected/plperl_trigger.out
0 → 100644
View file @
11a0c374
-- 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)
src/pl/plperl/sql/plperl_shared.sql
0 → 100644
View file @
11a0c374
-- 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'
);
src/pl/plperl/sql/plperl_trigger.sql
0 → 100644
View file @
11a0c374
-- 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
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment