diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2016-12-28 12:00:00 -0500 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2017-01-17 14:06:07 -0500 |
commit | 352a24a1f9d6f7d4abb1175bfd22acc358f43140 (patch) | |
tree | a27b51c7ceb1d5e50a7b7a1f1a74230043f204a6 /src/backend/utils | |
parent | 323b96aa34239b5a8fe773d614a6ee50d731a683 (diff) | |
download | postgresql-352a24a1f9d6f7d4abb1175bfd22acc358f43140.tar.gz postgresql-352a24a1f9d6f7d4abb1175bfd22acc358f43140.zip |
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>
Diffstat (limited to 'src/backend/utils')
-rw-r--r-- | src/backend/utils/.gitignore | 1 | ||||
-rw-r--r-- | src/backend/utils/Gen_fmgrtab.pl | 35 | ||||
-rw-r--r-- | src/backend/utils/Makefile | 12 | ||||
-rw-r--r-- | src/backend/utils/adt/array_selfuncs.c | 1 | ||||
-rw-r--r-- | src/backend/utils/adt/array_typanalyze.c | 1 | ||||
-rw-r--r-- | src/backend/utils/adt/ascii.c | 1 | ||||
-rw-r--r-- | src/backend/utils/adt/geo_selfuncs.c | 1 | ||||
-rw-r--r-- | src/backend/utils/adt/jsonb_op.c | 1 | ||||
-rw-r--r-- | src/backend/utils/adt/network_gist.c | 1 | ||||
-rw-r--r-- | src/backend/utils/adt/network_selfuncs.c | 1 | ||||
-rw-r--r-- | src/backend/utils/adt/network_spgist.c | 1 | ||||
-rw-r--r-- | src/backend/utils/adt/numeric.c | 6 | ||||
-rw-r--r-- | src/backend/utils/adt/pg_upgrade_support.c | 12 | ||||
-rw-r--r-- | src/backend/utils/adt/pgstatfuncs.c | 100 | ||||
-rw-r--r-- | src/backend/utils/adt/rangetypes_spgist.c | 7 | ||||
-rw-r--r-- | src/backend/utils/adt/tsgistidx.c | 1 | ||||
-rw-r--r-- | src/backend/utils/adt/tsquery_gist.c | 1 | ||||
-rw-r--r-- | src/backend/utils/adt/tsquery_op.c | 1 | ||||
-rw-r--r-- | src/backend/utils/adt/tsrank.c | 1 | ||||
-rw-r--r-- | src/backend/utils/adt/tsvector.c | 1 | ||||
-rw-r--r-- | src/backend/utils/adt/varbit.c | 1 |
21 files changed, 60 insertions, 127 deletions
diff --git a/src/backend/utils/.gitignore b/src/backend/utils/.gitignore index 5c3a565ba0b..f26215c6315 100644 --- a/src/backend/utils/.gitignore +++ b/src/backend/utils/.gitignore @@ -1,4 +1,5 @@ /fmgrtab.c /fmgroids.h +/fmgrprotos.h /probes.h /errcodes.h diff --git a/src/backend/utils/Gen_fmgrtab.pl b/src/backend/utils/Gen_fmgrtab.pl index bc5865a14be..cdd603ab6fe 100644 --- a/src/backend/utils/Gen_fmgrtab.pl +++ b/src/backend/utils/Gen_fmgrtab.pl @@ -87,9 +87,11 @@ foreach my $row (@$data) # Emit headers for both files my $tmpext = ".tmp$$"; my $oidsfile = $output_path . 'fmgroids.h'; +my $protosfile = $output_path . 'fmgrprotos.h'; my $tabfile = $output_path . 'fmgrtab.c'; open H, '>', $oidsfile . $tmpext or die "Could not open $oidsfile$tmpext: $!"; +open P, '>', $protosfile . $tmpext or die "Could not open $protosfile$tmpext: $!"; open T, '>', $tabfile . $tmpext or die "Could not open $tabfile$tmpext: $!"; print H @@ -130,6 +132,33 @@ qq|/*------------------------------------------------------------------------- */ |; +print P +qq|/*------------------------------------------------------------------------- + * + * fmgrprotos.h + * Prototypes for built-in functions. + * + * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * NOTES + * ****************************** + * *** DO NOT EDIT THIS FILE! *** + * ****************************** + * + * It has been GENERATED by $0 + * from $infile + * + *------------------------------------------------------------------------- + */ + +#ifndef FMGRPROTOS_H +#define FMGRPROTOS_H + +#include "fmgr.h" + +|; + print T qq|/*------------------------------------------------------------------------- * @@ -154,6 +183,7 @@ qq|/*------------------------------------------------------------------------- #include "postgres.h" #include "utils/fmgrtab.h" +#include "utils/fmgrprotos.h" |; @@ -164,7 +194,7 @@ foreach my $s (sort { $a->{oid} <=> $b->{oid} } @fmgr) next if $seenit{ $s->{prosrc} }; $seenit{ $s->{prosrc} } = 1; print H "#define F_" . uc $s->{prosrc} . " $s->{oid}\n"; - print T "extern Datum $s->{prosrc} (PG_FUNCTION_ARGS);\n"; + print P "extern Datum $s->{prosrc}(PG_FUNCTION_ARGS);\n"; } # Create the fmgr_builtins table @@ -180,6 +210,7 @@ foreach my $s (sort { $a->{oid} <=> $b->{oid} } @fmgr) # And add the file footers. print H "\n#endif /* FMGROIDS_H */\n"; +print P "\n#endif /* FMGRPROTOS_H */\n"; print T qq| /* dummy entry is easier than getting rid of comma after last real one */ @@ -193,10 +224,12 @@ const int fmgr_nbuiltins = (sizeof(fmgr_builtins) / sizeof(FmgrBuiltin)) - 1; |; close(H); +close(P); close(T); # Finally, rename the completed files into place. Catalog::RenameTempFile($oidsfile, $tmpext); +Catalog::RenameTempFile($protosfile, $tmpext); Catalog::RenameTempFile($tabfile, $tmpext); sub usage diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile index 83745337180..4fa5ac26f7d 100644 --- a/src/backend/utils/Makefile +++ b/src/backend/utils/Makefile @@ -16,12 +16,12 @@ catalogdir = $(top_srcdir)/src/backend/catalog include $(top_srcdir)/src/backend/common.mk -all: errcodes.h fmgroids.h probes.h +all: errcodes.h fmgroids.h fmgrprotos.h probes.h -$(SUBDIRS:%=%-recursive): fmgroids.h +$(SUBDIRS:%=%-recursive): fmgroids.h fmgrprotos.h # see explanation in ../parser/Makefile -fmgroids.h: fmgrtab.c ; +fmgroids.h fmgrprotos.h: fmgrtab.c ; fmgrtab.c: Gen_fmgrtab.pl $(catalogdir)/Catalog.pm $(top_srcdir)/src/include/catalog/pg_proc.h $(PERL) -I $(catalogdir) $< $(top_srcdir)/src/include/catalog/pg_proc.h @@ -43,10 +43,10 @@ else endif -# fmgroids.h, fmgrtab.c and errcodes.h are in the distribution tarball, so they -# are not cleaned here. +# fmgroids.h, fmgrprotos.h, fmgrtab.c and errcodes.h are in the +# distribution tarball, so they are not cleaned here. clean: rm -f probes.h maintainer-clean: clean - rm -f fmgroids.h fmgrtab.c errcodes.h + rm -f fmgroids.h fmgrprotos.h fmgrtab.c errcodes.h diff --git a/src/backend/utils/adt/array_selfuncs.c b/src/backend/utils/adt/array_selfuncs.c index c9ccc9a6a49..50e81452410 100644 --- a/src/backend/utils/adt/array_selfuncs.c +++ b/src/backend/utils/adt/array_selfuncs.c @@ -22,6 +22,7 @@ #include "catalog/pg_statistic.h" #include "optimizer/clauses.h" #include "utils/array.h" +#include "utils/builtins.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 b2ddacd3d5a..85b7a432920 100644 --- a/src/backend/utils/adt/array_typanalyze.c +++ b/src/backend/utils/adt/array_typanalyze.c @@ -18,6 +18,7 @@ #include "catalog/pg_collation.h" #include "commands/vacuum.h" #include "utils/array.h" +#include "utils/builtins.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 d4c4a3ec537..e219d4b4954 100644 --- a/src/backend/utils/adt/ascii.c +++ b/src/backend/utils/adt/ascii.c @@ -13,6 +13,7 @@ #include "mb/pg_wchar.h" #include "utils/ascii.h" +#include "utils/builtins.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/geo_selfuncs.c b/src/backend/utils/adt/geo_selfuncs.c index 39701d725b4..774063e92c6 100644 --- a/src/backend/utils/adt/geo_selfuncs.c +++ b/src/backend/utils/adt/geo_selfuncs.c @@ -18,6 +18,7 @@ */ #include "postgres.h" +#include "utils/builtins.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 f9d6947362c..d4c490e948a 100644 --- a/src/backend/utils/adt/jsonb_op.c +++ b/src/backend/utils/adt/jsonb_op.c @@ -15,6 +15,7 @@ #include "catalog/pg_type.h" #include "miscadmin.h" +#include "utils/builtins.h" #include "utils/jsonb.h" Datum diff --git a/src/backend/utils/adt/network_gist.c b/src/backend/utils/adt/network_gist.c index e3af7341c69..a0097dae9c5 100644 --- a/src/backend/utils/adt/network_gist.c +++ b/src/backend/utils/adt/network_gist.c @@ -49,6 +49,7 @@ #include "access/gist.h" #include "access/stratnum.h" +#include "utils/builtins.h" #include "utils/inet.h" /* diff --git a/src/backend/utils/adt/network_selfuncs.c b/src/backend/utils/adt/network_selfuncs.c index 1d30c4e30d7..bcdd902ee8a 100644 --- a/src/backend/utils/adt/network_selfuncs.c +++ b/src/backend/utils/adt/network_selfuncs.c @@ -23,6 +23,7 @@ #include "access/htup_details.h" #include "catalog/pg_operator.h" #include "catalog/pg_statistic.h" +#include "utils/builtins.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 d3c2068dd68..c48f45fe478 100644 --- a/src/backend/utils/adt/network_spgist.c +++ b/src/backend/utils/adt/network_spgist.c @@ -35,6 +35,7 @@ #include "access/spgist.h" #include "catalog/pg_type.h" +#include "utils/builtins.h" #include "utils/inet.h" diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c index 89b4e4d8b22..5cc8de5af21 100644 --- a/src/backend/utils/adt/numeric.c +++ b/src/backend/utils/adt/numeric.c @@ -3110,7 +3110,11 @@ numeric_float8(PG_FUNCTION_ARGS) } -/* Convert numeric to float8; if out of range, return +/- HUGE_VAL */ +/* + * Convert numeric to float8; if out of range, return +/- HUGE_VAL + * + * (internal helper function, not directly callable from SQL) + */ Datum numeric_float8_no_overflow(PG_FUNCTION_ARGS) { diff --git a/src/backend/utils/adt/pg_upgrade_support.c b/src/backend/utils/adt/pg_upgrade_support.c index 4e7620ded32..282b2649ffc 100644 --- a/src/backend/utils/adt/pg_upgrade_support.c +++ b/src/backend/utils/adt/pg_upgrade_support.c @@ -20,18 +20,6 @@ #include "utils/builtins.h" -Datum binary_upgrade_set_next_pg_type_oid(PG_FUNCTION_ARGS); -Datum binary_upgrade_set_next_array_pg_type_oid(PG_FUNCTION_ARGS); -Datum binary_upgrade_set_next_toast_pg_type_oid(PG_FUNCTION_ARGS); -Datum binary_upgrade_set_next_heap_pg_class_oid(PG_FUNCTION_ARGS); -Datum binary_upgrade_set_next_index_pg_class_oid(PG_FUNCTION_ARGS); -Datum binary_upgrade_set_next_toast_pg_class_oid(PG_FUNCTION_ARGS); -Datum binary_upgrade_set_next_pg_enum_oid(PG_FUNCTION_ARGS); -Datum binary_upgrade_set_next_pg_authid_oid(PG_FUNCTION_ARGS); -Datum binary_upgrade_create_empty_extension(PG_FUNCTION_ARGS); -Datum binary_upgrade_set_record_init_privs(PG_FUNCTION_ARGS); - - #define CHECK_IS_BINARY_UPGRADE \ do { \ if (!IsBinaryUpgrade) \ diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c index a380dbf7374..a987d0d6214 100644 --- a/src/backend/utils/adt/pgstatfuncs.c +++ b/src/backend/utils/adt/pgstatfuncs.c @@ -29,106 +29,6 @@ #define UINT32_ACCESS_ONCE(var) ((uint32)(*((volatile uint32 *)&(var)))) -/* bogus ... these externs should be in a header file */ -extern Datum pg_stat_get_numscans(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_tuples_returned(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_tuples_fetched(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_tuples_inserted(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_tuples_updated(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_tuples_deleted(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_tuples_hot_updated(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_live_tuples(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_dead_tuples(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_mod_since_analyze(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_blocks_fetched(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_blocks_hit(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_last_vacuum_time(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_last_autovacuum_time(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_last_analyze_time(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_last_autoanalyze_time(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_vacuum_count(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_autovacuum_count(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_analyze_count(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_autoanalyze_count(PG_FUNCTION_ARGS); - -extern Datum pg_stat_get_function_calls(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_function_total_time(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_function_self_time(PG_FUNCTION_ARGS); - -extern Datum pg_stat_get_backend_idset(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_activity(PG_FUNCTION_ARGS); -extern Datum pg_backend_pid(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_backend_pid(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_backend_dbid(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_backend_userid(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_backend_activity(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_backend_wait_event_type(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_backend_wait_event(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_backend_activity_start(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_backend_xact_start(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_backend_start(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_backend_client_addr(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_backend_client_port(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_progress_info(PG_FUNCTION_ARGS); - -extern Datum pg_stat_get_db_numbackends(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_xact_commit(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_xact_rollback(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_blocks_fetched(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_blocks_hit(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_tuples_returned(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_tuples_fetched(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_tuples_inserted(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_tuples_updated(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_tuples_deleted(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_conflict_tablespace(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_conflict_lock(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_conflict_snapshot(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_conflict_bufferpin(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_conflict_startup_deadlock(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_conflict_all(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_deadlocks(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_stat_reset_time(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_temp_files(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_temp_bytes(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_blk_read_time(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_db_blk_write_time(PG_FUNCTION_ARGS); - -extern Datum pg_stat_get_archiver(PG_FUNCTION_ARGS); - -extern Datum pg_stat_get_bgwriter_timed_checkpoints(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_bgwriter_requested_checkpoints(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_checkpoint_write_time(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_checkpoint_sync_time(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_bgwriter_buf_written_checkpoints(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_bgwriter_buf_written_clean(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_bgwriter_maxwritten_clean(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_bgwriter_stat_reset_time(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_buf_written_backend(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_buf_fsync_backend(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_buf_alloc(PG_FUNCTION_ARGS); - -extern Datum pg_stat_get_xact_numscans(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_xact_tuples_returned(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_xact_tuples_fetched(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_xact_tuples_inserted(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_xact_tuples_updated(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_xact_tuples_deleted(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_xact_tuples_hot_updated(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_xact_blocks_fetched(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_xact_blocks_hit(PG_FUNCTION_ARGS); - -extern Datum pg_stat_get_xact_function_calls(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_xact_function_total_time(PG_FUNCTION_ARGS); -extern Datum pg_stat_get_xact_function_self_time(PG_FUNCTION_ARGS); - -extern Datum pg_stat_get_snapshot_timestamp(PG_FUNCTION_ARGS); -extern Datum pg_stat_clear_snapshot(PG_FUNCTION_ARGS); -extern Datum pg_stat_reset(PG_FUNCTION_ARGS); -extern Datum pg_stat_reset_shared(PG_FUNCTION_ARGS); -extern Datum pg_stat_reset_single_table_counters(PG_FUNCTION_ARGS); -extern Datum pg_stat_reset_single_function_counters(PG_FUNCTION_ARGS); - /* Global bgwriter statistics, from bgwriter.c */ extern PgStat_MsgBgWriter bgwriterStats; diff --git a/src/backend/utils/adt/rangetypes_spgist.c b/src/backend/utils/adt/rangetypes_spgist.c index 185b1db3427..a887e55b926 100644 --- a/src/backend/utils/adt/rangetypes_spgist.c +++ b/src/backend/utils/adt/rangetypes_spgist.c @@ -43,13 +43,6 @@ #include "utils/datum.h" #include "utils/rangetypes.h" -/* SP-GiST API functions */ -Datum spg_range_quad_config(PG_FUNCTION_ARGS); -Datum spg_range_quad_choose(PG_FUNCTION_ARGS); -Datum spg_range_quad_picksplit(PG_FUNCTION_ARGS); -Datum spg_range_quad_inner_consistent(PG_FUNCTION_ARGS); -Datum spg_range_quad_leaf_consistent(PG_FUNCTION_ARGS); - static int16 getQuadrant(TypeCacheEntry *typcache, RangeType *centroid, RangeType *tst); static int bound_cmp(const void *a, const void *b, void *arg); diff --git a/src/backend/utils/adt/tsgistidx.c b/src/backend/utils/adt/tsgistidx.c index c86152375a2..7ce2699b5c2 100644 --- a/src/backend/utils/adt/tsgistidx.c +++ b/src/backend/utils/adt/tsgistidx.c @@ -17,6 +17,7 @@ #include "access/gist.h" #include "access/tuptoaster.h" #include "tsearch/ts_utils.h" +#include "utils/builtins.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 e22f86496e5..85518dc7d9f 100644 --- a/src/backend/utils/adt/tsquery_gist.c +++ b/src/backend/utils/adt/tsquery_gist.c @@ -17,6 +17,7 @@ #include "access/stratnum.h" #include "access/gist.h" #include "tsearch/ts_utils.h" +#include "utils/builtins.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 4e581adc263..755c3e9ee8e 100644 --- a/src/backend/utils/adt/tsquery_op.c +++ b/src/backend/utils/adt/tsquery_op.c @@ -15,6 +15,7 @@ #include "postgres.h" #include "tsearch/ts_utils.h" +#include "utils/builtins.h" Datum tsquery_numnode(PG_FUNCTION_ARGS) diff --git a/src/backend/utils/adt/tsrank.c b/src/backend/utils/adt/tsrank.c index 9826eb3143b..9b2cd6df416 100644 --- a/src/backend/utils/adt/tsrank.c +++ b/src/backend/utils/adt/tsrank.c @@ -18,6 +18,7 @@ #include "tsearch/ts_utils.h" #include "utils/array.h" +#include "utils/builtins.h" #include "miscadmin.h" diff --git a/src/backend/utils/adt/tsvector.c b/src/backend/utils/adt/tsvector.c index ccd149fd6f0..6f66c1f58ce 100644 --- a/src/backend/utils/adt/tsvector.c +++ b/src/backend/utils/adt/tsvector.c @@ -17,6 +17,7 @@ #include "libpq/pqformat.h" #include "tsearch/ts_locale.h" #include "tsearch/ts_utils.h" +#include "utils/builtins.h" #include "utils/memutils.h" typedef struct diff --git a/src/backend/utils/adt/varbit.c b/src/backend/utils/adt/varbit.c index d53d65ab7dd..af39d4cf25a 100644 --- a/src/backend/utils/adt/varbit.c +++ b/src/backend/utils/adt/varbit.c @@ -20,6 +20,7 @@ #include "libpq/pqformat.h" #include "nodes/nodeFuncs.h" #include "utils/array.h" +#include "utils/builtins.h" #include "utils/varbit.h" #define HEXDIG(z) ((z)<10 ? ((z)+'0') : ((z)-10+'A')) |