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
|
||||
|
||||
PG_CONFIG ?= pg_config
|
||||
|
||||
MODULE_big = pg_ivm
|
||||
OBJS = \
|
||||
$(WIN32RES) \
|
||||
|
|
@ -20,11 +22,17 @@ DATA = pg_ivm--1.0.sql \
|
|||
|
||||
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 \
|
||||
create_insert2 refresh_insert2 insert_insert2 \
|
||||
create_insert3 refresh_insert3 insert_insert3
|
||||
ISOLATION_OPTS = --load-extension=pg_ivm
|
||||
endif
|
||||
|
||||
PG_CONFIG ?= pg_config
|
||||
PGXS := $(shell $(PG_CONFIG) --pgxs)
|
||||
include $(PGXS)
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
-----------
|
||||
|
|
@ -51,7 +51,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
-----------
|
||||
|
|
@ -92,7 +92,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
-----------
|
||||
|
|
@ -131,7 +131,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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 ...>
|
||||
step c2: COMMIT;
|
||||
tx1: NOTICE: could not create an index on immv "mv" automatically
|
||||
|
|
@ -174,7 +174,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
-----------
|
||||
|
|
@ -212,7 +212,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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 ...>
|
||||
step c2: COMMIT;
|
||||
tx1: NOTICE: could not create an index on immv "mv" automatically
|
||||
|
|
@ -257,7 +257,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
-----------
|
||||
|
|
@ -297,7 +297,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
-----------
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
-----------
|
||||
|
|
@ -57,7 +57,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
-----------
|
||||
|
|
@ -101,7 +101,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
-----------
|
||||
|
|
@ -140,7 +140,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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 ...>
|
||||
step c2: COMMIT;
|
||||
tx1: NOTICE: could not create an index on immv "mv" automatically
|
||||
|
|
@ -188,7 +188,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
-----------
|
||||
|
|
@ -226,7 +226,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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 ...>
|
||||
step c2: COMMIT;
|
||||
tx1: NOTICE: could not create an index on immv "mv" automatically
|
||||
|
|
@ -276,7 +276,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
-----------
|
||||
|
|
@ -318,7 +318,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
-----------
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
-----------
|
||||
|
|
@ -53,7 +53,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
-----------
|
||||
|
|
@ -93,7 +93,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
-----------
|
||||
|
|
@ -128,7 +128,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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 ...>
|
||||
step c2: COMMIT;
|
||||
tx1: NOTICE: could not create an index on immv "mv" automatically
|
||||
|
|
@ -176,7 +176,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
-----------
|
||||
|
|
@ -210,7 +210,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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 ...>
|
||||
step c2: COMMIT;
|
||||
tx1: NOTICE: could not create an index on immv "mv" automatically
|
||||
|
|
@ -260,7 +260,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
-----------
|
||||
|
|
@ -302,7 +302,7 @@ step create:
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
-----------
|
||||
|
|
|
|||
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.
|
||||
*/
|
||||
|
||||
/* 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();
|
||||
if (!list_member_xid(entry->subxids, subxid))
|
||||
if (!list_member_int(entry->subxids, subxid))
|
||||
{
|
||||
oldcxt = MemoryContextSwitchTo(TopTransactionContext);
|
||||
entry->subxids = lappend_xid(entry->subxids, subxid);
|
||||
entry->subxids = lappend_int(entry->subxids, subxid);
|
||||
MemoryContextSwitchTo(oldcxt);
|
||||
}
|
||||
|
||||
|
|
@ -3424,7 +3431,11 @@ clean_up_IVM_hash_entry(MV_TriggerHashEntry *entry, bool is_abort,
|
|||
{
|
||||
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);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ step create {
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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 c1 { COMMIT; }
|
||||
|
|
@ -34,7 +34,7 @@ session tx2
|
|||
setup { BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED; }
|
||||
step s2 { SELECT; }
|
||||
step insert { INSERT INTO a VALUES (2); }
|
||||
step check2 {SELECT check_mv(); }
|
||||
step check2 { SELECT check_mv(); }
|
||||
step c2 { COMMIT; }
|
||||
|
||||
permutation s1 create s2 insert c1 check2 c2 mv
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ step create {
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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 c1 { COMMIT; }
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ step create {
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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 c1 { COMMIT; }
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ setup
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ setup
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ setup
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ setup
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ setup
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ setup
|
|||
CREATE FUNCTION check_mv() RETURNS text AS
|
||||
$$ SELECT CASE WHEN count(*) = 0 THEN 'ok' ELSE 'ng' END
|
||||
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
|
||||
|
|
|
|||
Loading…
Reference in a new issue