blob: 922a6117e2f1fe9aab769e2cccaf2d953783ee11 [file] [log] [blame]
-- It will occur subtransaction overflow when insert data to segments 1000 times.
-- All segments occur overflow.
DROP TABLE IF EXISTS t_1352_1;
NOTICE: table "t_1352_1" does not exist, skipping
CREATE TABLE t_1352_1(c1 int) DISTRIBUTED BY (c1);
CREATE OR REPLACE FUNCTION transaction_test0()
RETURNS void AS $$
DECLARE
i int;
BEGIN
FOR i in 0..1000
LOOP
BEGIN
INSERT INTO t_1352_1 VALUES(i);
EXCEPTION
WHEN UNIQUE_VIOLATION THEN
NULL;
END;
END LOOP;
END;
$$
LANGUAGE plpgsql;
-- It will occur subtransaction overflow when insert data to segments 1000 times.
-- All segments occur overflow.
DROP TABLE IF EXISTS t_1352_2;
NOTICE: table "t_1352_2" does not exist, skipping
CREATE TABLE t_1352_2(c int PRIMARY KEY);
CREATE OR REPLACE FUNCTION transaction_test1()
RETURNS void AS $$
DECLARE i int;
BEGIN
for i in 0..1000
LOOP
BEGIN
INSERT INTO t_1352_2 VALUES(i);
EXCEPTION
WHEN UNIQUE_VIOLATION THEN
NULL;
END;
END LOOP;
END;
$$
LANGUAGE plpgsql;
-- It occur subtransaction overflow for coordinator and all segments.
CREATE OR REPLACE FUNCTION transaction_test2()
RETURNS void AS $$
DECLARE
i int;
BEGIN
for i in 0..1000
LOOP
BEGIN
CREATE TEMP TABLE tmptab(c int) DISTRIBUTED BY (c);
DROP TABLE tmptab;
EXCEPTION
WHEN others THEN
NULL;
END;
END LOOP;
END;
$$
LANGUAGE plpgsql;
BEGIN;
SELECT transaction_test0();
transaction_test0
-------------------
(1 row)
SELECT segid, count(*) AS num_suboverflowed FROM gp_suboverflowed_backend
WHERE array_length(pids, 1) > 0
GROUP BY segid
ORDER BY segid;
segid | num_suboverflowed
-------+-------------------
0 | 1
1 | 1
2 | 1
(3 rows)
COMMIT;
BEGIN;
SELECT transaction_test1();
transaction_test1
-------------------
(1 row)
SELECT segid, count(*) AS num_suboverflowed FROM gp_suboverflowed_backend
WHERE array_length(pids, 1) > 0
GROUP BY segid
ORDER BY segid;
segid | num_suboverflowed
-------+-------------------
0 | 1
1 | 1
2 | 1
(3 rows)
COMMIT;
BEGIN;
SELECT transaction_test2();
transaction_test2
-------------------
(1 row)
SELECT segid, count(*) AS num_suboverflowed FROM gp_suboverflowed_backend
WHERE array_length(pids, 1) > 0
GROUP BY segid
ORDER BY segid;
segid | num_suboverflowed
-------+-------------------
-1 | 1
0 | 1
1 | 1
2 | 1
(4 rows)
COMMIT;
BEGIN;
SELECT transaction_test0();
transaction_test0
-------------------
(1 row)
SELECT segid, count(*) AS num_suboverflowed FROM
(SELECT segid, unnest(pids)
FROM gp_suboverflowed_backend
WHERE array_length(pids, 1) > 0) AS tmp
GROUP BY segid
ORDER BY segid;
segid | num_suboverflowed
-------+-------------------
0 | 1
1 | 1
2 | 1
(3 rows)
COMMIT;