视图函数修复
This commit is contained in:
@ -3927,7 +3927,7 @@
|
||||
),
|
||||
AddFuncGroup(
|
||||
"gs_undo_translot_dump_xid", 1,
|
||||
AddBuiltinFunc(_0(4438), _1("gs_undo_translot_dump_xid"), _2(2), _3(false), _4(true), _5(gs_undo_translot_dump_xid), _6(2249), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(INTERNALlanguageId), _10(1), _11(1), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('s'), _19(0), _20(2, 28, 16), _21(8, 28, 16, 26, 25, 25, 25, 25, 26), _22(8, 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'o'), _23(8, "zone_id", "read_memory", "zone_id", "slot_xid", "start_undoptr", "end_undoptr","lsn", "slot_states"), _24(NULL), _25("gs_undo_translot_dump_xid"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33(NULL), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0))
|
||||
AddBuiltinFunc(_0(4438), _1("gs_undo_translot_dump_xid"), _2(2), _3(false), _4(true), _5(gs_undo_translot_dump_xid), _6(2249), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(INTERNALlanguageId), _10(1), _11(1), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('s'), _19(0), _20(2, 28, 16), _21(8, 28, 16, 26, 25, 25, 25, 25, 26), _22(8, 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'o'), _23(8, "zone_id", "read_memory", "zone_id", "slot_xid", "start_undoptr", "end_undoptr","slot_ptr", "slot_states"), _24(NULL), _25("gs_undo_translot_dump_xid"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33(NULL), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0))
|
||||
),
|
||||
AddFuncGroup(
|
||||
"gs_undo_dump_record", 1,
|
||||
@ -3935,7 +3935,7 @@
|
||||
),
|
||||
AddFuncGroup(
|
||||
"gs_undo_translot_dump_slot", 1,
|
||||
AddBuiltinFunc(_0(4541), _1("gs_undo_translot_dump_slot"), _2(2), _3(false), _4(true), _5(gs_undo_translot_dump_slot), _6(2249), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(INTERNALlanguageId), _10(1), _11(1), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('s'), _19(0), _20(2, 23, 16), _21(8, 23, 16, 26, 25, 25, 25, 25, 26), _22(8, 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'o'), _23(8, "zone_id", "read_memory", "zone_id", "slot_xid", "start_undoptr", "end_undoptr","lsn", "slot_states"), _24(NULL), _25("gs_undo_translot_dump_slot"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33(NULL), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0))
|
||||
AddBuiltinFunc(_0(4541), _1("gs_undo_translot_dump_slot"), _2(2), _3(false), _4(true), _5(gs_undo_translot_dump_slot), _6(2249), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(INTERNALlanguageId), _10(1), _11(1), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('s'), _19(0), _20(2, 23, 16), _21(8, 23, 16, 26, 25, 25, 25, 25, 26), _22(8, 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'o'), _23(8, "zone_id", "read_memory", "zone_id", "slot_xid", "start_undoptr", "end_undoptr","slot_ptr", "slot_states"), _24(NULL), _25("gs_undo_translot_dump_slot"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33(NULL), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0))
|
||||
),
|
||||
AddFuncGroup(
|
||||
"gs_undo_dump_xid", 1,
|
||||
|
||||
@ -310,6 +310,11 @@ void OpFusion::setCurrentOpFusionObj(OpFusion *obj)
|
||||
u_sess->exec_cxt.CurrentOpFusionObj = obj;
|
||||
}
|
||||
|
||||
void OpFusion::setOpFusionReuseObj(OpFusion *obj)
|
||||
{
|
||||
u_sess->opfusion_reuse_ctx.opfusionObj = obj;
|
||||
}
|
||||
|
||||
void OpFusion::checkPermission()
|
||||
{
|
||||
bool check = false;
|
||||
@ -1112,6 +1117,7 @@ void OpFusion::tearDown(OpFusion *opfusion)
|
||||
delete opfusion;
|
||||
|
||||
OpFusion::setCurrentOpFusionObj(NULL);
|
||||
OpFusion::setOpFusionReuseObj(NULL);
|
||||
}
|
||||
|
||||
void OpFusion::clearForCplan(OpFusion *opfusion, CachedPlanSource *psrc)
|
||||
|
||||
@ -2236,8 +2236,8 @@ static void ValidateStrOptOrientation(const char *val)
|
||||
*/
|
||||
static void ValidateStrOptIndexsplit(const char *val)
|
||||
{
|
||||
if (pg_strncasecmp(val, INDEXSPLIT_OPT_DEFAULT, strlen(val)) != 0 &&
|
||||
pg_strncasecmp(val, INDEXSPLIT_OPT_INSERTPT, strlen(val)) != 0) {
|
||||
if (pg_strcasecmp(val, INDEXSPLIT_OPT_DEFAULT) != 0 &&
|
||||
pg_strcasecmp(val, INDEXSPLIT_OPT_INSERTPT) != 0) {
|
||||
ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("Invalid string for \"INDEXSPLIT\" option"),
|
||||
errdetail("Valid string are \"default\", \"insertpt\".")));
|
||||
}
|
||||
|
||||
@ -1579,7 +1579,9 @@ static bool UBTreeStepPage(IndexScanDesc scan, ScanDirection dir)
|
||||
}
|
||||
|
||||
/* Step to next physical page */
|
||||
so->currPos.buf = _bt_walk_left(rel, so->currPos.buf);
|
||||
Buffer temp = so->currPos.buf;
|
||||
so->currPos.buf = InvalidBuffer;
|
||||
so->currPos.buf = _bt_walk_left(rel, temp);
|
||||
|
||||
/* if we're physically at end of index, return failure */
|
||||
if (so->currPos.buf == InvalidBuffer)
|
||||
|
||||
@ -903,7 +903,6 @@ static int UHeapPruneItem(const RelationBuffer *relbuf, OffsetNumber offnum, Tra
|
||||
* Count dead or recently dead tuple in result and update the space
|
||||
* that can be freed.
|
||||
*/
|
||||
ndeleted++;
|
||||
Assert(!TransactionIdIsValid(xid) || !TransactionIdIsInProgress(xid));
|
||||
if (TransactionIdIsValid(xid) && TransactionIdIsInProgress(xid)) {
|
||||
ereport(PANIC, (errcode(ERRCODE_DATA_CORRUPTED),
|
||||
@ -917,6 +916,7 @@ static int UHeapPruneItem(const RelationBuffer *relbuf, OffsetNumber offnum, Tra
|
||||
/* Record dead item */
|
||||
if (tupdead) {
|
||||
UHeapPruneRecordDead(prstate, offnum, relbuf->relation);
|
||||
ndeleted++;
|
||||
}
|
||||
|
||||
/* Record deleted item */
|
||||
|
||||
@ -424,6 +424,7 @@ start:
|
||||
/* Temporarily tell other backends we are working on this subset.
|
||||
* pg_atomic_exchange_u32 should return the old value.
|
||||
*/
|
||||
pgStatInfo->startBlockIndex = (uint32)random() % START_BLOCK_ARRAY_SIZE;
|
||||
uint32 index = pgStatInfo->startBlockIndex;
|
||||
BlockNumber startBlkno = pg_atomic_exchange_u32(&pgStatInfo->startBlockArray[index],
|
||||
InvalidBlockNumber);
|
||||
|
||||
@ -439,10 +439,9 @@ bool RecycleUndoSpace(UndoZone *zone, TransactionId recycleXmin, TransactionId f
|
||||
lsn, recycleXid, g_recycleLoops, recycleXmin)));
|
||||
}
|
||||
END_CRIT_SECTION();
|
||||
|
||||
zone->UnlockUndoZone();
|
||||
zone->ReleaseSpace(startUndoPtr, endUndoPtr, &g_forceRecycleSize);
|
||||
zone->ReleaseSlotSpace(start, recycle, &g_forceRecycleSize);
|
||||
zone->UnlockUndoZone();
|
||||
} else {
|
||||
/* zone has nothing to recycle. */
|
||||
break;
|
||||
|
||||
@ -0,0 +1,11 @@
|
||||
DROP FUNCTION IF EXISTS pg_catalog.gs_undo_translot_dump_slot(int4, int4, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT slot_ptr text, OUT gs_undo_translot oid) CASCADE;
|
||||
DROP FUNCTION IF EXISTS pg_catalog.gs_undo_translot_dump_slot(int4, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT slot_ptr text, OUT gs_undo_translot oid) CASCADE;
|
||||
SET LOCAL inplace_upgrade_next_system_object_oids = IUO_PROC, 4541;
|
||||
CREATE OR REPLACE FUNCTION pg_catalog.gs_undo_translot_dump_slot(int4, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT lsn text, OUT gs_undo_translot oid)
|
||||
RETURNS SETOF record LANGUAGE INTERNAL as 'gs_undo_translot_dump_slot';
|
||||
|
||||
DROP FUNCTION IF EXISTS pg_catalog.gs_undo_translot_dump_xid(xid, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT lsn text, OUT gs_undo_translot oid) CASCADE;
|
||||
DROP FUNCTION IF EXISTS pg_catalog.gs_undo_translot_dump_xid(xid, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT slot_ptr text, OUT gs_undo_translot oid) CASCADE;
|
||||
SET LOCAL inplace_upgrade_next_system_object_oids = IUO_PROC, 4438;
|
||||
CREATE OR REPLACE FUNCTION pg_catalog.gs_undo_translot_dump_xid(xid, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT lsn text, OUT gs_undo_translot oid)
|
||||
RETURNS SETOF record LANGUAGE INTERNAL as 'gs_undo_translot_dump_xid';
|
||||
@ -0,0 +1,11 @@
|
||||
DROP FUNCTION IF EXISTS pg_catalog.gs_undo_translot_dump_slot(int4, int4, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT slot_ptr text, OUT gs_undo_translot oid) CASCADE;
|
||||
DROP FUNCTION IF EXISTS pg_catalog.gs_undo_translot_dump_slot(int4, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT slot_ptr text, OUT gs_undo_translot oid) CASCADE;
|
||||
SET LOCAL inplace_upgrade_next_system_object_oids = IUO_PROC, 4541;
|
||||
CREATE OR REPLACE FUNCTION pg_catalog.gs_undo_translot_dump_slot(int4, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT lsn text, OUT gs_undo_translot oid)
|
||||
RETURNS SETOF record LANGUAGE INTERNAL as 'gs_undo_translot_dump_slot';
|
||||
|
||||
DROP FUNCTION IF EXISTS pg_catalog.gs_undo_translot_dump_xid(xid, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT lsn text, OUT gs_undo_translot oid) CASCADE;
|
||||
DROP FUNCTION IF EXISTS pg_catalog.gs_undo_translot_dump_xid(xid, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT slot_ptr text, OUT gs_undo_translot oid) CASCADE;
|
||||
SET LOCAL inplace_upgrade_next_system_object_oids = IUO_PROC, 4438;
|
||||
CREATE OR REPLACE FUNCTION pg_catalog.gs_undo_translot_dump_xid(xid, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT lsn text, OUT gs_undo_translot oid)
|
||||
RETURNS SETOF record LANGUAGE INTERNAL as 'gs_undo_translot_dump_xid';
|
||||
@ -0,0 +1,15 @@
|
||||
/*------ add sys fuction gs_undo_translot_dump_slot ------*/
|
||||
DROP FUNCTION IF EXISTS pg_catalog.gs_undo_translot_dump_slot(int4, int4, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT lsn text, OUT gs_undo_translot oid) CASCADE;
|
||||
DROP FUNCTION IF EXISTS pg_catalog.gs_undo_translot_dump_slot(int4, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT lsn text, OUT gs_undo_translot oid) CASCADE;
|
||||
DROP FUNCTION IF EXISTS pg_catalog.gs_undo_translot_dump_slot(int4, int4, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT slot_ptr text, OUT gs_undo_translot oid) CASCADE;
|
||||
DROP FUNCTION IF EXISTS pg_catalog.gs_undo_translot_dump_slot(int4, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT slot_ptr text, OUT gs_undo_translot oid) CASCADE;
|
||||
SET LOCAL inplace_upgrade_next_system_object_oids = IUO_PROC, 4541;
|
||||
CREATE OR REPLACE FUNCTION pg_catalog.gs_undo_translot_dump_slot(int4, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT slot_ptr text, OUT gs_undo_translot oid)
|
||||
RETURNS SETOF record LANGUAGE INTERNAL as 'gs_undo_translot_dump_slot';
|
||||
|
||||
/*------ add sys fuction gs_undo_translot_dump_xid ------*/
|
||||
DROP FUNCTION IF EXISTS pg_catalog.gs_undo_translot_dump_xid(xid, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT lsn text, OUT gs_undo_translot oid) CASCADE;
|
||||
DROP FUNCTION IF EXISTS pg_catalog.gs_undo_translot_dump_xid(xid, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT slot_ptr text, OUT gs_undo_translot oid) CASCADE;
|
||||
SET LOCAL inplace_upgrade_next_system_object_oids = IUO_PROC, 4438;
|
||||
CREATE OR REPLACE FUNCTION pg_catalog.gs_undo_translot_dump_xid(xid, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT slot_ptr text, OUT gs_undo_translot oid)
|
||||
RETURNS SETOF record LANGUAGE INTERNAL as 'gs_undo_translot_dump_xid';
|
||||
@ -0,0 +1,15 @@
|
||||
/*------ add sys fuction gs_undo_translot_dump_slot ------*/
|
||||
DROP FUNCTION IF EXISTS pg_catalog.gs_undo_translot_dump_slot(int4, int4, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT lsn text, OUT gs_undo_translot oid) CASCADE;
|
||||
DROP FUNCTION IF EXISTS pg_catalog.gs_undo_translot_dump_slot(int4, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT lsn text, OUT gs_undo_translot oid) CASCADE;
|
||||
DROP FUNCTION IF EXISTS pg_catalog.gs_undo_translot_dump_slot(int4, int4, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT slot_ptr text, OUT gs_undo_translot oid) CASCADE;
|
||||
DROP FUNCTION IF EXISTS pg_catalog.gs_undo_translot_dump_slot(int4, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT slot_ptr text, OUT gs_undo_translot oid) CASCADE;
|
||||
SET LOCAL inplace_upgrade_next_system_object_oids = IUO_PROC, 4541;
|
||||
CREATE OR REPLACE FUNCTION pg_catalog.gs_undo_translot_dump_slot(int4, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT slot_ptr text, OUT gs_undo_translot oid)
|
||||
RETURNS SETOF record LANGUAGE INTERNAL as 'gs_undo_translot_dump_slot';
|
||||
|
||||
/*------ add sys fuction gs_undo_translot_dump_xid ------*/
|
||||
DROP FUNCTION IF EXISTS pg_catalog.gs_undo_translot_dump_xid(xid, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT lsn text, OUT gs_undo_translot oid) CASCADE;
|
||||
DROP FUNCTION IF EXISTS pg_catalog.gs_undo_translot_dump_xid(xid, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT slot_ptr text, OUT gs_undo_translot oid) CASCADE;
|
||||
SET LOCAL inplace_upgrade_next_system_object_oids = IUO_PROC, 4438;
|
||||
CREATE OR REPLACE FUNCTION pg_catalog.gs_undo_translot_dump_xid(xid, boolean, OUT zone_id oid, OUT slot_xid text, OUT start_undoptr text, OUT end_undoptr text, OUT slot_ptr text, OUT gs_undo_translot oid)
|
||||
RETURNS SETOF record LANGUAGE INTERNAL as 'gs_undo_translot_dump_xid';
|
||||
@ -71,6 +71,8 @@ public:
|
||||
|
||||
static void setCurrentOpFusionObj(OpFusion* obj);
|
||||
|
||||
static void setOpFusionReuseObj(OpFusion* obj);
|
||||
|
||||
static bool process(int op, StringInfo msg, char* completionTag, bool isTopLevel, bool* isQueryCompleted);
|
||||
|
||||
static void SaveInGPC(OpFusion* obj);
|
||||
|
||||
Reference in New Issue
Block a user