From 4eda0a64705763854225a29703b606692af50e77 Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Fri, 7 Aug 2015 15:10:56 +0200 Subject: 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 --- src/include/catalog/objectaddress.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/include/catalog') diff --git a/src/include/catalog/objectaddress.h b/src/include/catalog/objectaddress.h index 37808c03c6..0fc16ed717 100644 --- a/src/include/catalog/objectaddress.h +++ b/src/include/catalog/objectaddress.h @@ -14,7 +14,7 @@ #define OBJECTADDRESS_H #include "nodes/pg_list.h" -#include "storage/lock.h" +#include "storage/lockdefs.h" #include "utils/acl.h" #include "utils/relcache.h" -- cgit v1.2.1