/* These defines must be after the module init function */ #define hstoreUpgrade hstoreUpgrade_p #define hstoreUniquePairs hstoreUniquePairs_p #define hstorePairs hstorePairs_p #define hstoreCheckKeyLen hstoreCheckKeyLen_p #define hstoreCheckValLen hstoreCheckValLen_p
PG_FUNCTION_INFO_V1(hstore_to_plperl);
Datum
hstore_to_plperl(PG_FUNCTION_ARGS)
{
dTHX;
HStore *in = PG_GETARG_HSTORE_P(0); int i; int count = HS_COUNT(in); char *base = STRPTR(in);
HEntry *entries = ARRPTR(in);
HV *hv;
hv = newHV();
for (i = 0; i < count; i++)
{ constchar *key;
SV *value;
/* Dereference references recursively. */ while (SvROK(in))
in = SvRV(in);
/* Now we must have a hash. */ if (SvTYPE(in) != SVt_PVHV)
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("cannot transform non-hash Perl value to hstore")));
hv = (HV *) in;
pcount = hv_iterinit(hv);
pairs = palloc_array(Pairs, pcount);
i = 0; while ((he = hv_iternext(hv)))
{ char *key = sv2cstr(HeSVKEY_force(he));
SV *value = HeVAL(he);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.