summaryrefslogtreecommitdiff
path: root/src/include/access
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2015-08-07 15:10:56 +0200
committerAndres Freund <andres@anarazel.de>2015-08-07 15:10:56 +0200
commit4eda0a64705763854225a29703b606692af50e77 (patch)
tree286ea4d00654b603355314b130b10ccbf982790c /src/include/access
parent18e8613564bf0a675d453eec1fceded7bce09988 (diff)
downloadpostgresql-4eda0a64705763854225a29703b606692af50e77.tar.gz
Don't include low level locking code from frontend code.
Some frontend code like e.g. pg_xlogdump or pg_resetxlog, has to use backend headers. Unfortunately until now that code includes most of the locking code. It's generally not nice to expose such low level details, but de6fd1c898 made that a hard problem. We fall back to defining 'inline' away if the compiler doesn't support it - that can cause linker errors like on buildfarm animal pademelon if a inline function references backend only code. To fix that problem separate definitions from lock.h that are required from frontend code into lockdefs.h and use it in the relevant places. I've only removed the minimal amount of necessary definitions for now - it might turn out that we want more for other reasons. To avoid such details being exposed again put some checks against being included from frontend code into atomics.h, lock.h, lwlock.h and s_lock.h. It's otherwise fairly easy to indirectly include these headers. Discussion: 20150806070902.GE12214@awork2.anarazel.de
Diffstat (limited to 'src/include/access')
-rw-r--r--src/include/access/genam.h2
-rw-r--r--src/include/access/hash.h2
-rw-r--r--src/include/access/tuptoaster.h2
3 files changed, 3 insertions, 3 deletions
diff --git a/src/include/access/genam.h b/src/include/access/genam.h
index d86590ac11..d9d05a08ff 100644
--- a/src/include/access/genam.h
+++ b/src/include/access/genam.h
@@ -17,7 +17,7 @@
#include "access/sdir.h"
#include "access/skey.h"
#include "nodes/tidbitmap.h"
-#include "storage/lock.h"
+#include "storage/lockdefs.h"
#include "utils/relcache.h"
#include "utils/snapshot.h"
diff --git a/src/include/access/hash.h b/src/include/access/hash.h
index 93cc8afceb..97cb859fa5 100644
--- a/src/include/access/hash.h
+++ b/src/include/access/hash.h
@@ -24,7 +24,7 @@
#include "fmgr.h"
#include "lib/stringinfo.h"
#include "storage/bufmgr.h"
-#include "storage/lock.h"
+#include "storage/lockdefs.h"
#include "utils/relcache.h"
/*
diff --git a/src/include/access/tuptoaster.h b/src/include/access/tuptoaster.h
index 7d18535771..77f637e90d 100644
--- a/src/include/access/tuptoaster.h
+++ b/src/include/access/tuptoaster.h
@@ -14,8 +14,8 @@
#define TUPTOASTER_H
#include "access/htup_details.h"
+#include "storage/lockdefs.h"
#include "utils/relcache.h"
-#include "storage/lock.h"
/*
* This enables de-toasting of index entries. Needed until VACUUM is