[BUGFIX] fix lob delete with MINIMAL mode
This commit is contained in:
@ -1726,6 +1726,41 @@ int ObDelUpdResolver::add_all_columns_to_stmt(const TableItem &table_item,
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObDelUpdResolver::add_all_lob_columns_to_stmt(const TableItem &table_item,
|
||||
ObIArray<ObColumnRefRawExpr*> &column_exprs)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
const ObTableSchema *table_schema = NULL;
|
||||
const TableItem& base_table_item = table_item.get_base_table_item();
|
||||
if (OB_ISNULL(params_.session_info_)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("params_.session_info_ is null", K(ret));
|
||||
} else if (OB_FAIL(schema_checker_->get_table_schema(params_.session_info_->get_effective_tenant_id(),
|
||||
base_table_item.ref_id_,
|
||||
table_schema,
|
||||
base_table_item.is_link_table()))) {
|
||||
LOG_WARN("not find table schema", K(ret), K(base_table_item));
|
||||
} else if (OB_ISNULL(table_schema)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("get unexpected null", K(table_schema), K(ret));
|
||||
} else {
|
||||
ObTableSchema::const_column_iterator iter = table_schema->column_begin();
|
||||
ObTableSchema::const_column_iterator end = table_schema->column_end();
|
||||
for (; OB_SUCC(ret) && iter != end; ++iter) {
|
||||
const ObColumnSchemaV2 *column = *iter;
|
||||
if (OB_ISNULL(column)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("invalid column schema", K(column));
|
||||
} else if (!column->get_meta_type().is_lob_storage()) {
|
||||
// do nothing
|
||||
} else if (OB_FAIL(add_column_to_stmt(table_item, *column, column_exprs))) {
|
||||
LOG_WARN("add column item to stmt failed", K(ret));
|
||||
}
|
||||
} //end for
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObDelUpdResolver::add_all_columns_to_stmt_for_trigger(const TableItem &table_item,
|
||||
ObIArray<ObColumnRefRawExpr*> &column_exprs)
|
||||
{
|
||||
|
||||
@ -220,6 +220,7 @@ protected:
|
||||
int create_session_row_label_expr(ObDmlTableInfo& table_info, uint64_t column_id, ObRawExpr *&expr);
|
||||
int add_select_items(ObSelectStmt &select_stmt, const ObIArray<SelectItem>& select_items);
|
||||
int add_select_list_for_set_stmt(ObSelectStmt &select_stmt);
|
||||
int add_all_lob_columns_to_stmt(const TableItem &table_item, ObIArray<ObColumnRefRawExpr*> &column_exprs);
|
||||
protected:
|
||||
int generate_insert_table_info(const TableItem &table_item,
|
||||
ObInsertTableInfo &table_info,
|
||||
|
||||
@ -419,6 +419,8 @@ int ObDeleteResolver::generate_delete_table_info(const TableItem &table_item)
|
||||
} else if (OB_FAIL(add_all_index_rowkey_to_stmt(table_item,
|
||||
table_info->column_exprs_))) {
|
||||
LOG_WARN("fail to add relate column to stmt", K(ret), K(table_item));
|
||||
} else if (OB_FAIL(add_all_lob_columns_to_stmt(table_item, table_info->column_exprs_))) {
|
||||
LOG_WARN("fail to add lob column to stmt", K(ret), K(table_item));
|
||||
}
|
||||
if (OB_SUCC(ret)) {
|
||||
table_info->table_id_ = table_item.table_id_;
|
||||
|
||||
Reference in New Issue
Block a user