This avoids that builtins.h has to include additional header files.
#include "catalog/pg_type.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
+#include "utils/regproc.h"
#include "utils/syscache.h"
#include "bloom.h"
#include "catalog/pg_collation.h"
#include "utils/builtins.h"
#include "utils/formatting.h"
+#include "utils/varlena.h"
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#include "utils/memutils.h"
#include "utils/rel.h"
#include "utils/tqual.h"
+#include "utils/varlena.h"
#include "dblink.h"
#include "mb/pg_wchar.h"
#include "utils/builtins.h"
+#include "utils/varlena.h"
PG_MODULE_MAGIC;
#include "miscadmin.h"
#include "utils/builtins.h"
#include "utils/rel.h"
+#include "utils/varlena.h"
PG_FUNCTION_INFO_V1(bt_metap);
#include "utils/builtins.h"
#include "utils/pg_lsn.h"
#include "utils/rel.h"
+#include "utils/varlena.h"
PG_MODULE_MAGIC;
#include "utils/rel.h"
#include "utils/snapmgr.h"
#include "utils/tqual.h"
+#include "utils/varlena.h"
PG_MODULE_MAGIC;
#include "storage/bufmgr.h"
#include "utils/builtins.h"
#include "utils/rel.h"
+#include "utils/varlena.h"
/*
#include "storage/lmgr.h"
#include "utils/builtins.h"
#include "utils/tqual.h"
+#include "utils/varlena.h"
PG_MODULE_MAGIC;
#include "commands/defrem.h"
#include "commands/extension.h"
#include "utils/builtins.h"
+#include "utils/varlena.h"
/*
#include "tsearch/ts_utils.h"
#include "utils/builtins.h"
#include "utils/guc.h"
+#include "utils/regproc.h"
#include "utils/syscache.h"
PG_MODULE_MAGIC;
#include "tsearch/ts_locale.h"
#include "tsearch/ts_public.h"
#include "utils/builtins.h"
+#include "utils/regproc.h"
PG_MODULE_MAGIC;
#include "catalog/pg_type.h"
#include "utils/builtins.h"
#include "utils/syscache.h"
+#include "utils/regproc.h"
/*
#include "utils/builtins.h"
#include "utils/lsyscache.h"
#include "utils/syscache.h"
+#include "utils/regproc.h"
/*
#include "catalog/pg_type.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
+#include "utils/regproc.h"
#include "utils/syscache.h"
#include "parser/parse_coerce.h"
#include "utils/builtins.h"
#include "utils/fmgroids.h"
+#include "utils/regproc.h"
#include "utils/syscache.h"
#include "catalog/pg_opfamily.h"
#include "catalog/pg_type.h"
#include "utils/builtins.h"
+#include "utils/regproc.h"
#include "utils/syscache.h"
#include "utils/builtins.h"
#include "utils/datum.h"
#include "utils/pg_locale.h"
+#include "utils/varlena.h"
/*
#include "catalog/pg_opfamily.h"
#include "catalog/pg_type.h"
#include "utils/builtins.h"
+#include "utils/regproc.h"
#include "utils/syscache.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
#include "utils/syscache.h"
+#include "utils/varlena.h"
/*
#include "utils/fmgroids.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/regproc.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
#include "utils/acl.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
+#include "utils/regproc.h"
#include "utils/rel.h"
#include "utils/syscache.h"
#include "utils/rel.h"
#include "utils/snapmgr.h"
#include "utils/tqual.h"
+#include "utils/varlena.h"
/* Globally visible state variables */
#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"
#include "utils/lsyscache.h"
#include "utils/resowner.h"
#include "utils/syscache.h"
+#include "utils/varlena.h"
/*
#include "utils/memutils.h"
#include "utils/rel.h"
#include "utils/tqual.h"
+#include "utils/varlena.h"
/* GUC variables */
#include "utils/syscache.h"
#include "utils/snapmgr.h"
#include "utils/timestamp.h"
+#include "utils/varlena.h"
#include "mb/pg_wchar.h"
/*
#include "utils/lsyscache.h"
#include "utils/rel.h"
#include "utils/syscache.h"
+#include "utils/varlena.h"
#define MAX_FUZZY_DISTANCE 3
#include "utils/memutils.h"
#include "utils/ps_status.h"
#include "utils/timeout.h"
+#include "utils/varlena.h"
#ifdef EXEC_BACKEND
#include "storage/spin.h"
#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"
#include "replication/origin.h"
#include "replication/pgoutput.h"
-#include "utils/builtins.h"
#include "utils/inval.h"
#include "utils/int8.h"
#include "utils/memutils.h"
#include "utils/syscache.h"
+#include "utils/varlena.h"
PG_MODULE_MAGIC;
#include "tsearch/ts_locale.h"
#include "tsearch/ts_utils.h"
#include "utils/builtins.h"
+#include "utils/regproc.h"
/*
#include "tsearch/ts_cache.h"
#include "tsearch/ts_utils.h"
#include "utils/builtins.h"
+#include "utils/varlena.h"
/******sql-level interface******/
#include "utils/lsyscache.h"
#include "utils/memutils.h"
#include "utils/syscache.h"
+#include "utils/varlena.h"
typedef struct
#include "catalog/pg_type.h"
#include "utils/builtins.h"
#include "utils/jsonb.h"
+#include "utils/varlena.h"
typedef struct PathHashStack
{
#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).
#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)
#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);
#include "utils/syscache.h"
#include "utils/tqual.h"
#include "utils/typcache.h"
+#include "utils/varlena.h"
#include "utils/xml.h"
#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 */
#include "utils/rel.h"
#include "utils/snapmgr.h"
#include "utils/tqual.h"
+#include "utils/varlena.h"
#define DatumGetItemPointer(X) ((ItemPointer) DatumGetPointer(X))
#include "tsearch/ts_utils.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
+#include "utils/regproc.h"
#include "utils/rel.h"
#include "nodes/nodeFuncs.h"
#include "utils/array.h"
#include "utils/builtins.h"
+#include "utils/varlena.h"
#include "mb/pg_wchar.h"
#include "utils/memutils.h"
#include "utils/pg_locale.h"
#include "utils/sortsupport.h"
+#include "utils/varlena.h"
/* GUC variable */
#include "utils/inval.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/regproc.h"
#include "utils/syscache.h"
#include "utils/tqual.h"
#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"
#include "utils/guc.h"
#include "utils/memutils.h"
#include "utils/syscache.h"
+#include "utils/varlena.h"
#define DIRECTORY_LOCK_FILE "postmaster.pid"
#include "utils/rls.h"
#include "utils/snapmgr.h"
#include "utils/tzparser.h"
+#include "utils/varlena.h"
#include "utils/xml.h"
#ifndef PG_KRB_SRVTAB
#include "utils/lsyscache.h"
#include "utils/rls.h"
#include "utils/syscache.h"
+#include "utils/varlena.h"
/*
#include "fmgr.h"
#include "nodes/nodes.h"
-#include "nodes/pg_list.h"
#include "utils/fmgrprotos.h"
-#include "utils/sortsupport.h"
/* bool.c */
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);
/* 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);
#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);
--- /dev/null
+/*-------------------------------------------------------------------------
+ *
+ * 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
--- /dev/null
+/*-------------------------------------------------------------------------
+ *
+ * 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
#include "utils/guc.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/regproc.h"
#include "utils/rel.h"
#include "utils/syscache.h"
#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);