summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contrib/hstore/hstore.h2
-rw-r--r--contrib/ltree/ltree.h40
-rw-r--r--doc/src/sgml/xfunc.sgml17
-rw-r--r--src/include/fmgr.h7
4 files changed, 25 insertions, 41 deletions
diff --git a/contrib/hstore/hstore.h b/contrib/hstore/hstore.h
index 6303fa40619..6bab08b7de0 100644
--- a/contrib/hstore/hstore.h
+++ b/contrib/hstore/hstore.h
@@ -194,7 +194,7 @@ extern Pairs *hstoreArrayToPairs(ArrayType *a, int *npairs);
#if HSTORE_POLLUTE_NAMESPACE
#define HSTORE_POLLUTE(newname_,oldname_) \
PG_FUNCTION_INFO_V1(oldname_); \
- extern PGDLLEXPORT Datum newname_(PG_FUNCTION_ARGS); \
+ Datum newname_(PG_FUNCTION_ARGS); \
Datum oldname_(PG_FUNCTION_ARGS) { return newname_(fcinfo); } \
extern int no_such_variable
#else
diff --git a/contrib/ltree/ltree.h b/contrib/ltree/ltree.h
index c7aa7f88188..c604357dbfb 100644
--- a/contrib/ltree/ltree.h
+++ b/contrib/ltree/ltree.h
@@ -130,30 +130,30 @@ typedef struct
/* use in array iterator */
-extern PGDLLEXPORT Datum ltree_isparent(PG_FUNCTION_ARGS);
-extern PGDLLEXPORT Datum ltree_risparent(PG_FUNCTION_ARGS);
-extern PGDLLEXPORT Datum ltq_regex(PG_FUNCTION_ARGS);
-extern PGDLLEXPORT Datum ltq_rregex(PG_FUNCTION_ARGS);
-extern PGDLLEXPORT Datum lt_q_regex(PG_FUNCTION_ARGS);
-extern PGDLLEXPORT Datum lt_q_rregex(PG_FUNCTION_ARGS);
-extern PGDLLEXPORT Datum ltxtq_exec(PG_FUNCTION_ARGS);
-extern PGDLLEXPORT Datum ltxtq_rexec(PG_FUNCTION_ARGS);
-extern PGDLLEXPORT Datum _ltq_regex(PG_FUNCTION_ARGS);
-extern PGDLLEXPORT Datum _ltq_rregex(PG_FUNCTION_ARGS);
-extern PGDLLEXPORT Datum _lt_q_regex(PG_FUNCTION_ARGS);
-extern PGDLLEXPORT Datum _lt_q_rregex(PG_FUNCTION_ARGS);
-extern PGDLLEXPORT Datum _ltxtq_exec(PG_FUNCTION_ARGS);
-extern PGDLLEXPORT Datum _ltxtq_rexec(PG_FUNCTION_ARGS);
-extern PGDLLEXPORT Datum _ltree_isparent(PG_FUNCTION_ARGS);
-extern PGDLLEXPORT Datum _ltree_risparent(PG_FUNCTION_ARGS);
+Datum ltree_isparent(PG_FUNCTION_ARGS);
+Datum ltree_risparent(PG_FUNCTION_ARGS);
+Datum ltq_regex(PG_FUNCTION_ARGS);
+Datum ltq_rregex(PG_FUNCTION_ARGS);
+Datum lt_q_regex(PG_FUNCTION_ARGS);
+Datum lt_q_rregex(PG_FUNCTION_ARGS);
+Datum ltxtq_exec(PG_FUNCTION_ARGS);
+Datum ltxtq_rexec(PG_FUNCTION_ARGS);
+Datum _ltq_regex(PG_FUNCTION_ARGS);
+Datum _ltq_rregex(PG_FUNCTION_ARGS);
+Datum _lt_q_regex(PG_FUNCTION_ARGS);
+Datum _lt_q_rregex(PG_FUNCTION_ARGS);
+Datum _ltxtq_exec(PG_FUNCTION_ARGS);
+Datum _ltxtq_rexec(PG_FUNCTION_ARGS);
+Datum _ltree_isparent(PG_FUNCTION_ARGS);
+Datum _ltree_risparent(PG_FUNCTION_ARGS);
/* Concatenation functions */
-extern PGDLLEXPORT Datum ltree_addltree(PG_FUNCTION_ARGS);
-extern PGDLLEXPORT Datum ltree_addtext(PG_FUNCTION_ARGS);
-extern PGDLLEXPORT Datum ltree_textadd(PG_FUNCTION_ARGS);
+Datum ltree_addltree(PG_FUNCTION_ARGS);
+Datum ltree_addtext(PG_FUNCTION_ARGS);
+Datum ltree_textadd(PG_FUNCTION_ARGS);
/* Util function */
-extern PGDLLEXPORT Datum ltree_in(PG_FUNCTION_ARGS);
+Datum ltree_in(PG_FUNCTION_ARGS);
bool ltree_execute(ITEM *curitem, void *checkval,
bool calcnot, bool (*chkcond) (void *checkval, ITEM *val));
diff --git a/doc/src/sgml/xfunc.sgml b/doc/src/sgml/xfunc.sgml
index 6060e618576..de6a466efc5 100644
--- a/doc/src/sgml/xfunc.sgml
+++ b/doc/src/sgml/xfunc.sgml
@@ -2577,23 +2577,6 @@ concat_text(PG_FUNCTION_ARGS)
error messages to this effect.
</para>
</listitem>
-
- <listitem>
- <para>
- To work correctly on Windows, <literal>C</>-language functions need
- to be marked with <literal>PGDLLEXPORT</>, unless you use a build
- process that marks all global functions that way. In simple cases
- this detail will be handled transparently by
- the <literal>PG_FUNCTION_INFO_V1</> macro. However, if you write
- explicit external declarations (perhaps in header files), be sure
- to write them like this:
-<programlisting>
-extern PGDLLEXPORT Datum funcname(PG_FUNCTION_ARGS);
-</programlisting>
- or you'll get compiler complaints when building on Windows. (On
- other platforms, the <literal>PGDLLEXPORT</> macro does nothing.)
- </para>
- </listitem>
</itemizedlist>
</para>
</sect2>
diff --git a/src/include/fmgr.h b/src/include/fmgr.h
index 3668ac3f6e9..0878418516e 100644
--- a/src/include/fmgr.h
+++ b/src/include/fmgr.h
@@ -350,11 +350,12 @@ typedef const Pg_finfo_record *(*PGFInfoFunction) (void);
*
* On Windows, the function and info function must be exported. Our normal
* build processes take care of that via .DEF files or --export-all-symbols.
- * Module authors using a different build process might do it differently,
- * so we declare these functions PGDLLEXPORT for their convenience.
+ * Module authors using a different build process might need to manually
+ * declare the function PGDLLEXPORT. We do that automatically here for the
+ * info function, since authors shouldn't need to be explicitly aware of it.
*/
#define PG_FUNCTION_INFO_V1(funcname) \
-extern PGDLLEXPORT Datum funcname(PG_FUNCTION_ARGS); \
+extern Datum funcname(PG_FUNCTION_ARGS); \
extern PGDLLEXPORT const Pg_finfo_record * CppConcat(pg_finfo_,funcname)(void); \
const Pg_finfo_record * \
CppConcat(pg_finfo_,funcname) (void) \