CREATE TABLE CASE_TBL (
i integer,
f double precision
-);
+) DISTRIBUTE BY REPLICATION;
CREATE TABLE CASE2_TBL (
i integer,
j integer
-);
+) DISTRIBUTE BY REPLICATION;
INSERT INTO CASE_TBL VALUES (1, 10.1);
INSERT INTO CASE_TBL VALUES (2, 20.2);
INSERT INTO CASE_TBL VALUES (3, -30.3);
CREATE TABLE hash_i4_heap (
seqno int4,
random int4
-);
+) DISTRIBUTE BY REPLICATION;
CREATE TABLE hash_name_heap (
seqno int4,
random name
-);
+) DISTRIBUTE BY REPLICATION;
CREATE TABLE hash_txt_heap (
seqno int4,
random text
-);
+) DISTRIBUTE BY REPLICATION;
CREATE TABLE hash_f8_heap (
seqno int4,
random float8
-);
+) DISTRIBUTE BY REPLICATION;
-- don't include the hash_ovfl_heap stuff in the distribution
-- the data set is too large for what it's worth
--
-- Non-target relations are only subject to SELECT policies
--
SET SESSION AUTHORIZATION regress_rls_alice;
-CREATE TABLE r1 (a int);
-CREATE TABLE r2 (a int);
+CREATE TABLE r1 (a int) DISTRIBUTE BY REPLICATION;
+CREATE TABLE r2 (a int) DISTRIBUTE BY REPLICATION;
INSERT INTO r1 VALUES (10), (20);
INSERT INTO r2 VALUES (10), (20);
GRANT ALL ON r1, r2 TO regress_rls_bob;
INSERT INTO r1 SELECT a + 1 FROM r2 RETURNING *; -- OK
a
----
- 21
11
+ 21
(2 rows)
UPDATE r1 SET a = r2.a + 2 FROM r2 WHERE r1.a = r2.a RETURNING *; -- OK
-ERROR: could not plan this distributed update
-DETAIL: correlated UPDATE or updating distribution column currently not supported in Postgres-XL.
+ a | a
+----+----
+ 12 | 10
+ 22 | 20
+(2 rows)
+
DELETE FROM r1 USING r2 WHERE r1.a = r2.a + 2 RETURNING *; -- OK
- a | a
----+---
-(0 rows)
+ a | a
+----+----
+ 12 | 10
+ 22 | 20
+(2 rows)
SELECT * FROM r1;
a
----
- 21
- 10
- 20
11
-(4 rows)
+ 21
+(2 rows)
SELECT * FROM r2;
a
--
SET SESSION AUTHORIZATION regress_rls_alice;
SET row_security = on;
-CREATE TABLE r1 (a int);
+CREATE TABLE r1 (a int) DISTRIBUTE BY REPLICATION;
INSERT INTO r1 VALUES (10), (20);
CREATE POLICY p1 ON r1 USING (false);
ALTER TABLE r1 ENABLE ROW LEVEL SECURITY;
DROP TABLE r2;
DROP TABLE r1;
-- Ensure cascaded UPDATE works
-CREATE TABLE r1 (a int PRIMARY KEY);
+CREATE TABLE r1 (a int PRIMARY KEY) DISTRIBUTE BY REPLICATION;
CREATE TABLE r2 (a int REFERENCES r1 ON UPDATE CASCADE);
INSERT INTO r1 VALUES (10), (20);
INSERT INTO r2 VALUES (10), (20);
--
SET SESSION AUTHORIZATION regress_rls_alice;
SET row_security = on;
-CREATE TABLE r1 (a int);
+CREATE TABLE r1 (a int) DISTRIBUTE BY REPLICATION;
CREATE POLICY p1 ON r1 FOR SELECT USING (a < 20);
CREATE POLICY p2 ON r1 FOR UPDATE USING (a < 20) WITH CHECK (true);
INSERT INTO r1 VALUES (10);
-- Test handling of vars from correlated subqueries in quals from outer
-- security barrier views, per bug #13988
--
-CREATE TABLE t1 (a int, b text, c int);
+CREATE TABLE t1 (a int, b text, c int) DISTRIBUTE BY REPLICATION;
INSERT INTO t1 VALUES (1, 'one', 10);
-CREATE TABLE t2 (cc int);
+CREATE TABLE t2 (cc int) DISTRIBUTE BY REPLICATION;
INSERT INTO t2 VALUES (10), (20);
CREATE VIEW v1 WITH (security_barrier = true) AS
SELECT * FROM t1 WHERE (a > 0)
a INT DEFAULT 10,
b INT,
c TEXT
-);
+) DISTRIBUTE BY REPLICATION;
CREATE TABLE upsert_test (
a INT PRIMARY KEY,
b TEXT
-);
+) DISTRIBUTE BY REPLICATION;
INSERT INTO update_test VALUES (5, 10, 'foo');
INSERT INTO update_test(b, a) VALUES (15, 10);
SELECT * FROM update_test ORDER BY a, b, c;
CREATE TABLE CASE_TBL (
i integer,
f double precision
-);
+) DISTRIBUTE BY REPLICATION;
CREATE TABLE CASE2_TBL (
i integer,
j integer
-);
+) DISTRIBUTE BY REPLICATION;
INSERT INTO CASE_TBL VALUES (1, 10.1);
INSERT INTO CASE_TBL VALUES (2, 20.2);
CREATE TABLE hash_i4_heap (
seqno int4,
random int4
-);
+) DISTRIBUTE BY REPLICATION;
CREATE TABLE hash_name_heap (
seqno int4,
random name
-);
+) DISTRIBUTE BY REPLICATION;
CREATE TABLE hash_txt_heap (
seqno int4,
random text
-);
+) DISTRIBUTE BY REPLICATION;
CREATE TABLE hash_f8_heap (
seqno int4,
random float8
-);
+) DISTRIBUTE BY REPLICATION;
-- don't include the hash_ovfl_heap stuff in the distribution
-- the data set is too large for what it's worth
SET SESSION AUTHORIZATION regress_user1;
SELECT session_user, current_user;
-CREATE TABLE atest1 ( a int, b text );
+CREATE TABLE atest1 ( a int, b text ) DISTRIBUTE BY REPLICATION;
SELECT * FROM atest1;
INSERT INTO atest1 VALUES (1, 'one');
DELETE FROM atest1;
GRANT SELECT ON atest1 TO regress_user3, regress_user4;
SELECT * FROM atest1;
-CREATE TABLE atest2 (col1 varchar(10), col2 boolean);
+CREATE TABLE atest2 (col1 varchar(10), col2 boolean) DISTRIBUTE BY REPLICATION;
GRANT SELECT ON atest2 TO regress_user2;
GRANT UPDATE ON atest2 TO regress_user3;
GRANT INSERT ON atest2 TO regress_user4;
-- Non-target relations are only subject to SELECT policies
--
SET SESSION AUTHORIZATION regress_rls_alice;
-CREATE TABLE r1 (a int);
-CREATE TABLE r2 (a int);
+CREATE TABLE r1 (a int) DISTRIBUTE BY REPLICATION;
+CREATE TABLE r2 (a int) DISTRIBUTE BY REPLICATION;
INSERT INTO r1 VALUES (10), (20);
INSERT INTO r2 VALUES (10), (20);
--
SET SESSION AUTHORIZATION regress_rls_alice;
SET row_security = on;
-CREATE TABLE r1 (a int);
+CREATE TABLE r1 (a int) DISTRIBUTE BY REPLICATION;
INSERT INTO r1 VALUES (10), (20);
CREATE POLICY p1 ON r1 USING (false);
DROP TABLE r1;
-- Ensure cascaded UPDATE works
-CREATE TABLE r1 (a int PRIMARY KEY);
+CREATE TABLE r1 (a int PRIMARY KEY) DISTRIBUTE BY REPLICATION;
CREATE TABLE r2 (a int REFERENCES r1 ON UPDATE CASCADE);
INSERT INTO r1 VALUES (10), (20);
INSERT INTO r2 VALUES (10), (20);
--
SET SESSION AUTHORIZATION regress_rls_alice;
SET row_security = on;
-CREATE TABLE r1 (a int);
+CREATE TABLE r1 (a int) DISTRIBUTE BY REPLICATION;
CREATE POLICY p1 ON r1 FOR SELECT USING (a < 20);
CREATE POLICY p2 ON r1 FOR UPDATE USING (a < 20) WITH CHECK (true);
-- Test handling of vars from correlated subqueries in quals from outer
-- security barrier views, per bug #13988
--
-CREATE TABLE t1 (a int, b text, c int);
+CREATE TABLE t1 (a int, b text, c int) DISTRIBUTE BY REPLICATION;
INSERT INTO t1 VALUES (1, 'one', 10);
-CREATE TABLE t2 (cc int);
+CREATE TABLE t2 (cc int) DISTRIBUTE BY REPLICATION;
INSERT INTO t2 VALUES (10), (20);
CREATE VIEW v1 WITH (security_barrier = true) AS
a INT DEFAULT 10,
b INT,
c TEXT
-);
+) DISTRIBUTE BY REPLICATION;
CREATE TABLE upsert_test (
a INT PRIMARY KEY,
b TEXT
-);
+) DISTRIBUTE BY REPLICATION;
INSERT INTO update_test VALUES (5, 10, 'foo');
INSERT INTO update_test(b, a) VALUES (15, 10);