@@ -1250,7 +1250,7 @@ SELECT * FROM toyemp WHERE name = 'sharon';
12501250--
12511251-- Test for Leaky view scenario
12521252--
1253- CREATEUSER alice ;
1253+ CREATEROLE regress_alice ;
12541254CREATE FUNCTION f_leak (text)
12551255 RETURNS bool LANGUAGE 'plpgsql' COST 0.0000001
12561256 AS 'BEGIN RAISE NOTICE ''f_leak => %'', $1; RETURN true; END';
@@ -1272,9 +1272,9 @@ CREATE TABLE credit_usage (
12721272 usage int
12731273);
12741274INSERT INTO customer
1275- VALUES (101, 'alice ', '+81-12-3456-7890', 'passwd123'),
1276- (102, 'bob ', '+01-234-567-8901', 'beafsteak'),
1277- (103, 'eve ', '+49-8765-43210', 'hamburger');
1275+ VALUES (101, 'regress_alice ', '+81-12-3456-7890', 'passwd123'),
1276+ (102, 'regress_bob ', '+01-234-567-8901', 'beafsteak'),
1277+ (103, 'regress_eve ', '+49-8765-43210', 'hamburger');
12781278INSERT INTO credit_card
12791279 VALUES (101, '1111-2222-3333-4444', 4000),
12801280 (102, '5555-6666-7777-8888', 3000),
@@ -1312,7 +1312,7 @@ GRANT SELECT ON my_credit_card_usage_secure TO public;
13121312--
13131313-- Run leaky view scenarios
13141314--
1315- SET SESSION AUTHORIZATIONalice ;
1315+ SET SESSION AUTHORIZATIONregress_alice ;
13161316--
13171317-- scenario: if a qualifier with tiny-cost is given, it shall be launched
13181318-- prior to the security policy of the view.
@@ -1321,9 +1321,9 @@ SELECT * FROM my_property_normal WHERE f_leak(passwd);
13211321NOTICE: f_leak => passwd123
13221322NOTICE: f_leak => beafsteak
13231323NOTICE: f_leak => hamburger
1324- cid | name | tel | passwd
1325- -----+-------+------------------+-----------
1326- 101 |alice | +81-12-3456-7890 | passwd123
1324+ cid | name | tel | passwd
1325+ -----+--------------- +------------------+-----------
1326+ 101 |regress_alice | +81-12-3456-7890 | passwd123
13271327(1 row)
13281328
13291329EXPLAIN (COSTS OFF) SELECT * FROM my_property_normal WHERE f_leak(passwd);
@@ -1335,9 +1335,9 @@ EXPLAIN (COSTS OFF) SELECT * FROM my_property_normal WHERE f_leak(passwd);
13351335
13361336SELECT * FROM my_property_secure WHERE f_leak(passwd);
13371337NOTICE: f_leak => passwd123
1338- cid | name | tel | passwd
1339- -----+-------+------------------+-----------
1340- 101 |alice | +81-12-3456-7890 | passwd123
1338+ cid | name | tel | passwd
1339+ -----+--------------- +------------------+-----------
1340+ 101 |regress_alice | +81-12-3456-7890 | passwd123
13411341(1 row)
13421342
13431343EXPLAIN (COSTS OFF) SELECT * FROM my_property_secure WHERE f_leak(passwd);
@@ -1358,9 +1358,9 @@ SELECT * FROM my_credit_card_normal WHERE f_leak(cnum);
13581358NOTICE: f_leak => 1111-2222-3333-4444
13591359NOTICE: f_leak => 5555-6666-7777-8888
13601360NOTICE: f_leak => 9801-2345-6789-0123
1361- cid | name | tel | passwd | cnum | climit
1362- -----+-------+------------------+-----------+---------------------+--------
1363- 101 |alice | +81-12-3456-7890 | passwd123 | 1111-2222-3333-4444 | 4000
1361+ cid | name | tel | passwd | cnum | climit
1362+ -----+--------------- +------------------+-----------+---------------------+--------
1363+ 101 |regress_alice | +81-12-3456-7890 | passwd123 | 1111-2222-3333-4444 | 4000
13641364(1 row)
13651365
13661366EXPLAIN (COSTS OFF) SELECT * FROM my_credit_card_normal WHERE f_leak(cnum);
@@ -1377,9 +1377,9 @@ EXPLAIN (COSTS OFF) SELECT * FROM my_credit_card_normal WHERE f_leak(cnum);
13771377
13781378SELECT * FROM my_credit_card_secure WHERE f_leak(cnum);
13791379NOTICE: f_leak => 1111-2222-3333-4444
1380- cid | name | tel | passwd | cnum | climit
1381- -----+-------+------------------+-----------+---------------------+--------
1382- 101 |alice | +81-12-3456-7890 | passwd123 | 1111-2222-3333-4444 | 4000
1380+ cid | name | tel | passwd | cnum | climit
1381+ -----+--------------- +------------------+-----------+---------------------+--------
1382+ 101 |regress_alice | +81-12-3456-7890 | passwd123 | 1111-2222-3333-4444 | 4000
13831383(1 row)
13841384
13851385EXPLAIN (COSTS OFF) SELECT * FROM my_credit_card_secure WHERE f_leak(cnum);
@@ -1402,11 +1402,11 @@ EXPLAIN (COSTS OFF) SELECT * FROM my_credit_card_secure WHERE f_leak(cnum);
14021402SELECT * FROM my_credit_card_usage_normal
14031403 WHERE f_leak(cnum) AND ymd >= '2011-10-01' AND ymd < '2011-11-01';
14041404NOTICE: f_leak => 1111-2222-3333-4444
1405- cid | name | tel | passwd | cnum | climit | ymd | usage
1406- -----+-------+------------------+-----------+---------------------+--------+------------+-------
1407- 101 |alice | +81-12-3456-7890 | passwd123 | 1111-2222-3333-4444 | 4000 | 10-05-2011 | 90
1408- 101 |alice | +81-12-3456-7890 | passwd123 | 1111-2222-3333-4444 | 4000 | 10-18-2011 | 110
1409- 101 |alice | +81-12-3456-7890 | passwd123 | 1111-2222-3333-4444 | 4000 | 10-21-2011 | 200
1405+ cid | name | tel | passwd | cnum | climit | ymd | usage
1406+ -----+--------------- +------------------+-----------+---------------------+--------+------------+-------
1407+ 101 |regress_alice | +81-12-3456-7890 | passwd123 | 1111-2222-3333-4444 | 4000 | 10-05-2011 | 90
1408+ 101 |regress_alice | +81-12-3456-7890 | passwd123 | 1111-2222-3333-4444 | 4000 | 10-18-2011 | 110
1409+ 101 |regress_alice | +81-12-3456-7890 | passwd123 | 1111-2222-3333-4444 | 4000 | 10-21-2011 | 200
14101410(3 rows)
14111411
14121412EXPLAIN (COSTS OFF) SELECT * FROM my_credit_card_usage_normal
@@ -1435,11 +1435,11 @@ NOTICE: f_leak => 1111-2222-3333-4444
14351435NOTICE: f_leak => 1111-2222-3333-4444
14361436NOTICE: f_leak => 1111-2222-3333-4444
14371437NOTICE: f_leak => 1111-2222-3333-4444
1438- cid | name | tel | passwd | cnum | climit | ymd | usage
1439- -----+-------+------------------+-----------+---------------------+--------+------------+-------
1440- 101 |alice | +81-12-3456-7890 | passwd123 | 1111-2222-3333-4444 | 4000 | 10-05-2011 | 90
1441- 101 |alice | +81-12-3456-7890 | passwd123 | 1111-2222-3333-4444 | 4000 | 10-18-2011 | 110
1442- 101 |alice | +81-12-3456-7890 | passwd123 | 1111-2222-3333-4444 | 4000 | 10-21-2011 | 200
1438+ cid | name | tel | passwd | cnum | climit | ymd | usage
1439+ -----+--------------- +------------------+-----------+---------------------+--------+------------+-------
1440+ 101 |regress_alice | +81-12-3456-7890 | passwd123 | 1111-2222-3333-4444 | 4000 | 10-05-2011 | 90
1441+ 101 |regress_alice | +81-12-3456-7890 | passwd123 | 1111-2222-3333-4444 | 4000 | 10-18-2011 | 110
1442+ 101 |regress_alice | +81-12-3456-7890 | passwd123 | 1111-2222-3333-4444 | 4000 | 10-21-2011 | 200
14431443(3 rows)
14441444
14451445EXPLAIN (COSTS OFF) SELECT * FROM my_credit_card_usage_secure
@@ -1470,35 +1470,38 @@ EXECUTE p1;
14701470NOTICE: f_leak => passwd123
14711471NOTICE: f_leak => beafsteak
14721472NOTICE: f_leak => hamburger
1473- cid | name | tel | passwd
1474- -----+-------+------------------+-----------
1475- 101 |alice | +81-12-3456-7890 | passwd123
1473+ cid | name | tel | passwd
1474+ -----+--------------- +------------------+-----------
1475+ 101 |regress_alice | +81-12-3456-7890 | passwd123
14761476(1 row)
14771477
14781478EXECUTE p2;
14791479NOTICE: f_leak => passwd123
1480- cid | name | tel | passwd
1481- -----+-------+------------------+-----------
1482- 101 |alice | +81-12-3456-7890 | passwd123
1480+ cid | name | tel | passwd
1481+ -----+--------------- +------------------+-----------
1482+ 101 |regress_alice | +81-12-3456-7890 | passwd123
14831483(1 row)
14841484
14851485RESET SESSION AUTHORIZATION;
14861486ALTER VIEW my_property_normal SET (security_barrier=true);
14871487ALTER VIEW my_property_secure SET (security_barrier=false);
1488- SET SESSION AUTHORIZATIONalice ;
1488+ SET SESSION AUTHORIZATIONregress_alice ;
14891489EXECUTE p1;-- To be perform as a view with security-barrier
14901490NOTICE: f_leak => passwd123
1491- cid | name | tel | passwd
1492- -----+-------+------------------+-----------
1493- 101 |alice | +81-12-3456-7890 | passwd123
1491+ cid | name | tel | passwd
1492+ -----+--------------- +------------------+-----------
1493+ 101 |regress_alice | +81-12-3456-7890 | passwd123
14941494(1 row)
14951495
14961496EXECUTE p2;-- To be perform as a view without security-barrier
14971497NOTICE: f_leak => passwd123
14981498NOTICE: f_leak => beafsteak
14991499NOTICE: f_leak => hamburger
1500- cid | name | tel | passwd
1501- -----+-------+------------------+-----------
1502- 101 |alice | +81-12-3456-7890 | passwd123
1500+ cid | name | tel | passwd
1501+ -----+--------------- +------------------+-----------
1502+ 101 |regress_alice | +81-12-3456-7890 | passwd123
15031503(1 row)
15041504
1505+ -- Cleanup.
1506+ RESET SESSION AUTHORIZATION;
1507+ DROP ROLE regress_alice;