Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit2784f7c

Browse files
committed
From: Jan Wieck <jwieck@debis.com>
A few minutes ago I sent down the PL/Tcl directory to this list. Look at it and reuse anything that might help to build PL/perl. I really hope that PL/perl and PL/Tcl appear in the 6.3 distribution. I'll do whatever I can to make this happen.
1 parent957a614 commit2784f7c

File tree

6 files changed

+721
-0
lines changed

6 files changed

+721
-0
lines changed

‎src/pl/tcl/test/README‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
2+
This is a small test suite for PL/Tcl.
3+
4+
Just run the script runtest and compare the files
5+
test.expected against test.out after.
6+
7+
8+
Jan

‎src/pl/tcl/test/runtest‎

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/bin/sh
2+
3+
DBNAME=pltcl_test
4+
export DBNAME
5+
6+
echo"**** Destroy old database$DBNAME ****"
7+
destroydb$DBNAME
8+
9+
echo"**** Create test database$DBNAME ****"
10+
createdb$DBNAME
11+
12+
echo"**** Create procedural language pltcl ****"
13+
psql -q -n$DBNAME<test_mklang.sql
14+
15+
echo"**** Create tables, functions and triggers ****"
16+
psql -q -n$DBNAME<test_setup.sql
17+
18+
echo"**** Running test queries ****"
19+
psql -q -n -e$DBNAME<test_queries.sql> test.out2>&1
20+
21+
if diff test.expected test.out>/dev/null2>&1;then
22+
echo" Tests passed O.K."
23+
else
24+
echo" Tests faild - look at diffs between"
25+
echo" test.expected and test.out"
26+
fi
27+

