ports/databases/postgresql-plruby/files/patch-src_plruby.c
Tobias Kortkamp ebfce89036 databases/postgresql-plruby: Unbreak build with PostgreSQL 11
============================================================
PostgreSQL 11.4
 is unsupported.  Try plruby-0.4.2.
============================================================
*** Error code 1

http://package18.nyi.freebsd.org/data/120amd64-default-PR239514/2019-07-29_20h41m52s/logs/postgresql-plruby-0.5.7_4.log

While here deprecate it since it seems to have been abandoned in
2010.

PR:		239639
Approved by:	knu (maintainer timeout, 2 weeks)
2019-08-18 13:23:40 +00:00

75 lines
2.7 KiB
C

--- src/plruby.c.orig 2019-08-04 04:30:44 UTC
+++ src/plruby.c
@@ -1184,17 +1184,29 @@ for_numvals(obj, argobj)
rb_raise(pl_ePLruby, "invalid attribute '%s'", RSTRING_PTR(key));
}
attnum -= 1;
+#if PG_VERSION_NUM < 110000
if (arg->tupdesc->attrs[attnum]->attisdropped) {
+#else
+ if (TupleDescAttr(arg->tupdesc, attnum)->attisdropped) {
+#endif
return Qnil;
}
PLRUBY_BEGIN(1);
typeTup = SearchSysCache(TYPEOID,
+#if PG_VERSION_NUM < 110000
OidGD(arg->tupdesc->attrs[attnum]->atttypid),
+#else
+ OidGD(TupleDescAttr(arg->tupdesc, attnum)->atttypid),
+#endif
0, 0, 0);
if (!HeapTupleIsValid(typeTup)) {
rb_raise(pl_ePLruby, "Cache lookup for attribute '%s' type %ld failed",
+#if PG_VERSION_NUM < 110000
RSTRING_PTR(key), OidGD(arg->tupdesc->attrs[attnum]->atttypid));
+#else
+ RSTRING_PTR(key), OidGD(TupleDescAttr(arg->tupdesc, attnum)->atttypid));
+#endif
}
fpg = (Form_pg_type) GETSTRUCT(typeTup);
ReleaseSysCache(typeTup);
@@ -1226,11 +1238,19 @@ for_numvals(obj, argobj)
else {
arg->modvalues[attnum] =
plruby_to_datum(value, &finfo,
+#if PG_VERSION_NUM < 110000
arg->tupdesc->attrs[attnum]->atttypid,
fpg->typelem,
(!VARLENA_FIXED_SIZE(arg->tupdesc->attrs[attnum]))
? arg->tupdesc->attrs[attnum]->attlen
: arg->tupdesc->attrs[attnum]->atttypmod);
+#else
+ TupleDescAttr(arg->tupdesc, attnum)->atttypid,
+ fpg->typelem,
+ (!VARLENA_FIXED_SIZE(TupleDescAttr(arg->tupdesc, attnum)))
+ ? TupleDescAttr(arg->tupdesc, attnum)->attlen
+ : TupleDescAttr(arg->tupdesc, attnum)->atttypmod);
+#endif
}
return Qnil;
}
@@ -1284,12 +1304,21 @@ pl_trigger_handler(struct pl_thread_st *plth)
tmp = rb_ary_new2(tupdesc->natts);
for (i = 0; i < tupdesc->natts; i++) {
+#if PG_VERSION_NUM < 110000
if (tupdesc->attrs[i]->attisdropped) {
rb_ary_push(tmp, rb_str_freeze_new2(""));
}
else {
rb_ary_push(tmp, rb_str_freeze_new2(NameStr(tupdesc->attrs[i]->attname)));
}
+#else
+ if (TupleDescAttr(tupdesc, i)->attisdropped) {
+ rb_ary_push(tmp, rb_str_freeze_new2(""));
+ }
+ else {
+ rb_ary_push(tmp, rb_str_freeze_new2(NameStr(TupleDescAttr(tupdesc, i)->attname)));
+ }
+#endif
}
rb_hash_aset(TG, rb_str_freeze_new2("relatts"), rb_ary_freeze(tmp));