本页目录

在线DDL

https://docs.opengauss.org/zh/docs/latest/database_administration_guide/online_ddl.html

DML的特殊路径

堆表插入改为Append-Only模式

Oid heap_insert(Relation relation, HeapTuple tup, CommandId cid, int options, BulkInsertState bistate, bool istoast)

    OnlineDDLRelOperators* operators = ((OnlineDDLRelOperators*)relation->rd_online_ddl_operators);
    bool onlineDDLAppendMode = (operators != NULL && operators->getAppendMode());
    if (unlikely(onlineDDLAppendMode)) {
        options |= HEAP_INSERT_SKIP_FSM;
        BlockNumber testBlockNum = OnlineDDLRelationGetEndCtidInternal(relation);
        BlockNumber testBlockNum2 = RelationGetNumberOfBlocks(relation);
        ItemPointerData endCtid = operators->getEndCtidForPartition(relation->rd_id);
        rel_end_block = ItemPointerGetBlockNumberNoCheck(&endCtid);
        ereport(ONLINE_DDL_LOG_LEVEL,
            (errmsg("heap insert: relation %s in online DDL append mode, rel_end_block %u, testBlockNum %u, testBlockNum2 %u",
                RelationGetRelationName(relation),
                rel_end_block,
                testBlockNum,
                testBlockNum2)));
    }

OpenGauss UStore似乎暂不支持