Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 6da0c43

Browse files
committed
Change some of the existing plpgsql regression test cases so that they
exercise dollar quoting and named function parameters. AFAICS we had no tests of either feature before.
1 parent 2f48836 commit 6da0c43

File tree

2 files changed

+38
-46
lines changed

2 files changed

+38
-46
lines changed

src/test/regress/expected/plpgsql.out

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -119,14 +119,14 @@ create trigger tg_room_ad after delete
119119
-- * BEFORE INSERT or UPDATE on WSlot
120120
-- * - Check that room exists
121121
-- ************************************************************
122-
create function tg_wslot_biu() returns trigger as '
122+
create function tg_wslot_biu() returns trigger as $$
123123
begin
124124
if count(*) = 0 from Room where roomno = new.roomno then
125-
raise exception ''Room % does not exist'', new.roomno;
125+
raise exception 'Room % does not exist', new.roomno;
126126
end if;
127127
return new;
128128
end;
129-
' language 'plpgsql';
129+
$$ language plpgsql;
130130
create trigger tg_wslot_biu before insert or update
131131
on WSlot for each row execute procedure tg_wslot_biu();
132132
-- ************************************************************
@@ -159,18 +159,18 @@ create trigger tg_pfield_ad after delete
159159
-- * BEFORE INSERT or UPDATE on PSlot
160160
-- * - Ensure that our patchfield does exist
161161
-- ************************************************************
162-
create function tg_pslot_biu() returns trigger as '
162+
create function tg_pslot_biu() returns trigger as $proc$
163163
declare
164164
pfrec record;
165165
rename new to ps;
166166
begin
167167
select into pfrec * from PField where name = ps.pfname;
168168
if not found then
169-
raise exception ''Patchfield "%" does not exist'', ps.pfname;
169+
raise exception $$Patchfield "%" does not exist$$, ps.pfname;
170170
end if;
171171
return ps;
172172
end;
173-
' language 'plpgsql';
173+
$proc$ language plpgsql;
174174
create trigger tg_pslot_biu before insert or update
175175
on PSlot for each row execute procedure tg_pslot_biu();
176176
-- ************************************************************
@@ -191,25 +191,25 @@ create trigger tg_system_au after update
191191
-- * BEFORE INSERT or UPDATE on IFace
192192
-- * - set the slotname to IF.sysname.ifname
193193
-- ************************************************************
194-
create function tg_iface_biu() returns trigger as '
194+
create function tg_iface_biu() returns trigger as $$
195195
declare
196196
sname text;
197197
sysrec record;
198198
begin
199199
select into sysrec * from system where name = new.sysname;
200200
if not found then
201-
raise exception ''system "%" does not exist'', new.sysname;
201+
raise exception $q$system "%" does not exist$q$, new.sysname;
202202
end if;
203-
sname := ''IF.'' || new.sysname;
204-
sname := sname || ''.'';
203+
sname := 'IF.' || new.sysname;
204+
sname := sname || '.';
205205
sname := sname || new.ifname;
206206
if length(sname) > 20 then
207-
raise exception ''IFace slotname "%" too long (20 char max)'', sname;
207+
raise exception 'IFace slotname "%" too long (20 char max)', sname;
208208
end if;
209209
new.slotname := sname;
210210
return new;
211211
end;
212-
' language 'plpgsql';
212+
$$ language plpgsql;
213213
create trigger tg_iface_biu before insert or update
214214
on IFace for each row execute procedure tg_iface_biu();
215215
-- ************************************************************
@@ -243,12 +243,10 @@ create trigger tg_hub_a after insert or update or delete
243243
-- ************************************************************
244244
-- * Support function to add/remove slots of Hub
245245
-- ************************************************************
246-
create function tg_hub_adjustslots(bpchar, integer, integer)
246+
create function tg_hub_adjustslots(hname bpchar,
247+
oldnslots integer,
248+
newnslots integer)
247249
returns integer as '
248-
declare
249-
hname alias for $1;
250-
oldnslots alias for $2;
251-
newnslots alias for $3;
252250
begin
253251
if newnslots = oldnslots then
254252
return 0;
@@ -262,7 +260,7 @@ begin
262260
values (''HS.dummy'', hname, i, '''');
263261
end loop;
264262
return 0;
265-
end;
263+
end
266264
' language 'plpgsql';
267265
-- Test comments
268266
COMMENT ON FUNCTION tg_hub_adjustslots_wrong(bpchar, integer, integer) IS 'function with args';
@@ -589,11 +587,9 @@ create trigger tg_backlink_a after insert or update or delete
589587
-- * Support function to set the opponents backlink field
590588
-- * if it does not already point to the requested slot
591589
-- ************************************************************
592-
create function tg_backlink_set(bpchar, bpchar)
590+
create function tg_backlink_set(myname bpchar, blname bpchar)
593591
returns integer as '
594592
declare
595-
myname alias for $1;
596-
blname alias for $2;
597593
mytype char(2);
598594
link char(4);
599595
rec record;
@@ -684,8 +680,8 @@ begin
684680
end if;
685681
return 0;
686682
end if;
687-
end;
688-
' language 'plpgsql';
683+
end
684+
' language plpgsql;
689685
-- ************************************************************
690686
-- * AFTER INSERT or UPDATE or DELETE on slot with slotlink
691687
-- * - Ensure that the opponent correctly points back to us

src/test/regress/sql/plpgsql.sql

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -159,14 +159,14 @@ create trigger tg_room_ad after delete
159159
-- * BEFORE INSERT or UPDATE on WSlot
160160
-- * - Check that room exists
161161
-- ************************************************************
162-
create function tg_wslot_biu() returns trigger as '
162+
create function tg_wslot_biu() returns trigger as $$
163163
begin
164164
if count(*) = 0 from Room where roomno = new.roomno then
165-
raise exception ''Room % does not exist'', new.roomno;
165+
raise exception 'Room % does not exist', new.roomno;
166166
end if;
167167
return new;
168168
end;
169-
' language 'plpgsql';
169+
$$ language plpgsql;
170170

171171
create trigger tg_wslot_biu before insert or update
172172
on WSlot for each row execute procedure tg_wslot_biu();
@@ -208,18 +208,18 @@ create trigger tg_pfield_ad after delete
208208
-- * BEFORE INSERT or UPDATE on PSlot
209209
-- * - Ensure that our patchfield does exist
210210
-- ************************************************************
211-
create function tg_pslot_biu() returns trigger as '
211+
create function tg_pslot_biu() returns trigger as $proc$
212212
declare
213213
pfrec record;
214214
rename new to ps;
215215
begin
216216
select into pfrec * from PField where name = ps.pfname;
217217
if not found then
218-
raise exception ''Patchfield "%" does not exist'', ps.pfname;
218+
raise exception $$Patchfield "%" does not exist$$, ps.pfname;
219219
end if;
220220
return ps;
221221
end;
222-
' language 'plpgsql';
222+
$proc$ language plpgsql;
223223

224224
create trigger tg_pslot_biu before insert or update
225225
on PSlot for each row execute procedure tg_pslot_biu();
@@ -246,25 +246,25 @@ create trigger tg_system_au after update
246246
-- * BEFORE INSERT or UPDATE on IFace
247247
-- * - set the slotname to IF.sysname.ifname
248248
-- ************************************************************
249-
create function tg_iface_biu() returns trigger as '
249+
create function tg_iface_biu() returns trigger as $$
250250
declare
251251
sname text;
252252
sysrec record;
253253
begin
254254
select into sysrec * from system where name = new.sysname;
255255
if not found then
256-
raise exception ''system "%" does not exist'', new.sysname;
256+
raise exception $q$system "%" does not exist$q$, new.sysname;
257257
end if;
258-
sname := ''IF.'' || new.sysname;
259-
sname := sname || ''.'';
258+
sname := 'IF.' || new.sysname;
259+
sname := sname || '.';
260260
sname := sname || new.ifname;
261261
if length(sname) > 20 then
262-
raise exception ''IFace slotname "%" too long (20 char max)'', sname;
262+
raise exception 'IFace slotname "%" too long (20 char max)', sname;
263263
end if;
264264
new.slotname := sname;
265265
return new;
266266
end;
267-
' language 'plpgsql';
267+
$$ language plpgsql;
268268

269269
create trigger tg_iface_biu before insert or update
270270
on IFace for each row execute procedure tg_iface_biu();
@@ -304,12 +304,10 @@ create trigger tg_hub_a after insert or update or delete
304304
-- ************************************************************
305305
-- * Support function to add/remove slots of Hub
306306
-- ************************************************************
307-
create function tg_hub_adjustslots(bpchar, integer, integer)
307+
create function tg_hub_adjustslots(hname bpchar,
308+
oldnslots integer,
309+
newnslots integer)
308310
returns integer as '
309-
declare
310-
hname alias for $1;
311-
oldnslots alias for $2;
312-
newnslots alias for $3;
313311
begin
314312
if newnslots = oldnslots then
315313
return 0;
@@ -323,7 +321,7 @@ begin
323321
values (''HS.dummy'', hname, i, '''');
324322
end loop;
325323
return 0;
326-
end;
324+
end
327325
' language 'plpgsql';
328326

329327
-- Test comments
@@ -700,11 +698,9 @@ create trigger tg_backlink_a after insert or update or delete
700698
-- * Support function to set the opponents backlink field
701699
-- * if it does not already point to the requested slot
702700
-- ************************************************************
703-
create function tg_backlink_set(bpchar, bpchar)
701+
create function tg_backlink_set(myname bpchar, blname bpchar)
704702
returns integer as '
705703
declare
706-
myname alias for $1;
707-
blname alias for $2;
708704
mytype char(2);
709705
link char(4);
710706
rec record;
@@ -797,8 +793,8 @@ begin
797793
end if;
798794
return 0;
799795
end if;
800-
end;
801-
' language 'plpgsql';
796+
end
797+
' language plpgsql;
802798

803799

804800
-- ************************************************************

0 commit comments

Comments
 (0)