to build dependencies for rules, constraint expressions, and default
expressions. Repair some problems in the original design of
recursiveDeletion() exposed by more complex dependency sets. Fix
regression tests that were deleting things in illegal sequences.
CREATE FUNCTION getfoo(int) RETURNS setof int AS 'SELECT fooid FROM foo WHERE fooid = $1;' LANGUAGE SQL;
CREATE FUNCTION getfoo(int) RETURNS setof int AS 'SELECT fooid FROM foo WHERE fooid = $1;' LANGUAGE SQL;
SELECT * FROM getfoo(1) AS t1;
SELECT * FROM getfoo(1) AS t1;
@ -70,7 +71,6 @@ SELECT * FROM getfoo(1) AS t1;
1
1
(2 rows)
(2 rows)
DROP VIEW vw_getfoo;
CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);
CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);
SELECT * FROM vw_getfoo;
SELECT * FROM vw_getfoo;
getfoo
getfoo
@ -80,6 +80,7 @@ SELECT * FROM vw_getfoo;
(2 rows)
(2 rows)
-- sql, proretset = t, prorettype = b
-- sql, proretset = t, prorettype = b
DROP VIEW vw_getfoo;
DROP FUNCTION getfoo(int);
DROP FUNCTION getfoo(int);
CREATE FUNCTION getfoo(int) RETURNS setof text AS 'SELECT fooname FROM foo WHERE fooid = $1;' LANGUAGE SQL;
CREATE FUNCTION getfoo(int) RETURNS setof text AS 'SELECT fooname FROM foo WHERE fooid = $1;' LANGUAGE SQL;
SELECT * FROM getfoo(1) AS t1;
SELECT * FROM getfoo(1) AS t1;
@ -89,7 +90,6 @@ SELECT * FROM getfoo(1) AS t1;
Ed
Ed
(2 rows)
(2 rows)
DROP VIEW vw_getfoo;
CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);
CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);
SELECT * FROM vw_getfoo;
SELECT * FROM vw_getfoo;
getfoo
getfoo
@ -99,6 +99,7 @@ SELECT * FROM vw_getfoo;
(2 rows)
(2 rows)
-- sql, proretset = f, prorettype = c
-- sql, proretset = f, prorettype = c
DROP VIEW vw_getfoo;
DROP FUNCTION getfoo(int);
DROP FUNCTION getfoo(int);
CREATE FUNCTION getfoo(int) RETURNS foo AS 'SELECT * FROM foo WHERE fooid = $1;' LANGUAGE SQL;
CREATE FUNCTION getfoo(int) RETURNS foo AS 'SELECT * FROM foo WHERE fooid = $1;' LANGUAGE SQL;
SELECT * FROM getfoo(1) AS t1;
SELECT * FROM getfoo(1) AS t1;
@ -107,7 +108,6 @@ SELECT * FROM getfoo(1) AS t1;
1 | 1 | Joe
1 | 1 | Joe
(1 row)
(1 row)
DROP VIEW vw_getfoo;
CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);
CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);
SELECT * FROM vw_getfoo;
SELECT * FROM vw_getfoo;
fooid | foosubid | fooname
fooid | foosubid | fooname
@ -116,6 +116,7 @@ SELECT * FROM vw_getfoo;
(1 row)
(1 row)
-- sql, proretset = t, prorettype = c
-- sql, proretset = t, prorettype = c
DROP VIEW vw_getfoo;
DROP FUNCTION getfoo(int);
DROP FUNCTION getfoo(int);
CREATE FUNCTION getfoo(int) RETURNS setof foo AS 'SELECT * FROM foo WHERE fooid = $1;' LANGUAGE SQL;
CREATE FUNCTION getfoo(int) RETURNS setof foo AS 'SELECT * FROM foo WHERE fooid = $1;' LANGUAGE SQL;
SELECT * FROM getfoo(1) AS t1;
SELECT * FROM getfoo(1) AS t1;
@ -125,7 +126,6 @@ SELECT * FROM getfoo(1) AS t1;
1 | 2 | Ed
1 | 2 | Ed
(2 rows)
(2 rows)
DROP VIEW vw_getfoo;
CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);
CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);
SELECT * FROM vw_getfoo;
SELECT * FROM vw_getfoo;
fooid | foosubid | fooname
fooid | foosubid | fooname
@ -135,6 +135,7 @@ SELECT * FROM vw_getfoo;
(2 rows)
(2 rows)
-- plpgsql, proretset = f, prorettype = b
-- plpgsql, proretset = f, prorettype = b
DROP VIEW vw_getfoo;
DROP FUNCTION getfoo(int);
DROP FUNCTION getfoo(int);
CREATE FUNCTION getfoo(int) RETURNS int AS 'DECLARE fooint int; BEGIN SELECT fooid into fooint FROM foo WHERE fooid = $1; RETURN fooint; END;' LANGUAGE 'plpgsql';
CREATE FUNCTION getfoo(int) RETURNS int AS 'DECLARE fooint int; BEGIN SELECT fooid into fooint FROM foo WHERE fooid = $1; RETURN fooint; END;' LANGUAGE 'plpgsql';
SELECT * FROM getfoo(1) AS t1;
SELECT * FROM getfoo(1) AS t1;
@ -143,7 +144,6 @@ SELECT * FROM getfoo(1) AS t1;
1
1
(1 row)
(1 row)
DROP VIEW vw_getfoo;
CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);
CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);
SELECT * FROM vw_getfoo;
SELECT * FROM vw_getfoo;
getfoo
getfoo
@ -152,6 +152,7 @@ SELECT * FROM vw_getfoo;
(1 row)
(1 row)
-- plpgsql, proretset = f, prorettype = c
-- plpgsql, proretset = f, prorettype = c
DROP VIEW vw_getfoo;
DROP FUNCTION getfoo(int);
DROP FUNCTION getfoo(int);
CREATE FUNCTION getfoo(int) RETURNS foo AS 'DECLARE footup foo%ROWTYPE; BEGIN SELECT * into footup FROM foo WHERE fooid = $1; RETURN footup; END;' LANGUAGE 'plpgsql';
CREATE FUNCTION getfoo(int) RETURNS foo AS 'DECLARE footup foo%ROWTYPE; BEGIN SELECT * into footup FROM foo WHERE fooid = $1; RETURN footup; END;' LANGUAGE 'plpgsql';
@ -32,58 +32,58 @@ CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1);
SELECT*FROMvw_getfoo;
SELECT*FROMvw_getfoo;
-- sql, proretset = t, prorettype = b
-- sql, proretset = t, prorettype = b
DROPVIEWvw_getfoo;
DROPFUNCTIONgetfoo(int);
DROPFUNCTIONgetfoo(int);
CREATEFUNCTIONgetfoo(int)RETURNSsetofintAS'SELECT fooid FROM foo WHERE fooid = $1;'LANGUAGESQL;
CREATEFUNCTIONgetfoo(int)RETURNSsetofintAS'SELECT fooid FROM foo WHERE fooid = $1;'LANGUAGESQL;
SELECT*FROMgetfoo(1)ASt1;
SELECT*FROMgetfoo(1)ASt1;
DROPVIEWvw_getfoo;
CREATEVIEWvw_getfooASSELECT*FROMgetfoo(1);
CREATEVIEWvw_getfooASSELECT*FROMgetfoo(1);
SELECT*FROMvw_getfoo;
SELECT*FROMvw_getfoo;
-- sql, proretset = t, prorettype = b
-- sql, proretset = t, prorettype = b
DROPVIEWvw_getfoo;
DROPFUNCTIONgetfoo(int);
DROPFUNCTIONgetfoo(int);
CREATEFUNCTIONgetfoo(int)RETURNSsetoftextAS'SELECT fooname FROM foo WHERE fooid = $1;'LANGUAGESQL;
CREATEFUNCTIONgetfoo(int)RETURNSsetoftextAS'SELECT fooname FROM foo WHERE fooid = $1;'LANGUAGESQL;
SELECT*FROMgetfoo(1)ASt1;
SELECT*FROMgetfoo(1)ASt1;
DROPVIEWvw_getfoo;
CREATEVIEWvw_getfooASSELECT*FROMgetfoo(1);
CREATEVIEWvw_getfooASSELECT*FROMgetfoo(1);
SELECT*FROMvw_getfoo;
SELECT*FROMvw_getfoo;
-- sql, proretset = f, prorettype = c
-- sql, proretset = f, prorettype = c
DROPVIEWvw_getfoo;
DROPFUNCTIONgetfoo(int);
DROPFUNCTIONgetfoo(int);
CREATEFUNCTIONgetfoo(int)RETURNSfooAS'SELECT * FROM foo WHERE fooid = $1;'LANGUAGESQL;
CREATEFUNCTIONgetfoo(int)RETURNSfooAS'SELECT * FROM foo WHERE fooid = $1;'LANGUAGESQL;
SELECT*FROMgetfoo(1)ASt1;
SELECT*FROMgetfoo(1)ASt1;
DROPVIEWvw_getfoo;
CREATEVIEWvw_getfooASSELECT*FROMgetfoo(1);
CREATEVIEWvw_getfooASSELECT*FROMgetfoo(1);
SELECT*FROMvw_getfoo;
SELECT*FROMvw_getfoo;
-- sql, proretset = t, prorettype = c
-- sql, proretset = t, prorettype = c
DROPVIEWvw_getfoo;
DROPFUNCTIONgetfoo(int);
DROPFUNCTIONgetfoo(int);
CREATEFUNCTIONgetfoo(int)RETURNSsetoffooAS'SELECT * FROM foo WHERE fooid = $1;'LANGUAGESQL;
CREATEFUNCTIONgetfoo(int)RETURNSsetoffooAS'SELECT * FROM foo WHERE fooid = $1;'LANGUAGESQL;
SELECT*FROMgetfoo(1)ASt1;
SELECT*FROMgetfoo(1)ASt1;
DROPVIEWvw_getfoo;
CREATEVIEWvw_getfooASSELECT*FROMgetfoo(1);
CREATEVIEWvw_getfooASSELECT*FROMgetfoo(1);
SELECT*FROMvw_getfoo;
SELECT*FROMvw_getfoo;
-- plpgsql, proretset = f, prorettype = b
-- plpgsql, proretset = f, prorettype = b
DROPVIEWvw_getfoo;
DROPFUNCTIONgetfoo(int);
DROPFUNCTIONgetfoo(int);
CREATEFUNCTIONgetfoo(int)RETURNSintAS'DECLARE fooint int; BEGIN SELECT fooid into fooint FROM foo WHERE fooid = $1; RETURN fooint; END;'LANGUAGE'plpgsql';
CREATEFUNCTIONgetfoo(int)RETURNSintAS'DECLARE fooint int; BEGIN SELECT fooid into fooint FROM foo WHERE fooid = $1; RETURN fooint; END;'LANGUAGE'plpgsql';
SELECT*FROMgetfoo(1)ASt1;
SELECT*FROMgetfoo(1)ASt1;
DROPVIEWvw_getfoo;
CREATEVIEWvw_getfooASSELECT*FROMgetfoo(1);
CREATEVIEWvw_getfooASSELECT*FROMgetfoo(1);
SELECT*FROMvw_getfoo;
SELECT*FROMvw_getfoo;
-- plpgsql, proretset = f, prorettype = c
-- plpgsql, proretset = f, prorettype = c
DROPVIEWvw_getfoo;
DROPFUNCTIONgetfoo(int);
DROPFUNCTIONgetfoo(int);
CREATEFUNCTIONgetfoo(int)RETURNSfooAS'DECLARE footup foo%ROWTYPE; BEGIN SELECT * into footup FROM foo WHERE fooid = $1; RETURN footup; END;'LANGUAGE'plpgsql';
CREATEFUNCTIONgetfoo(int)RETURNSfooAS'DECLARE footup foo%ROWTYPE; BEGIN SELECT * into footup FROM foo WHERE fooid = $1; RETURN footup; END;'LANGUAGE'plpgsql';