Support for PostgreSQL 15 or earlier
- Not use List APIs for xid that are introduced from PostgreSQL 16 - Fix an error during isolation test ERROR: subquery in FROM must have an alias - Not use isolation test for PostgreSQL 13
This commit is contained in:
parent
52b72ab5c5
commit
966a865d60
14 changed files with 58 additions and 39 deletions
10
Makefile
10
Makefile
|
|
@ -1,5 +1,7 @@
|
||||||
# contrib/pg_ivm/Makefile
|
# contrib/pg_ivm/Makefile
|
||||||
|
|
||||||
|
PG_CONFIG ?= pg_config
|
||||||
|
|
||||||
MODULE_big = pg_ivm
|
MODULE_big = pg_ivm
|
||||||
OBJS = \
|
OBJS = \
|
||||||
$(WIN32RES) \
|
$(WIN32RES) \
|
||||||
|
|
@ -20,11 +22,17 @@ DATA = pg_ivm--1.0.sql \
|
||||||
|
|
||||||
REGRESS = pg_ivm create_immv refresh_immv
|
REGRESS = pg_ivm create_immv refresh_immv
|
||||||
|
|
||||||
|
PGVER = $(shell $(PG_CONFIG) --version | sed "s/^[^ ]* \([0-9]*\).*$$/\1/" 2>/dev/null)
|
||||||
|
|
||||||
|
# We assume PG13 is the only version that is supported by pg_ivm but
|
||||||
|
# missing pg_isolation_regress.
|
||||||
|
|
||||||
|
ifneq ($(PGVER),13)
|
||||||
ISOLATION = create_insert refresh_insert insert_insert \
|
ISOLATION = create_insert refresh_insert insert_insert \
|
||||||
create_insert2 refresh_insert2 insert_insert2 \
|
create_insert2 refresh_insert2 insert_insert2 \
|
||||||
create_insert3 refresh_insert3 insert_insert3
|
create_insert3 refresh_insert3 insert_insert3
|
||||||
ISOLATION_OPTS = --load-extension=pg_ivm
|
ISOLATION_OPTS = --load-extension=pg_ivm
|
||||||
|
endif
|
||||||
|
|
||||||
PG_CONFIG ?= pg_config
|
|
||||||
PGXS := $(shell $(PG_CONFIG) --pgxs)
|
PGXS := $(shell $(PG_CONFIG) --pgxs)
|
||||||
include $(PGXS)
|
include $(PGXS)
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
|
|
||||||
create_immv
|
create_immv
|
||||||
-----------
|
-----------
|
||||||
|
|
@ -51,7 +51,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
|
|
||||||
create_immv
|
create_immv
|
||||||
-----------
|
-----------
|
||||||
|
|
@ -92,7 +92,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
|
|
||||||
create_immv
|
create_immv
|
||||||
-----------
|
-----------
|
||||||
|
|
@ -131,7 +131,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
<waiting ...>
|
<waiting ...>
|
||||||
step c2: COMMIT;
|
step c2: COMMIT;
|
||||||
tx1: NOTICE: could not create an index on immv "mv" automatically
|
tx1: NOTICE: could not create an index on immv "mv" automatically
|
||||||
|
|
@ -174,7 +174,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
|
|
||||||
create_immv
|
create_immv
|
||||||
-----------
|
-----------
|
||||||
|
|
@ -212,7 +212,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
<waiting ...>
|
<waiting ...>
|
||||||
step c2: COMMIT;
|
step c2: COMMIT;
|
||||||
tx1: NOTICE: could not create an index on immv "mv" automatically
|
tx1: NOTICE: could not create an index on immv "mv" automatically
|
||||||
|
|
@ -257,7 +257,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
|
|
||||||
create_immv
|
create_immv
|
||||||
-----------
|
-----------
|
||||||
|
|
@ -297,7 +297,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
|
|
||||||
create_immv
|
create_immv
|
||||||
-----------
|
-----------
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
|
|
||||||
create_immv
|
create_immv
|
||||||
-----------
|
-----------
|
||||||
|
|
@ -57,7 +57,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
|
|
||||||
create_immv
|
create_immv
|
||||||
-----------
|
-----------
|
||||||
|
|
@ -101,7 +101,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
|
|
||||||
create_immv
|
create_immv
|
||||||
-----------
|
-----------
|
||||||
|
|
@ -140,7 +140,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
<waiting ...>
|
<waiting ...>
|
||||||
step c2: COMMIT;
|
step c2: COMMIT;
|
||||||
tx1: NOTICE: could not create an index on immv "mv" automatically
|
tx1: NOTICE: could not create an index on immv "mv" automatically
|
||||||
|
|
@ -188,7 +188,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
|
|
||||||
create_immv
|
create_immv
|
||||||
-----------
|
-----------
|
||||||
|
|
@ -226,7 +226,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
<waiting ...>
|
<waiting ...>
|
||||||
step c2: COMMIT;
|
step c2: COMMIT;
|
||||||
tx1: NOTICE: could not create an index on immv "mv" automatically
|
tx1: NOTICE: could not create an index on immv "mv" automatically
|
||||||
|
|
@ -276,7 +276,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
|
|
||||||
create_immv
|
create_immv
|
||||||
-----------
|
-----------
|
||||||
|
|
@ -318,7 +318,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
|
|
||||||
create_immv
|
create_immv
|
||||||
-----------
|
-----------
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
|
|
||||||
create_immv
|
create_immv
|
||||||
-----------
|
-----------
|
||||||
|
|
@ -53,7 +53,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
|
|
||||||
create_immv
|
create_immv
|
||||||
-----------
|
-----------
|
||||||
|
|
@ -93,7 +93,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
|
|
||||||
create_immv
|
create_immv
|
||||||
-----------
|
-----------
|
||||||
|
|
@ -128,7 +128,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
<waiting ...>
|
<waiting ...>
|
||||||
step c2: COMMIT;
|
step c2: COMMIT;
|
||||||
tx1: NOTICE: could not create an index on immv "mv" automatically
|
tx1: NOTICE: could not create an index on immv "mv" automatically
|
||||||
|
|
@ -176,7 +176,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
|
|
||||||
create_immv
|
create_immv
|
||||||
-----------
|
-----------
|
||||||
|
|
@ -210,7 +210,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
<waiting ...>
|
<waiting ...>
|
||||||
step c2: COMMIT;
|
step c2: COMMIT;
|
||||||
tx1: NOTICE: could not create an index on immv "mv" automatically
|
tx1: NOTICE: could not create an index on immv "mv" automatically
|
||||||
|
|
@ -260,7 +260,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
|
|
||||||
create_immv
|
create_immv
|
||||||
-----------
|
-----------
|
||||||
|
|
@ -302,7 +302,7 @@ step create:
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
|
|
||||||
create_immv
|
create_immv
|
||||||
-----------
|
-----------
|
||||||
|
|
|
||||||
19
matview.c
19
matview.c
|
|
@ -970,12 +970,19 @@ IVM_immediate_maintenance(PG_FUNCTION_ARGS)
|
||||||
* If this is the last AFTER trigger call, continue and update the view.
|
* If this is the last AFTER trigger call, continue and update the view.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* record the subxid that updated the view incrementally */
|
/*
|
||||||
|
* record the subxid that updated the view incrementally
|
||||||
|
*
|
||||||
|
* Note:
|
||||||
|
* PG16 or later has list_member_xid and lappend_xid. It would be better
|
||||||
|
* to use them, but we use integer for supporting older PGs since there
|
||||||
|
* is no problem or now.
|
||||||
|
*/
|
||||||
subxid = GetCurrentSubTransactionId();
|
subxid = GetCurrentSubTransactionId();
|
||||||
if (!list_member_xid(entry->subxids, subxid))
|
if (!list_member_int(entry->subxids, subxid))
|
||||||
{
|
{
|
||||||
oldcxt = MemoryContextSwitchTo(TopTransactionContext);
|
oldcxt = MemoryContextSwitchTo(TopTransactionContext);
|
||||||
entry->subxids = lappend_xid(entry->subxids, subxid);
|
entry->subxids = lappend_int(entry->subxids, subxid);
|
||||||
MemoryContextSwitchTo(oldcxt);
|
MemoryContextSwitchTo(oldcxt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3424,7 +3431,11 @@ clean_up_IVM_hash_entry(MV_TriggerHashEntry *entry, bool is_abort,
|
||||||
{
|
{
|
||||||
foreach(lc, entry->subxids)
|
foreach(lc, entry->subxids)
|
||||||
{
|
{
|
||||||
if (lfirst_xid(lc) == subxid)
|
/* Note:
|
||||||
|
* PG16 or later has lfirst_xid, but we use lfirst_int for
|
||||||
|
* supporting older PGs since there is no problem or now.
|
||||||
|
*/
|
||||||
|
if (lfirst_int(lc) == subxid)
|
||||||
{
|
{
|
||||||
entry->subxids = list_delete_cell(entry->subxids, lc);
|
entry->subxids = list_delete_cell(entry->subxids, lc);
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ step create {
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
}
|
}
|
||||||
step check1 {SELECT check_mv();}
|
step check1 {SELECT check_mv();}
|
||||||
step c1 { COMMIT; }
|
step c1 { COMMIT; }
|
||||||
|
|
@ -34,7 +34,7 @@ session tx2
|
||||||
setup { BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED; }
|
setup { BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED; }
|
||||||
step s2 { SELECT; }
|
step s2 { SELECT; }
|
||||||
step insert { INSERT INTO a VALUES (2); }
|
step insert { INSERT INTO a VALUES (2); }
|
||||||
step check2 {SELECT check_mv(); }
|
step check2 { SELECT check_mv(); }
|
||||||
step c2 { COMMIT; }
|
step c2 { COMMIT; }
|
||||||
|
|
||||||
permutation s1 create s2 insert c1 check2 c2 mv
|
permutation s1 create s2 insert c1 check2 c2 mv
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ step create {
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
}
|
}
|
||||||
step check1 {SELECT check_mv();}
|
step check1 {SELECT check_mv();}
|
||||||
step c1 { COMMIT; }
|
step c1 { COMMIT; }
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ step create {
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
}
|
}
|
||||||
step check1 {SELECT check_mv();}
|
step check1 {SELECT check_mv();}
|
||||||
step c1 { COMMIT; }
|
step c1 { COMMIT; }
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ setup
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
}
|
}
|
||||||
|
|
||||||
teardown
|
teardown
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ setup
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
}
|
}
|
||||||
|
|
||||||
teardown
|
teardown
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ setup
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
}
|
}
|
||||||
|
|
||||||
teardown
|
teardown
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ setup
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
}
|
}
|
||||||
|
|
||||||
teardown
|
teardown
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ setup
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
}
|
}
|
||||||
|
|
||||||
teardown
|
teardown
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ setup
|
||||||
CREATE FUNCTION check_mv() RETURNS text AS
|
CREATE FUNCTION check_mv() RETURNS text AS
|
||||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||||
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
FROM ((SELECT * FROM mv EXCEPT ALL SELECT * FROM v) UNION ALL
|
||||||
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) $$ LANGUAGE sql;
|
(SELECT * FROM v EXCEPT ALL SELECT * FROM mv)) v $$ LANGUAGE sql;
|
||||||
}
|
}
|
||||||
|
|
||||||
teardown
|
teardown
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue