--- a/plsh.c
+++ b/plsh.c
@@ -37,6 +37,10 @@
 #include <limits.h>
 #include <errno.h>
 
+#if PG_VERSION_NUM < 100000
+/* from src/include/access/tupdesc.h, introduced in 2cd708452 */
+#define TupleDescAttr(tupdesc, i) ((tupdesc)->attrs[(i)])
+#endif
 
 PG_MODULE_MAGIC;
 
@@ -477,10 +481,10 @@ handler_internal(Oid function_oid, Funct
 				if (isnull)
 					s = "";
 				else
-					s = type_to_cstring(attr, tupdesc->attrs[i]->atttypid);
+					s = type_to_cstring(attr, TupleDescAttr(tupdesc, i)->atttypid);
 
 				elog(DEBUG2, "arg %d is \"%s\" (type %u)", i, s,
-					 tupdesc->attrs[i]->atttypid);
+					 TupleDescAttr(tupdesc, i)->atttypid);
 
 				arguments[argc++] = s;
 			}
