mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-11-27 07:21:09 +08:00
Fix hstore_plpython for Python 3.
In commit d51924be8
, I overlooked the need to provide linkage for
PLyUnicode_FromStringAndSize, because that's only used (and indeed
only exists) in Python 3 builds.
In light of the need to #if this item, rearrange the ordering of
the code related to each function pointer, so as not to need more
#if's than absolutely necessary.
Per buildfarm.
This commit is contained in:
parent
c86c2d9d57
commit
490ed1ebb9
@ -11,20 +11,22 @@ extern void _PG_init(void);
|
||||
|
||||
/* Linkage to functions in plpython module */
|
||||
typedef char *(*PLyObject_AsString_t) (PyObject *plrv);
|
||||
|
||||
static PLyObject_AsString_t PLyObject_AsString_p;
|
||||
#if PY_MAJOR_VERSION >= 3
|
||||
typedef PyObject *(*PLyUnicode_FromStringAndSize_t) (const char *s, Py_ssize_t size);
|
||||
static PLyUnicode_FromStringAndSize_t PLyUnicode_FromStringAndSize_p;
|
||||
#endif
|
||||
|
||||
/* Linkage to functions in hstore module */
|
||||
typedef HStore *(*hstoreUpgrade_t) (Datum orig);
|
||||
typedef int (*hstoreUniquePairs_t) (Pairs *a, int32 l, int32 *buflen);
|
||||
typedef HStore *(*hstorePairs_t) (Pairs *pairs, int32 pcount, int32 buflen);
|
||||
typedef size_t (*hstoreCheckKeyLen_t) (size_t len);
|
||||
typedef size_t (*hstoreCheckValLen_t) (size_t len);
|
||||
|
||||
static hstoreUpgrade_t hstoreUpgrade_p;
|
||||
typedef int (*hstoreUniquePairs_t) (Pairs *a, int32 l, int32 *buflen);
|
||||
static hstoreUniquePairs_t hstoreUniquePairs_p;
|
||||
typedef HStore *(*hstorePairs_t) (Pairs *pairs, int32 pcount, int32 buflen);
|
||||
static hstorePairs_t hstorePairs_p;
|
||||
typedef size_t (*hstoreCheckKeyLen_t) (size_t len);
|
||||
static hstoreCheckKeyLen_t hstoreCheckKeyLen_p;
|
||||
typedef size_t (*hstoreCheckValLen_t) (size_t len);
|
||||
static hstoreCheckValLen_t hstoreCheckValLen_p;
|
||||
|
||||
|
||||
@ -34,29 +36,34 @@ static hstoreCheckValLen_t hstoreCheckValLen_p;
|
||||
void
|
||||
_PG_init(void)
|
||||
{
|
||||
/* These asserts verify that typedefs above match original declarations */
|
||||
/* Asserts verify that typedefs above match original declarations */
|
||||
AssertVariableIsOfType(&PLyObject_AsString, PLyObject_AsString_t);
|
||||
AssertVariableIsOfType(&hstoreUpgrade, hstoreUpgrade_t);
|
||||
AssertVariableIsOfType(&hstoreUniquePairs, hstoreUniquePairs_t);
|
||||
AssertVariableIsOfType(&hstorePairs, hstorePairs_t);
|
||||
AssertVariableIsOfType(&hstoreCheckKeyLen, hstoreCheckKeyLen_t);
|
||||
AssertVariableIsOfType(&hstoreCheckValLen, hstoreCheckValLen_t);
|
||||
|
||||
PLyObject_AsString_p = (PLyObject_AsString_t)
|
||||
load_external_function("$libdir/" PLPYTHON_LIBNAME, "PLyObject_AsString",
|
||||
true, NULL);
|
||||
#if PY_MAJOR_VERSION >= 3
|
||||
AssertVariableIsOfType(&PLyUnicode_FromStringAndSize, PLyUnicode_FromStringAndSize_t);
|
||||
PLyUnicode_FromStringAndSize_p = (PLyUnicode_FromStringAndSize_t)
|
||||
load_external_function("$libdir/" PLPYTHON_LIBNAME, "PLyUnicode_FromStringAndSize",
|
||||
true, NULL);
|
||||
#endif
|
||||
AssertVariableIsOfType(&hstoreUpgrade, hstoreUpgrade_t);
|
||||
hstoreUpgrade_p = (hstoreUpgrade_t)
|
||||
load_external_function("$libdir/hstore", "hstoreUpgrade",
|
||||
true, NULL);
|
||||
AssertVariableIsOfType(&hstoreUniquePairs, hstoreUniquePairs_t);
|
||||
hstoreUniquePairs_p = (hstoreUniquePairs_t)
|
||||
load_external_function("$libdir/hstore", "hstoreUniquePairs",
|
||||
true, NULL);
|
||||
AssertVariableIsOfType(&hstorePairs, hstorePairs_t);
|
||||
hstorePairs_p = (hstorePairs_t)
|
||||
load_external_function("$libdir/hstore", "hstorePairs",
|
||||
true, NULL);
|
||||
AssertVariableIsOfType(&hstoreCheckKeyLen, hstoreCheckKeyLen_t);
|
||||
hstoreCheckKeyLen_p = (hstoreCheckKeyLen_t)
|
||||
load_external_function("$libdir/hstore", "hstoreCheckKeyLen",
|
||||
true, NULL);
|
||||
AssertVariableIsOfType(&hstoreCheckValLen, hstoreCheckValLen_t);
|
||||
hstoreCheckValLen_p = (hstoreCheckValLen_t)
|
||||
load_external_function("$libdir/hstore", "hstoreCheckValLen",
|
||||
true, NULL);
|
||||
@ -65,6 +72,7 @@ _PG_init(void)
|
||||
|
||||
/* These defines must be after the module init function */
|
||||
#define PLyObject_AsString PLyObject_AsString_p
|
||||
#define PLyUnicode_FromStringAndSize PLyUnicode_FromStringAndSize_p
|
||||
#define hstoreUpgrade hstoreUpgrade_p
|
||||
#define hstoreUniquePairs hstoreUniquePairs_p
|
||||
#define hstorePairs hstorePairs_p
|
||||
|
Loading…
Reference in New Issue
Block a user