X-Git-Url: http://sigaev.ru/git/gitweb.cgi?p=smlar.git;a=blobdiff_plain;f=smlar.c;h=672e453b480832c42cb5018801ca3b711f3f3712;hp=5cbe5c25c59fe4fcfdcf9b9b82d2f62786352b34;hb=8a465bb03ae7e2e85c3f9e1ebd75eb4ec830f3c5;hpb=8d02df18c0bbfd6ccba94a9582499ec8746047e5 diff --git a/smlar.c b/smlar.c index 5cbe5c2..672e453 100644 --- a/smlar.c +++ b/smlar.c @@ -16,7 +16,9 @@ #include "utils/fmgroids.h" #include "utils/lsyscache.h" #include "utils/memutils.h" +#if (PG_VERSION_NUM < 120000) #include "utils/tqual.h" +#endif #include "utils/syscache.h" #include "utils/typcache.h" @@ -28,6 +30,11 @@ PG_MODULE_MAGIC; #define SNAPSHOT SnapshotNow #endif +#if PG_VERSION_NUM >= 130000 +#define heap_open(r, l) table_open((r), (l)) +#define heap_close(r, l) table_close((r), (l)) +#endif + static Oid getDefaultOpclass(Oid amoid, Oid typid) { @@ -56,7 +63,11 @@ getDefaultOpclass(Oid amoid, Oid typid) { if ( OidIsValid(opclassOid) ) elog(ERROR, "Ambiguous opclass for type %u (access method %u)", typid, amoid); +#if (PG_VERSION_NUM >= 120000) + opclassOid = opclass->oid; +#else opclassOid = HeapTupleGetOid(tuple); +#endif } } @@ -91,9 +102,14 @@ getAMProc(Oid amoid, Oid typid) /* * Search binary-coercible type */ +#ifdef SearchSysCacheList1 + catlist = SearchSysCacheList1(CASTSOURCETARGET, + ObjectIdGetDatum(typid)); +#else catlist = SearchSysCacheList(CASTSOURCETARGET, 1, ObjectIdGetDatum(typid), 0, 0, 0); +#endif for (i = 0; i < catlist->n_members; i++) { @@ -171,6 +187,10 @@ getAMProc(Oid amoid, Oid typid) static ProcTypeInfo *cacheProcs = NULL; static int nCacheProcs = 0; +#ifndef TupleDescAttr +#define TupleDescAttr(tupdesc, i) ((tupdesc)->attrs[(i)]) +#endif + static ProcTypeInfo fillProcs(Oid typid) { @@ -192,7 +212,7 @@ fillProcs(Oid typid) if (tupdesc->natts != 2) elog(ERROR,"Composite type has wrong number of fields"); - if (tupdesc->attrs[1]->atttypid != FLOAT4OID) + if (TupleDescAttr(tupdesc, 1)->atttypid != FLOAT4OID) elog(ERROR,"Second field of composite type is not float4"); oldcontext = MemoryContextSwitchTo(TopMemoryContext); @@ -201,8 +221,10 @@ fillProcs(Oid typid) ReleaseTupleDesc(tupdesc); - info->cmpFuncOid = getAMProc(BTREE_AM_OID, info->tupDesc->attrs[0]->atttypid); - info->hashFuncOid = getAMProc(HASH_AM_OID, info->tupDesc->attrs[0]->atttypid); + info->cmpFuncOid = getAMProc(BTREE_AM_OID, + TupleDescAttr(info->tupDesc, 0)->atttypid); + info->hashFuncOid = getAMProc(HASH_AM_OID, + TupleDescAttr(info->tupDesc, 0)->atttypid); } else {