Skip to content

Commit

Permalink
allow to specify delete sign col in flexible partial update
Browse files Browse the repository at this point in the history
  • Loading branch information
bobhan1 committed Aug 22, 2024
1 parent ace9799 commit 40a5580
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 11 deletions.
2 changes: 1 addition & 1 deletion be/src/olap/partial_update_info.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -387,7 +387,7 @@ Status FlexibleReadPlan::fill_non_sort_key_columns(
const vectorized::Block* block, std::vector<BitmapValue>* skip_bitmaps) const {
auto mutable_full_columns = full_block.mutate_columns();

// missing_cids are all non key columns' cids
// missing_cids are all non sort key columns' cids
const auto& non_sort_key_cids = rowset_ctx->partial_update_info->missing_cids;
auto old_value_block = tablet_schema.create_block_by_cids(non_sort_key_cids);
CHECK_EQ(non_sort_key_cids.size(), old_value_block.columns());
Expand Down
15 changes: 5 additions & 10 deletions be/src/olap/rowset/segment_v2/vertical_segment_writer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -643,9 +643,12 @@ Status VerticalSegmentWriter::_append_block_with_flexible_partial_content(
bool has_default_or_nullable = false;
std::vector<bool> use_default_or_null_flag;
use_default_or_null_flag.reserve(data.num_rows);

const auto* delete_sign_column_data =
BaseTablet::get_delete_sign_column_data(*data.block, data.row_pos + data.num_rows);
DCHECK(delete_sign_column_data != nullptr);
int32_t delete_sign_col_unique_id =
_tablet_schema->column(_tablet_schema->delete_sign_idx()).unique_id();

std::vector<RowsetSharedPtr> specified_rowsets;
{
Expand Down Expand Up @@ -700,7 +703,8 @@ Status VerticalSegmentWriter::_append_block_with_flexible_partial_content(
}

// mark key with delete sign as deleted.
bool have_delete_sign = (delete_sign_column_data[block_pos] != 0);
bool have_delete_sign = (!skip_bitmap.contains(delete_sign_col_unique_id) &&
delete_sign_column_data[block_pos] != 0);

RowLocation loc;
// save rowset shared ptr so this rowset wouldn't delete
Expand Down Expand Up @@ -779,15 +783,6 @@ Status VerticalSegmentWriter::_append_block_with_flexible_partial_content(
_mow_context->rowset_ids);
}

// all hidden columns will not be marked in skip bitmap
// row_store_col will be filled in _serialize_block_to_row_column
full_block.replace_by_position(
_tablet_schema->version_col_idx(),
data.block->get_by_position(_tablet_schema->version_col_idx()).column);
full_block.replace_by_position(
_tablet_schema->skip_bitmap_col_idx(),
data.block->get_by_position(_tablet_schema->skip_bitmap_col_idx()).column);

// read to fill full_block
RETURN_IF_ERROR(read_plan.fill_non_sort_key_columns(
_opts.rowset_ctx, _rsid_to_rowset, *_tablet_schema, full_block,
Expand Down
6 changes: 6 additions & 0 deletions fe/fe-core/src/main/java/org/apache/doris/load/Load.java
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,12 @@ private static void initColumns(Table tbl, List<ImportColumnDesc> columnExprs,
copiedColumnExprs.add(columnDesc);
}
if (hasSkipBitmapColumn && isFlexiblePartialUpdate) {
Preconditions.checkArgument(!specifyFileFieldNames);
Preconditions.checkArgument(hiddenColumns == null);
if (LOG.isDebugEnabled()) {
LOG.debug("add hidden column {} to stream load task", Column.DELETE_SIGN);
}
copiedColumnExprs.add(new ImportColumnDesc(Column.DELETE_SIGN));
if (LOG.isDebugEnabled()) {
LOG.debug("add hidden column {} to stream load task", Column.SKIP_BITMAP_COL);
}
Expand Down

0 comments on commit 40a5580

Please sign in to comment.