‎src/pl/tcl/test/test.expected‎

Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
QUERY: insert into T_pkey1 values (1, 'key1-1', 'test key');
2+
QUERY: insert into T_pkey1 values (1, 'key1-2', 'test key');
3+
QUERY: insert into T_pkey1 values (1, 'key1-3', 'test key');
4+
QUERY: insert into T_pkey1 values (2, 'key2-1', 'test key');
5+
QUERY: insert into T_pkey1 values (2, 'key2-2', 'test key');
6+
QUERY: insert into T_pkey1 values (2, 'key2-3', 'test key');
7+
QUERY: insert into T_pkey2 values (1, 'key1-1', 'test key');
8+
QUERY: insert into T_pkey2 values (1, 'key1-2', 'test key');
9+
QUERY: insert into T_pkey2 values (1, 'key1-3', 'test key');
10+
QUERY: insert into T_pkey2 values (2, 'key2-1', 'test key');
11+
QUERY: insert into T_pkey2 values (2, 'key2-2', 'test key');
12+
QUERY: insert into T_pkey2 values (2, 'key2-3', 'test key');
13+
QUERY: select * from T_pkey1;
14+
key1|key2 |txt
15+
----+--------------------+----------------------------------------
16+
1|key1-1 |test key
17+
1|key1-2 |test key
18+
1|key1-3 |test key
19+
2|key2-1 |test key
20+
2|key2-2 |test key
21+
2|key2-3 |test key
22+
(6 rows)
23+
24+
QUERY: select * from T_pkey2;
25+
key1|key2 |txt
26+
----+--------------------+----------------------------------------
27+
1|KEY1-1 |test key
28+
1|KEY1-2 |test key
29+
1|KEY1-3 |test key
30+
2|KEY2-1 |test key
31+
2|KEY2-2 |test key
32+
2|KEY2-3 |test key
33+
(6 rows)
34+
35+
QUERY: insert into T_pkey1 values (1, 'KEY1-3', 'should work');
36+
QUERY: insert into T_pkey2 values (1, 'KEY1-3', 'should fail');
37+
ERROR: duplicate key '1', 'KEY1-3' for T_pkey2
38+
QUERY: insert into T_dta1 values ('trec 1', 1, 'key1-1');
39+
QUERY: insert into T_dta1 values ('trec 2', 1, 'key1-2');
40+
QUERY: insert into T_dta1 values ('trec 3', 1, 'key1-3');
41+
QUERY: insert into T_dta1 values ('trec 4', 1, 'key1-4');
42+
ERROR: key for t_dta1 not in t_pkey1
43+
QUERY: insert into T_dta2 values ('trec 1', 1, 'KEY1-1');
44+
QUERY: insert into T_dta2 values ('trec 2', 1, 'KEY1-2');
45+
QUERY: insert into T_dta2 values ('trec 3', 1, 'KEY1-3');
46+
QUERY: insert into T_dta2 values ('trec 4', 1, 'KEY1-4');
47+
ERROR: key for t_dta2 not in t_pkey2
48+
QUERY: select * from T_dta1;
49+
tkey |ref1|ref2
50+
----------+----+--------------------
51+
trec 1 | 1|key1-1
52+
trec 2 | 1|key1-2
53+
trec 3 | 1|key1-3
54+
(3 rows)
55+
56+
QUERY: select * from T_dta2;
57+
tkey |ref1|ref2
58+
----------+----+--------------------
59+
trec 1 | 1|KEY1-1
60+
trec 2 | 1|KEY1-2
61+
trec 3 | 1|KEY1-3
62+
(3 rows)
63+
64+
QUERY: update T_pkey1 set key2 = 'key2-9' where key1 = 2 and key2 = 'key2-1';
65+
QUERY: update T_pkey1 set key2 = 'key1-9' where key1 = 1 and key2 = 'key1-1';
66+
ERROR: key '1', 'key1-1 ' referenced by T_dta1
67+
QUERY: delete from T_pkey1 where key1 = 2 and key2 = 'key2-2';
68+
QUERY: delete from T_pkey1 where key1 = 1 and key2 = 'key1-2';
69+
ERROR: key '1', 'key1-2 ' referenced by T_dta1
70+
QUERY: update T_pkey2 set key2 = 'KEY2-9' where key1 = 2 and key2 = 'KEY2-1';
71+
QUERY: update T_pkey2 set key2 = 'KEY1-9' where key1 = 1 and key2 = 'KEY1-1';
72+
NOTICE: updated 1 entries in T_dta2 for new key in T_pkey2
73+
QUERY: delete from T_pkey2 where key1 = 2 and key2 = 'KEY2-2';
74+
QUERY: delete from T_pkey2 where key1 = 1 and key2 = 'KEY1-2';
75+
NOTICE: deleted 1 entries from T_dta2
76+
QUERY: select * from T_pkey1;
77+
key1|key2 |txt
78+
----+--------------------+----------------------------------------
79+
1|key1-1 |test key
80+
1|key1-2 |test key
81+
1|key1-3 |test key
82+
2|key2-3 |test key
83+
1|KEY1-3 |should work
84+
2|key2-9 |test key
85+
(6 rows)
86+
87+
QUERY: select * from T_pkey2;
88+
key1|key2 |txt
89+
----+--------------------+----------------------------------------
90+
1|KEY1-3 |test key
91+
2|KEY2-3 |test key
92+
2|KEY2-9 |test key
93+
1|KEY1-9 |test key
94+
(4 rows)
95+
96+
QUERY: select * from T_dta1;
97+
tkey |ref1|ref2
98+
----------+----+--------------------
99+
trec 1 | 1|key1-1
100+
trec 2 | 1|key1-2
101+
trec 3 | 1|key1-3
102+
(3 rows)
103+
104+
QUERY: select * from T_dta2;
105+
tkey |ref1|ref2
106+
----------+----+--------------------
107+
trec 3 | 1|KEY1-3
108+
trec 1 | 1|KEY1-9
109+
(2 rows)
110+
111+
QUERY: select tcl_avg(key1) from T_pkey1;
112+
tcl_avg
113+
-------
114+
1
115+
(1 row)
116+
117+
QUERY: select tcl_sum(key1) from T_pkey1;
118+
tcl_sum
119+
-------
120+
8
121+
(1 row)
122+
123+
QUERY: select tcl_avg(key1) from T_pkey2;
124+
tcl_avg
125+
-------
126+
1
127+
(1 row)
128+
129+
QUERY: select tcl_sum(key1) from T_pkey2;
130+
tcl_sum
131+
-------
132+
6
133+
(1 row)
134+
135+
QUERY: select tcl_avg(key1) from T_pkey1 where key1 = 99;
136+
tcl_avg
137+
-------
138+
139+
(1 row)
140+
141+
QUERY: select tcl_sum(key1) from T_pkey1 where key1 = 99;
142+
tcl_sum
143+
-------
144+
0
145+
(1 row)
146+
147+
QUERY: select 1 @< 2;
148+
?column?
149+
--------
150+
t
151+
(1 row)
152+
153+
QUERY: select 100 @< 4;
154+
?column?
155+
--------
156+
f
157+
(1 row)
158+
159+
QUERY: select * from T_pkey1 order by key1 using @<;
160+
key1|key2 |txt
161+
----+--------------------+----------------------------------------
162+
1|key1-1 |test key
163+
1|key1-2 |test key
164+
1|key1-3 |test key
165+
1|KEY1-3 |should work
166+
2|key2-3 |test key
167+
2|key2-9 |test key
168+
(6 rows)
169+
170+
QUERY: select * from T_pkey2 order by key1 using @<;
171+
key1|key2 |txt
172+
----+--------------------+----------------------------------------
173+
1|KEY1-3 |test key
174+
1|KEY1-9 |test key
175+
2|KEY2-3 |test key
176+
2|KEY2-9 |test key
177+
(4 rows)
178+

