/* -------------------------------------------------------------------------
 *  This file is part of the oGRAC project.
 * Copyright (c) 2024 Huawei Technologies Co.,Ltd.
 *
 * oGRAC is licensed under Mulan PSL v2.
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 * You may obtain a copy of Mulan PSL v2 at:
 *
 *          http://license.coscl.org.cn/MulanPSL2
 *
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PSL v2 for more details.
 * -------------------------------------------------------------------------
 *
 * knl_dc_persistent.h
 *
 *
 * IDENTIFICATION
 * src/upgrade_check/knl_dc_persistent.h
 *
 * -------------------------------------------------------------------------
 */
#ifndef __KNL_DC_PERSISTENT_H__
#define __KNL_DC_PERSISTENT_H__
#ifdef __cplusplus
extern "C" {
#endif
typedef struct st_rd_table {
    uint32 op_type;
    uint32 uid;
    uint32 oid;
} rd_table_t;

typedef struct st_create_heap_entry {
    rd_table_t tab_op;
    knl_part_locate_t part_loc;
    page_id_t entry;
} rd_create_heap_entry_t;

typedef struct st_create_btree_entry {
    rd_table_t tab_op;
    knl_part_locate_t part_loc;
    page_id_t entry;
    uint8 index_id;
    bool8 is_shadow;
} rd_create_btree_entry_t;

typedef struct st_create_lob_entry {
    rd_table_t tab_op;
    knl_part_locate_t part_loc;
    uint32 column_id;
    page_id_t entry;
} rd_create_lob_entry_t;

typedef struct st_rd_create_interval {
    rd_table_t tab_op;
    uint32 part_no;
    uint32 part_cnt;
} rd_create_interval_t;

typedef struct st_rd_create_table {
    uint32 op_type;
    uint32 uid;
    uint32 oid;
    char obj_name[OG_NAME_BUFFER_SIZE];
    knl_scn_t org_scn;
    knl_scn_t chg_scn;
    table_type_t type;
} rd_create_table_t;

typedef struct st_rd_create_view {
    uint32 op_type;
    uint32 uid;
    uint32 oid;
    char obj_name[OG_NAME_BUFFER_SIZE];
    knl_scn_t org_scn;
    knl_scn_t chg_scn;
    table_type_t type;
} rd_create_view_t;

typedef struct st_rd_create_segment {
    uint32 op_type;
    uint32 uid;
    uint32 oid;
} rd_create_segment_t;

typedef struct st_rd_rename_table {
    uint32 op_type;
    uint32 uid;
    uint32 oid;
    char new_name[OG_NAME_BUFFER_SIZE];
} rd_rename_table_t;

typedef struct st_rd_drop_table {
    uint32 op_type;
    bool32 purge;
    uint32 uid;
    uint32 oid;
    char name[OG_NAME_BUFFER_SIZE];
    knl_scn_t org_scn;
} rd_drop_table_t;

typedef struct st_rd_refresh_dc {
    uint32 op_type;
    uint32 uid;
    uint32 oid;
    bool32 load_subpart;
    uint32 parent_part_id;
} rd_refresh_dc_t;

#ifdef OG_RAC_ING
typedef struct st_rd_distribute_rule {
    uint32 op_type;
    uint32 uid;
    uint32 oid;
    char name[OG_NAME_BUFFER_SIZE];
} rd_distribute_rule_t;
#endif
#ifdef __cplusplus
}
#endif

#endif