1 #ifndef PG_LOGICAL_COMPAT_H 2 #define PG_LOGICAL_COMPAT_H 3 4 #include "access/amapi.h" 5 #include "access/heapam.h" 6 #include "access/table.h" 7 #include "access/tableam.h" 8 #include "utils/varlena.h" 9 10 #define WaitLatchOrSocket(latch, wakeEvents, sock, timeout) \ 11 WaitLatchOrSocket(latch, wakeEvents, sock, timeout, PG_WAIT_EXTENSION) 12 13 #define WaitLatch(latch, wakeEvents, timeout) \ 14 WaitLatch(latch, wakeEvents, timeout, PG_WAIT_EXTENSION) 15 16 #define GetCurrentIntegerTimestamp() GetCurrentTimestamp() 17 18 #define pg_analyze_and_rewrite(parsetree, query_string, paramTypes, numParams) \ 19 pg_analyze_and_rewrite(parsetree, query_string, paramTypes, numParams, NULL) 20 21 #define CreateCommandTag(raw_parsetree) \ 22 CreateCommandTag(raw_parsetree->stmt) 23 24 #define PortalRun(portal, count, isTopLevel, dest, altdest, qc) \ 25 PortalRun(portal, count, isTopLevel, true, dest, altdest, qc) 26 27 #define ExecAlterExtensionStmt(stmt) \ 28 ExecAlterExtensionStmt(NULL, stmt) 29 30 /* 31 * Pg 11 adds an argument here. We don't need to special-case 2ndQPostgres 32 * anymore because it adds a separate ExecBRDeleteTriggers2 now, so this only 33 * handles the stock Pg11 change. 34 */ 35 #define ExecBRDeleteTriggers(estate, epqstate, relinfo, tupleid, fdw_trigtuple) \ 36 ExecBRDeleteTriggers(estate, epqstate, relinfo, tupleid, fdw_trigtuple, NULL) 37 38 #undef ExecEvalExpr 39 #define ExecEvalExpr(expr, econtext, isNull, isDone) \ 40 ((*(expr)->evalfunc) (expr, econtext, isNull)) 41 42 #define Form_pg_sequence Form_pg_sequence_data 43 44 #define InitResultRelInfo(resultRelInfo, resultRelationDesc, resultRelationIndex, instrument_options) \ 45 InitResultRelInfo(resultRelInfo, resultRelationDesc, resultRelationIndex, NULL, instrument_options) 46 47 #define ExecARUpdateTriggers(estate, relinfo, tupleid, fdw_trigtuple, newslot, recheckIndexes) \ 48 ExecARUpdateTriggers(estate, relinfo, tupleid, fdw_trigtuple, newslot, recheckIndexes, NULL) 49 50 #define ExecARInsertTriggers(estate, relinfo, slot, recheckIndexes) \ 51 ExecARInsertTriggers(estate, relinfo, slot, recheckIndexes, NULL) 52 53 #define ExecARDeleteTriggers(estate, relinfo, tupleid, fdw_trigtuple) \ 54 ExecARDeleteTriggers(estate, relinfo, tupleid, fdw_trigtuple, NULL) 55 56 #define makeDefElem(name, arg) makeDefElem(name, arg, -1) 57 58 #define PGLstandard_ProcessUtility(pstmt, queryString, readOnlyTree, context, params, queryEnv, dest, sentToRemote, qc) \ 59 standard_ProcessUtility(pstmt, queryString, readOnlyTree, context, params, queryEnv, dest, qc) 60 61 #define PGLnext_ProcessUtility_hook(pstmt, queryString, readOnlyTree, context, params, queryEnv, dest, sentToRemote, qc) \ 62 next_ProcessUtility_hook(pstmt, queryString, readOnlyTree, context, params, queryEnv, dest, qc) 63 64 #define PGLCreateTrigger(stmt, queryString, relOid, refRelOid, constraintOid, indexOid, isInternal) \ 65 CreateTrigger(stmt, queryString, relOid, refRelOid, constraintOid, indexOid, InvalidOid, InvalidOid, NULL, isInternal, false); 66 67 #define PGLDoCopy(stmt, queryString, processed) \ 68 do \ 69 { \ 70 ParseState* pstate = make_parsestate(NULL); \ 71 DoCopy(pstate, stmt, -1, 0, processed); \ 72 free_parsestate(pstate); \ 73 } while (false); 74 75 #define PGLReplicationSlotCreate(name, db_specific, persistency) ReplicationSlotCreate(name, db_specific, persistency) 76 77 #ifndef rbtxn_has_catalog_changes 78 #define rbtxn_has_catalog_changes(txn) (txn->has_catalog_changes) 79 #endif 80 81 /* ad7dbee368a */ 82 #define ExecInitExtraTupleSlot(estate) \ 83 ExecInitExtraTupleSlot(estate, NULL, &TTSOpsHeapTuple) 84 85 #define ACL_OBJECT_RELATION OBJECT_TABLE 86 #define ACL_OBJECT_SEQUENCE OBJECT_SEQUENCE 87 88 #define DatumGetJsonb DatumGetJsonbP 89 90 #define pgl_heap_attisnull(tup, attnum, tupledesc) \ 91 heap_attisnull(tup, attnum, tupledesc) 92 93 /* 2a10fdc4307a667883f7a3369cb93a721ade9680 */ 94 #define getObjectDescription(object) getObjectDescription(object, false) 95 96 #endif 97