‎src/pl/tcl/test/test_mklang.sql‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
2+
createfunctionpltcl_call_handler() returns opaque
3+
as'/usr/local/pgsql/lib/pltcl.so'
4+
language'C';
5+
6+
create trusted procedural language'pltcl'
7+
handler pltcl_call_handler
8+
lancompiler'PL/Tcl';
9+

‎src/pl/tcl/test/test_queries.sql‎

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
2+
insert into T_pkey1values (1,'key1-1','test key');
3+
insert into T_pkey1values (1,'key1-2','test key');
4+
insert into T_pkey1values (1,'key1-3','test key');
5+
insert into T_pkey1values (2,'key2-1','test key');
6+
insert into T_pkey1values (2,'key2-2','test key');
7+
insert into T_pkey1values (2,'key2-3','test key');
8+
9+
insert into T_pkey2values (1,'key1-1','test key');
10+
insert into T_pkey2values (1,'key1-2','test key');
11+
insert into T_pkey2values (1,'key1-3','test key');
12+
insert into T_pkey2values (2,'key2-1','test key');
13+
insert into T_pkey2values (2,'key2-2','test key');
14+
insert into T_pkey2values (2,'key2-3','test key');
15+
16+
select*from T_pkey1;
17+
18+
-- key2 in T_pkey2 should have upper case only
19+
select*from T_pkey2;
20+
21+
insert into T_pkey1values (1,'KEY1-3','should work');
22+
23+
-- Due to the upper case translation in trigger this must fail
24+
insert into T_pkey2values (1,'KEY1-3','should fail');
25+
26+
insert into T_dta1values ('trec 1',1,'key1-1');
27+
insert into T_dta1values ('trec 2',1,'key1-2');
28+
insert into T_dta1values ('trec 3',1,'key1-3');
29+
30+
-- Must fail due to unknown key in T_pkey1
31+
insert into T_dta1values ('trec 4',1,'key1-4');
32+
33+
insert into T_dta2values ('trec 1',1,'KEY1-1');
34+
insert into T_dta2values ('trec 2',1,'KEY1-2');
35+
insert into T_dta2values ('trec 3',1,'KEY1-3');
36+
37+
-- Must fail due to unknown key in T_pkey2
38+
insert into T_dta2values ('trec 4',1,'KEY1-4');
39+
40+
select*from T_dta1;
41+
42+
select*from T_dta2;
43+
44+
update T_pkey1set key2='key2-9'where key1=2and key2='key2-1';
45+
update T_pkey1set key2='key1-9'where key1=1and key2='key1-1';
46+
deletefrom T_pkey1where key1=2and key2='key2-2';
47+
deletefrom T_pkey1where key1=1and key2='key1-2';
48+
49+
update T_pkey2set key2='KEY2-9'where key1=2and key2='KEY2-1';
50+
update T_pkey2set key2='KEY1-9'where key1=1and key2='KEY1-1';
51+
deletefrom T_pkey2where key1=2and key2='KEY2-2';
52+
deletefrom T_pkey2where key1=1and key2='KEY1-2';
53+
54+
select*from T_pkey1;
55+
select*from T_pkey2;
56+
select*from T_dta1;
57+
select*from T_dta2;
58+
59+
select tcl_avg(key1)from T_pkey1;
60+
select tcl_sum(key1)from T_pkey1;
61+
select tcl_avg(key1)from T_pkey2;
62+
select tcl_sum(key1)from T_pkey2;
63+
64+
-- The following should return NULL instead of 0
65+
select tcl_avg(key1)from T_pkey1where key1=99;
66+
select tcl_sum(key1)from T_pkey1where key1=99;
67+
68+
select1 @<2;
69+
select100 @<4;
70+
71+
select*from T_pkey1order by key1 using @<;
72+
select*from T_pkey2order by key1 using @<;
73+

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp