* 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.
* -------------------------------------------------------------------------
*
* rb_purge.h
*
*
* IDENTIFICATION
* src/kernel/flashback/rb_purge.h
*
* -------------------------------------------------------------------------
*/
#ifndef _RB_PURGE_H_
#define _RB_PURGE_H_
#include "rb_truncate.h"
#include "cm_defs.h"
#include "knl_interface.h"
#include "knl_session.h"
#include "knl_part_output.h"
#include "knl_log.h"
#include "rb_purge_persistent.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef enum en_rb_object_type {
RB_TABLE_OBJECT = 0,
RB_INDEX_OBJECT = 1,
RB_LOB_OBJECT = 2,
RB_TABLE_PART_OBJECT = 3,
RB_INDEX_PART_OBJECT = 4,
RB_LOB_PART_OBJECT = 5,
RB_TABLE_SUBPART_OBJECT = 6,
RB_INDEX_SUBPART_OBJECT = 7,
RB_LOB_SUBPART_OBJECT = 8,
} rb_object_type_t;
status_t rb_purge(knl_session_t *session, knl_rb_desc_t *desc);
status_t rb_purge_table(knl_session_t *session, knl_rb_desc_t *desc);
status_t rb_purge_index(knl_session_t *session, knl_rb_desc_t *desc);
status_t rb_purge_table_part(knl_session_t *session, knl_rb_desc_t *desc);
status_t rb_purge_space(knl_session_t *session, uint32 space_id);
status_t rb_purge_recyclebin(knl_session_t *session);
status_t rb_purge_drop_related(knl_session_t *session, uint32 uid, uint32 oid);
status_t rb_purge_user(knl_session_t *session, uint32 uid);
status_t rb_purge_fetch_space(knl_session_t *session, uint32 space_id, knl_rb_desc_t *desc, bool32 *found);
status_t rb_purge_fetch_object(knl_session_t *session, knl_purge_def_t *def, rb_object_type_t type,
knl_rb_desc_t *desc);
status_t rb_purge_fetch_name(knl_session_t *session, knl_purge_def_t *def,
rb_object_type_t type, knl_rb_desc_t *desc);
status_t rb_flashback_drop_table(knl_session_t *session, knl_flashback_def_t *def);
status_t rb_flashback_truncate_table(knl_session_t *session, knl_dictionary_t *dc, bool32 is_force);
status_t rb_flashback_truncate_tabpart(knl_session_t *session, knl_dictionary_t *dc, text_t *part_name,
bool32 is_force);
status_t rb_flashback_truncate_tabsubpart(knl_session_t *session, knl_dictionary_t *dc, text_t *part_name,
bool32 is_force);
void rd_flashback_drop_table(knl_session_t *session, log_entry_t *log);
void print_flashback_drop_table(log_entry_t *log);
#ifdef __cplusplus
}
#endif
#endif