pgsql: Generate fmgr prototypes automatically
Generate fmgr prototypes automatically
Gen_fmgrtab.pl creates a new file fmgrprotos.h, which contains
prototypes for all functions registered in pg_proc.h. This avoids
having to manually maintain these prototypes across a random variety of
header files. It also automatically enforces a correct function
signature, and since there are warnings about missing prototypes, it
will detect functions that are defined but not registered in
pg_proc.h (or otherwise used).
Reviewed-by: Pavel Stehule <pavel.stehule@gmail.com>
Branch
------
master
Details
-------
http://git.postgresql.org/pg/commitdiff/352a24a1f9d6f7d4abb1175bfd22acc358f43140
Modified Files
--------------
contrib/btree_gist/btree_bit.c | 1 +
contrib/btree_gist/btree_bytea.c | 1 +
contrib/btree_gist/btree_date.c | 1 +
contrib/btree_gist/btree_interval.c | 1 +
contrib/btree_gist/btree_time.c | 1 +
contrib/intarray/_int_selfuncs.c | 1 +
contrib/lo/lo.c | 2 +-
contrib/spi/moddatetime.c | 2 +-
src/backend/Makefile | 15 +-
src/backend/access/brin/brin.c | 1 +
src/backend/access/brin/brin_inclusion.c | 5 +-
src/backend/access/brin/brin_minmax.c | 5 +-
src/backend/access/gin/ginfast.c | 1 +
src/backend/access/gist/gist.c | 1 +
src/backend/access/hash/hash.c | 1 +
src/backend/access/hash/hashfunc.c | 10 +
src/backend/access/index/amapi.c | 1 +
src/backend/access/nbtree/nbtree.c | 1 +
src/backend/access/spgist/spgutils.c | 1 +
src/backend/access/transam/xlogfuncs.c | 1 -
src/backend/catalog/namespace.c | 16 -
src/backend/catalog/pg_proc.c | 4 -
src/backend/commands/define.c | 2 +-
src/backend/executor/nodeSamplescan.c | 1 +
src/backend/foreign/foreign.c | 4 -
src/backend/storage/smgr/smgrtype.c | 1 +
src/backend/tsearch/dict_ispell.c | 1 +
src/backend/tsearch/dict_simple.c | 1 +
src/backend/tsearch/dict_synonym.c | 1 +
src/backend/tsearch/ts_selfuncs.c | 1 +
src/backend/utils/.gitignore | 1 +
src/backend/utils/Gen_fmgrtab.pl | 35 +-
src/backend/utils/Makefile | 12 +-
src/backend/utils/adt/array_selfuncs.c | 1 +
src/backend/utils/adt/array_typanalyze.c | 1 +
src/backend/utils/adt/ascii.c | 1 +
src/backend/utils/adt/geo_selfuncs.c | 1 +
src/backend/utils/adt/jsonb_op.c | 1 +
src/backend/utils/adt/network_gist.c | 1 +
src/backend/utils/adt/network_selfuncs.c | 1 +
src/backend/utils/adt/network_spgist.c | 1 +
src/backend/utils/adt/numeric.c | 6 +-
src/backend/utils/adt/pg_upgrade_support.c | 12 -
src/backend/utils/adt/pgstatfuncs.c | 100 ---
src/backend/utils/adt/rangetypes_spgist.c | 7 -
src/backend/utils/adt/tsgistidx.c | 1 +
src/backend/utils/adt/tsquery_gist.c | 1 +
src/backend/utils/adt/tsquery_op.c | 1 +
src/backend/utils/adt/tsrank.c | 1 +
src/backend/utils/adt/tsvector.c | 1 +
src/backend/utils/adt/varbit.c | 1 +
src/include/Makefile | 3 +-
src/include/access/amapi.h | 2 -
src/include/access/brin.h | 6 -
src/include/access/gin_private.h | 4 -
src/include/access/gist_private.h | 1 -
src/include/access/hash.h | 22 -
src/include/access/nbtree.h | 1 -
src/include/access/spgist.h | 1 -
src/include/access/xlog_fn.h | 37 -
src/include/catalog/pg_proc.h | 1 +
src/include/commands/async.h | 5 -
src/include/commands/sequence.h | 8 -
src/include/commands/trigger.h | 2 -
src/include/libpq/be-fsstubs.h | 31 -
src/include/replication/logicalfuncs.h | 7 -
src/include/replication/origin.h | 14 -
src/include/replication/slot.h | 6 -
src/include/replication/walreceiver.h | 1 -
src/include/replication/walsender.h | 2 -
src/include/storage/smgr.h | 6 -
src/include/tsearch/ts_type.h | 89 ---
src/include/tsearch/ts_utils.h | 117 ---
src/include/utils/.gitignore | 1 +
src/include/utils/acl.h | 14 -
src/include/utils/array.h | 50 --
src/include/utils/ascii.h | 6 -
src/include/utils/builtins.h | 1186 +---------------------------
src/include/utils/bytea.h | 25 -
src/include/utils/cash.h | 48 --
src/include/utils/date.h | 113 ---
src/include/utils/datetime.h | 3 -
src/include/utils/formatting.h | 12 -
src/include/utils/geo_decls.h | 262 +-----
src/include/utils/inet.h | 27 -
src/include/utils/int8.h | 104 ---
src/include/utils/json.h | 64 --
src/include/utils/jsonb.h | 67 --
src/include/utils/nabstime.h | 63 --
src/include/utils/pg_lsn.h | 16 -
src/include/utils/rangetypes.h | 80 --
src/include/utils/selfuncs.h | 28 -
src/include/utils/snapmgr.h | 1 -
src/include/utils/timestamp.h | 125 ---
src/include/utils/varbit.h | 46 --
src/include/utils/xml.h | 33 -
src/tools/msvc/Solution.pm | 10 +-
src/tools/msvc/clean.bat | 2 +
98 files changed, 125 insertions(+), 2899 deletions(-)
--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers
Peter Eisentraut <peter_e@gmx.net> writes:
Generate fmgr prototypes automatically
Buildfarm's quite unhappy with this. Did you check parallel make?
regards, tom lane
--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers
Peter Eisentraut <peter_e@gmx.net> writes:
Generate fmgr prototypes automatically
BTW, now that I've looked through this patch ... why does it add
+#include "nodes/nodes.h"
+#include "nodes/pg_list.h"
to utils/builtins.h? AFAICS that shouldn't be necessary, since
there are no declarations in builtins.h that weren't there before.
And seeing that this results in builtins.h being included in even more
places than before, surely we want to minimize that file's inclusion
footprint.
regards, tom lane
--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers
On 1/17/17 2:35 PM, Tom Lane wrote:
Peter Eisentraut <peter_e@gmx.net> writes:
Generate fmgr prototypes automatically
BTW, now that I've looked through this patch ... why does it add
+#include "nodes/nodes.h"
+#include "nodes/pg_list.h"to utils/builtins.h? AFAICS that shouldn't be necessary, since
there are no declarations in builtins.h that weren't there before.
And seeing that this results in builtins.h being included in even more
places than before, surely we want to minimize that file's inclusion
footprint.
There are things in builtins.h that technically need those declarations.
It seems to work without it now, but at some point during the
refactoring they were necessary. I can remove them again.
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers
Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:
On 1/17/17 2:35 PM, Tom Lane wrote:
BTW, now that I've looked through this patch ... why does it add
+#include "nodes/nodes.h"
+#include "nodes/pg_list.h"to utils/builtins.h?
There are things in builtins.h that technically need those declarations.
It seems to work without it now, but at some point during the
refactoring they were necessary. I can remove them again.
[ looks around ... ] Hm, it looks like the reason it works without
them is that utils/sortsupport.h pulls in relcache.h, which pulls in a
veritable buttload of stuff; those two and a whole lot more beside.
That seems like a pretty bad idea. It's surely not the fault of this
patch that the sortsupport patch didn't give a damn about inclusion
footprints; but I still think we'd be well advised to minimize
builtins.h's footprint now that it's going to need to be included very
far and wide.
It looks like we could get rid of the need for sortsupport.h in
builtins.h via the good old "struct foo" forward reference trick,
that is
struct SortSupportData;
extern void varstr_sortsupport(struct SortSupportData *ssup, Oid collid, bool bpchar);
but I wonder if that's going far enough. We'd still be propagating
pg_list.h into a lot of places that don't necessarily need it.
Alternatively ... is there a specific reason why you chose to make
builtins.h the key inclusion file for this change, rather than having
callers include fmgrprotos.h directly? It seems like the stuff remaining
in builtins.h is just a laundry list of random utility functions.
Maybe dispersing those to other headers is the thing to do.
regards, tom lane
--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers
Tom Lane wrote:
Alternatively ... is there a specific reason why you chose to make
builtins.h the key inclusion file for this change, rather than having
callers include fmgrprotos.h directly? It seems like the stuff remaining
in builtins.h is just a laundry list of random utility functions.
Maybe dispersing those to other headers is the thing to do.
It is possible to replace many occurrences of builtins.h with
fmgrprotos.h. I just tried this
git grep -l 'include.*utils/builtins.h' -- *.c | xargs perl -pi -e 's{utils/builtins.h}{utils/fmgrprotos.h}'
There's a large number of changes that the oneliner produces that must
be reverted for the compile to be silent, but a large portion can
remain. (I only tried src/backend/access).
Anyway I support the idea of creating other header files for specific
purposes, such as ruleutils.h, varlena.h, etc. (I am against creating a
header file that contains commonly used macros such as
CStringGetTextDatum together with varstr_sortsupport. I think the
latter should have its own place).
--
�lvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
Alvaro Herrera wrote:
It is possible to replace many occurrences of builtins.h with
fmgrprotos.h. I just tried this
git grep -l 'include.*utils/builtins.h' -- *.c | xargs perl -pi -e 's{utils/builtins.h}{utils/fmgrprotos.h}'
There's a large number of changes that the oneliner produces that must
be reverted for the compile to be silent, but a large portion can
remain. (I only tried src/backend/access).
92 files are changed, 241 files still require builtins.h.
--
�lvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Attachments:
include-only-fmgrprotos.patchtext/plain; charset=us-asciiDownload
commit 36f1297a9214702f8c67ad96dfc28cb99a66722b[m
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
AuthorDate: Tue Jan 17 18:32:20 2017 -0300
CommitDate: Tue Jan 17 18:34:20 2017 -0300
remove builtins when fmgrprotos is enough
diff --git a/contrib/btree_gist/btree_bit.c b/contrib/btree_gist/btree_bit.c
index f34fa87..9ce06c9 100644
--- a/contrib/btree_gist/btree_bit.c
+++ b/contrib/btree_gist/btree_bit.c
@@ -5,7 +5,7 @@
#include "btree_gist.h"
#include "btree_utils_var.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/bytea.h"
#include "utils/varbit.h"
diff --git a/contrib/btree_gist/btree_bytea.c b/contrib/btree_gist/btree_bytea.c
index df6c960..1be494d 100644
--- a/contrib/btree_gist/btree_bytea.c
+++ b/contrib/btree_gist/btree_bytea.c
@@ -5,7 +5,7 @@
#include "btree_gist.h"
#include "btree_utils_var.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/bytea.h"
diff --git a/contrib/btree_gist/btree_date.c b/contrib/btree_gist/btree_date.c
index 56031d4..dc55582 100644
--- a/contrib/btree_gist/btree_date.c
+++ b/contrib/btree_gist/btree_date.c
@@ -5,7 +5,7 @@
#include "btree_gist.h"
#include "btree_utils_num.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/date.h"
typedef struct
diff --git a/contrib/btree_gist/btree_gist.c b/contrib/btree_gist/btree_gist.c
index e1dc253..d3f13d6 100644
--- a/contrib/btree_gist/btree_gist.c
+++ b/contrib/btree_gist/btree_gist.c
@@ -27,7 +27,7 @@ gbtreekey_in(PG_FUNCTION_ARGS)
}
#include "btree_utils_var.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
Datum
gbtreekey_out(PG_FUNCTION_ARGS)
{
diff --git a/contrib/btree_gist/btree_interval.c b/contrib/btree_gist/btree_interval.c
index e5cd0a2..afb205e 100644
--- a/contrib/btree_gist/btree_interval.c
+++ b/contrib/btree_gist/btree_interval.c
@@ -5,7 +5,7 @@
#include "btree_gist.h"
#include "btree_utils_num.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/timestamp.h"
typedef struct
diff --git a/contrib/btree_gist/btree_macaddr.c b/contrib/btree_gist/btree_macaddr.c
index 87d96c0..5a545ac 100644
--- a/contrib/btree_gist/btree_macaddr.c
+++ b/contrib/btree_gist/btree_macaddr.c
@@ -5,7 +5,7 @@
#include "btree_gist.h"
#include "btree_utils_num.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/inet.h"
typedef struct
diff --git a/contrib/btree_gist/btree_text.c b/contrib/btree_gist/btree_text.c
index 2e00cb6..751e165 100644
--- a/contrib/btree_gist/btree_text.c
+++ b/contrib/btree_gist/btree_text.c
@@ -5,7 +5,7 @@
#include "btree_gist.h"
#include "btree_utils_var.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
/*
** Text ops
diff --git a/contrib/btree_gist/btree_time.c b/contrib/btree_gist/btree_time.c
index 27f30bc..9d19a10 100644
--- a/contrib/btree_gist/btree_time.c
+++ b/contrib/btree_gist/btree_time.c
@@ -5,7 +5,7 @@
#include "btree_gist.h"
#include "btree_utils_num.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/date.h"
#include "utils/timestamp.h"
diff --git a/contrib/btree_gist/btree_utils_var.c b/contrib/btree_gist/btree_utils_var.c
index 70b3794..5af5164 100644
--- a/contrib/btree_gist/btree_utils_var.c
+++ b/contrib/btree_gist/btree_utils_var.c
@@ -11,7 +11,7 @@
#include "btree_utils_var.h"
#include "utils/pg_locale.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/rel.h"
/* used for key sorting */
diff --git a/contrib/intarray/_int_bool.c b/contrib/intarray/_int_bool.c
index 5d9e676..4973ce6 100644
--- a/contrib/intarray/_int_bool.c
+++ b/contrib/intarray/_int_bool.c
@@ -4,7 +4,7 @@
#include "postgres.h"
#include "miscadmin.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "_int.h"
diff --git a/contrib/intarray/_int_selfuncs.c b/contrib/intarray/_int_selfuncs.c
index 9b4a22f..a89eb57 100644
--- a/contrib/intarray/_int_selfuncs.c
+++ b/contrib/intarray/_int_selfuncs.c
@@ -19,7 +19,7 @@
#include "catalog/pg_operator.h"
#include "catalog/pg_statistic.h"
#include "catalog/pg_type.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/selfuncs.h"
#include "utils/syscache.h"
#include "utils/lsyscache.h"
diff --git a/contrib/isn/isn.c b/contrib/isn/isn.c
index 9e125b8..df62189 100644
--- a/contrib/isn/isn.c
+++ b/contrib/isn/isn.c
@@ -15,7 +15,7 @@
#include "postgres.h"
#include "fmgr.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "isn.h"
#include "EAN13.h"
diff --git a/contrib/lo/lo.c b/contrib/lo/lo.c
index 050bd8a..7440058 100644
--- a/contrib/lo/lo.c
+++ b/contrib/lo/lo.c
@@ -9,7 +9,7 @@
#include "commands/trigger.h"
#include "executor/spi.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/rel.h"
PG_MODULE_MAGIC;
diff --git a/contrib/pgstattuple/pgstatapprox.c b/contrib/pgstattuple/pgstatapprox.c
index 8db1e20..990c480 100644
--- a/contrib/pgstattuple/pgstatapprox.c
+++ b/contrib/pgstattuple/pgstatapprox.c
@@ -24,7 +24,7 @@
#include "storage/freespace.h"
#include "storage/procarray.h"
#include "storage/lmgr.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/tqual.h"
#include "commands/vacuum.h"
diff --git a/contrib/sepgsql/database.c b/contrib/sepgsql/database.c
index 69dd290..1f59350 100644
--- a/contrib/sepgsql/database.c
+++ b/contrib/sepgsql/database.c
@@ -19,7 +19,7 @@
#include "catalog/indexing.h"
#include "commands/dbcommands.h"
#include "commands/seclabel.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/fmgroids.h"
#include "utils/tqual.h"
#include "sepgsql.h"
diff --git a/contrib/sepgsql/label.c b/contrib/sepgsql/label.c
index 82deb93..3534595 100644
--- a/contrib/sepgsql/label.c
+++ b/contrib/sepgsql/label.c
@@ -27,7 +27,7 @@
#include "libpq/auth.h"
#include "libpq/libpq-be.h"
#include "miscadmin.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/fmgroids.h"
#include "utils/guc.h"
#include "utils/lsyscache.h"
diff --git a/contrib/sepgsql/proc.c b/contrib/sepgsql/proc.c
index 4ccf4a5..9fb0a4d 100644
--- a/contrib/sepgsql/proc.c
+++ b/contrib/sepgsql/proc.c
@@ -21,7 +21,7 @@
#include "catalog/pg_type.h"
#include "commands/seclabel.h"
#include "lib/stringinfo.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/fmgroids.h"
#include "utils/lsyscache.h"
#include "utils/syscache.h"
diff --git a/contrib/sepgsql/relation.c b/contrib/sepgsql/relation.c
index ab98a9b..d75350b 100644
--- a/contrib/sepgsql/relation.c
+++ b/contrib/sepgsql/relation.c
@@ -21,7 +21,7 @@
#include "catalog/pg_namespace.h"
#include "commands/seclabel.h"
#include "lib/stringinfo.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/fmgroids.h"
#include "utils/catcache.h"
#include "utils/lsyscache.h"
diff --git a/contrib/sepgsql/schema.c b/contrib/sepgsql/schema.c
index 940384b..1cc8c98 100644
--- a/contrib/sepgsql/schema.c
+++ b/contrib/sepgsql/schema.c
@@ -21,7 +21,7 @@
#include "commands/seclabel.h"
#include "lib/stringinfo.h"
#include "miscadmin.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/fmgroids.h"
#include "utils/lsyscache.h"
#include "utils/tqual.h"
diff --git a/contrib/spi/moddatetime.c b/contrib/spi/moddatetime.c
index 70476f7..32ec477 100644
--- a/contrib/spi/moddatetime.c
+++ b/contrib/spi/moddatetime.c
@@ -19,7 +19,7 @@ OH, me, I'm Terry Mackintosh <terry@terrym.com>
#include "catalog/pg_type.h"
#include "executor/spi.h"
#include "commands/trigger.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/rel.h"
PG_MODULE_MAGIC;
diff --git a/contrib/uuid-ossp/uuid-ossp.c b/contrib/uuid-ossp/uuid-ossp.c
index 57bdf4d..44a544a 100644
--- a/contrib/uuid-ossp/uuid-ossp.c
+++ b/contrib/uuid-ossp/uuid-ossp.c
@@ -14,7 +14,7 @@
#include "postgres.h"
#include "fmgr.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/uuid.h"
/* for ntohl/htonl */
diff --git a/contrib/xml2/xslt_proc.c b/contrib/xml2/xslt_proc.c
index 343924e..3559d2f 100644
--- a/contrib/xml2/xslt_proc.c
+++ b/contrib/xml2/xslt_proc.c
@@ -11,7 +11,7 @@
#include "fmgr.h"
#include "funcapi.h"
#include "miscadmin.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/xml.h"
#ifdef USE_LIBXSLT
diff --git a/src/backend/access/brin/brin.c b/src/backend/access/brin/brin.c
index d60ddd2..cc2e240 100644
--- a/src/backend/access/brin/brin.c
+++ b/src/backend/access/brin/brin.c
@@ -28,7 +28,7 @@
#include "pgstat.h"
#include "storage/bufmgr.h"
#include "storage/freespace.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/index_selfuncs.h"
#include "utils/memutils.h"
#include "utils/rel.h"
diff --git a/src/backend/access/brin/brin_inclusion.c b/src/backend/access/brin/brin_inclusion.c
index bc16dd7..35c68aa 100644
--- a/src/backend/access/brin/brin_inclusion.c
+++ b/src/backend/access/brin/brin_inclusion.c
@@ -30,7 +30,7 @@
#include "access/skey.h"
#include "catalog/pg_amop.h"
#include "catalog/pg_type.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/datum.h"
#include "utils/lsyscache.h"
#include "utils/rel.h"
diff --git a/src/backend/access/brin/brin_minmax.c b/src/backend/access/brin/brin_minmax.c
index 8f7a0c7..14b4386 100644
--- a/src/backend/access/brin/brin_minmax.c
+++ b/src/backend/access/brin/brin_minmax.c
@@ -16,7 +16,7 @@
#include "access/stratnum.h"
#include "catalog/pg_type.h"
#include "catalog/pg_amop.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/datum.h"
#include "utils/lsyscache.h"
#include "utils/rel.h"
diff --git a/src/backend/access/gin/ginarrayproc.c b/src/backend/access/gin/ginarrayproc.c
index cc7435e..eff07c9 100644
--- a/src/backend/access/gin/ginarrayproc.c
+++ b/src/backend/access/gin/ginarrayproc.c
@@ -16,7 +16,7 @@
#include "access/gin.h"
#include "access/stratnum.h"
#include "utils/array.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/lsyscache.h"
diff --git a/src/backend/access/gin/ginfast.c b/src/backend/access/gin/ginfast.c
index 85031e2..2751ba1 100644
--- a/src/backend/access/gin/ginfast.c
+++ b/src/backend/access/gin/ginfast.c
@@ -30,7 +30,7 @@
#include "postmaster/autovacuum.h"
#include "storage/indexfsm.h"
#include "storage/lmgr.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
/* GUC parameter */
int gin_pending_list_limit = 0;
diff --git a/src/backend/access/gist/gist.c b/src/backend/access/gist/gist.c
index 597056a..b0bf320 100644
--- a/src/backend/access/gist/gist.c
+++ b/src/backend/access/gist/gist.c
@@ -18,7 +18,7 @@
#include "access/gistscan.h"
#include "catalog/pg_collation.h"
#include "miscadmin.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/index_selfuncs.h"
#include "utils/memutils.h"
#include "utils/rel.h"
diff --git a/src/backend/access/hash/hash.c b/src/backend/access/hash/hash.c
index a64a9b9..6ad9257 100644
--- a/src/backend/access/hash/hash.c
+++ b/src/backend/access/hash/hash.c
@@ -25,7 +25,7 @@
#include "commands/vacuum.h"
#include "miscadmin.h"
#include "optimizer/plancat.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/index_selfuncs.h"
#include "utils/rel.h"
diff --git a/src/backend/access/hash/hashfunc.c b/src/backend/access/hash/hashfunc.c
index 289d766..3e353d6 100644
--- a/src/backend/access/hash/hashfunc.c
+++ b/src/backend/access/hash/hashfunc.c
@@ -27,7 +27,7 @@
#include "postgres.h"
#include "access/hash.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
/*
* Datatype-specific hash functions.
diff --git a/src/backend/access/index/amapi.c b/src/backend/access/index/amapi.c
index 7b597a0..7915c71 100644
--- a/src/backend/access/index/amapi.c
+++ b/src/backend/access/index/amapi.c
@@ -17,7 +17,7 @@
#include "access/htup_details.h"
#include "catalog/pg_am.h"
#include "catalog/pg_opclass.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/syscache.h"
diff --git a/src/backend/access/index/genam.c b/src/backend/access/index/genam.c
index c4a393f..214cd92 100644
--- a/src/backend/access/index/genam.c
+++ b/src/backend/access/index/genam.c
@@ -26,7 +26,7 @@
#include "miscadmin.h"
#include "storage/bufmgr.h"
#include "utils/acl.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/lsyscache.h"
#include "utils/rel.h"
#include "utils/rls.h"
diff --git a/src/backend/access/nbtree/nbtcompare.c b/src/backend/access/nbtree/nbtcompare.c
index 4b131ef..22efd2f 100644
--- a/src/backend/access/nbtree/nbtcompare.c
+++ b/src/backend/access/nbtree/nbtcompare.c
@@ -48,7 +48,7 @@
*/
#include "postgres.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/sortsupport.h"
diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c
index 1bb1acf..aad1205 100644
--- a/src/backend/access/nbtree/nbtree.c
+++ b/src/backend/access/nbtree/nbtree.c
@@ -28,7 +28,7 @@
#include "storage/lmgr.h"
#include "storage/smgr.h"
#include "tcop/tcopprot.h" /* pgrminclude ignore */
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/index_selfuncs.h"
#include "utils/memutils.h"
diff --git a/src/backend/access/spgist/spgkdtreeproc.c b/src/backend/access/spgist/spgkdtreeproc.c
index 9a2649b..8085346 100644
--- a/src/backend/access/spgist/spgkdtreeproc.c
+++ b/src/backend/access/spgist/spgkdtreeproc.c
@@ -18,7 +18,7 @@
#include "access/spgist.h"
#include "access/stratnum.h"
#include "catalog/pg_type.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/geo_decls.h"
diff --git a/src/backend/access/spgist/spgquadtreeproc.c b/src/backend/access/spgist/spgquadtreeproc.c
index 6ad73f4..ce048bc 100644
--- a/src/backend/access/spgist/spgquadtreeproc.c
+++ b/src/backend/access/spgist/spgquadtreeproc.c
@@ -18,7 +18,7 @@
#include "access/spgist.h"
#include "access/stratnum.h"
#include "catalog/pg_type.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/geo_decls.h"
diff --git a/src/backend/access/spgist/spgutils.c b/src/backend/access/spgist/spgutils.c
index ca4b0bd..e62f85e 100644
--- a/src/backend/access/spgist/spgutils.c
+++ b/src/backend/access/spgist/spgutils.c
@@ -22,7 +22,7 @@
#include "storage/bufmgr.h"
#include "storage/indexfsm.h"
#include "storage/lmgr.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/index_selfuncs.h"
#include "utils/lsyscache.h"
diff --git a/src/backend/access/tablesample/bernoulli.c b/src/backend/access/tablesample/bernoulli.c
index 5f6d478..67e508c 100644
--- a/src/backend/access/tablesample/bernoulli.c
+++ b/src/backend/access/tablesample/bernoulli.c
@@ -34,7 +34,7 @@
#include "catalog/pg_type.h"
#include "optimizer/clauses.h"
#include "optimizer/cost.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
/* Private state */
diff --git a/src/backend/access/tablesample/system.c b/src/backend/access/tablesample/system.c
index e270cbc..914a6b6 100644
--- a/src/backend/access/tablesample/system.c
+++ b/src/backend/access/tablesample/system.c
@@ -35,7 +35,7 @@
#include "catalog/pg_type.h"
#include "optimizer/clauses.h"
#include "optimizer/cost.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
/* Private state */
diff --git a/src/backend/access/transam/commit_ts.c b/src/backend/access/transam/commit_ts.c
index 2403de3..c5ead1b 100644
--- a/src/backend/access/transam/commit_ts.c
+++ b/src/backend/access/transam/commit_ts.c
@@ -33,7 +33,7 @@
#include "miscadmin.h"
#include "pg_trace.h"
#include "storage/shmem.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/snapmgr.h"
#include "utils/timestamp.h"
diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c
index 59d1252..b49e8c6 100644
--- a/src/backend/access/transam/multixact.c
+++ b/src/backend/access/transam/multixact.c
@@ -87,7 +87,7 @@
#include "storage/pmsignal.h"
#include "storage/proc.h"
#include "storage/procarray.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/memutils.h"
#include "utils/snapmgr.h"
diff --git a/src/backend/commands/amcmds.c b/src/backend/commands/amcmds.c
index 29061b8..36e77ef 100644
--- a/src/backend/commands/amcmds.c
+++ b/src/backend/commands/amcmds.c
@@ -23,7 +23,7 @@
#include "commands/defrem.h"
#include "miscadmin.h"
#include "parser/parse_func.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/lsyscache.h"
#include "utils/rel.h"
#include "utils/syscache.h"
diff --git a/src/backend/commands/collationcmds.c b/src/backend/commands/collationcmds.c
index ccadfc2..cfccb7f 100644
--- a/src/backend/commands/collationcmds.c
+++ b/src/backend/commands/collationcmds.c
@@ -27,7 +27,7 @@
#include "commands/defrem.h"
#include "mb/pg_wchar.h"
#include "miscadmin.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/lsyscache.h"
#include "utils/pg_locale.h"
#include "utils/rel.h"
diff --git a/src/backend/commands/constraint.c b/src/backend/commands/constraint.c
index 77cf8ce..f8d4636 100644
--- a/src/backend/commands/constraint.c
+++ b/src/backend/commands/constraint.c
@@ -16,7 +16,7 @@
#include "catalog/index.h"
#include "commands/trigger.h"
#include "executor/executor.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/rel.h"
#include "utils/tqual.h"
diff --git a/src/backend/commands/conversioncmds.c b/src/backend/commands/conversioncmds.c
index 9861d3d..fc7baee 100644
--- a/src/backend/commands/conversioncmds.c
+++ b/src/backend/commands/conversioncmds.c
@@ -25,7 +25,7 @@
#include "mb/pg_wchar.h"
#include "miscadmin.h"
#include "parser/parse_func.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/lsyscache.h"
#include "utils/rel.h"
#include "utils/syscache.h"
diff --git a/src/backend/commands/define.c b/src/backend/commands/define.c
index 714b525..37df0ca 100644
--- a/src/backend/commands/define.c
+++ b/src/backend/commands/define.c
@@ -40,7 +40,7 @@
#include "nodes/makefuncs.h"
#include "parser/parse_type.h"
#include "parser/scansup.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
/*
* Extract a string value (otherwise uninterpreted) from a DefElem.
diff --git a/src/backend/commands/dropcmds.c b/src/backend/commands/dropcmds.c
index 96436c0..47c8c94 100644
--- a/src/backend/commands/dropcmds.c
+++ b/src/backend/commands/dropcmds.c
@@ -25,7 +25,7 @@
#include "miscadmin.h"
#include "nodes/makefuncs.h"
#include "parser/parse_type.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/syscache.h"
diff --git a/src/backend/commands/operatorcmds.c b/src/backend/commands/operatorcmds.c
index a273376..c071c01 100644
--- a/src/backend/commands/operatorcmds.c
+++ b/src/backend/commands/operatorcmds.c
@@ -48,7 +48,7 @@
#include "parser/parse_func.h"
#include "parser/parse_oper.h"
#include "parser/parse_type.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/lsyscache.h"
#include "utils/rel.h"
#include "utils/syscache.h"
diff --git a/src/backend/executor/nodeFunctionscan.c b/src/backend/executor/nodeFunctionscan.c
index 1b593dc..90d86ef 100644
--- a/src/backend/executor/nodeFunctionscan.c
+++ b/src/backend/executor/nodeFunctionscan.c
@@ -26,7 +26,7 @@
#include "executor/nodeFunctionscan.h"
#include "funcapi.h"
#include "nodes/nodeFuncs.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/memutils.h"
diff --git a/src/backend/executor/nodeSamplescan.c b/src/backend/executor/nodeSamplescan.c
index 8db5469..996e9c1 100644
--- a/src/backend/executor/nodeSamplescan.c
+++ b/src/backend/executor/nodeSamplescan.c
@@ -22,7 +22,7 @@
#include "miscadmin.h"
#include "pgstat.h"
#include "storage/predicate.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/rel.h"
#include "utils/tqual.h"
diff --git a/src/backend/parser/parse_agg.c b/src/backend/parser/parse_agg.c
index 7be7fe9..db815b3 100644
--- a/src/backend/parser/parse_agg.c
+++ b/src/backend/parser/parse_agg.c
@@ -27,7 +27,7 @@
#include "parser/parse_expr.h"
#include "parser/parsetree.h"
#include "rewrite/rewriteManip.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/lsyscache.h"
diff --git a/src/backend/replication/basebackup.c b/src/backend/replication/basebackup.c
index 09ecc15..8bd9da1 100644
--- a/src/backend/replication/basebackup.c
+++ b/src/backend/replication/basebackup.c
@@ -33,7 +33,7 @@
#include "storage/dsm_impl.h"
#include "storage/fd.h"
#include "storage/ipc.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/elog.h"
#include "utils/ps_status.h"
#include "utils/timestamp.h"
diff --git a/src/backend/replication/slot.c b/src/backend/replication/slot.c
index 10d69d0..66ce947 100644
--- a/src/backend/replication/slot.c
+++ b/src/backend/replication/slot.c
@@ -47,7 +47,7 @@
#include "storage/fd.h"
#include "storage/proc.h"
#include "storage/procarray.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
/*
* Replication slot on-disk data structure.
diff --git a/src/backend/replication/syncrep.c b/src/backend/replication/syncrep.c
index 20a1441..9c2fc99 100644
--- a/src/backend/replication/syncrep.c
+++ b/src/backend/replication/syncrep.c
@@ -79,7 +79,7 @@
#include "storage/pmsignal.h"
#include "storage/proc.h"
#include "tcop/tcopprot.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/ps_status.h"
/* User-settable parameters for sync rep */
diff --git a/src/backend/storage/smgr/smgrtype.c b/src/backend/storage/smgr/smgrtype.c
index dc81fe8..6c2b409 100644
--- a/src/backend/storage/smgr/smgrtype.c
+++ b/src/backend/storage/smgr/smgrtype.c
@@ -15,7 +15,7 @@
#include "postgres.h"
#include "storage/smgr.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
typedef struct smgrid
diff --git a/src/backend/tsearch/dict_ispell.c b/src/backend/tsearch/dict_ispell.c
index b4576bf..6f57a83 100644
--- a/src/backend/tsearch/dict_ispell.c
+++ b/src/backend/tsearch/dict_ispell.c
@@ -17,7 +17,7 @@
#include "tsearch/dicts/spell.h"
#include "tsearch/ts_locale.h"
#include "tsearch/ts_utils.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
typedef struct
diff --git a/src/backend/tsearch/dict_simple.c b/src/backend/tsearch/dict_simple.c
index c361362..9643e21 100644
--- a/src/backend/tsearch/dict_simple.c
+++ b/src/backend/tsearch/dict_simple.c
@@ -16,7 +16,7 @@
#include "commands/defrem.h"
#include "tsearch/ts_locale.h"
#include "tsearch/ts_utils.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
typedef struct
diff --git a/src/backend/tsearch/dict_synonym.c b/src/backend/tsearch/dict_synonym.c
index e67d2e6..8651204 100644
--- a/src/backend/tsearch/dict_synonym.c
+++ b/src/backend/tsearch/dict_synonym.c
@@ -16,7 +16,7 @@
#include "commands/defrem.h"
#include "tsearch/ts_locale.h"
#include "tsearch/ts_utils.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
typedef struct
{
diff --git a/src/backend/tsearch/ts_selfuncs.c b/src/backend/tsearch/ts_selfuncs.c
index 904d884..bff2c60 100644
--- a/src/backend/tsearch/ts_selfuncs.c
+++ b/src/backend/tsearch/ts_selfuncs.c
@@ -19,7 +19,7 @@
#include "miscadmin.h"
#include "nodes/nodes.h"
#include "tsearch/ts_type.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/lsyscache.h"
#include "utils/selfuncs.h"
#include "utils/syscache.h"
diff --git a/src/backend/utils/adt/array_selfuncs.c b/src/backend/utils/adt/array_selfuncs.c
index 50e8145..0e3111c 100644
--- a/src/backend/utils/adt/array_selfuncs.c
+++ b/src/backend/utils/adt/array_selfuncs.c
@@ -22,7 +22,7 @@
#include "catalog/pg_statistic.h"
#include "optimizer/clauses.h"
#include "utils/array.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/lsyscache.h"
#include "utils/selfuncs.h"
#include "utils/typcache.h"
diff --git a/src/backend/utils/adt/array_typanalyze.c b/src/backend/utils/adt/array_typanalyze.c
index 85b7a43..ed4c685 100644
--- a/src/backend/utils/adt/array_typanalyze.c
+++ b/src/backend/utils/adt/array_typanalyze.c
@@ -18,7 +18,7 @@
#include "catalog/pg_collation.h"
#include "commands/vacuum.h"
#include "utils/array.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/datum.h"
#include "utils/lsyscache.h"
#include "utils/typcache.h"
diff --git a/src/backend/utils/adt/ascii.c b/src/backend/utils/adt/ascii.c
index e219d4b..20d033d 100644
--- a/src/backend/utils/adt/ascii.c
+++ b/src/backend/utils/adt/ascii.c
@@ -13,7 +13,7 @@
#include "mb/pg_wchar.h"
#include "utils/ascii.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
static void pg_to_ascii(unsigned char *src, unsigned char *src_end,
unsigned char *dest, int enc);
diff --git a/src/backend/utils/adt/char.c b/src/backend/utils/adt/char.c
index f0c4d25..2ffd021 100644
--- a/src/backend/utils/adt/char.c
+++ b/src/backend/utils/adt/char.c
@@ -18,7 +18,7 @@
#include <limits.h>
#include "libpq/pqformat.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
/*****************************************************************************
* USER I/O ROUTINES *
diff --git a/src/backend/utils/adt/geo_selfuncs.c b/src/backend/utils/adt/geo_selfuncs.c
index 774063e..82fcb58 100644
--- a/src/backend/utils/adt/geo_selfuncs.c
+++ b/src/backend/utils/adt/geo_selfuncs.c
@@ -18,7 +18,7 @@
*/
#include "postgres.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/geo_decls.h"
diff --git a/src/backend/utils/adt/jsonb_op.c b/src/backend/utils/adt/jsonb_op.c
index d4c490e..4b27b62 100644
--- a/src/backend/utils/adt/jsonb_op.c
+++ b/src/backend/utils/adt/jsonb_op.c
@@ -15,7 +15,7 @@
#include "catalog/pg_type.h"
#include "miscadmin.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/jsonb.h"
Datum
diff --git a/src/backend/utils/adt/like.c b/src/backend/utils/adt/like.c
index 91fe109..67b1a87 100644
--- a/src/backend/utils/adt/like.c
+++ b/src/backend/utils/adt/like.c
@@ -22,7 +22,7 @@
#include "catalog/pg_collation.h"
#include "mb/pg_wchar.h"
#include "miscadmin.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/pg_locale.h"
diff --git a/src/backend/utils/adt/mac.c b/src/backend/utils/adt/mac.c
index 509315a..e93fa5f 100644
--- a/src/backend/utils/adt/mac.c
+++ b/src/backend/utils/adt/mac.c
@@ -8,7 +8,7 @@
#include "access/hash.h"
#include "libpq/pqformat.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/inet.h"
diff --git a/src/backend/utils/adt/network_gist.c b/src/backend/utils/adt/network_gist.c
index a0097da..83f655d 100644
--- a/src/backend/utils/adt/network_gist.c
+++ b/src/backend/utils/adt/network_gist.c
@@ -49,7 +49,7 @@
#include "access/gist.h"
#include "access/stratnum.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/inet.h"
/*
diff --git a/src/backend/utils/adt/network_selfuncs.c b/src/backend/utils/adt/network_selfuncs.c
index bcdd902..cbf496d 100644
--- a/src/backend/utils/adt/network_selfuncs.c
+++ b/src/backend/utils/adt/network_selfuncs.c
@@ -23,7 +23,7 @@
#include "access/htup_details.h"
#include "catalog/pg_operator.h"
#include "catalog/pg_statistic.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/inet.h"
#include "utils/lsyscache.h"
#include "utils/selfuncs.h"
diff --git a/src/backend/utils/adt/network_spgist.c b/src/backend/utils/adt/network_spgist.c
index c48f45f..7b2ef3a 100644
--- a/src/backend/utils/adt/network_spgist.c
+++ b/src/backend/utils/adt/network_spgist.c
@@ -35,7 +35,7 @@
#include "access/spgist.h"
#include "catalog/pg_type.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/inet.h"
diff --git a/src/backend/utils/adt/orderedsetaggs.c b/src/backend/utils/adt/orderedsetaggs.c
index f9f18f2..75d4ca4 100644
--- a/src/backend/utils/adt/orderedsetaggs.c
+++ b/src/backend/utils/adt/orderedsetaggs.c
@@ -24,7 +24,7 @@
#include "nodes/nodeFuncs.h"
#include "optimizer/tlist.h"
#include "utils/array.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/lsyscache.h"
#include "utils/timestamp.h"
#include "utils/tuplesort.h"
diff --git a/src/backend/utils/adt/pg_lsn.c b/src/backend/utils/adt/pg_lsn.c
index 16c9a07..27fb346 100644
--- a/src/backend/utils/adt/pg_lsn.c
+++ b/src/backend/utils/adt/pg_lsn.c
@@ -16,7 +16,7 @@
#include "access/hash.h"
#include "funcapi.h"
#include "libpq/pqformat.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/pg_lsn.h"
#define MAXPG_LSNLEN 17
diff --git a/src/backend/utils/adt/pseudotypes.c b/src/backend/utils/adt/pseudotypes.c
index be79353..0ca18ca 100644
--- a/src/backend/utils/adt/pseudotypes.c
+++ b/src/backend/utils/adt/pseudotypes.c
@@ -24,7 +24,7 @@
#include "libpq/pqformat.h"
#include "utils/array.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/rangetypes.h"
diff --git a/src/backend/utils/adt/rangetypes_spgist.c b/src/backend/utils/adt/rangetypes_spgist.c
index a887e55..e884135 100644
--- a/src/backend/utils/adt/rangetypes_spgist.c
+++ b/src/backend/utils/adt/rangetypes_spgist.c
@@ -39,7 +39,7 @@
#include "access/spgist.h"
#include "access/stratnum.h"
#include "catalog/pg_type.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/datum.h"
#include "utils/rangetypes.h"
diff --git a/src/backend/utils/adt/trigfuncs.c b/src/backend/utils/adt/trigfuncs.c
index 50ea6d9..e30df49 100644
--- a/src/backend/utils/adt/trigfuncs.c
+++ b/src/backend/utils/adt/trigfuncs.c
@@ -15,7 +15,7 @@
#include "access/htup_details.h"
#include "commands/trigger.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/rel.h"
diff --git a/src/backend/utils/adt/tsgistidx.c b/src/backend/utils/adt/tsgistidx.c
index 7ce2699..ccd3bc5 100644
--- a/src/backend/utils/adt/tsgistidx.c
+++ b/src/backend/utils/adt/tsgistidx.c
@@ -17,7 +17,7 @@
#include "access/gist.h"
#include "access/tuptoaster.h"
#include "tsearch/ts_utils.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/pg_crc.h"
diff --git a/src/backend/utils/adt/tsquery_gist.c b/src/backend/utils/adt/tsquery_gist.c
index 85518dc..4d56860 100644
--- a/src/backend/utils/adt/tsquery_gist.c
+++ b/src/backend/utils/adt/tsquery_gist.c
@@ -17,7 +17,7 @@
#include "access/stratnum.h"
#include "access/gist.h"
#include "tsearch/ts_utils.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#define GETENTRY(vec,pos) DatumGetTSQuerySign((vec)->vector[pos].key)
diff --git a/src/backend/utils/adt/tsquery_op.c b/src/backend/utils/adt/tsquery_op.c
index 755c3e9..5cd7e0d 100644
--- a/src/backend/utils/adt/tsquery_op.c
+++ b/src/backend/utils/adt/tsquery_op.c
@@ -15,7 +15,7 @@
#include "postgres.h"
#include "tsearch/ts_utils.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
Datum
tsquery_numnode(PG_FUNCTION_ARGS)
diff --git a/src/backend/utils/adt/tsrank.c b/src/backend/utils/adt/tsrank.c
index 9b2cd6d..aa3415a 100644
--- a/src/backend/utils/adt/tsrank.c
+++ b/src/backend/utils/adt/tsrank.c
@@ -18,7 +18,7 @@
#include "tsearch/ts_utils.h"
#include "utils/array.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "miscadmin.h"
diff --git a/src/backend/utils/adt/tsvector.c b/src/backend/utils/adt/tsvector.c
index 6f66c1f..86025ae 100644
--- a/src/backend/utils/adt/tsvector.c
+++ b/src/backend/utils/adt/tsvector.c
@@ -17,7 +17,7 @@
#include "libpq/pqformat.h"
#include "tsearch/ts_locale.h"
#include "tsearch/ts_utils.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/memutils.h"
typedef struct
diff --git a/src/backend/utils/adt/txid.c b/src/backend/utils/adt/txid.c
index 4945c43..18fc3c5 100644
--- a/src/backend/utils/adt/txid.c
+++ b/src/backend/utils/adt/txid.c
@@ -28,7 +28,7 @@
#include "miscadmin.h"
#include "libpq/pqformat.h"
#include "postmaster/postmaster.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/memutils.h"
#include "utils/snapmgr.h"
diff --git a/src/backend/utils/adt/uuid.c b/src/backend/utils/adt/uuid.c
index 3221166..ab36966 100644
--- a/src/backend/utils/adt/uuid.c
+++ b/src/backend/utils/adt/uuid.c
@@ -17,7 +17,7 @@
#include "lib/hyperloglog.h"
#include "libpq/pqformat.h"
#include "port/pg_bswap.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/guc.h"
#include "utils/sortsupport.h"
#include "utils/uuid.h"
diff --git a/src/backend/utils/adt/varbit.c b/src/backend/utils/adt/varbit.c
index af39d4c..342af7c 100644
--- a/src/backend/utils/adt/varbit.c
+++ b/src/backend/utils/adt/varbit.c
@@ -20,7 +20,7 @@
#include "libpq/pqformat.h"
#include "nodes/nodeFuncs.h"
#include "utils/array.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/varbit.h"
#define HEXDIG(z) ((z)<10 ? ((z)+'0') : ((z)-10+'A'))
diff --git a/src/backend/utils/adt/windowfuncs.c b/src/backend/utils/adt/windowfuncs.c
index 4e714cd..a029604 100644
--- a/src/backend/utils/adt/windowfuncs.c
+++ b/src/backend/utils/adt/windowfuncs.c
@@ -13,7 +13,7 @@
*/
#include "postgres.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "windowapi.h"
/*
diff --git a/src/backend/utils/cache/relfilenodemap.c b/src/backend/utils/cache/relfilenodemap.c
index c790309..c268025 100644
--- a/src/backend/utils/cache/relfilenodemap.c
+++ b/src/backend/utils/cache/relfilenodemap.c
@@ -20,7 +20,7 @@
#include "catalog/pg_class.h"
#include "catalog/pg_tablespace.h"
#include "miscadmin.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/catcache.h"
#include "utils/hsearch.h"
#include "utils/inval.h"
diff --git a/src/backend/utils/mb/encnames.c b/src/backend/utils/mb/encnames.c
index 11099b8..5b41c5e 100644
--- a/src/backend/utils/mb/encnames.c
+++ b/src/backend/utils/mb/encnames.c
@@ -8,7 +8,7 @@
#include "postgres_fe.h"
#else
#include "postgres.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#endif
#include <ctype.h>
diff --git a/src/backend/utils/mb/mbutils.c b/src/backend/utils/mb/mbutils.c
index 95644e3..1e1e861 100644
--- a/src/backend/utils/mb/mbutils.c
+++ b/src/backend/utils/mb/mbutils.c
@@ -37,7 +37,7 @@
#include "access/xact.h"
#include "catalog/namespace.h"
#include "mb/pg_wchar.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/memutils.h"
#include "utils/syscache.h"
diff --git a/src/backend/utils/misc/pg_config.c b/src/backend/utils/misc/pg_config.c
index 468c7cc..8e7f3b9 100644
--- a/src/backend/utils/misc/pg_config.c
+++ b/src/backend/utils/misc/pg_config.c
@@ -18,7 +18,7 @@
#include "miscadmin.h"
#include "catalog/pg_type.h"
#include "common/config_info.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/elog.h"
#include "port.h"
diff --git a/src/pl/plpython/plpy_exec.c b/src/pl/plpython/plpy_exec.c
index 697a0e1..1743837 100644
--- a/src/pl/plpython/plpy_exec.c
+++ b/src/pl/plpython/plpy_exec.c
@@ -12,7 +12,7 @@
#include "commands/trigger.h"
#include "executor/spi.h"
#include "funcapi.h"
-#include "utils/builtins.h"
+#include "utils/fmgrprotos.h"
#include "utils/rel.h"
#include "utils/typcache.h"
Alvaro Herrera <alvherre@2ndquadrant.com> writes:
Alvaro Herrera wrote:
It is possible to replace many occurrences of builtins.h with
fmgrprotos.h. I just tried this
git grep -l 'include.*utils/builtins.h' -- *.c | xargs perl -pi -e 's{utils/builtins.h}{utils/fmgrprotos.h}'
There's a large number of changes that the oneliner produces that must
be reverted for the compile to be silent, but a large portion can
remain. (I only tried src/backend/access).
92 files are changed, 241 files still require builtins.h.
Let's hold off on that till we decide on the bigger-picture plan here.
If we're going to try to move those functions out of builtins.h,
this result will change considerably.
regards, tom lane
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
Peter Eisentraut <peter_e@gmx.net> writes:
Generate fmgr prototypes automatically
BTW, I notice some suspicious-looking behavior with -j:
$ make -j8 -s
Writing fmgroids.h
Writing fmgroids.h
Writing postgres.bki
Writing fmgrprotos.h
Writing fmgrtab.c
Writing schemapg.h
Writing postgres.description
Writing postgres.shdescription
Writing fmgrprotos.h
Writing fmgrtab.c
...
Why do fmgroids.h, fmgrprotos.h, and fmgrtab.c now get mentioned
twice? I suspect there is something broken about the parallelization.
If indeed multiple instances of gmake are writing these files
concurrently, that's likely to result in irreproducible build failures.
regards, tom lane
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 1/17/17 3:07 PM, Tom Lane wrote:
Alternatively ... is there a specific reason why you chose to make
builtins.h the key inclusion file for this change, rather than having
callers include fmgrprotos.h directly? It seems like the stuff remaining
in builtins.h is just a laundry list of random utility functions.
Maybe dispersing those to other headers is the thing to do.
Here is a patch that moves two blocks from builtins.h into separate
header files. That avoids having to include nodes/pg_list.h and
utils/sortsupport.h.
The remaining inclusion of nodes/nodes.h is for the oidparse() function.
I think that could be moved out of oid.c and put somewhere near parser/
or objectaddress.c. But the practical savings from avoiding nodes.h is
probably near zero, so I haven't done anything about that here.
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Attachments:
0001-Move-some-things-from-builtins.h-to-new-header-files.patchtext/x-patch; name=0001-Move-some-things-from-builtins.h-to-new-header-files.patchDownload
From a4f700198f19ce5a09cde8d58870187ea0e05012 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter_e@gmx.net>
Date: Wed, 18 Jan 2017 12:00:00 -0500
Subject: [PATCH] Move some things from builtins.h to new header files
This avoids that builtins.h has to include additional header files.
---
contrib/bloom/blvalidate.c | 1 +
contrib/citext/citext.c | 1 +
contrib/dblink/dblink.c | 1 +
contrib/fuzzystrmatch/fuzzystrmatch.c | 1 +
contrib/pageinspect/btreefuncs.c | 1 +
contrib/pageinspect/rawpage.c | 1 +
contrib/pgrowlocks/pgrowlocks.c | 1 +
contrib/pgstattuple/pgstatindex.c | 1 +
contrib/pgstattuple/pgstattuple.c | 1 +
contrib/postgres_fdw/option.c | 1 +
contrib/tsearch2/tsearch2.c | 1 +
contrib/unaccent/unaccent.c | 1 +
src/backend/access/brin/brin_validate.c | 1 +
src/backend/access/gin/ginvalidate.c | 1 +
src/backend/access/gist/gistvalidate.c | 1 +
src/backend/access/hash/hashvalidate.c | 1 +
src/backend/access/nbtree/nbtvalidate.c | 1 +
src/backend/access/spgist/spgtextproc.c | 1 +
src/backend/access/spgist/spgvalidate.c | 1 +
src/backend/catalog/namespace.c | 1 +
src/backend/catalog/objectaddress.c | 1 +
src/backend/catalog/pg_proc.c | 1 +
src/backend/commands/extension.c | 1 +
src/backend/commands/indexcmds.c | 1 +
src/backend/commands/sequence.c | 1 +
src/backend/commands/tablespace.c | 1 +
src/backend/commands/variable.c | 1 +
src/backend/parser/parse_relation.c | 1 +
src/backend/postmaster/postmaster.c | 1 +
src/backend/replication/logical/logicalfuncs.c | 1 +
src/backend/tsearch/dict_thesaurus.c | 1 +
src/backend/tsearch/wparser.c | 1 +
src/backend/utils/adt/acl.c | 1 +
src/backend/utils/adt/jsonb_gin.c | 1 +
src/backend/utils/adt/jsonb_util.c | 1 +
src/backend/utils/adt/regexp.c | 1 +
src/backend/utils/adt/regproc.c | 2 ++
src/backend/utils/adt/ruleutils.c | 1 +
src/backend/utils/adt/selfuncs.c | 1 +
src/backend/utils/adt/tid.c | 1 +
src/backend/utils/adt/tsvector_op.c | 1 +
src/backend/utils/adt/varchar.c | 1 +
src/backend/utils/adt/varlena.c | 1 +
src/backend/utils/cache/ts_cache.c | 1 +
src/backend/utils/fmgr/funcapi.c | 1 +
src/backend/utils/init/miscinit.c | 1 +
src/backend/utils/misc/guc.c | 1 +
src/backend/utils/misc/rls.c | 1 +
src/include/utils/builtins.h | 33 +----------------------
src/include/utils/regproc.h | 28 +++++++++++++++++++
src/include/utils/varlena.h | 37 ++++++++++++++++++++++++++
src/pl/plpgsql/src/pl_comp.c | 1 +
src/pl/plpgsql/src/pl_handler.c | 1 +
53 files changed, 117 insertions(+), 32 deletions(-)
create mode 100644 src/include/utils/regproc.h
create mode 100644 src/include/utils/varlena.h
diff --git a/contrib/bloom/blvalidate.c b/contrib/bloom/blvalidate.c
index ab8b848b49..cb75d23199 100644
--- a/contrib/bloom/blvalidate.c
+++ b/contrib/bloom/blvalidate.c
@@ -21,6 +21,7 @@
#include "catalog/pg_type.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
+#include "utils/regproc.h"
#include "utils/syscache.h"
#include "bloom.h"
diff --git a/contrib/citext/citext.c b/contrib/citext/citext.c
index 1174b70aa7..04f604b15f 100644
--- a/contrib/citext/citext.c
+++ b/contrib/citext/citext.c
@@ -7,6 +7,7 @@
#include "catalog/pg_collation.h"
#include "utils/builtins.h"
#include "utils/formatting.h"
+#include "utils/varlena.h"
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c
index e288e6f1c7..ac43c458cb 100644
--- a/contrib/dblink/dblink.c
+++ b/contrib/dblink/dblink.c
@@ -59,6 +59,7 @@
#include "utils/memutils.h"
#include "utils/rel.h"
#include "utils/tqual.h"
+#include "utils/varlena.h"
#include "dblink.h"
diff --git a/contrib/fuzzystrmatch/fuzzystrmatch.c b/contrib/fuzzystrmatch/fuzzystrmatch.c
index 09d78de596..bd36fc57dc 100644
--- a/contrib/fuzzystrmatch/fuzzystrmatch.c
+++ b/contrib/fuzzystrmatch/fuzzystrmatch.c
@@ -42,6 +42,7 @@
#include "mb/pg_wchar.h"
#include "utils/builtins.h"
+#include "utils/varlena.h"
PG_MODULE_MAGIC;
diff --git a/contrib/pageinspect/btreefuncs.c b/contrib/pageinspect/btreefuncs.c
index 4983bbbbaf..3f09d5f0a4 100644
--- a/contrib/pageinspect/btreefuncs.c
+++ b/contrib/pageinspect/btreefuncs.c
@@ -34,6 +34,7 @@
#include "miscadmin.h"
#include "utils/builtins.h"
#include "utils/rel.h"
+#include "utils/varlena.h"
PG_FUNCTION_INFO_V1(bt_metap);
diff --git a/contrib/pageinspect/rawpage.c b/contrib/pageinspect/rawpage.c
index 0043ee18ed..a2ac078d40 100644
--- a/contrib/pageinspect/rawpage.c
+++ b/contrib/pageinspect/rawpage.c
@@ -25,6 +25,7 @@
#include "utils/builtins.h"
#include "utils/pg_lsn.h"
#include "utils/rel.h"
+#include "utils/varlena.h"
PG_MODULE_MAGIC;
diff --git a/contrib/pgrowlocks/pgrowlocks.c b/contrib/pgrowlocks/pgrowlocks.c
index e20e7f83de..4d49610641 100644
--- a/contrib/pgrowlocks/pgrowlocks.c
+++ b/contrib/pgrowlocks/pgrowlocks.c
@@ -37,6 +37,7 @@
#include "utils/rel.h"
#include "utils/snapmgr.h"
#include "utils/tqual.h"
+#include "utils/varlena.h"
PG_MODULE_MAGIC;
diff --git a/contrib/pgstattuple/pgstatindex.c b/contrib/pgstattuple/pgstatindex.c
index d9a722ac6b..b40669250a 100644
--- a/contrib/pgstattuple/pgstatindex.c
+++ b/contrib/pgstattuple/pgstatindex.c
@@ -38,6 +38,7 @@
#include "storage/bufmgr.h"
#include "utils/builtins.h"
#include "utils/rel.h"
+#include "utils/varlena.h"
/*
diff --git a/contrib/pgstattuple/pgstattuple.c b/contrib/pgstattuple/pgstattuple.c
index f48c85d6a2..06a1992bb1 100644
--- a/contrib/pgstattuple/pgstattuple.c
+++ b/contrib/pgstattuple/pgstattuple.c
@@ -36,6 +36,7 @@
#include "storage/lmgr.h"
#include "utils/builtins.h"
#include "utils/tqual.h"
+#include "utils/varlena.h"
PG_MODULE_MAGIC;
diff --git a/contrib/postgres_fdw/option.c b/contrib/postgres_fdw/option.c
index 552b33340f..e24db569ea 100644
--- a/contrib/postgres_fdw/option.c
+++ b/contrib/postgres_fdw/option.c
@@ -21,6 +21,7 @@
#include "commands/defrem.h"
#include "commands/extension.h"
#include "utils/builtins.h"
+#include "utils/varlena.h"
/*
diff --git a/contrib/tsearch2/tsearch2.c b/contrib/tsearch2/tsearch2.c
index b43dacbed3..16772a2b92 100644
--- a/contrib/tsearch2/tsearch2.c
+++ b/contrib/tsearch2/tsearch2.c
@@ -19,6 +19,7 @@
#include "tsearch/ts_utils.h"
#include "utils/builtins.h"
#include "utils/guc.h"
+#include "utils/regproc.h"
#include "utils/syscache.h"
PG_MODULE_MAGIC;
diff --git a/contrib/unaccent/unaccent.c b/contrib/unaccent/unaccent.c
index 843c873f57..542e7267be 100644
--- a/contrib/unaccent/unaccent.c
+++ b/contrib/unaccent/unaccent.c
@@ -20,6 +20,7 @@
#include "tsearch/ts_locale.h"
#include "tsearch/ts_public.h"
#include "utils/builtins.h"
+#include "utils/regproc.h"
PG_MODULE_MAGIC;
diff --git a/src/backend/access/brin/brin_validate.c b/src/backend/access/brin/brin_validate.c
index 616a8d1541..dc23e00e89 100644
--- a/src/backend/access/brin/brin_validate.c
+++ b/src/backend/access/brin/brin_validate.c
@@ -23,6 +23,7 @@
#include "catalog/pg_type.h"
#include "utils/builtins.h"
#include "utils/syscache.h"
+#include "utils/regproc.h"
/*
diff --git a/src/backend/access/gin/ginvalidate.c b/src/backend/access/gin/ginvalidate.c
index 1727b00b13..0d2847456e 100644
--- a/src/backend/access/gin/ginvalidate.c
+++ b/src/backend/access/gin/ginvalidate.c
@@ -24,6 +24,7 @@
#include "utils/builtins.h"
#include "utils/lsyscache.h"
#include "utils/syscache.h"
+#include "utils/regproc.h"
/*
diff --git a/src/backend/access/gist/gistvalidate.c b/src/backend/access/gist/gistvalidate.c
index 7c0fac9470..585c92be26 100644
--- a/src/backend/access/gist/gistvalidate.c
+++ b/src/backend/access/gist/gistvalidate.c
@@ -23,6 +23,7 @@
#include "catalog/pg_type.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
+#include "utils/regproc.h"
#include "utils/syscache.h"
diff --git a/src/backend/access/hash/hashvalidate.c b/src/backend/access/hash/hashvalidate.c
index 880fcd51fc..f914c015bd 100644
--- a/src/backend/access/hash/hashvalidate.c
+++ b/src/backend/access/hash/hashvalidate.c
@@ -25,6 +25,7 @@
#include "parser/parse_coerce.h"
#include "utils/builtins.h"
#include "utils/fmgroids.h"
+#include "utils/regproc.h"
#include "utils/syscache.h"
diff --git a/src/backend/access/nbtree/nbtvalidate.c b/src/backend/access/nbtree/nbtvalidate.c
index 7b443f216a..88e33f54cd 100644
--- a/src/backend/access/nbtree/nbtvalidate.c
+++ b/src/backend/access/nbtree/nbtvalidate.c
@@ -22,6 +22,7 @@
#include "catalog/pg_opfamily.h"
#include "catalog/pg_type.h"
#include "utils/builtins.h"
+#include "utils/regproc.h"
#include "utils/syscache.h"
diff --git a/src/backend/access/spgist/spgtextproc.c b/src/backend/access/spgist/spgtextproc.c
index bc6981358c..86788549a5 100644
--- a/src/backend/access/spgist/spgtextproc.c
+++ b/src/backend/access/spgist/spgtextproc.c
@@ -45,6 +45,7 @@
#include "utils/builtins.h"
#include "utils/datum.h"
#include "utils/pg_locale.h"
+#include "utils/varlena.h"
/*
diff --git a/src/backend/access/spgist/spgvalidate.c b/src/backend/access/spgist/spgvalidate.c
index 9e0f8cef27..1bc5bce72e 100644
--- a/src/backend/access/spgist/spgvalidate.c
+++ b/src/backend/access/spgist/spgvalidate.c
@@ -22,6 +22,7 @@
#include "catalog/pg_opfamily.h"
#include "catalog/pg_type.h"
#include "utils/builtins.h"
+#include "utils/regproc.h"
#include "utils/syscache.h"
diff --git a/src/backend/catalog/namespace.c b/src/backend/catalog/namespace.c
index 77e9777a23..a38da3047f 100644
--- a/src/backend/catalog/namespace.c
+++ b/src/backend/catalog/namespace.c
@@ -56,6 +56,7 @@
#include "utils/lsyscache.h"
#include "utils/memutils.h"
#include "utils/syscache.h"
+#include "utils/varlena.h"
/*
diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c
index 2b1808b0f9..ca03e977c8 100644
--- a/src/backend/catalog/objectaddress.c
+++ b/src/backend/catalog/objectaddress.c
@@ -78,6 +78,7 @@
#include "utils/fmgroids.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/regproc.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c
index 05d91fa859..7ae192a407 100644
--- a/src/backend/catalog/pg_proc.c
+++ b/src/backend/catalog/pg_proc.c
@@ -37,6 +37,7 @@
#include "utils/acl.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
+#include "utils/regproc.h"
#include "utils/rel.h"
#include "utils/syscache.h"
diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c
index 967b52a133..554fdc46b4 100644
--- a/src/backend/commands/extension.c
+++ b/src/backend/commands/extension.c
@@ -59,6 +59,7 @@
#include "utils/rel.h"
#include "utils/snapmgr.h"
#include "utils/tqual.h"
+#include "utils/varlena.h"
/* Globally visible state variables */
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index b6fa5a01d3..ed6136c153 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -51,6 +51,7 @@
#include "utils/inval.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/regproc.h"
#include "utils/snapmgr.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c
index 2de46c270e..36f1249ee5 100644
--- a/src/backend/commands/sequence.c
+++ b/src/backend/commands/sequence.c
@@ -41,6 +41,7 @@
#include "utils/lsyscache.h"
#include "utils/resowner.h"
#include "utils/syscache.h"
+#include "utils/varlena.h"
/*
diff --git a/src/backend/commands/tablespace.c b/src/backend/commands/tablespace.c
index 2da13be9e4..651e1b303a 100644
--- a/src/backend/commands/tablespace.c
+++ b/src/backend/commands/tablespace.c
@@ -82,6 +82,7 @@
#include "utils/memutils.h"
#include "utils/rel.h"
#include "utils/tqual.h"
+#include "utils/varlena.h"
/* GUC variables */
diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c
index 62d56b84bc..15dbaf3fd2 100644
--- a/src/backend/commands/variable.c
+++ b/src/backend/commands/variable.c
@@ -30,6 +30,7 @@
#include "utils/syscache.h"
#include "utils/snapmgr.h"
#include "utils/timestamp.h"
+#include "utils/varlena.h"
#include "mb/pg_wchar.h"
/*
diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c
index 1d2440b9a7..e693c316e3 100644
--- a/src/backend/parser/parse_relation.c
+++ b/src/backend/parser/parse_relation.c
@@ -31,6 +31,7 @@
#include "utils/lsyscache.h"
#include "utils/rel.h"
#include "utils/syscache.h"
+#include "utils/varlena.h"
#define MAX_FUZZY_DISTANCE 3
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 5be30b0ee1..330de04960 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -126,6 +126,7 @@
#include "utils/memutils.h"
#include "utils/ps_status.h"
#include "utils/timeout.h"
+#include "utils/varlena.h"
#ifdef EXEC_BACKEND
#include "storage/spin.h"
diff --git a/src/backend/replication/logical/logicalfuncs.c b/src/backend/replication/logical/logicalfuncs.c
index d16d6da56e..41c50005d7 100644
--- a/src/backend/replication/logical/logicalfuncs.c
+++ b/src/backend/replication/logical/logicalfuncs.c
@@ -37,6 +37,7 @@
#include "utils/inval.h"
#include "utils/memutils.h"
#include "utils/pg_lsn.h"
+#include "utils/regproc.h"
#include "utils/resowner.h"
#include "utils/lsyscache.h"
diff --git a/src/backend/tsearch/dict_thesaurus.c b/src/backend/tsearch/dict_thesaurus.c
index c3f3d3fbed..ee23fcfac8 100644
--- a/src/backend/tsearch/dict_thesaurus.c
+++ b/src/backend/tsearch/dict_thesaurus.c
@@ -19,6 +19,7 @@
#include "tsearch/ts_locale.h"
#include "tsearch/ts_utils.h"
#include "utils/builtins.h"
+#include "utils/regproc.h"
/*
diff --git a/src/backend/tsearch/wparser.c b/src/backend/tsearch/wparser.c
index 9a20cace05..8ca1c62713 100644
--- a/src/backend/tsearch/wparser.c
+++ b/src/backend/tsearch/wparser.c
@@ -20,6 +20,7 @@
#include "tsearch/ts_cache.h"
#include "tsearch/ts_utils.h"
#include "utils/builtins.h"
+#include "utils/varlena.h"
/******sql-level interface******/
diff --git a/src/backend/utils/adt/acl.c b/src/backend/utils/adt/acl.c
index 56a69764c4..96ac1dfefd 100644
--- a/src/backend/utils/adt/acl.c
+++ b/src/backend/utils/adt/acl.c
@@ -36,6 +36,7 @@
#include "utils/lsyscache.h"
#include "utils/memutils.h"
#include "utils/syscache.h"
+#include "utils/varlena.h"
typedef struct
diff --git a/src/backend/utils/adt/jsonb_gin.c b/src/backend/utils/adt/jsonb_gin.c
index d60d9cac06..16ee6a22d3 100644
--- a/src/backend/utils/adt/jsonb_gin.c
+++ b/src/backend/utils/adt/jsonb_gin.c
@@ -20,6 +20,7 @@
#include "catalog/pg_type.h"
#include "utils/builtins.h"
#include "utils/jsonb.h"
+#include "utils/varlena.h"
typedef struct PathHashStack
{
diff --git a/src/backend/utils/adt/jsonb_util.c b/src/backend/utils/adt/jsonb_util.c
index 05fddb07d3..11a1395038 100644
--- a/src/backend/utils/adt/jsonb_util.c
+++ b/src/backend/utils/adt/jsonb_util.c
@@ -19,6 +19,7 @@
#include "utils/builtins.h"
#include "utils/jsonb.h"
#include "utils/memutils.h"
+#include "utils/varlena.h"
/*
* Maximum number of elements in an array (or key/value pairs in an object).
diff --git a/src/backend/utils/adt/regexp.c b/src/backend/utils/adt/regexp.c
index 1f02102111..3a1647bc52 100644
--- a/src/backend/utils/adt/regexp.c
+++ b/src/backend/utils/adt/regexp.c
@@ -35,6 +35,7 @@
#include "regex/regex.h"
#include "utils/array.h"
#include "utils/builtins.h"
+#include "utils/varlena.h"
#define PG_GETARG_TEXT_PP_IF_EXISTS(_n) \
(PG_NARGS() > (_n) ? PG_GETARG_TEXT_PP(_n) : NULL)
diff --git a/src/backend/utils/adt/regproc.c b/src/backend/utils/adt/regproc.c
index 1f4b1ae79e..fa920c0d8c 100644
--- a/src/backend/utils/adt/regproc.c
+++ b/src/backend/utils/adt/regproc.c
@@ -41,6 +41,8 @@
#include "utils/syscache.h"
#include "utils/tqual.h"
#include "utils/acl.h"
+#include "utils/regproc.h"
+#include "utils/varlena.h"
static char *format_operator_internal(Oid operator_oid, bool force_qualify);
static char *format_procedure_internal(Oid procedure_oid, bool force_qualify);
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index e1ea067c47..745e009d26 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -67,6 +67,7 @@
#include "utils/syscache.h"
#include "utils/tqual.h"
#include "utils/typcache.h"
+#include "utils/varlena.h"
#include "utils/xml.h"
diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c
index 301dffa1c8..fa32e9eabe 100644
--- a/src/backend/utils/adt/selfuncs.c
+++ b/src/backend/utils/adt/selfuncs.c
@@ -141,6 +141,7 @@
#include "utils/timestamp.h"
#include "utils/tqual.h"
#include "utils/typcache.h"
+#include "utils/varlena.h"
/* Hooks for plugins to get control when we ask for stats */
diff --git a/src/backend/utils/adt/tid.c b/src/backend/utils/adt/tid.c
index aa7e5e5242..a3b372f22a 100644
--- a/src/backend/utils/adt/tid.c
+++ b/src/backend/utils/adt/tid.c
@@ -32,6 +32,7 @@
#include "utils/rel.h"
#include "utils/snapmgr.h"
#include "utils/tqual.h"
+#include "utils/varlena.h"
#define DatumGetItemPointer(X) ((ItemPointer) DatumGetPointer(X))
diff --git a/src/backend/utils/adt/tsvector_op.c b/src/backend/utils/adt/tsvector_op.c
index c143c3fbf5..f05f913cff 100644
--- a/src/backend/utils/adt/tsvector_op.c
+++ b/src/backend/utils/adt/tsvector_op.c
@@ -27,6 +27,7 @@
#include "tsearch/ts_utils.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
+#include "utils/regproc.h"
#include "utils/rel.h"
diff --git a/src/backend/utils/adt/varchar.c b/src/backend/utils/adt/varchar.c
index 55ee2bb7c2..c800beb08f 100644
--- a/src/backend/utils/adt/varchar.c
+++ b/src/backend/utils/adt/varchar.c
@@ -22,6 +22,7 @@
#include "nodes/nodeFuncs.h"
#include "utils/array.h"
#include "utils/builtins.h"
+#include "utils/varlena.h"
#include "mb/pg_wchar.h"
diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c
index d66e85aa1e..254379ade7 100644
--- a/src/backend/utils/adt/varlena.c
+++ b/src/backend/utils/adt/varlena.c
@@ -34,6 +34,7 @@
#include "utils/memutils.h"
#include "utils/pg_locale.h"
#include "utils/sortsupport.h"
+#include "utils/varlena.h"
/* GUC variable */
diff --git a/src/backend/utils/cache/ts_cache.c b/src/backend/utils/cache/ts_cache.c
index 657f6c1b7c..88e4ffb66d 100644
--- a/src/backend/utils/cache/ts_cache.c
+++ b/src/backend/utils/cache/ts_cache.c
@@ -45,6 +45,7 @@
#include "utils/inval.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/regproc.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
diff --git a/src/backend/utils/fmgr/funcapi.c b/src/backend/utils/fmgr/funcapi.c
index 4d8a121971..c55da54878 100644
--- a/src/backend/utils/fmgr/funcapi.c
+++ b/src/backend/utils/fmgr/funcapi.c
@@ -24,6 +24,7 @@
#include "utils/builtins.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/regproc.h"
#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/typcache.h"
diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c
index 07be153cc0..e984e79c60 100644
--- a/src/backend/utils/init/miscinit.c
+++ b/src/backend/utils/init/miscinit.c
@@ -48,6 +48,7 @@
#include "utils/guc.h"
#include "utils/memutils.h"
#include "utils/syscache.h"
+#include "utils/varlena.h"
#define DIRECTORY_LOCK_FILE "postmaster.pid"
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 4e2bd4c496..0ef4c60767 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -83,6 +83,7 @@
#include "utils/rls.h"
#include "utils/snapmgr.h"
#include "utils/tzparser.h"
+#include "utils/varlena.h"
#include "utils/xml.h"
#ifndef PG_KRB_SRVTAB
diff --git a/src/backend/utils/misc/rls.c b/src/backend/utils/misc/rls.c
index 70dc3d1ace..faf1599404 100644
--- a/src/backend/utils/misc/rls.c
+++ b/src/backend/utils/misc/rls.c
@@ -26,6 +26,7 @@
#include "utils/lsyscache.h"
#include "utils/rls.h"
#include "utils/syscache.h"
+#include "utils/varlena.h"
/*
diff --git a/src/include/utils/builtins.h b/src/include/utils/builtins.h
index 95f5e9292b..5bdca8203d 100644
--- a/src/include/utils/builtins.h
+++ b/src/include/utils/builtins.h
@@ -16,9 +16,7 @@
#include "fmgr.h"
#include "nodes/nodes.h"
-#include "nodes/pg_list.h"
#include "utils/fmgrprotos.h"
-#include "utils/sortsupport.h"
/* bool.c */
@@ -74,17 +72,6 @@ extern Oid oidparse(Node *node);
extern char *regexp_fixed_prefix(text *text_re, bool case_insensitive,
Oid collation, bool *exact);
-/* regproc.c */
-extern List *stringToQualifiedNameList(const char *string);
-extern char *format_procedure(Oid procedure_oid);
-extern char *format_procedure_qualified(Oid procedure_oid);
-extern void format_procedure_parts(Oid operator_oid, List **objnames,
- List **objargs);
-extern char *format_operator(Oid operator_oid);
-extern char *format_operator_qualified(Oid operator_oid);
-extern void format_operator_parts(Oid operator_oid, List **objnames,
- List **objargs);
-
/* ruleutils.c */
extern bool quote_all_identifiers;
extern const char *quote_identifier(const char *ident);
@@ -94,7 +81,7 @@ extern char *quote_qualified_identifier(const char *qualifier,
/* varchar.c */
extern int bpchartruelen(char *s, int len);
-/* varlena.c */
+/* popular functions from varlena.c */
extern text *cstring_to_text(const char *s);
extern text *cstring_to_text_with_len(const char *s, int len);
extern char *text_to_cstring(const text *t);
@@ -103,24 +90,6 @@ extern void text_to_cstring_buffer(const text *src, char *dst, size_t dst_len);
#define CStringGetTextDatum(s) PointerGetDatum(cstring_to_text(s))
#define TextDatumGetCString(d) text_to_cstring((text *) DatumGetPointer(d))
-extern int varstr_cmp(char *arg1, int len1, char *arg2, int len2, Oid collid);
-extern void varstr_sortsupport(SortSupport ssup, Oid collid, bool bpchar);
-extern int varstr_levenshtein(const char *source, int slen,
- const char *target, int tlen,
- int ins_c, int del_c, int sub_c,
- bool trusted);
-extern int varstr_levenshtein_less_equal(const char *source, int slen,
- const char *target, int tlen,
- int ins_c, int del_c, int sub_c,
- int max_d, bool trusted);
-extern List *textToQualifiedNameList(text *textval);
-extern bool SplitIdentifierString(char *rawstring, char separator,
- List **namelist);
-extern bool SplitDirectoriesString(char *rawstring, char separator,
- List **namelist);
-extern text *replace_text_regexp(text *src_text, void *regexp,
- text *replace_text, bool glob);
-
/* xid.c */
extern int xidComparator(const void *arg1, const void *arg2);
diff --git a/src/include/utils/regproc.h b/src/include/utils/regproc.h
new file mode 100644
index 0000000000..70f47922cc
--- /dev/null
+++ b/src/include/utils/regproc.h
@@ -0,0 +1,28 @@
+/*-------------------------------------------------------------------------
+ *
+ * regproc.h
+ * Functions for the built-in types regproc, regclass, regtype, etc.
+ *
+ * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * src/include/utils/regproc.h
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef REGPROC_H
+#define REGPROC_H
+
+#include "nodes/pg_list.h"
+
+extern List *stringToQualifiedNameList(const char *string);
+extern char *format_procedure(Oid procedure_oid);
+extern char *format_procedure_qualified(Oid procedure_oid);
+extern void format_procedure_parts(Oid operator_oid, List **objnames,
+ List **objargs);
+extern char *format_operator(Oid operator_oid);
+extern char *format_operator_qualified(Oid operator_oid);
+extern void format_operator_parts(Oid operator_oid, List **objnames,
+ List **objargs);
+
+#endif
diff --git a/src/include/utils/varlena.h b/src/include/utils/varlena.h
new file mode 100644
index 0000000000..b5994a1c72
--- /dev/null
+++ b/src/include/utils/varlena.h
@@ -0,0 +1,37 @@
+/*-------------------------------------------------------------------------
+ *
+ * varlena.h
+ * Functions for the variable-length built-in types.
+ *
+ * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1994, Regents of the University of California
+ *
+ * src/include/utils/varlena.h
+ *
+ *-------------------------------------------------------------------------
+ */
+#ifndef VARLENA_H
+#define VARLENA_H
+
+#include "nodes/pg_list.h"
+#include "utils/sortsupport.h"
+
+extern int varstr_cmp(char *arg1, int len1, char *arg2, int len2, Oid collid);
+extern void varstr_sortsupport(SortSupport ssup, Oid collid, bool bpchar);
+extern int varstr_levenshtein(const char *source, int slen,
+ const char *target, int tlen,
+ int ins_c, int del_c, int sub_c,
+ bool trusted);
+extern int varstr_levenshtein_less_equal(const char *source, int slen,
+ const char *target, int tlen,
+ int ins_c, int del_c, int sub_c,
+ int max_d, bool trusted);
+extern List *textToQualifiedNameList(text *textval);
+extern bool SplitIdentifierString(char *rawstring, char separator,
+ List **namelist);
+extern bool SplitDirectoriesString(char *rawstring, char separator,
+ List **namelist);
+extern text *replace_text_regexp(text *src_text, void *regexp,
+ text *replace_text, bool glob);
+
+#endif
diff --git a/src/pl/plpgsql/src/pl_comp.c b/src/pl/plpgsql/src/pl_comp.c
index 3c52d71fcd..b25b3f1de0 100644
--- a/src/pl/plpgsql/src/pl_comp.c
+++ b/src/pl/plpgsql/src/pl_comp.c
@@ -29,6 +29,7 @@
#include "utils/guc.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/regproc.h"
#include "utils/rel.h"
#include "utils/syscache.h"
diff --git a/src/pl/plpgsql/src/pl_handler.c b/src/pl/plpgsql/src/pl_handler.c
index ca8c9cb3ce..e15be5d9ac 100644
--- a/src/pl/plpgsql/src/pl_handler.c
+++ b/src/pl/plpgsql/src/pl_handler.c
@@ -24,6 +24,7 @@
#include "utils/guc.h"
#include "utils/lsyscache.h"
#include "utils/syscache.h"
+#include "utils/varlena.h"
static bool plpgsql_extra_checks_check_hook(char **newvalue, void **extra, GucSource source);
--
2.11.0
Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:
Here is a patch that moves two blocks from builtins.h into separate
header files. That avoids having to include nodes/pg_list.h and
utils/sortsupport.h.
Seems like a reasonable solution.
The remaining inclusion of nodes/nodes.h is for the oidparse() function.
I think that could be moved out of oid.c and put somewhere near parser/
or objectaddress.c. But the practical savings from avoiding nodes.h is
probably near zero, so I haven't done anything about that here.
Agreed, not much value in that.
regards, tom lane
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 1/18/17 7:38 AM, Tom Lane wrote:
Why do fmgroids.h, fmgrprotos.h, and fmgrtab.c now get mentioned
twice? I suspect there is something broken about the parallelization.
If indeed multiple instances of gmake are writing these files
concurrently, that's likely to result in irreproducible build failures.
I've pushed a fix for this.
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:
On 1/18/17 7:38 AM, Tom Lane wrote:
Why do fmgroids.h, fmgrprotos.h, and fmgrtab.c now get mentioned
twice? I suspect there is something broken about the parallelization.
I've pushed a fix for this.
Seems to fix the problem for me --- thanks!
regards, tom lane
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers