Skip to content

Commit 68c521e

Browse files
committed
Improve coverage of pltcl regression tests.
Test composite-type arguments and the argisnull and spi_lastoid Tcl commmands. This stuff was not covered before, but needs to be exercised since the upcoming Tcl object-conversion patch changes these code paths (and broke at least one of them).
1 parent 9def031 commit 68c521e

File tree

5 files changed

+140
-0
lines changed

5 files changed

+140
-0
lines changed

src/pl/tcl/expected/pltcl_queries.out

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,3 +256,50 @@ NOTICE: TG_table_name: trigger_test
256256
NOTICE: TG_table_schema: public
257257
NOTICE: TG_when: BEFORE
258258
NOTICE: args: {23 skidoo}
259+
-- Test composite-type arguments
260+
select tcl_composite_arg_ref1(row('tkey', 42, 'ref2'));
261+
tcl_composite_arg_ref1
262+
------------------------
263+
42
264+
(1 row)
265+
266+
select tcl_composite_arg_ref2(row('tkey', 42, 'ref2'));
267+
tcl_composite_arg_ref2
268+
------------------------
269+
ref2
270+
(1 row)
271+
272+
-- Test argisnull primitive
273+
select tcl_argisnull('foo');
274+
tcl_argisnull
275+
---------------
276+
f
277+
(1 row)
278+
279+
select tcl_argisnull('');
280+
tcl_argisnull
281+
---------------
282+
f
283+
(1 row)
284+
285+
select tcl_argisnull(null);
286+
tcl_argisnull
287+
---------------
288+
t
289+
(1 row)
290+
291+
-- Test spi_lastoid primitive
292+
create temp table t1 (f1 int);
293+
select tcl_lastoid('t1');
294+
tcl_lastoid
295+
-------------
296+
0
297+
(1 row)
298+
299+
create temp table t2 (f1 int) with oids;
300+
select tcl_lastoid('t2') > 0;
301+
?column?
302+
----------
303+
t
304+
(1 row)
305+

src/pl/tcl/expected/pltcl_queries_1.out

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,3 +256,50 @@ NOTICE: TG_table_name: trigger_test
256256
NOTICE: TG_table_schema: public
257257
NOTICE: TG_when: BEFORE
258258
NOTICE: args: {23 skidoo}
259+
-- Test composite-type arguments
260+
select tcl_composite_arg_ref1(row('tkey', 42, 'ref2'));
261+
tcl_composite_arg_ref1
262+
------------------------
263+
42
264+
(1 row)
265+
266+
select tcl_composite_arg_ref2(row('tkey', 42, 'ref2'));
267+
tcl_composite_arg_ref2
268+
------------------------
269+
ref2
270+
(1 row)
271+
272+
-- Test argisnull primitive
273+
select tcl_argisnull('foo');
274+
tcl_argisnull
275+
---------------
276+
f
277+
(1 row)
278+
279+
select tcl_argisnull('');
280+
tcl_argisnull
281+
---------------
282+
f
283+
(1 row)
284+
285+
select tcl_argisnull(null);
286+
tcl_argisnull
287+
---------------
288+
t
289+
(1 row)
290+
291+
-- Test spi_lastoid primitive
292+
create temp table t1 (f1 int);
293+
select tcl_lastoid('t1');
294+
tcl_lastoid
295+
-------------
296+
0
297+
(1 row)
298+
299+
create temp table t2 (f1 int) with oids;
300+
select tcl_lastoid('t2') > 0;
301+
?column?
302+
----------
303+
t
304+
(1 row)
305+

src/pl/tcl/expected/pltcl_setup.out

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,19 @@ create trigger dta1_before before insert or update on T_dta1
398398
create trigger dta2_before before insert or update on T_dta2
399399
for each row execute procedure
400400
check_primkey('ref1', 'ref2', 'T_pkey2', 'key1', 'key2');
401+
create function tcl_composite_arg_ref1(T_dta1) returns int as '
402+
return $1(ref1)
403+
' language pltcl;
404+
create function tcl_composite_arg_ref2(T_dta1) returns text as '
405+
return $1(ref2)
406+
' language pltcl;
407+
create function tcl_argisnull(text) returns bool as '
408+
argisnull 1
409+
' language pltcl;
410+
create function tcl_lastoid(tabname text) returns int8 as '
411+
spi_exec "insert into $1 default values"
412+
spi_lastoid
413+
' language pltcl;
401414
create function tcl_int4add(int4,int4) returns int4 as '
402415
return [expr $1 + $2]
403416
' language pltcl;

src/pl/tcl/sql/pltcl_queries.sql

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,18 @@ delete from trigger_test_view;
8282

8383
update trigger_test set v = 'update' where i = 1;
8484
delete from trigger_test;
85+
86+
-- Test composite-type arguments
87+
select tcl_composite_arg_ref1(row('tkey', 42, 'ref2'));
88+
select tcl_composite_arg_ref2(row('tkey', 42, 'ref2'));
89+
90+
-- Test argisnull primitive
91+
select tcl_argisnull('foo');
92+
select tcl_argisnull('');
93+
select tcl_argisnull(null);
94+
95+
-- Test spi_lastoid primitive
96+
create temp table t1 (f1 int);
97+
select tcl_lastoid('t1');
98+
create temp table t2 (f1 int) with oids;
99+
select tcl_lastoid('t2') > 0;

src/pl/tcl/sql/pltcl_setup.sql

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,24 @@ create trigger dta2_before before insert or update on T_dta2
429429
check_primkey('ref1', 'ref2', 'T_pkey2', 'key1', 'key2');
430430

431431

432+
create function tcl_composite_arg_ref1(T_dta1) returns int as '
433+
return $1(ref1)
434+
' language pltcl;
435+
436+
create function tcl_composite_arg_ref2(T_dta1) returns text as '
437+
return $1(ref2)
438+
' language pltcl;
439+
440+
create function tcl_argisnull(text) returns bool as '
441+
argisnull 1
442+
' language pltcl;
443+
444+
create function tcl_lastoid(tabname text) returns int8 as '
445+
spi_exec "insert into $1 default values"
446+
spi_lastoid
447+
' language pltcl;
448+
449+
432450
create function tcl_int4add(int4,int4) returns int4 as '
433451
return [expr $1 + $2]
434452
' language pltcl;

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy