diff --git a/Makefile b/Makefile index e017e60..ca9faab 100644 --- a/Makefile +++ b/Makefile @@ -30,7 +30,11 @@ ISOLATIONCHECKS = corner_cases check: isolationcheck -installcheck: isolationcheck +installcheck: submake-isolation + $(MKDIR_P) isolation_output + $(pg_isolation_regress_installcheck) \ + --outputdir=isolation_output \ + $(ISOLATIONCHECKS) isolationcheck: | submake-isolation temp-install $(MKDIR_P) isolation_output diff --git a/pg_query_state.c b/pg_query_state.c index a4a7d1b..935fbf8 100644 --- a/pg_query_state.c +++ b/pg_query_state.c @@ -541,14 +541,18 @@ pg_query_state(PG_FUNCTION_ARGS) break; } } - pg_atomic_write_u32(&counterpart_userid->n_peers, 1); - params->reqid = ++reqid; - pg_write_barrier(); counterpart_user_id = GetRemoteBackendUserId(proc); if (!(superuser() || GetUserId() == counterpart_user_id)) + { + UnlockShmem(&tag); ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), errmsg("permission denied"))); + } + + pg_atomic_write_u32(&counterpart_userid->n_peers, 1); + params->reqid = ++reqid; + pg_write_barrier(); bg_worker_procs = GetRemoteBackendWorkers(proc);