summaryrefslogtreecommitdiff
path: root/src/backend/utils/fmgr/dfmgr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/fmgr/dfmgr.c')
-rw-r--r--src/backend/utils/fmgr/dfmgr.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/backend/utils/fmgr/dfmgr.c b/src/backend/utils/fmgr/dfmgr.c
index 96fd9d22685..cc1a5200705 100644
--- a/src/backend/utils/fmgr/dfmgr.c
+++ b/src/backend/utils/fmgr/dfmgr.c
@@ -331,6 +331,21 @@ incompatible_module_error(const char *libname,
}
/*
+ * Similarly, if the ABI extra field doesn't match, error out. Other
+ * fields below might also mismatch, but that isn't useful information if
+ * you're using the wrong product altogether.
+ */
+ if (strcmp(module_magic_data->abi_extra, magic_data.abi_extra) != 0)
+ {
+ ereport(ERROR,
+ (errmsg("incompatible library \"%s\": ABI mismatch",
+ libname),
+ errdetail("Server has ABI \"%s\", library has \"%s\".",
+ magic_data.abi_extra,
+ module_magic_data->abi_extra)));
+ }
+
+ /*
* Otherwise, spell out which fields don't agree.
*
* XXX this code has to be adjusted any time the set of fields in a magic