--- tmp_check/dump1.sql 2012-09-04 14:55:08 -0400 +++ tmp_check/dump2.sql 2012-09-04 14:55:48 -0400 @@ -672,16 +672,16 @@ * CREATE FUNCTION add_group(grp anyarray, ad anyelement, size integer) RETURNS anyarray* LANGUAGE plpgsql IMMUTABLE* - AS $$* -begin* - if grp is null then* - return array[ad];* - end if;* - if array_upper(grp, 1) < size then* - return grp || ad;* - end if;* - return grp;* -end;* + AS $$** +begin** + if grp is null then** + return array[ad];** + end if;** + if array_upper(grp, 1) < size then** + return grp || ad;** + end if;** + return grp;** +end;** $$;* * * @@ -715,8 +715,8 @@ * CREATE FUNCTION array_to_set(anyarray) RETURNS SETOF record* LANGUAGE sql IMMUTABLE STRICT* - AS $_$* - select i AS "index", $1[i] AS "value" from generate_subscripts($1, 1) i* + AS $_$** + select i AS "index", $1[i] AS "value" from generate_subscripts($1, 1) i** $_$;* * * @@ -739,14 +739,14 @@ * CREATE FUNCTION binary_coercible(oid, oid) RETURNS boolean* LANGUAGE sql STABLE STRICT* - AS $_$* -SELECT ($1 = $2) OR* - EXISTS(select 1 from pg_catalog.pg_cast where* - castsource = $1 and casttarget = $2 and* - castmethod = 'b' and castcontext = 'i') OR* - ($2 = 'pg_catalog.anyarray'::pg_catalog.regtype AND* - EXISTS(select 1 from pg_catalog.pg_type where* - oid = $1 and typelem != 0 and typlen = -1))* + AS $_$** +SELECT ($1 = $2) OR** + EXISTS(select 1 from pg_catalog.pg_cast where** + castsource = $1 and casttarget = $2 and** + castmethod = 'b' and castcontext = 'i') OR** + ($2 = 'pg_catalog.anyarray'::pg_catalog.regtype AND** + EXISTS(select 1 from pg_catalog.pg_type where** + oid = $1 and typelem != 0 and typlen = -1))** $_$;* * * @@ -758,10 +758,10 @@ * CREATE FUNCTION bleat(integer) RETURNS integer* LANGUAGE plpgsql* - AS $_$* -begin* - raise notice 'bleat %', $1;* - return $1;* + AS $_$** +begin** + raise notice 'bleat %', $1;** + return $1;** end$_$;* * * @@ -773,26 +773,26 @@ * CREATE FUNCTION blockme() RETURNS integer* LANGUAGE plpgsql* - AS $$* -declare x int;* -begin* - x := 1;* - insert into foo values(x);* - begin* - x := x + 1;* - insert into foo values(x);* - -- we assume this will take longer than 2 seconds:* - select count(*) into x from tenk1 a, tenk1 b, tenk1 c;* - exception* - when others then* - raise notice 'caught others?';* - return -1;* - when query_canceled then* - raise notice 'nyeah nyeah, can''t stop me';* - x := x * 10;* - end;* - insert into foo values(x);* - return x;* + AS $$** +declare x int;** +begin** + x := 1;** + insert into foo values(x);** + begin** + x := x + 1;** + insert into foo values(x);** + -- we assume this will take longer than 2 seconds:** + select count(*) into x from tenk1 a, tenk1 b, tenk1 c;** + exception** + when others then** + raise notice 'caught others?';** + return -1;** + when query_canceled then** + raise notice 'nyeah nyeah, can''t stop me';** + x := x * 10;** + end;** + insert into foo values(x);** + return x;** end$$;* * * @@ -826,18 +826,18 @@ * CREATE FUNCTION cache_test(integer) RETURNS integer* LANGUAGE plpgsql* - AS $_$* -declare total int;* -begin* - create temp table t1(f1 int);* - insert into t1 values($1);* - insert into t1 values(11);* - insert into t1 values(12);* - insert into t1 values(13);* - select sum(f1) into total from t1;* - drop table t1;* - return total;* -end* + AS $_$** +declare total int;** +begin** + create temp table t1(f1 int);** + insert into t1 values($1);** + insert into t1 values(11);** + insert into t1 values(12);** + insert into t1 values(13);** + select sum(f1) into total from t1;** + drop table t1;** + return total;** +end** $_$;* * * @@ -849,9 +849,9 @@ * CREATE FUNCTION cache_test_2() RETURNS integer* LANGUAGE plpgsql* - AS $$* -begin* - return f1 from v1;* + AS $$** +begin** + return f1 from v1;** end$$;* * * @@ -863,15 +863,15 @@ * CREATE FUNCTION cachebug() RETURNS void* LANGUAGE plpgsql* - AS $$* -declare r int;* -begin* - drop table if exists temptable cascade;* - create temp table temptable as select * from generate_series(1,3) as f1;* - create temp view vv as select * from temptable;* - for r in select * from vv loop* - raise notice '%', r;* - end loop;* + AS $$** +declare r int;** +begin** + drop table if exists temptable cascade;** + create temp table temptable as select * from generate_series(1,3) as f1;** + create temp view vv as select * from temptable;** + for r in select * from vv loop** + raise notice '%', r;** + end loop;** end$$;* * * @@ -916,12 +916,12 @@ * CREATE FUNCTION city_delete() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -begin* - DELETE FROM city_table WHERE city_id = OLD.city_id;* - if NOT FOUND then RETURN NULL; end if;* - RETURN OLD;* -end;* + AS $$** +begin** + DELETE FROM city_table WHERE city_id = OLD.city_id;** + if NOT FOUND then RETURN NULL; end if;** + RETURN OLD;** +end;** $$;* * * @@ -933,31 +933,31 @@ * CREATE FUNCTION city_insert() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -declare* - ctry_id int;* -begin* - if NEW.country_name IS NOT NULL then* - SELECT country_id, continent INTO ctry_id, NEW.continent* - FROM country_table WHERE country_name = NEW.country_name;* - if NOT FOUND then* - raise exception 'No such country: "%"', NEW.country_name;* - end if;* - else* - NEW.continent := NULL;* - end if;* -* - if NEW.city_id IS NOT NULL then* - INSERT INTO city_table* - VALUES(NEW.city_id, NEW.city_name, NEW.population, ctry_id);* - else* - INSERT INTO city_table(city_name, population, country_id)* - VALUES(NEW.city_name, NEW.population, ctry_id)* - RETURNING city_id INTO NEW.city_id;* - end if;* -* - RETURN NEW;* -end;* + AS $$** +declare** + ctry_id int;** +begin** + if NEW.country_name IS NOT NULL then** + SELECT country_id, continent INTO ctry_id, NEW.continent** + FROM country_table WHERE country_name = NEW.country_name;** + if NOT FOUND then** + raise exception 'No such country: "%"', NEW.country_name;** + end if;** + else** + NEW.continent := NULL;** + end if;** +** + if NEW.city_id IS NOT NULL then** + INSERT INTO city_table** + VALUES(NEW.city_id, NEW.city_name, NEW.population, ctry_id);** + else** + INSERT INTO city_table(city_name, population, country_id)** + VALUES(NEW.city_name, NEW.population, ctry_id)** + RETURNING city_id INTO NEW.city_id;** + end if;** +** + RETURN NEW;** +end;** $$;* * * @@ -969,31 +969,31 @@ * CREATE FUNCTION city_update() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -declare* - ctry_id int;* -begin* - if NEW.country_name IS DISTINCT FROM OLD.country_name then* - SELECT country_id, continent INTO ctry_id, NEW.continent* - FROM country_table WHERE country_name = NEW.country_name;* - if NOT FOUND then* - raise exception 'No such country: "%"', NEW.country_name;* - end if;* -* - UPDATE city_table SET city_name = NEW.city_name,* - population = NEW.population,* - country_id = ctry_id* - WHERE city_id = OLD.city_id;* - else* - UPDATE city_table SET city_name = NEW.city_name,* - population = NEW.population* - WHERE city_id = OLD.city_id;* - NEW.continent := OLD.continent;* - end if;* -* - if NOT FOUND then RETURN NULL; end if;* - RETURN NEW;* -end;* + AS $$** +declare** + ctry_id int;** +begin** + if NEW.country_name IS DISTINCT FROM OLD.country_name then** + SELECT country_id, continent INTO ctry_id, NEW.continent** + FROM country_table WHERE country_name = NEW.country_name;** + if NOT FOUND then** + raise exception 'No such country: "%"', NEW.country_name;** + end if;** +** + UPDATE city_table SET city_name = NEW.city_name,** + population = NEW.population,** + country_id = ctry_id** + WHERE city_id = OLD.city_id;** + else** + UPDATE city_table SET city_name = NEW.city_name,** + population = NEW.population** + WHERE city_id = OLD.city_id;** + NEW.continent := OLD.continent;** + end if;** +** + if NOT FOUND then RETURN NULL; end if;** + RETURN NEW;** +end;** $$;* * * @@ -1005,11 +1005,11 @@ * CREATE FUNCTION doubledecrement(p1 pos_int) RETURNS pos_int* LANGUAGE plpgsql* - AS $$* -declare v pos_int := 1;* -begin* - v := p1 - 1;* - return v - 1;* + AS $$** +declare v pos_int := 1;** +begin** + v := p1 - 1;** + return v - 1;** end$$;* * * @@ -1021,12 +1021,12 @@ * CREATE FUNCTION dummy_update_func() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -BEGIN* - RAISE NOTICE 'dummy_update_func(%) called: action = %, old = %, new = %',* - TG_ARGV[0], TG_OP, OLD, NEW;* - RETURN NEW;* -END;* + AS $$** +BEGIN** + RAISE NOTICE 'dummy_update_func(%) called: action = %, old = %, new = %',** + TG_ARGV[0], TG_OP, OLD, NEW;** + RETURN NEW;** +END;** $$;* * * @@ -1143,24 +1143,24 @@ * CREATE FUNCTION execute_into_test(character varying) RETURNS record* LANGUAGE plpgsql* - AS $_$* -declare* - _r record;* - _rt eifoo%rowtype;* - _v eitype;* - i int;* - j int;* - k int;* -begin* - execute 'insert into '||$1||' values(10,15)';* - execute 'select (row).* from (select row(10,1)::eifoo) s' into _r;* - raise notice '% %', _r.i, _r.y;* - execute 'select * from '||$1||' limit 1' into _rt;* - raise notice '% %', _rt.i, _rt.y;* - execute 'select *, 20 from '||$1||' limit 1' into i, j, k;* - raise notice '% % %', i, j, k;* - execute 'select 1,2' into _v;* - return _v;* + AS $_$** +declare** + _r record;** + _rt eifoo%rowtype;** + _v eitype;** + i int;** + j int;** + k int;** +begin** + execute 'insert into '||$1||' values(10,15)';** + execute 'select (row).* from (select row(10,1)::eifoo) s' into _r;** + raise notice '% %', _r.i, _r.y;** + execute 'select * from '||$1||' limit 1' into _rt;** + raise notice '% %', _rt.i, _rt.y;** + execute 'select *, 20 from '||$1||' limit 1' into i, j, k;** + raise notice '% % %', i, j, k;** + execute 'select 1,2' into _v;** + return _v;** end; $_$;* * * @@ -1205,30 +1205,30 @@ * CREATE FUNCTION for_vect() RETURNS void* LANGUAGE plpgsql* - AS $_$* -<>declare a integer; b varchar; c varchar; r record;* -begin* - -- fori* - for i in 1 .. 3 loop* - raise notice '%', i;* - end loop;* - -- fore with record var* - for r in select gs as aa, 'BB' as bb, 'CC' as cc from generate_series(1,4) gs loop* - raise notice '% % %', r.aa, r.bb, r.cc;* - end loop;* - -- fore with single scalar* - for a in select gs from generate_series(1,4) gs loop* - raise notice '%', a;* - end loop;* - -- fore with multiple scalars* - for a,b,c in select gs, 'BB','CC' from generate_series(1,4) gs loop* - raise notice '% % %', a, b, c;* - end loop;* - -- using qualified names in fors, fore is enabled, disabled only for fori* - for lbl.a, lbl.b, lbl.c in execute $$select gs, 'bb','cc' from generate_series(1,4) gs$$ loop* - raise notice '% % %', a, b, c;* - end loop;* -end;* + AS $_$** +<>declare a integer; b varchar; c varchar; r record;** +begin** + -- fori** + for i in 1 .. 3 loop** + raise notice '%', i;** + end loop;** + -- fore with record var** + for r in select gs as aa, 'BB' as bb, 'CC' as cc from generate_series(1,4) gs loop** + raise notice '% % %', r.aa, r.bb, r.cc;** + end loop;** + -- fore with single scalar** + for a in select gs from generate_series(1,4) gs loop** + raise notice '%', a;** + end loop;** + -- fore with multiple scalars** + for a,b,c in select gs, 'BB','CC' from generate_series(1,4) gs loop** + raise notice '% % %', a, b, c;** + end loop;** + -- using qualified names in fors, fore is enabled, disabled only for fori** + for lbl.a, lbl.b, lbl.c in execute $$select gs, 'bb','cc' from generate_series(1,4) gs$$ loop** + raise notice '% % %', a, b, c;** + end loop;** +end;** $_$;* * * @@ -1374,8 +1374,8 @@ * CREATE FUNCTION make_table() RETURNS void* LANGUAGE sql* - AS $$* - CREATE TABLE created_table AS SELECT * FROM int8_tbl;* + AS $$** + CREATE TABLE created_table AS SELECT * FROM int8_tbl;** $$;* * * @@ -1398,13 +1398,13 @@ * CREATE FUNCTION multi_datum_use(p1 integer) RETURNS boolean* LANGUAGE plpgsql* - AS $_$* -declare* - x int;* - y int;* -begin* - select into x,y unique1/p1, unique1/$1 from tenk1 group by unique1/p1;* - return x = y;* + AS $_$** +declare** + x int;** + y int;** +begin** + select into x,y unique1/p1, unique1/$1 from tenk1 group by unique1/p1;** + return x = y;** end$_$;* * * @@ -1417,11 +1417,11 @@ CREATE FUNCTION myfunc(integer) RETURNS text* LANGUAGE plpgsql* SET work_mem TO '1MB'* - AS $_$* -begin* - set work_mem = '2MB';* - perform 1/$1;* - return current_setting('work_mem');* + AS $_$** +begin** + set work_mem = '2MB';** + perform 1/$1;** + return current_setting('work_mem');** end $_$;* * * @@ -1433,8 +1433,8 @@ * CREATE FUNCTION myleast(VARIADIC anyarray) RETURNS anyelement* LANGUAGE sql IMMUTABLE STRICT* - AS $_$* - select min($1[i]) from generate_subscripts($1,1) g(i)* + AS $_$** + select min($1[i]) from generate_subscripts($1,1) g(i)** $_$;* * * @@ -1446,20 +1446,20 @@ * CREATE FUNCTION namedparmcursor_test1(integer, integer) RETURNS boolean* LANGUAGE plpgsql* - AS $_$* -declare* - c1 cursor (param1 int, param12 int) for select * from rc_test where a > param1 and b > param12;* - nonsense record;* -begin* - open c1(param12 := $2, param1 := $1);* - fetch c1 into nonsense;* - close c1;* - if found then* - return true;* - else* - return false;* - end if;* -end* + AS $_$** +declare** + c1 cursor (param1 int, param12 int) for select * from rc_test where a > param1 and b > param12;** + nonsense record;** +begin** + open c1(param12 := $2, param1 := $1);** + fetch c1 into nonsense;** + close c1;** + if found then** + return true;** + else** + return false;** + end if;** +end** $_$;* * * @@ -1471,20 +1471,20 @@ * CREATE FUNCTION namedparmcursor_test2(integer, integer) RETURNS boolean* LANGUAGE plpgsql* - AS $_$* -declare* - c1 cursor (param1 int, param2 int) for select * from rc_test where a > param1 and b > param2;* - nonsense record;* -begin* - open c1(param1 := $1, $2);* - fetch c1 into nonsense;* - close c1;* - if found then* - return true;* - else* - return false;* - end if;* -end* + AS $_$** +declare** + c1 cursor (param1 int, param2 int) for select * from rc_test where a > param1 and b > param2;** + nonsense record;** +begin** + open c1(param1 := $1, $2);** + fetch c1 into nonsense;** + close c1;** + if found then** + return true;** + else** + return false;** + end if;** +end** $_$;* * * @@ -1496,12 +1496,12 @@ * CREATE FUNCTION namedparmcursor_test7() RETURNS void* LANGUAGE plpgsql* - AS $$* -declare* - c1 cursor (p1 int, p2 int) for* - select * from tenk1 where thousand = p1 and tenthous = p2;* -begin* - open c1 (p2 := 77, p1 := 42/0);* + AS $$** +declare** + c1 cursor (p1 int, p2 int) for** + select * from tenk1 where thousand = p1 and tenthous = p2;** +begin** + open c1 (p2 := 77, p1 := 42/0);** end $$;* * * @@ -1513,16 +1513,16 @@ * CREATE FUNCTION namedparmcursor_test8() RETURNS integer* LANGUAGE plpgsql* - AS $$* -declare* - c1 cursor (p1 int, p2 int) for* - select count(*) from tenk1 where thousand = p1 and tenthous = p2;* - n int4;* -begin* - open c1 (77 -- test* - , 42);* - fetch c1 into n;* - return n;* + AS $$** +declare** + c1 cursor (p1 int, p2 int) for** + select count(*) from tenk1 where thousand = p1 and tenthous = p2;** + n int4;** +begin** + open c1 (77 -- test** + , 42);** + fetch c1 into n;** + return n;** end $$;* * * @@ -1534,17 +1534,17 @@ * CREATE FUNCTION namedparmcursor_test9(p1 integer) RETURNS integer* LANGUAGE plpgsql* - AS $$* -declare* - c1 cursor (p1 int, p2 int, debug int) for* - select count(*) from tenk1 where thousand = p1 and tenthous = p2* - and four = debug;* - p2 int4 := 1006;* - n int4;* -begin* - open c1 (p1 := p1, p2 := p2, debug := 2);* - fetch c1 into n;* - return n;* + AS $$** +declare** + c1 cursor (p1 int, p2 int, debug int) for** + select count(*) from tenk1 where thousand = p1 and tenthous = p2** + and four = debug;** + p2 int4 := 1006;** + n int4;** +begin** + open c1 (p1 := p1, p2 := p2, debug := 2);** + fetch c1 into n;** + return n;** end $$;* * * @@ -1578,10 +1578,10 @@ * CREATE FUNCTION noticetrigger() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -begin* - raise notice 'noticetrigger % %', new.f1, new.data;* - return null;* + AS $$** +begin** + raise notice 'noticetrigger % %', new.f1, new.data;** + return null;** end $$;* * * @@ -1641,25 +1641,25 @@ * CREATE FUNCTION perform_test_func() RETURNS void* LANGUAGE plpgsql* - AS $$* -BEGIN* - IF FOUND then* - INSERT INTO perform_test VALUES (100, 100);* - END IF;* -* - PERFORM simple_func(5);* -* - IF FOUND then* - INSERT INTO perform_test VALUES (100, 100);* - END IF;* -* - PERFORM simple_func(50);* -* - IF FOUND then* - INSERT INTO perform_test VALUES (100, 100);* - END IF;* -* - RETURN;* + AS $$** +BEGIN** + IF FOUND then** + INSERT INTO perform_test VALUES (100, 100);** + END IF;** +** + PERFORM simple_func(5);** +** + IF FOUND then** + INSERT INTO perform_test VALUES (100, 100);** + END IF;** +** + PERFORM simple_func(50);** +** + IF FOUND then** + INSERT INTO perform_test VALUES (100, 100);** + END IF;** +** + RETURN;** END;$$;* * * @@ -1671,14 +1671,14 @@ * CREATE FUNCTION physically_coercible(oid, oid) RETURNS boolean* LANGUAGE sql STABLE STRICT* - AS $_$* -SELECT ($1 = $2) OR* - EXISTS(select 1 from pg_catalog.pg_cast where* - castsource = $1 and casttarget = $2 and* - castmethod = 'b') OR* - ($2 = 'pg_catalog.anyarray'::pg_catalog.regtype AND* - EXISTS(select 1 from pg_catalog.pg_type where* - oid = $1 and typelem != 0 and typlen = -1))* + AS $_$** +SELECT ($1 = $2) OR** + EXISTS(select 1 from pg_catalog.pg_cast where** + castsource = $1 and casttarget = $2 and** + castmethod = 'b') OR** + ($2 = 'pg_catalog.anyarray'::pg_catalog.regtype AND** + EXISTS(select 1 from pg_catalog.pg_type where** + oid = $1 and typelem != 0 and typlen = -1))** $_$;* * * @@ -1690,44 +1690,44 @@ * CREATE FUNCTION pslot_backlink_view(character) RETURNS text* LANGUAGE plpgsql* - AS $_$* -<>* -declare* - rec record;* - bltype char(2);* - retval text;* -begin* - select into rec * from PSlot where slotname = $1;* - if not found then* - return '';* - end if;* - if rec.backlink = '' then* - return '-';* - end if;* - bltype := substr(rec.backlink, 1, 2);* - if bltype = 'PL' then* - declare* - rec record;* - begin* - select into rec * from PLine where slotname = "outer".rec.backlink;* - retval := 'Phone line ' || trim(rec.phonenumber);* - if rec.comment != '' then* - retval := retval || ' (';* - retval := retval || rec.comment;* - retval := retval || ')';* - end if;* - return retval;* - end;* - end if;* - if bltype = 'WS' then* - select into rec * from WSlot where slotname = rec.backlink;* - retval := trim(rec.slotname) || ' in room ';* - retval := retval || trim(rec.roomno);* - retval := retval || ' -> ';* - return retval || wslot_slotlink_view(rec.slotname);* - end if;* - return rec.backlink;* -end;* + AS $_$** +<>** +declare** + rec record;** + bltype char(2);** + retval text;** +begin** + select into rec * from PSlot where slotname = $1;** + if not found then** + return '';** + end if;** + if rec.backlink = '' then** + return '-';** + end if;** + bltype := substr(rec.backlink, 1, 2);** + if bltype = 'PL' then** + declare** + rec record;** + begin** + select into rec * from PLine where slotname = "outer".rec.backlink;** + retval := 'Phone line ' || trim(rec.phonenumber);** + if rec.comment != '' then** + retval := retval || ' (';** + retval := retval || rec.comment;** + retval := retval || ')';** + end if;** + return retval;** + end;** + end if;** + if bltype = 'WS' then** + select into rec * from WSlot where slotname = rec.backlink;** + retval := trim(rec.slotname) || ' in room ';** + retval := retval || trim(rec.roomno);** + retval := retval || ' -> ';** + return retval || wslot_slotlink_view(rec.slotname);** + end if;** + return rec.backlink;** +end;** $_$;* * * @@ -1739,35 +1739,35 @@ * CREATE FUNCTION pslot_slotlink_view(character) RETURNS text* LANGUAGE plpgsql* - AS $_$* -declare* - psrec record;* - sltype char(2);* - retval text;* -begin* - select into psrec * from PSlot where slotname = $1;* - if not found then* - return '';* - end if;* - if psrec.slotlink = '' then* - return '-';* - end if;* - sltype := substr(psrec.slotlink, 1, 2);* - if sltype = 'PS' then* - retval := trim(psrec.slotlink) || ' -> ';* - return retval || pslot_backlink_view(psrec.slotlink);* - end if;* - if sltype = 'HS' then* - retval := comment from Hub H, HSlot HS* - where HS.slotname = psrec.slotlink* - and H.name = HS.hubname;* - retval := retval || ' slot ';* - retval := retval || slotno::text from HSlot* - where slotname = psrec.slotlink;* - return retval;* - end if;* - return psrec.slotlink;* -end;* + AS $_$** +declare** + psrec record;** + sltype char(2);** + retval text;** +begin** + select into psrec * from PSlot where slotname = $1;** + if not found then** + return '';** + end if;** + if psrec.slotlink = '' then** + return '-';** + end if;** + sltype := substr(psrec.slotlink, 1, 2);** + if sltype = 'PS' then** + retval := trim(psrec.slotlink) || ' -> ';** + return retval || pslot_backlink_view(psrec.slotlink);** + end if;** + if sltype = 'HS' then** + retval := comment from Hub H, HSlot HS** + where HS.slotname = psrec.slotlink** + and H.name = HS.hubname;** + retval := retval || ' slot ';** + retval := retval || slotno::text from HSlot** + where slotname = psrec.slotlink;** + return retval;** + end if;** + return psrec.slotlink;** +end;** $_$;* * * @@ -1790,11 +1790,11 @@ * CREATE FUNCTION raise_test1(integer) RETURNS integer* LANGUAGE plpgsql* - AS $_$* -begin* - raise notice 'This message has too many parameters!', $1;* - return $1;* -end;* + AS $_$** +begin** + raise notice 'This message has too many parameters!', $1;** + return $1;** +end;** $_$;* * * @@ -1806,11 +1806,11 @@ * CREATE FUNCTION raise_test2(integer) RETURNS integer* LANGUAGE plpgsql* - AS $_$* -begin* - raise notice 'This message has too few parameters: %, %, %', $1, $1;* - return $1;* -end;* + AS $_$** +begin** + raise notice 'This message has too few parameters: %, %, %', $1, $1;** + return $1;** +end;** $_$;* * * @@ -1844,14 +1844,14 @@ * CREATE FUNCTION recurse(double precision) RETURNS double precision* LANGUAGE plpgsql* - AS $_$* -begin* - if ($1 > 0) then* - return sql_recurse($1 - 1);* - else* - return $1;* - end if;* -end;* + AS $_$** +begin** + if ($1 > 0) then** + return sql_recurse($1 - 1);** + else** + return $1;** + end if;** +end;** $_$;* * * @@ -1863,15 +1863,15 @@ * CREATE FUNCTION recursion_test(integer, integer) RETURNS text* LANGUAGE plpgsql* - AS $_$* -DECLARE rslt text;* -BEGIN* - IF $1 <= 0 THEN* - rslt = CAST($2 AS TEXT);* - ELSE* - rslt = CAST($1 AS TEXT) || ',' || recursion_test($1 - 1, $2);* - END IF;* - RETURN rslt;* + AS $_$** +DECLARE rslt text;** +BEGIN** + IF $1 <= 0 THEN** + rslt = CAST($2 AS TEXT);** + ELSE** + rslt = CAST($1 AS TEXT) || ',' || recursion_test($1 - 1, $2);** + END IF;** + RETURN rslt;** END;$_$;* * * @@ -1883,11 +1883,11 @@ * CREATE FUNCTION refcursor_test1(refcursor) RETURNS refcursor* LANGUAGE plpgsql* - AS $_$* -begin* - perform return_refcursor($1);* - return $1;* -end* + AS $_$** +begin** + perform return_refcursor($1);** + return $1;** +end** $_$;* * * @@ -1899,20 +1899,20 @@ * CREATE FUNCTION refcursor_test2(integer, integer) RETURNS boolean* LANGUAGE plpgsql* - AS $_$* -declare* - c1 cursor (param1 int, param2 int) for select * from rc_test where a > param1 and b > param2;* - nonsense record;* -begin* - open c1($1, $2);* - fetch c1 into nonsense;* - close c1;* - if found then* - return true;* - else* - return false;* - end if;* -end* + AS $_$** +declare** + c1 cursor (param1 int, param2 int) for select * from rc_test where a > param1 and b > param2;** + nonsense record;** +begin** + open c1($1, $2);** + fetch c1 into nonsense;** + close c1;** + if found then** + return true;** + else** + return false;** + end if;** +end** $_$;* * * @@ -1935,24 +1935,24 @@ * CREATE FUNCTION reraise_test() RETURNS void* LANGUAGE plpgsql* - AS $$* -BEGIN* - BEGIN* - RAISE syntax_error;* - EXCEPTION* - WHEN syntax_error THEN* - BEGIN* - raise notice 'exception % thrown in inner block, reraising', sqlerrm;* - RAISE;* - EXCEPTION* - WHEN OTHERS THEN* - raise notice 'RIGHT - exception % caught in inner block', sqlerrm;* - END;* - END;* -EXCEPTION* - WHEN OTHERS THEN* - raise notice 'WRONG - exception % caught in outer block', sqlerrm;* -END;* + AS $$** +BEGIN** + BEGIN** + RAISE syntax_error;** + EXCEPTION** + WHEN syntax_error THEN** + BEGIN** + raise notice 'exception % thrown in inner block, reraising', sqlerrm;** + RAISE;** + EXCEPTION** + WHEN OTHERS THEN** + raise notice 'RIGHT - exception % caught in inner block', sqlerrm;** + END;** + END;** +EXCEPTION** + WHEN OTHERS THEN** + raise notice 'WRONG - exception % caught in outer block', sqlerrm;** +END;** $$;* * * @@ -1964,14 +1964,14 @@ * CREATE FUNCTION ret_query1(OUT integer, OUT integer) RETURNS SETOF record* LANGUAGE plpgsql* - AS $_$* -begin* - $1 := -1;* - $2 := -2;* - return next;* - return query select x + 1, x * 10 from generate_series(0, 10) s (x);* - return next;* -end;* + AS $_$** +begin** + $1 := -1;** + $2 := -2;** + return next;** + return query select x + 1, x * 10 from generate_series(0, 10) s (x);** + return next;** +end;** $_$;* * * @@ -1983,11 +1983,11 @@ * CREATE FUNCTION ret_query2(lim integer) RETURNS SETOF record_type* LANGUAGE plpgsql* - AS $$* -begin* - return query select md5(s.x::text), s.x, s.x > 0* - from generate_series(-8, lim) s (x) where s.x % 2 = 0;* -end;* + AS $$** +begin** + return query select md5(s.x::text), s.x, s.x > 0** + from generate_series(-8, lim) s (x) where s.x % 2 = 0;** +end;** $$;* * * @@ -1999,11 +1999,11 @@ * CREATE FUNCTION return_refcursor(rc refcursor) RETURNS refcursor* LANGUAGE plpgsql* - AS $$* -begin* - open rc for select a from rc_test;* - return rc;* -end* + AS $$** +begin** + open rc for select a from rc_test;** + return rc;** +end** $$;* * * @@ -2037,13 +2037,13 @@ * CREATE FUNCTION serializable_update_trig() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -declare* - rec record;* -begin* - new.description = 'updated in trigger';* - return new;* -end;* + AS $$** +declare** + rec record;** +begin** + new.description = 'updated in trigger';** + return new;** +end;** $$;* * * @@ -2066,14 +2066,14 @@ * CREATE FUNCTION simple_func(integer) RETURNS boolean* LANGUAGE plpgsql* - AS $_$* -BEGIN* - IF $1 < 20 THEN* - INSERT INTO perform_test VALUES ($1, $1 + 10);* - RETURN TRUE;* - ELSE* - RETURN FALSE;* - END IF;* + AS $_$** +BEGIN** + IF $1 < 20 THEN** + INSERT INTO perform_test VALUES ($1, $1 + 10);** + RETURN TRUE;** + ELSE** + RETURN FALSE;** + END IF;** END;$_$;* * * @@ -2085,7 +2085,7 @@ * CREATE FUNCTION sql_if(boolean, anyelement, anyelement) RETURNS anyelement* LANGUAGE sql* - AS $_$* + AS $_$** select case when $1 then $2 else $3 end $_$;* * * @@ -2163,39 +2163,39 @@ * CREATE FUNCTION test_found() RETURNS boolean* LANGUAGE plpgsql* - AS $$* - declare* - begin* - insert into found_test_tbl values (1);* - if FOUND then* - insert into found_test_tbl values (2);* - end if;* -* - update found_test_tbl set a = 100 where a = 1;* - if FOUND then* - insert into found_test_tbl values (3);* - end if;* -* - delete from found_test_tbl where a = 9999; -- matches no rows* - if not FOUND then* - insert into found_test_tbl values (4);* - end if;* -* - for i in 1 .. 10 loop* - -- no need to do anything* - end loop;* - if FOUND then* - insert into found_test_tbl values (5);* - end if;* -* - -- never executes the loop* - for i in 2 .. 1 loop* - -- no need to do anything* - end loop;* - if not FOUND then* - insert into found_test_tbl values (6);* - end if;* - return true;* + AS $$** + declare** + begin** + insert into found_test_tbl values (1);** + if FOUND then** + insert into found_test_tbl values (2);** + end if;** +** + update found_test_tbl set a = 100 where a = 1;** + if FOUND then** + insert into found_test_tbl values (3);** + end if;** +** + delete from found_test_tbl where a = 9999; -- matches no rows** + if not FOUND then** + insert into found_test_tbl values (4);** + end if;** +** + for i in 1 .. 10 loop** + -- no need to do anything** + end loop;** + if FOUND then** + insert into found_test_tbl values (5);** + end if;** +** + -- never executes the loop** + for i in 2 .. 1 loop** + -- no need to do anything** + end loop;** + if not FOUND then** + insert into found_test_tbl values (6);** + end if;** + return true;** end;$$;* * * @@ -2207,17 +2207,17 @@ * CREATE FUNCTION test_ret_rec_dyn(integer) RETURNS record* LANGUAGE plpgsql* - AS $_$* -DECLARE* - retval RECORD;* -BEGIN* - IF $1 > 10 THEN* - SELECT INTO retval 5, 10, 15;* - RETURN retval;* - ELSE* - SELECT INTO retval 50, 5::numeric, 'xxx'::text;* - RETURN retval;* - END IF;* + AS $_$** +DECLARE** + retval RECORD;** +BEGIN** + IF $1 > 10 THEN** + SELECT INTO retval 5, 10, 15;** + RETURN retval;** + ELSE** + SELECT INTO retval 50, 5::numeric, 'xxx'::text;** + RETURN retval;** + END IF;** END;$_$;* * * @@ -2229,20 +2229,20 @@ * CREATE FUNCTION test_ret_set_rec_dyn(integer) RETURNS SETOF record* LANGUAGE plpgsql* - AS $_$* -DECLARE* - retval RECORD;* -BEGIN* - IF $1 > 10 THEN* - SELECT INTO retval 5, 10, 15;* - RETURN NEXT retval;* - RETURN NEXT retval;* - ELSE* - SELECT INTO retval 50, 5::numeric, 'xxx'::text;* - RETURN NEXT retval;* - RETURN NEXT retval;* - END IF;* - RETURN;* + AS $_$** +DECLARE** + retval RECORD;** +BEGIN** + IF $1 > 10 THEN** + SELECT INTO retval 5, 10, 15;** + RETURN NEXT retval;** + RETURN NEXT retval;** + ELSE** + SELECT INTO retval 50, 5::numeric, 'xxx'::text;** + RETURN NEXT retval;** + RETURN NEXT retval;** + END IF;** + RETURN;** END;$_$;* * * @@ -2254,14 +2254,14 @@ * CREATE FUNCTION test_ret_set_scalar(integer, integer) RETURNS SETOF integer* LANGUAGE plpgsql* - AS $_$* -DECLARE* - i int;* -BEGIN* - FOR i IN $1 .. $2 LOOP* - RETURN NEXT i + 1;* - END LOOP;* - RETURN;* + AS $_$** +DECLARE** + i int;** +BEGIN** + FOR i IN $1 .. $2 LOOP** + RETURN NEXT i + 1;** + END LOOP;** + RETURN;** END;$_$;* * * @@ -2297,14 +2297,14 @@ * CREATE FUNCTION test_table_func_rec() RETURNS SETOF found_test_tbl* LANGUAGE plpgsql* - AS $$* -DECLARE* - rec RECORD;* -BEGIN* - FOR rec IN select * from found_test_tbl LOOP* - RETURN NEXT rec;* - END LOOP;* - RETURN;* + AS $$** +DECLARE** + rec RECORD;** +BEGIN** + FOR rec IN select * from found_test_tbl LOOP** + RETURN NEXT rec;** + END LOOP;** + RETURN;** END;$$;* * * @@ -2316,14 +2316,14 @@ * CREATE FUNCTION test_table_func_row() RETURNS SETOF found_test_tbl* LANGUAGE plpgsql* - AS $$* -DECLARE* - row found_test_tbl%ROWTYPE;* -BEGIN* - FOR row IN select * from found_test_tbl LOOP* - RETURN NEXT row;* - END LOOP;* - RETURN;* + AS $$** +DECLARE** + row found_test_tbl%ROWTYPE;** +BEGIN** + FOR row IN select * from found_test_tbl LOOP** + RETURN NEXT row;** + END LOOP;** + RETURN;** END;$$;* * * @@ -2335,19 +2335,19 @@ * CREATE FUNCTION test_variable_storage() RETURNS text* LANGUAGE plpgsql* - AS $$* -declare x text;* -begin* - x := '1234';* - begin* - x := x || '5678';* - -- force error inside subtransaction SPI context* - perform trap_zero_divide(-100);* - exception* - when others then* - x := x || '9012';* - end;* - return x;* + AS $$** +declare x text;** +begin** + x := '1234';** + begin** + x := x || '5678';** + -- force error inside subtransaction SPI context** + perform trap_zero_divide(-100);** + exception** + when others then** + x := x || '9012';** + end;** + return x;** end$$;* * * @@ -2403,38 +2403,38 @@ * CREATE FUNCTION tg_backlink_a() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -declare* - dummy integer;* -begin* - if tg_op = 'INSERT' then* - if new.backlink != '' then* - dummy := tg_backlink_set(new.backlink, new.slotname);* - end if;* - return new;* - end if;* - if tg_op = 'UPDATE' then* - if new.backlink != old.backlink then* - if old.backlink != '' then* - dummy := tg_backlink_unset(old.backlink, old.slotname);* - end if;* - if new.backlink != '' then* - dummy := tg_backlink_set(new.backlink, new.slotname);* - end if;* - else* - if new.slotname != old.slotname and new.backlink != '' then* - dummy := tg_slotlink_set(new.backlink, new.slotname);* - end if;* - end if;* - return new;* - end if;* - if tg_op = 'DELETE' then* - if old.backlink != '' then* - dummy := tg_backlink_unset(old.backlink, old.slotname);* - end if;* - return old;* - end if;* -end;* + AS $$** +declare** + dummy integer;** +begin** + if tg_op = 'INSERT' then** + if new.backlink != '' then** + dummy := tg_backlink_set(new.backlink, new.slotname);** + end if;** + return new;** + end if;** + if tg_op = 'UPDATE' then** + if new.backlink != old.backlink then** + if old.backlink != '' then** + dummy := tg_backlink_unset(old.backlink, old.slotname);** + end if;** + if new.backlink != '' then** + dummy := tg_backlink_set(new.backlink, new.slotname);** + end if;** + else** + if new.slotname != old.slotname and new.backlink != '' then** + dummy := tg_slotlink_set(new.backlink, new.slotname);** + end if;** + end if;** + return new;** + end if;** + if tg_op = 'DELETE' then** + if old.backlink != '' then** + dummy := tg_backlink_unset(old.backlink, old.slotname);** + end if;** + return old;** + end if;** +end;** $$;* * * @@ -2446,54 +2446,54 @@ * CREATE FUNCTION tg_backlink_set(myname character, blname character) RETURNS integer* LANGUAGE plpgsql* - AS $$* -declare* - mytype char(2);* - link char(4);* - rec record;* -begin* - mytype := substr(myname, 1, 2);* - link := mytype || substr(blname, 1, 2);* - if link = 'PLPL' then* - raise exception* - 'backlink between two phone lines does not make sense';* - end if;* - if link in ('PLWS', 'WSPL') then* - raise exception* - 'direct link of phone line to wall slot not permitted';* - end if;* - if mytype = 'PS' then* - select into rec * from PSlot where slotname = myname;* - if not found then* - raise exception '% does not exist', myname;* - end if;* - if rec.backlink != blname then* - update PSlot set backlink = blname where slotname = myname;* - end if;* - return 0;* - end if;* - if mytype = 'WS' then* - select into rec * from WSlot where slotname = myname;* - if not found then* - raise exception '% does not exist', myname;* - end if;* - if rec.backlink != blname then* - update WSlot set backlink = blname where slotname = myname;* - end if;* - return 0;* - end if;* - if mytype = 'PL' then* - select into rec * from PLine where slotname = myname;* - if not found then* - raise exception '% does not exist', myname;* - end if;* - if rec.backlink != blname then* - update PLine set backlink = blname where slotname = myname;* - end if;* - return 0;* - end if;* - raise exception 'illegal backlink beginning with %', mytype;* -end;* + AS $$** +declare** + mytype char(2);** + link char(4);** + rec record;** +begin** + mytype := substr(myname, 1, 2);** + link := mytype || substr(blname, 1, 2);** + if link = 'PLPL' then** + raise exception** + 'backlink between two phone lines does not make sense';** + end if;** + if link in ('PLWS', 'WSPL') then** + raise exception** + 'direct link of phone line to wall slot not permitted';** + end if;** + if mytype = 'PS' then** + select into rec * from PSlot where slotname = myname;** + if not found then** + raise exception '% does not exist', myname;** + end if;** + if rec.backlink != blname then** + update PSlot set backlink = blname where slotname = myname;** + end if;** + return 0;** + end if;** + if mytype = 'WS' then** + select into rec * from WSlot where slotname = myname;** + if not found then** + raise exception '% does not exist', myname;** + end if;** + if rec.backlink != blname then** + update WSlot set backlink = blname where slotname = myname;** + end if;** + return 0;** + end if;** + if mytype = 'PL' then** + select into rec * from PLine where slotname = myname;** + if not found then** + raise exception '% does not exist', myname;** + end if;** + if rec.backlink != blname then** + update PLine set backlink = blname where slotname = myname;** + end if;** + return 0;** + end if;** + raise exception 'illegal backlink beginning with %', mytype;** +end;** $$;* * * @@ -2505,45 +2505,45 @@ * CREATE FUNCTION tg_backlink_unset(character, character) RETURNS integer* LANGUAGE plpgsql* - AS $_$* -declare* - myname alias for $1;* - blname alias for $2;* - mytype char(2);* - rec record;* -begin* - mytype := substr(myname, 1, 2);* - if mytype = 'PS' then* - select into rec * from PSlot where slotname = myname;* - if not found then* - return 0;* - end if;* - if rec.backlink = blname then* - update PSlot set backlink = '' where slotname = myname;* - end if;* - return 0;* - end if;* - if mytype = 'WS' then* - select into rec * from WSlot where slotname = myname;* - if not found then* - return 0;* - end if;* - if rec.backlink = blname then* - update WSlot set backlink = '' where slotname = myname;* - end if;* - return 0;* - end if;* - if mytype = 'PL' then* - select into rec * from PLine where slotname = myname;* - if not found then* - return 0;* - end if;* - if rec.backlink = blname then* - update PLine set backlink = '' where slotname = myname;* - end if;* - return 0;* - end if;* -end* + AS $_$** +declare** + myname alias for $1;** + blname alias for $2;** + mytype char(2);** + rec record;** +begin** + mytype := substr(myname, 1, 2);** + if mytype = 'PS' then** + select into rec * from PSlot where slotname = myname;** + if not found then** + return 0;** + end if;** + if rec.backlink = blname then** + update PSlot set backlink = '' where slotname = myname;** + end if;** + return 0;** + end if;** + if mytype = 'WS' then** + select into rec * from WSlot where slotname = myname;** + if not found then** + return 0;** + end if;** + if rec.backlink = blname then** + update WSlot set backlink = '' where slotname = myname;** + end if;** + return 0;** + end if;** + if mytype = 'PL' then** + select into rec * from PLine where slotname = myname;** + if not found then** + return 0;** + end if;** + if rec.backlink = blname then** + update PLine set backlink = '' where slotname = myname;** + end if;** + return 0;** + end if;** +end** $_$;* * * @@ -2555,13 +2555,13 @@ * CREATE FUNCTION tg_chkbacklink() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -begin* - if new.backlink isnull then* - new.backlink := '';* - end if;* - return new;* -end;* + AS $$** +begin** + if new.backlink isnull then** + new.backlink := '';** + end if;** + return new;** +end;** $$;* * * @@ -2573,13 +2573,13 @@ * CREATE FUNCTION tg_chkslotlink() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -begin* - if new.slotlink isnull then* - new.slotlink := '';* - end if;* - return new;* -end;* + AS $$** +begin** + if new.slotlink isnull then** + new.slotlink := '';** + end if;** + return new;** +end;** $$;* * * @@ -2591,13 +2591,13 @@ * CREATE FUNCTION tg_chkslotname() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -begin* - if substr(new.slotname, 1, 2) != tg_argv[0] then* - raise exception 'slotname must begin with %', tg_argv[0];* - end if;* - return new;* -end;* + AS $$** +begin** + if substr(new.slotname, 1, 2) != tg_argv[0] then** + raise exception 'slotname must begin with %', tg_argv[0];** + end if;** + return new;** +end;** $$;* * * @@ -2609,19 +2609,19 @@ * CREATE FUNCTION tg_hslot_bd() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -declare* - hubrec record;* -begin* - select into hubrec * from Hub where name = old.hubname;* - if not found then* - return old;* - end if;* - if old.slotno > hubrec.nslots then* - return old;* - end if;* - raise exception 'no manual manipulation of HSlot';* -end;* + AS $$** +declare** + hubrec record;** +begin** + select into hubrec * from Hub where name = old.hubname;** + if not found then** + return old;** + end if;** + if old.slotno > hubrec.nslots then** + return old;** + end if;** + raise exception 'no manual manipulation of HSlot';** +end;** $$;* * * @@ -2633,33 +2633,33 @@ * CREATE FUNCTION tg_hslot_biu() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -declare* - sname text;* - xname HSlot.slotname%TYPE;* - hubrec record;* -begin* - select into hubrec * from Hub where name = new.hubname;* - if not found then* - raise exception 'no manual manipulation of HSlot';* - end if;* - if new.slotno < 1 or new.slotno > hubrec.nslots then* - raise exception 'no manual manipulation of HSlot';* - end if;* - if tg_op = 'UPDATE' and new.hubname != old.hubname then* - if count(*) > 0 from Hub where name = old.hubname then* - raise exception 'no manual manipulation of HSlot';* - end if;* - end if;* - sname := 'HS.' || trim(new.hubname);* - sname := sname || '.';* - sname := sname || new.slotno::text;* - if length(sname) > 20 then* - raise exception 'HSlot slotname "%" too long (20 char max)', sname;* - end if;* - new.slotname := sname;* - return new;* -end;* + AS $$** +declare** + sname text;** + xname HSlot.slotname%TYPE;** + hubrec record;** +begin** + select into hubrec * from Hub where name = new.hubname;** + if not found then** + raise exception 'no manual manipulation of HSlot';** + end if;** + if new.slotno < 1 or new.slotno > hubrec.nslots then** + raise exception 'no manual manipulation of HSlot';** + end if;** + if tg_op = 'UPDATE' and new.hubname != old.hubname then** + if count(*) > 0 from Hub where name = old.hubname then** + raise exception 'no manual manipulation of HSlot';** + end if;** + end if;** + sname := 'HS.' || trim(new.hubname);** + sname := sname || '.';** + sname := sname || new.slotno::text;** + if length(sname) > 20 then** + raise exception 'HSlot slotname "%" too long (20 char max)', sname;** + end if;** + new.slotname := sname;** + return new;** +end;** $$;* * * @@ -2671,25 +2671,25 @@ * CREATE FUNCTION tg_hslot_bu() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -begin* - if new.slotname != old.slotname or new.hubname != old.hubname then* - delete from HSlot where slotname = old.slotname;* - insert into HSlot (* - slotname,* - hubname,* - slotno,* - slotlink* - ) values (* - new.slotname,* - new.hubname,* - new.slotno,* - new.slotlink* - );* - return null;* - end if;* - return new;* -end;* + AS $$** +begin** + if new.slotname != old.slotname or new.hubname != old.hubname then** + delete from HSlot where slotname = old.slotname;** + insert into HSlot (** + slotname,** + hubname,** + slotno,** + slotlink** + ) values (** + new.slotname,** + new.hubname,** + new.slotno,** + new.slotlink** + );** + return null;** + end if;** + return new;** +end;** $$;* * * @@ -2701,27 +2701,27 @@ * CREATE FUNCTION tg_hub_a() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -declare* - hname text;* - dummy integer;* -begin* - if tg_op = 'INSERT' then* - dummy := tg_hub_adjustslots(new.name, 0, new.nslots);* - return new;* - end if;* - if tg_op = 'UPDATE' then* - if new.name != old.name then* - update HSlot set hubname = new.name where hubname = old.name;* - end if;* - dummy := tg_hub_adjustslots(new.name, old.nslots, new.nslots);* - return new;* - end if;* - if tg_op = 'DELETE' then* - dummy := tg_hub_adjustslots(old.name, old.nslots, 0);* - return old;* - end if;* -end;* + AS $$** +declare** + hname text;** + dummy integer;** +begin** + if tg_op = 'INSERT' then** + dummy := tg_hub_adjustslots(new.name, 0, new.nslots);** + return new;** + end if;** + if tg_op = 'UPDATE' then** + if new.name != old.name then** + update HSlot set hubname = new.name where hubname = old.name;** + end if;** + dummy := tg_hub_adjustslots(new.name, old.nslots, new.nslots);** + return new;** + end if;** + if tg_op = 'DELETE' then** + dummy := tg_hub_adjustslots(old.name, old.nslots, 0);** + return old;** + end if;** +end;** $$;* * * @@ -2733,21 +2733,21 @@ * CREATE FUNCTION tg_hub_adjustslots(hname character, oldnslots integer, newnslots integer) RETURNS integer* LANGUAGE plpgsql* - AS $$* -begin* - if newnslots = oldnslots then* - return 0;* - end if;* - if newnslots < oldnslots then* - delete from HSlot where hubname = hname and slotno > newnslots;* - return 0;* - end if;* - for i in oldnslots + 1 .. newnslots loop* - insert into HSlot (slotname, hubname, slotno, slotlink)* - values ('HS.dummy', hname, i, '');* - end loop;* - return 0;* -end* + AS $$** +begin** + if newnslots = oldnslots then** + return 0;** + end if;** + if newnslots < oldnslots then** + delete from HSlot where hubname = hname and slotno > newnslots;** + return 0;** + end if;** + for i in oldnslots + 1 .. newnslots loop** + insert into HSlot (slotname, hubname, slotno, slotlink)** + values ('HS.dummy', hname, i, '');** + end loop;** + return 0;** +end** $$;* * * @@ -2759,24 +2759,24 @@ * CREATE FUNCTION tg_iface_biu() RETURNS trigger* LANGUAGE plpgsql* - AS $_$* -declare* - sname text;* - sysrec record;* -begin* - select into sysrec * from system where name = new.sysname;* - if not found then* - raise exception $q$system "%" does not exist$q$, new.sysname;* - end if;* - sname := 'IF.' || new.sysname;* - sname := sname || '.';* - sname := sname || new.ifname;* - if length(sname) > 20 then* - raise exception 'IFace slotname "%" too long (20 char max)', sname;* - end if;* - new.slotname := sname;* - return new;* -end;* + AS $_$** +declare** + sname text;** + sysrec record;** +begin** + select into sysrec * from system where name = new.sysname;** + if not found then** + raise exception $q$system "%" does not exist$q$, new.sysname;** + end if;** + sname := 'IF.' || new.sysname;** + sname := sname || '.';** + sname := sname || new.ifname;** + if length(sname) > 20 then** + raise exception 'IFace slotname "%" too long (20 char max)', sname;** + end if;** + new.slotname := sname;** + return new;** +end;** $_$;* * * @@ -2788,25 +2788,25 @@ * CREATE FUNCTION tg_iface_bu() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -begin* - if new.slotname != old.slotname then* - delete from IFace where slotname = old.slotname;* - insert into IFace (* - slotname,* - sysname,* - ifname,* - slotlink* - ) values (* - new.slotname,* - new.sysname,* - new.ifname,* - new.slotlink* - );* - return null;* - end if;* - return new;* -end;* + AS $$** +begin** + if new.slotname != old.slotname then** + delete from IFace where slotname = old.slotname;** + insert into IFace (** + slotname,** + sysname,** + ifname,** + slotlink** + ) values (** + new.slotname,** + new.sysname,** + new.ifname,** + new.slotlink** + );** + return null;** + end if;** + return new;** +end;** $$;* * * @@ -2818,11 +2818,11 @@ * CREATE FUNCTION tg_pfield_ad() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -begin* - delete from PSlot where pfname = old.name;* - return old;* -end;* + AS $$** +begin** + delete from PSlot where pfname = old.name;** + return old;** +end;** $$;* * * @@ -2834,13 +2834,13 @@ * CREATE FUNCTION tg_pfield_au() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -begin* - if new.name != old.name then* - update PSlot set pfname = new.name where pfname = old.name;* - end if;* - return new;* -end;* + AS $$** +begin** + if new.name != old.name then** + update PSlot set pfname = new.name where pfname = old.name;** + end if;** + return new;** +end;** $$;* * * @@ -2852,23 +2852,23 @@ * CREATE FUNCTION tg_phone_bu() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -begin* - if new.slotname != old.slotname then* - delete from PHone where slotname = old.slotname;* - insert into PHone (* - slotname,* - comment,* - slotlink* - ) values (* - new.slotname,* - new.comment,* - new.slotlink* - );* - return null;* - end if;* - return new;* -end;* + AS $$** +begin** + if new.slotname != old.slotname then** + delete from PHone where slotname = old.slotname;** + insert into PHone (** + slotname,** + comment,** + slotlink** + ) values (** + new.slotname,** + new.comment,** + new.slotlink** + );** + return null;** + end if;** + return new;** +end;** $$;* * * @@ -2880,25 +2880,25 @@ * CREATE FUNCTION tg_pline_bu() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -begin* - if new.slotname != old.slotname then* - delete from PLine where slotname = old.slotname;* - insert into PLine (* - slotname,* - phonenumber,* - comment,* - backlink* - ) values (* - new.slotname,* - new.phonenumber,* - new.comment,* - new.backlink* - );* - return null;* - end if;* - return new;* -end;* + AS $$** +begin** + if new.slotname != old.slotname then** + delete from PLine where slotname = old.slotname;** + insert into PLine (** + slotname,** + phonenumber,** + comment,** + backlink** + ) values (** + new.slotname,** + new.phonenumber,** + new.comment,** + new.backlink** + );** + return null;** + end if;** + return new;** +end;** $$;* * * @@ -2910,17 +2910,17 @@ * CREATE FUNCTION tg_pslot_biu() RETURNS trigger* LANGUAGE plpgsql* - AS $_$* -declare* - pfrec record;* - ps alias for new;* -begin* - select into pfrec * from PField where name = ps.pfname;* - if not found then* - raise exception $$Patchfield "%" does not exist$$, ps.pfname;* - end if;* - return ps;* -end;* + AS $_$** +declare** + pfrec record;** + ps alias for new;** +begin** + select into pfrec * from PField where name = ps.pfname;** + if not found then** + raise exception $$Patchfield "%" does not exist$$, ps.pfname;** + end if;** + return ps;** +end;** $_$;* * * @@ -2932,25 +2932,25 @@ * CREATE FUNCTION tg_pslot_bu() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -begin* - if new.slotname != old.slotname then* - delete from PSlot where slotname = old.slotname;* - insert into PSlot (* - slotname,* - pfname,* - slotlink,* - backlink* - ) values (* - new.slotname,* - new.pfname,* - new.slotlink,* - new.backlink* - );* - return null;* - end if;* - return new;* -end;* + AS $$** +begin** + if new.slotname != old.slotname then** + delete from PSlot where slotname = old.slotname;** + insert into PSlot (** + slotname,** + pfname,** + slotlink,** + backlink** + ) values (** + new.slotname,** + new.pfname,** + new.slotlink,** + new.backlink** + );** + return null;** + end if;** + return new;** +end;** $$;* * * @@ -2962,11 +2962,11 @@ * CREATE FUNCTION tg_room_ad() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -begin* - delete from WSlot where roomno = old.roomno;* - return old;* -end;* + AS $$** +begin** + delete from WSlot where roomno = old.roomno;** + return old;** +end;** $$;* * * @@ -2978,13 +2978,13 @@ * CREATE FUNCTION tg_room_au() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -begin* - if new.roomno != old.roomno then* - update WSlot set roomno = new.roomno where roomno = old.roomno;* - end if;* - return new;* -end;* + AS $$** +begin** + if new.roomno != old.roomno then** + update WSlot set roomno = new.roomno where roomno = old.roomno;** + end if;** + return new;** +end;** $$;* * * @@ -2996,38 +2996,38 @@ * CREATE FUNCTION tg_slotlink_a() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -declare* - dummy integer;* -begin* - if tg_op = 'INSERT' then* - if new.slotlink != '' then* - dummy := tg_slotlink_set(new.slotlink, new.slotname);* - end if;* - return new;* - end if;* - if tg_op = 'UPDATE' then* - if new.slotlink != old.slotlink then* - if old.slotlink != '' then* - dummy := tg_slotlink_unset(old.slotlink, old.slotname);* - end if;* - if new.slotlink != '' then* - dummy := tg_slotlink_set(new.slotlink, new.slotname);* - end if;* - else* - if new.slotname != old.slotname and new.slotlink != '' then* - dummy := tg_slotlink_set(new.slotlink, new.slotname);* - end if;* - end if;* - return new;* - end if;* - if tg_op = 'DELETE' then* - if old.slotlink != '' then* - dummy := tg_slotlink_unset(old.slotlink, old.slotname);* - end if;* - return old;* - end if;* -end;* + AS $$** +declare** + dummy integer;** +begin** + if tg_op = 'INSERT' then** + if new.slotlink != '' then** + dummy := tg_slotlink_set(new.slotlink, new.slotname);** + end if;** + return new;** + end if;** + if tg_op = 'UPDATE' then** + if new.slotlink != old.slotlink then** + if old.slotlink != '' then** + dummy := tg_slotlink_unset(old.slotlink, old.slotname);** + end if;** + if new.slotlink != '' then** + dummy := tg_slotlink_set(new.slotlink, new.slotname);** + end if;** + else** + if new.slotname != old.slotname and new.slotlink != '' then** + dummy := tg_slotlink_set(new.slotlink, new.slotname);** + end if;** + end if;** + return new;** + end if;** + if tg_op = 'DELETE' then** + if old.slotlink != '' then** + dummy := tg_slotlink_unset(old.slotlink, old.slotname);** + end if;** + return old;** + end if;** +end;** $$;* * * @@ -3039,84 +3039,84 @@ * CREATE FUNCTION tg_slotlink_set(character, character) RETURNS integer* LANGUAGE plpgsql* - AS $_$* -declare* - myname alias for $1;* - blname alias for $2;* - mytype char(2);* - link char(4);* - rec record;* -begin* - mytype := substr(myname, 1, 2);* - link := mytype || substr(blname, 1, 2);* - if link = 'PHPH' then* - raise exception* - 'slotlink between two phones does not make sense';* - end if;* - if link in ('PHHS', 'HSPH') then* - raise exception* - 'link of phone to hub does not make sense';* - end if;* - if link in ('PHIF', 'IFPH') then* - raise exception* - 'link of phone to hub does not make sense';* - end if;* - if link in ('PSWS', 'WSPS') then* - raise exception* - 'slotlink from patchslot to wallslot not permitted';* - end if;* - if mytype = 'PS' then* - select into rec * from PSlot where slotname = myname;* - if not found then* - raise exception '% does not exist', myname;* - end if;* - if rec.slotlink != blname then* - update PSlot set slotlink = blname where slotname = myname;* - end if;* - return 0;* - end if;* - if mytype = 'WS' then* - select into rec * from WSlot where slotname = myname;* - if not found then* - raise exception '% does not exist', myname;* - end if;* - if rec.slotlink != blname then* - update WSlot set slotlink = blname where slotname = myname;* - end if;* - return 0;* - end if;* - if mytype = 'IF' then* - select into rec * from IFace where slotname = myname;* - if not found then* - raise exception '% does not exist', myname;* - end if;* - if rec.slotlink != blname then* - update IFace set slotlink = blname where slotname = myname;* - end if;* - return 0;* - end if;* - if mytype = 'HS' then* - select into rec * from HSlot where slotname = myname;* - if not found then* - raise exception '% does not exist', myname;* - end if;* - if rec.slotlink != blname then* - update HSlot set slotlink = blname where slotname = myname;* - end if;* - return 0;* - end if;* - if mytype = 'PH' then* - select into rec * from PHone where slotname = myname;* - if not found then* - raise exception '% does not exist', myname;* - end if;* - if rec.slotlink != blname then* - update PHone set slotlink = blname where slotname = myname;* - end if;* - return 0;* - end if;* - raise exception 'illegal slotlink beginning with %', mytype;* -end;* + AS $_$** +declare** + myname alias for $1;** + blname alias for $2;** + mytype char(2);** + link char(4);** + rec record;** +begin** + mytype := substr(myname, 1, 2);** + link := mytype || substr(blname, 1, 2);** + if link = 'PHPH' then** + raise exception** + 'slotlink between two phones does not make sense';** + end if;** + if link in ('PHHS', 'HSPH') then** + raise exception** + 'link of phone to hub does not make sense';** + end if;** + if link in ('PHIF', 'IFPH') then** + raise exception** + 'link of phone to hub does not make sense';** + end if;** + if link in ('PSWS', 'WSPS') then** + raise exception** + 'slotlink from patchslot to wallslot not permitted';** + end if;** + if mytype = 'PS' then** + select into rec * from PSlot where slotname = myname;** + if not found then** + raise exception '% does not exist', myname;** + end if;** + if rec.slotlink != blname then** + update PSlot set slotlink = blname where slotname = myname;** + end if;** + return 0;** + end if;** + if mytype = 'WS' then** + select into rec * from WSlot where slotname = myname;** + if not found then** + raise exception '% does not exist', myname;** + end if;** + if rec.slotlink != blname then** + update WSlot set slotlink = blname where slotname = myname;** + end if;** + return 0;** + end if;** + if mytype = 'IF' then** + select into rec * from IFace where slotname = myname;** + if not found then** + raise exception '% does not exist', myname;** + end if;** + if rec.slotlink != blname then** + update IFace set slotlink = blname where slotname = myname;** + end if;** + return 0;** + end if;** + if mytype = 'HS' then** + select into rec * from HSlot where slotname = myname;** + if not found then** + raise exception '% does not exist', myname;** + end if;** + if rec.slotlink != blname then** + update HSlot set slotlink = blname where slotname = myname;** + end if;** + return 0;** + end if;** + if mytype = 'PH' then** + select into rec * from PHone where slotname = myname;** + if not found then** + raise exception '% does not exist', myname;** + end if;** + if rec.slotlink != blname then** + update PHone set slotlink = blname where slotname = myname;** + end if;** + return 0;** + end if;** + raise exception 'illegal slotlink beginning with %', mytype;** +end;** $_$;* * * @@ -3128,65 +3128,65 @@ * CREATE FUNCTION tg_slotlink_unset(character, character) RETURNS integer* LANGUAGE plpgsql* - AS $_$* -declare* - myname alias for $1;* - blname alias for $2;* - mytype char(2);* - rec record;* -begin* - mytype := substr(myname, 1, 2);* - if mytype = 'PS' then* - select into rec * from PSlot where slotname = myname;* - if not found then* - return 0;* - end if;* - if rec.slotlink = blname then* - update PSlot set slotlink = '' where slotname = myname;* - end if;* - return 0;* - end if;* - if mytype = 'WS' then* - select into rec * from WSlot where slotname = myname;* - if not found then* - return 0;* - end if;* - if rec.slotlink = blname then* - update WSlot set slotlink = '' where slotname = myname;* - end if;* - return 0;* - end if;* - if mytype = 'IF' then* - select into rec * from IFace where slotname = myname;* - if not found then* - return 0;* - end if;* - if rec.slotlink = blname then* - update IFace set slotlink = '' where slotname = myname;* - end if;* - return 0;* - end if;* - if mytype = 'HS' then* - select into rec * from HSlot where slotname = myname;* - if not found then* - return 0;* - end if;* - if rec.slotlink = blname then* - update HSlot set slotlink = '' where slotname = myname;* - end if;* - return 0;* - end if;* - if mytype = 'PH' then* - select into rec * from PHone where slotname = myname;* - if not found then* - return 0;* - end if;* - if rec.slotlink = blname then* - update PHone set slotlink = '' where slotname = myname;* - end if;* - return 0;* - end if;* -end;* + AS $_$** +declare** + myname alias for $1;** + blname alias for $2;** + mytype char(2);** + rec record;** +begin** + mytype := substr(myname, 1, 2);** + if mytype = 'PS' then** + select into rec * from PSlot where slotname = myname;** + if not found then** + return 0;** + end if;** + if rec.slotlink = blname then** + update PSlot set slotlink = '' where slotname = myname;** + end if;** + return 0;** + end if;** + if mytype = 'WS' then** + select into rec * from WSlot where slotname = myname;** + if not found then** + return 0;** + end if;** + if rec.slotlink = blname then** + update WSlot set slotlink = '' where slotname = myname;** + end if;** + return 0;** + end if;** + if mytype = 'IF' then** + select into rec * from IFace where slotname = myname;** + if not found then** + return 0;** + end if;** + if rec.slotlink = blname then** + update IFace set slotlink = '' where slotname = myname;** + end if;** + return 0;** + end if;** + if mytype = 'HS' then** + select into rec * from HSlot where slotname = myname;** + if not found then** + return 0;** + end if;** + if rec.slotlink = blname then** + update HSlot set slotlink = '' where slotname = myname;** + end if;** + return 0;** + end if;** + if mytype = 'PH' then** + select into rec * from PHone where slotname = myname;** + if not found then** + return 0;** + end if;** + if rec.slotlink = blname then** + update PHone set slotlink = '' where slotname = myname;** + end if;** + return 0;** + end if;** +end;** $_$;* * * @@ -3198,13 +3198,13 @@ * CREATE FUNCTION tg_system_au() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -begin* - if new.name != old.name then* - update IFace set sysname = new.name where sysname = old.name;* - end if;* - return new;* -end;* + AS $$** +begin** + if new.name != old.name then** + update IFace set sysname = new.name where sysname = old.name;** + end if;** + return new;** +end;** $$;* * * @@ -3216,13 +3216,13 @@ * CREATE FUNCTION tg_wslot_biu() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -begin* - if count(*) = 0 from Room where roomno = new.roomno then* - raise exception 'Room % does not exist', new.roomno;* - end if;* - return new;* -end;* + AS $$** +begin** + if count(*) = 0 from Room where roomno = new.roomno then** + raise exception 'Room % does not exist', new.roomno;** + end if;** + return new;** +end;** $$;* * * @@ -3234,25 +3234,25 @@ * CREATE FUNCTION tg_wslot_bu() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -begin* - if new.slotname != old.slotname then* - delete from WSlot where slotname = old.slotname;* - insert into WSlot (* - slotname,* - roomno,* - slotlink,* - backlink* - ) values (* - new.slotname,* - new.roomno,* - new.slotlink,* - new.backlink* - );* - return null;* - end if;* - return new;* -end;* + AS $$** +begin** + if new.slotname != old.slotname then** + delete from WSlot where slotname = old.slotname;** + insert into WSlot (** + slotname,** + roomno,** + slotlink,** + backlink** + ) values (** + new.slotname,** + new.roomno,** + new.slotlink,** + new.backlink** + );** + return null;** + end if;** + return new;** +end;** $$;* * * @@ -3264,25 +3264,25 @@ * CREATE FUNCTION trap_matching_test(integer) RETURNS integer* LANGUAGE plpgsql* - AS $_$* -declare x int;* - sx smallint;* - y int;* -begin* - begin -- start a subtransaction* - x := 100 / $1;* - sx := $1;* - select into y unique1 from tenk1 where unique2 =* - (select unique2 from tenk1 b where ten = $1);* - exception* - when data_exception then -- category match* - raise notice 'caught data_exception';* - x := -1;* - when NUMERIC_VALUE_OUT_OF_RANGE OR CARDINALITY_VIOLATION then* - raise notice 'caught numeric_value_out_of_range or cardinality_violation';* - x := -2;* - end;* - return x;* + AS $_$** +declare x int;** + sx smallint;** + y int;** +begin** + begin -- start a subtransaction** + x := 100 / $1;** + sx := $1;** + select into y unique1 from tenk1 where unique2 =** + (select unique2 from tenk1 b where ten = $1);** + exception** + when data_exception then -- category match** + raise notice 'caught data_exception';** + x := -1;** + when NUMERIC_VALUE_OUT_OF_RANGE OR CARDINALITY_VIOLATION then** + raise notice 'caught numeric_value_out_of_range or cardinality_violation';** + x := -2;** + end;** + return x;** end$_$;* * * @@ -3294,28 +3294,28 @@ * CREATE FUNCTION trap_zero_divide(integer) RETURNS integer* LANGUAGE plpgsql* - AS $_$* -declare x int;* - sx smallint;* -begin* - begin -- start a subtransaction* - raise notice 'should see this';* - x := 100 / $1;* - raise notice 'should see this only if % <> 0', $1;* - sx := $1;* - raise notice 'should see this only if % fits in smallint', $1;* - if $1 < 0 then* - raise exception '% is less than zero', $1;* - end if;* - exception* - when division_by_zero then* - raise notice 'caught division_by_zero';* - x := -1;* - when NUMERIC_VALUE_OUT_OF_RANGE then* - raise notice 'caught numeric_value_out_of_range';* - x := -2;* - end;* - return x;* + AS $_$** +declare x int;** + sx smallint;** +begin** + begin -- start a subtransaction** + raise notice 'should see this';** + x := 100 / $1;** + raise notice 'should see this only if % <> 0', $1;** + sx := $1;** + raise notice 'should see this only if % fits in smallint', $1;** + if $1 < 0 then** + raise exception '% is less than zero', $1;** + end if;** + exception** + when division_by_zero then** + raise notice 'caught division_by_zero';** + x := -1;** + when NUMERIC_VALUE_OUT_OF_RANGE then** + raise notice 'caught numeric_value_out_of_range';** + x := -2;** + end;** + return x;** end$_$;* * * @@ -3327,10 +3327,10 @@ * CREATE FUNCTION trigger_func() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -BEGIN* - RAISE NOTICE 'trigger_func(%) called: action = %, when = %, level = %', TG_ARGV[0], TG_OP, TG_WHEN, TG_LEVEL;* - RETURN NULL;* + AS $$** +BEGIN** + RAISE NOTICE 'trigger_func(%) called: action = %, when = %, level = %', TG_ARGV[0], TG_OP, TG_WHEN, TG_LEVEL;** + RETURN NULL;** END;$$;* * * @@ -3342,10 +3342,10 @@ * CREATE FUNCTION trigtest() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -begin* - raise notice '% % % %', TG_RELNAME, TG_OP, TG_WHEN, TG_LEVEL;* - return new;* + AS $$** +begin** + raise notice '% % % %', TG_RELNAME, TG_OP, TG_WHEN, TG_LEVEL;** + return new;** end;$$;* * * @@ -3368,10 +3368,10 @@ * CREATE FUNCTION user_relns() RETURNS SETOF name* LANGUAGE sql* - AS $$select relname* - from pg_class c, pg_namespace n* - where relnamespace = n.oid and* - (nspname !~ 'pg_.*' and nspname <> 'information_schema') and* + AS $$select relname** + from pg_class c, pg_namespace n** + where relnamespace = n.oid and** + (nspname !~ 'pg_.*' and nspname <> 'information_schema') and** relkind <> 'i' $$;* * * @@ -3383,43 +3383,43 @@ * CREATE FUNCTION view_trigger() RETURNS trigger* LANGUAGE plpgsql* - AS $$* -declare* - argstr text := '';* -begin* - for i in 0 .. TG_nargs - 1 loop* - if i > 0 then* - argstr := argstr || ', ';* - end if;* - argstr := argstr || TG_argv[i];* - end loop;* -* - raise notice '% % % % (%)', TG_RELNAME, TG_WHEN, TG_OP, TG_LEVEL, argstr;* -* - if TG_LEVEL = 'ROW' then* - if TG_OP = 'INSERT' then* - raise NOTICE 'NEW: %', NEW;* - INSERT INTO main_table VALUES (NEW.a, NEW.b);* - RETURN NEW;* - end if;* -* - if TG_OP = 'UPDATE' then* - raise NOTICE 'OLD: %, NEW: %', OLD, NEW;* - UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b;* - if NOT FOUND then RETURN NULL; end if;* - RETURN NEW;* - end if;* -* - if TG_OP = 'DELETE' then* - raise NOTICE 'OLD: %', OLD;* - DELETE FROM main_table WHERE a = OLD.a AND b = OLD.b;* - if NOT FOUND then RETURN NULL; end if;* - RETURN OLD;* - end if;* - end if;* -* - RETURN NULL;* -end;* + AS $$** +declare** + argstr text := '';** +begin** + for i in 0 .. TG_nargs - 1 loop** + if i > 0 then** + argstr := argstr || ', ';** + end if;** + argstr := argstr || TG_argv[i];** + end loop;** +** + raise notice '% % % % (%)', TG_RELNAME, TG_WHEN, TG_OP, TG_LEVEL, argstr;** +** + if TG_LEVEL = 'ROW' then** + if TG_OP = 'INSERT' then** + raise NOTICE 'NEW: %', NEW;** + INSERT INTO main_table VALUES (NEW.a, NEW.b);** + RETURN NEW;** + end if;** +** + if TG_OP = 'UPDATE' then** + raise NOTICE 'OLD: %, NEW: %', OLD, NEW;** + UPDATE main_table SET a = NEW.a, b = NEW.b WHERE a = OLD.a AND b = OLD.b;** + if NOT FOUND then RETURN NULL; end if;** + RETURN NEW;** + end if;** +** + if TG_OP = 'DELETE' then** + raise NOTICE 'OLD: %', OLD;** + DELETE FROM main_table WHERE a = OLD.a AND b = OLD.b;** + if NOT FOUND then RETURN NULL; end if;** + RETURN OLD;** + end if;** + end if;** +** + RETURN NULL;** +end;** $$;* * * @@ -3431,33 +3431,33 @@ * CREATE FUNCTION wait_for_stats() RETURNS void* LANGUAGE plpgsql* - AS $$* -declare* - start_time timestamptz := clock_timestamp();* - updated bool;* -begin* - -- we don't want to wait forever; loop will exit after 30 seconds* - for i in 1 .. 300 loop* -* - -- check to see if indexscan has been sensed* - SELECT (st.idx_scan >= pr.idx_scan + 1) INTO updated* - FROM pg_stat_user_tables AS st, pg_class AS cl, prevstats AS pr* - WHERE st.relname='tenk2' AND cl.relname='tenk2';* -* - exit when updated;* -* - -- wait a little* - perform pg_sleep(0.1);* -* - -- reset stats snapshot so we can test again* - perform pg_stat_clear_snapshot();* -* - end loop;* -* - -- report time waited in postmaster log (where it won't change test output)* - raise log 'wait_for_stats delayed % seconds',* - extract(epoch from clock_timestamp() - start_time);* -end* + AS $$** +declare** + start_time timestamptz := clock_timestamp();** + updated bool;** +begin** + -- we don't want to wait forever; loop will exit after 30 seconds** + for i in 1 .. 300 loop** +** + -- check to see if indexscan has been sensed** + SELECT (st.idx_scan >= pr.idx_scan + 1) INTO updated** + FROM pg_stat_user_tables AS st, pg_class AS cl, prevstats AS pr** + WHERE st.relname='tenk2' AND cl.relname='tenk2';** +** + exit when updated;** +** + -- wait a little** + perform pg_sleep(0.1);** +** + -- reset stats snapshot so we can test again** + perform pg_stat_clear_snapshot();** +** + end loop;** +** + -- report time waited in postmaster log (where it won't change test output)** + raise log 'wait_for_stats delayed % seconds',** + extract(epoch from clock_timestamp() - start_time);** +end** $$;* * * @@ -3480,49 +3480,49 @@ * CREATE FUNCTION wslot_slotlink_view(character) RETURNS text* LANGUAGE plpgsql* - AS $_$* -declare* - rec record;* - sltype char(2);* - retval text;* -begin* - select into rec * from WSlot where slotname = $1;* - if not found then* - return '';* - end if;* - if rec.slotlink = '' then* - return '-';* - end if;* - sltype := substr(rec.slotlink, 1, 2);* - if sltype = 'PH' then* - select into rec * from PHone where slotname = rec.slotlink;* - retval := 'Phone ' || trim(rec.slotname);* - if rec.comment != '' then* - retval := retval || ' (';* - retval := retval || rec.comment;* - retval := retval || ')';* - end if;* - return retval;* - end if;* - if sltype = 'IF' then* - declare* - syrow System%RowType;* - ifrow IFace%ROWTYPE;* - begin* - select into ifrow * from IFace where slotname = rec.slotlink;* - select into syrow * from System where name = ifrow.sysname;* - retval := syrow.name || ' IF ';* - retval := retval || ifrow.ifname;* - if syrow.comment != '' then* - retval := retval || ' (';* - retval := retval || syrow.comment;* - retval := retval || ')';* - end if;* - return retval;* - end;* - end if;* - return rec.slotlink;* -end;* + AS $_$** +declare** + rec record;** + sltype char(2);** + retval text;** +begin** + select into rec * from WSlot where slotname = $1;** + if not found then** + return '';** + end if;** + if rec.slotlink = '' then** + return '-';** + end if;** + sltype := substr(rec.slotlink, 1, 2);** + if sltype = 'PH' then** + select into rec * from PHone where slotname = rec.slotlink;** + retval := 'Phone ' || trim(rec.slotname);** + if rec.comment != '' then** + retval := retval || ' (';** + retval := retval || rec.comment;** + retval := retval || ')';** + end if;** + return retval;** + end if;** + if sltype = 'IF' then** + declare** + syrow System%RowType;** + ifrow IFace%ROWTYPE;** + begin** + select into ifrow * from IFace where slotname = rec.slotlink;** + select into syrow * from System where name = ifrow.sysname;** + retval := syrow.name || ' IF ';** + retval := retval || ifrow.ifname;** + if syrow.comment != '' then** + retval := retval || ' (';** + retval := retval || syrow.comment;** + retval := retval || ')';** + end if;** + return retval;** + end;** + end if;** + return rec.slotlink;** +end;** $_$;* * *