This is an automated email from the ASF dual-hosted git repository.
gongxun pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudberry.git
The following commit(s) were added to refs/heads/main by this push:
new 1ca7a645469 perf: use unique_ptr instead of shared_ptr (#1374)
1ca7a645469 is described below
commit 1ca7a645469f175349887a63960b9daa1ed415c5
Author: Xun Gong <[email protected]>
AuthorDate: Wed Oct 8 23:24:47 2025 +0800
perf: use unique_ptr instead of shared_ptr (#1374)
performance: replace unnecessary shared_ptr with unique_ptr to eliminate
atomic refcounting and reduce contention on hot insert paths.
---
.../src/cpp/storage/columns/pax_column.cc | 12 ++---
.../src/cpp/storage/columns/pax_column.h | 16 ++++---
.../src/cpp/storage/columns/pax_column_test.cc | 26 +++++------
.../src/cpp/storage/columns/pax_encoding_column.cc | 6 +--
.../src/cpp/storage/columns/pax_encoding_column.h | 2 +-
.../columns/pax_encoding_non_fixed_column.cc | 12 ++---
.../columns/pax_encoding_non_fixed_column.h | 4 +-
.../src/cpp/storage/orc/orc_format_reader.cc | 52 +++++++++++-----------
8 files changed, 66 insertions(+), 64 deletions(-)
diff --git a/contrib/pax_storage/src/cpp/storage/columns/pax_column.cc
b/contrib/pax_storage/src/cpp/storage/columns/pax_column.cc
index 7d4daf6aaf0..eb1a47aa41e 100644
--- a/contrib/pax_storage/src/cpp/storage/columns/pax_column.cc
+++ b/contrib/pax_storage/src/cpp/storage/columns/pax_column.cc
@@ -208,7 +208,7 @@ std::string PaxColumn::DebugString() {
template <typename T>
PaxCommColumn<T>::PaxCommColumn(uint32 capacity) {
- data_ = std::make_shared<DataBuffer<T>>(capacity * sizeof(T));
+ data_ = std::make_unique<DataBuffer<T>>(capacity * sizeof(T));
}
template <typename T>
@@ -218,7 +218,7 @@ template <typename T> // NOLINT: redirect constructor
PaxCommColumn<T>::PaxCommColumn() : PaxCommColumn(DEFAULT_CAPACITY) {}
template <typename T>
-void PaxCommColumn<T>::Set(std::shared_ptr<DataBuffer<T>> data) {
+void PaxCommColumn<T>::Set(std::unique_ptr<DataBuffer<T>> data) {
data_ = std::move(data);
}
@@ -318,8 +318,8 @@ template class PaxCommColumn<double>;
PaxNonFixedColumn::PaxNonFixedColumn(uint32 data_capacity,
uint32 offsets_capacity)
: estimated_size_(0),
- data_(std::make_shared<DataBuffer<char>>(data_capacity)),
- offsets_(std::make_shared<DataBuffer<int32>>(offsets_capacity)),
+ data_(std::make_unique<DataBuffer<char>>(data_capacity)),
+ offsets_(std::make_unique<DataBuffer<int32>>(offsets_capacity)),
next_offsets_(0) {}
PaxNonFixedColumn::PaxNonFixedColumn()
@@ -327,8 +327,8 @@ PaxNonFixedColumn::PaxNonFixedColumn()
PaxNonFixedColumn::~PaxNonFixedColumn() {}
-void PaxNonFixedColumn::Set(std::shared_ptr<DataBuffer<char>> data,
- std::shared_ptr<DataBuffer<int32>> offsets,
+void PaxNonFixedColumn::Set(std::unique_ptr<DataBuffer<char>> data,
+ std::unique_ptr<DataBuffer<int32>> offsets,
size_t total_size) {
estimated_size_ = total_size;
data_ = std::move(data);
diff --git a/contrib/pax_storage/src/cpp/storage/columns/pax_column.h
b/contrib/pax_storage/src/cpp/storage/columns/pax_column.h
index 45c78bc0de0..569293fb512 100644
--- a/contrib/pax_storage/src/cpp/storage/columns/pax_column.h
+++ b/contrib/pax_storage/src/cpp/storage/columns/pax_column.h
@@ -239,7 +239,9 @@ class PaxColumn {
}
// Get the null bitmap
- inline const std::unique_ptr<Bitmap8>& GetBitmap() const { return
null_bitmap_; }
+ inline const std::unique_ptr<Bitmap8> &GetBitmap() const {
+ return null_bitmap_;
+ }
// Set the column kv attributes
void SetAttributes(const std::map<std::string, std::string> &attrs);
@@ -425,7 +427,7 @@ class PaxCommColumn : public PaxColumn {
PaxCommColumn();
- virtual void Set(std::shared_ptr<DataBuffer<T>> data);
+ virtual void Set(std::unique_ptr<DataBuffer<T>> data);
PaxColumnTypeInMem GetPaxColumnTypeInMem() const override;
@@ -455,7 +457,7 @@ class PaxCommColumn : public PaxColumn {
int32 GetTypeLength() const override;
protected:
- std::shared_ptr<DataBuffer<T>> data_;
+ std::unique_ptr<DataBuffer<T>> data_;
};
extern template class PaxCommColumn<char>;
@@ -474,8 +476,8 @@ class PaxNonFixedColumn : public PaxColumn {
~PaxNonFixedColumn() override;
- virtual void Set(std::shared_ptr<DataBuffer<char>> data,
- std::shared_ptr<DataBuffer<int32>> offsets,
+ virtual void Set(std::unique_ptr<DataBuffer<char>> data,
+ std::unique_ptr<DataBuffer<int32>> offsets,
size_t total_size);
void Append(char *buffer, size_t size) override;
@@ -514,13 +516,13 @@ class PaxNonFixedColumn : public PaxColumn {
protected:
size_t estimated_size_;
- std::shared_ptr<DataBuffer<char>> data_;
+ std::unique_ptr<DataBuffer<char>> data_;
// orc needs to serialize int32 array
// the length of a single tuple field will not exceed 2GB,
// so a variable-length element of the offsets stream can use int32
// to represent the length
- std::shared_ptr<DataBuffer<int32>> offsets_;
+ std::unique_ptr<DataBuffer<int32>> offsets_;
// used to record next offset in write path
// in read path, next_offsets_ always be -1
diff --git a/contrib/pax_storage/src/cpp/storage/columns/pax_column_test.cc
b/contrib/pax_storage/src/cpp/storage/columns/pax_column_test.cc
index f39e453cfee..b1c75c39217 100644
--- a/contrib/pax_storage/src/cpp/storage/columns/pax_column_test.cc
+++ b/contrib/pax_storage/src/cpp/storage/columns/pax_column_test.cc
@@ -137,7 +137,7 @@ static std::unique_ptr<PaxColumn> CreateDecodeColumn(
std::unique_ptr<PaxColumn> column_rc;
switch (bits) {
case 16: {
- auto buffer_for_read = std::make_shared<DataBuffer<int16>>(
+ auto buffer_for_read = std::make_unique<DataBuffer<int16>>(
reinterpret_cast<int16 *>(encoded_buff), encoded_len, false, false);
buffer_for_read->Brush(encoded_len);
@@ -145,19 +145,19 @@ static std::unique_ptr<PaxColumn> CreateDecodeColumn(
auto int_column =
ColumnOptCreateTraits<PaxEncodingColumn, int16>::create_decoding(
origin_len / sizeof(int16), std::move(decoding_option));
- int_column->Set(buffer_for_read);
+ int_column->Set(std::move(buffer_for_read));
column_rc = std::move(int_column);
} else {
auto int_column =
ColumnOptCreateTraits<PaxVecEncodingColumn,
int16>::create_decoding(
origin_len / sizeof(int16), std::move(decoding_option));
- int_column->Set(buffer_for_read, column_not_nulls);
+ int_column->Set(std::move(buffer_for_read), column_not_nulls);
column_rc = std::move(int_column);
}
break;
}
case 32: {
- auto buffer_for_read = std::make_shared<DataBuffer<int32>>(
+ auto buffer_for_read = std::make_unique<DataBuffer<int32>>(
reinterpret_cast<int32 *>(encoded_buff), encoded_len, false, false);
buffer_for_read->Brush(encoded_len);
@@ -165,19 +165,19 @@ static std::unique_ptr<PaxColumn> CreateDecodeColumn(
auto int_column =
ColumnOptCreateTraits<PaxEncodingColumn, int32>::create_decoding(
origin_len / sizeof(int32), std::move(decoding_option));
- int_column->Set(buffer_for_read);
+ int_column->Set(std::move(buffer_for_read));
column_rc = std::move(int_column);
} else {
auto int_column =
ColumnOptCreateTraits<PaxVecEncodingColumn,
int32>::create_decoding(
origin_len / sizeof(int32), std::move(decoding_option));
- int_column->Set(buffer_for_read, column_not_nulls);
+ int_column->Set(std::move(buffer_for_read), column_not_nulls);
column_rc = std::move(int_column);
}
break;
}
case 64: {
- auto buffer_for_read = std::make_shared<DataBuffer<int64>>(
+ auto buffer_for_read = std::make_unique<DataBuffer<int64>>(
reinterpret_cast<int64 *>(encoded_buff), encoded_len, false, false);
buffer_for_read->Brush(encoded_len);
@@ -185,13 +185,13 @@ static std::unique_ptr<PaxColumn> CreateDecodeColumn(
auto int_column =
ColumnOptCreateTraits<PaxEncodingColumn, int64>::create_decoding(
origin_len / sizeof(int64), std::move(decoding_option));
- int_column->Set(buffer_for_read);
+ int_column->Set(std::move(buffer_for_read));
column_rc = std::move(int_column);
} else {
auto int_column =
ColumnOptCreateTraits<PaxVecEncodingColumn,
int64>::create_decoding(
origin_len / sizeof(int64), std::move(decoding_option));
- int_column->Set(buffer_for_read, column_not_nulls);
+ int_column->Set(std::move(buffer_for_read), column_not_nulls);
column_rc = std::move(int_column);
}
break;
@@ -749,14 +749,14 @@ TEST_P(PaxNonFixedColumnCompressTest,
auto non_fixed_column_for_read = new PaxNonFixedEncodingColumn(
number_of_rows * number, sizeof(int32) * number_of_rows,
std::move(decoding_option));
- auto data_buffer_for_read = std::make_shared<DataBuffer<char>>(
+ auto data_buffer_for_read = std::make_unique<DataBuffer<char>>(
encoded_buff, encoded_len, false, false);
data_buffer_for_read->Brush(encoded_len);
- auto length_buffer_cpy = std::make_shared<DataBuffer<int32>>(
+ auto length_buffer_cpy = std::make_unique<DataBuffer<int32>>(
(int32 *)offset_stream_buff, offset_stream_len, false, false);
length_buffer_cpy->BrushAll();
- non_fixed_column_for_read->Set(data_buffer_for_read, length_buffer_cpy,
- origin_len);
+ non_fixed_column_for_read->Set(std::move(data_buffer_for_read),
+ std::move(length_buffer_cpy), origin_len);
ASSERT_EQ(non_fixed_column_for_read->GetCompressLevel(), 5);
char *verify_buff;
size_t verify_len;
diff --git a/contrib/pax_storage/src/cpp/storage/columns/pax_encoding_column.cc
b/contrib/pax_storage/src/cpp/storage/columns/pax_encoding_column.cc
index b59a5b879c1..0f93467812b 100644
--- a/contrib/pax_storage/src/cpp/storage/columns/pax_encoding_column.cc
+++ b/contrib/pax_storage/src/cpp/storage/columns/pax_encoding_column.cc
@@ -124,7 +124,7 @@ void PaxEncodingColumn<T>::InitDecoder() {
}
template <typename T>
-void PaxEncodingColumn<T>::Set(std::shared_ptr<DataBuffer<T>> data) {
+void PaxEncodingColumn<T>::Set(std::unique_ptr<DataBuffer<T>> data) {
if (decoder_) {
// should not decoding null
if (data->Used() != 0) {
@@ -155,7 +155,7 @@ void
PaxEncodingColumn<T>::Set(std::shared_ptr<DataBuffer<T>> data) {
Assert(!data->IsMemTakeOver());
} else {
- PaxCommColumn<T>::Set(data);
+ PaxCommColumn<T>::Set(std::move(data));
}
}
@@ -175,7 +175,7 @@ std::pair<char *, size_t> PaxEncodingColumn<T>::GetBuffer()
{
if (encoder_) {
// changed streaming encode to blocking encode
// because we still need store a origin data in `PaxCommColumn<T>`
- auto origin_data_buffer = PaxCommColumn<T>::data_;
+ auto origin_data_buffer = PaxCommColumn<T>::data_.get();
shared_data_ =
std::make_shared<DataBuffer<char>>(origin_data_buffer->Used());
encoder_->SetDataBuffer(shared_data_);
diff --git a/contrib/pax_storage/src/cpp/storage/columns/pax_encoding_column.h
b/contrib/pax_storage/src/cpp/storage/columns/pax_encoding_column.h
index 773a7848f2f..5a5f1c378ba 100644
--- a/contrib/pax_storage/src/cpp/storage/columns/pax_encoding_column.h
+++ b/contrib/pax_storage/src/cpp/storage/columns/pax_encoding_column.h
@@ -44,7 +44,7 @@ class PaxEncodingColumn : public PaxCommColumn<T> {
~PaxEncodingColumn() override;
- void Set(std::shared_ptr<DataBuffer<T>> data) override;
+ void Set(std::unique_ptr<DataBuffer<T>> data) override;
std::pair<char *, size_t> GetBuffer() override;
diff --git
a/contrib/pax_storage/src/cpp/storage/columns/pax_encoding_non_fixed_column.cc
b/contrib/pax_storage/src/cpp/storage/columns/pax_encoding_non_fixed_column.cc
index 90060050236..359a1c483a9 100644
---
a/contrib/pax_storage/src/cpp/storage/columns/pax_encoding_non_fixed_column.cc
+++
b/contrib/pax_storage/src/cpp/storage/columns/pax_encoding_non_fixed_column.cc
@@ -145,8 +145,8 @@ PaxNonFixedEncodingColumn::PaxNonFixedEncodingColumn(
PaxNonFixedEncodingColumn::~PaxNonFixedEncodingColumn() {}
-void PaxNonFixedEncodingColumn::Set(std::shared_ptr<DataBuffer<char>> data,
- std::shared_ptr<DataBuffer<int32>> offsets,
+void PaxNonFixedEncodingColumn::Set(std::unique_ptr<DataBuffer<char>> data,
+ std::unique_ptr<DataBuffer<int32>> offsets,
size_t total_size) {
bool exist_decoder;
Assert(data && offsets);
@@ -179,7 +179,7 @@ void
PaxNonFixedEncodingColumn::Set(std::shared_ptr<DataBuffer<char>> data,
// `data_` have the same buffer with `shared_data_`
PaxNonFixedColumn::data_->Brush(shared_data_->Used());
// no delete the origin data
- shared_data_ = data;
+ shared_data_ = std::move(data);
}
};
@@ -228,16 +228,16 @@ void
PaxNonFixedEncodingColumn::Set(std::shared_ptr<DataBuffer<char>> data,
PaxNonFixedColumn::next_offsets_ = -1;
} else if (exist_decoder && !has_offsets_processor) {
data_decompress();
- PaxNonFixedColumn::offsets_ = offsets;
+ PaxNonFixedColumn::offsets_ = std::move(offsets);
PaxNonFixedColumn::estimated_size_ = total_size;
PaxNonFixedColumn::next_offsets_ = -1;
} else if (!exist_decoder && has_offsets_processor) {
- PaxNonFixedColumn::data_ = data;
+ PaxNonFixedColumn::data_ = std::move(data);
offsets_decompress();
PaxNonFixedColumn::estimated_size_ = total_size;
PaxNonFixedColumn::next_offsets_ = -1;
} else { // (!compressor_ && !offsets_compressor_)
- PaxNonFixedColumn::Set(data, offsets, total_size);
+ PaxNonFixedColumn::Set(std::move(data), std::move(offsets), total_size);
}
}
diff --git
a/contrib/pax_storage/src/cpp/storage/columns/pax_encoding_non_fixed_column.h
b/contrib/pax_storage/src/cpp/storage/columns/pax_encoding_non_fixed_column.h
index 06b60d02ac2..f5f5fd82128 100644
---
a/contrib/pax_storage/src/cpp/storage/columns/pax_encoding_non_fixed_column.h
+++
b/contrib/pax_storage/src/cpp/storage/columns/pax_encoding_non_fixed_column.h
@@ -42,8 +42,8 @@ class PaxNonFixedEncodingColumn : public PaxNonFixedColumn {
~PaxNonFixedEncodingColumn() override;
- void Set(std::shared_ptr<DataBuffer<char>> data,
- std::shared_ptr<DataBuffer<int32>> offsets,
+ void Set(std::unique_ptr<DataBuffer<char>> data,
+ std::unique_ptr<DataBuffer<int32>> offsets,
size_t total_size) override;
std::pair<char *, size_t> GetBuffer() override;
diff --git a/contrib/pax_storage/src/cpp/storage/orc/orc_format_reader.cc
b/contrib/pax_storage/src/cpp/storage/orc/orc_format_reader.cc
index 2fa58790d97..9e939305c61 100644
--- a/contrib/pax_storage/src/cpp/storage/orc/orc_format_reader.cc
+++ b/contrib/pax_storage/src/cpp/storage/orc/orc_format_reader.cc
@@ -413,14 +413,14 @@ static std::unique_ptr<PaxColumn> BuildEncodingColumn(
const ColumnEncoding &data_encoding, bool is_vec) {
uint32 not_null_rows = 0;
uint64 data_stream_len = 0;
- std::shared_ptr<DataBuffer<T>> data_stream_buffer;
+ std::unique_ptr<DataBuffer<T>> data_stream_buffer;
Assert(data_stream.kind() == pax::porc::proto::Stream_Kind_DATA);
not_null_rows = static_cast<uint32>(data_stream.column());
data_stream_len = static_cast<uint64>(data_stream.length());
- data_stream_buffer = std::make_shared<DataBuffer<T>>(
+ data_stream_buffer = std::make_unique<DataBuffer<T>>(
reinterpret_cast<T *>(data_buffer->GetAvailableBuffer()),
data_stream_len,
false, false);
@@ -443,7 +443,7 @@ static std::unique_ptr<PaxColumn> BuildEncodingColumn(
auto pax_column =
traits::ColumnOptCreateTraits<PaxVecEncodingColumn,
T>::create_decoding(
alloc_size, decoding_option);
- pax_column->Set(data_stream_buffer, (size_t)not_null_rows);
+ pax_column->Set(std::move(data_stream_buffer), (size_t)not_null_rows);
return pax_column;
} else {
AssertImply(data_encoding.kind() ==
@@ -455,7 +455,7 @@ static std::unique_ptr<PaxColumn> BuildEncodingColumn(
auto pax_column =
traits::ColumnOptCreateTraits<PaxEncodingColumn, T>::create_decoding(
alloc_size, decoding_option);
- pax_column->Set(data_stream_buffer);
+ pax_column->Set(std::move(data_stream_buffer));
return pax_column;
}
}
@@ -466,14 +466,14 @@ static std::unique_ptr<PaxColumn>
BuildEncodingBitPackedColumn(
bool is_vec) {
uint32 not_null_rows = 0;
uint64 column_data_len = 0;
- std::shared_ptr<DataBuffer<int8>> column_data_buffer;
+ std::unique_ptr<DataBuffer<int8>> column_data_buffer;
Assert(data_stream.kind() == pax::porc::proto::Stream_Kind_DATA);
not_null_rows = static_cast<uint32>(data_stream.column());
column_data_len = static_cast<uint64>(data_stream.length());
- column_data_buffer = std::make_shared<DataBuffer<int8>>(
+ column_data_buffer = std::make_unique<DataBuffer<int8>>(
reinterpret_cast<int8 *>(data_buffer->GetAvailableBuffer()),
column_data_len, false, false);
@@ -496,7 +496,7 @@ static std::unique_ptr<PaxColumn>
BuildEncodingBitPackedColumn(
auto pax_column =
traits::ColumnOptCreateTraits2<PaxVecBitPackedColumn>::create_decoding(
alloc_size, decoding_option);
- pax_column->Set(column_data_buffer, (size_t)not_null_rows);
+ pax_column->Set(std::move(column_data_buffer), (size_t)not_null_rows);
return pax_column;
} else {
AssertImply(data_encoding.kind() ==
@@ -508,7 +508,7 @@ static std::unique_ptr<PaxColumn>
BuildEncodingBitPackedColumn(
auto pax_column =
traits::ColumnOptCreateTraits2<PaxBitPackedColumn>::create_decoding(
alloc_size, decoding_option);
- pax_column->Set(column_data_buffer);
+ pax_column->Set(std::move(column_data_buffer));
return pax_column;
}
}
@@ -521,8 +521,8 @@ static std::unique_ptr<PaxColumn>
BuildEncodingDecimalColumn(
uint32 not_null_rows = 0;
uint64 offset_stream_len = 0;
uint64 data_stream_len = 0;
- std::shared_ptr<DataBuffer<int32>> offset_stream_buffer;
- std::shared_ptr<DataBuffer<char>> data_stream_buffer;
+ std::unique_ptr<DataBuffer<int32>> offset_stream_buffer;
+ std::unique_ptr<DataBuffer<char>> data_stream_buffer;
std::unique_ptr<PaxNonFixedColumn> pax_column;
uint64 padding = 0;
@@ -530,7 +530,7 @@ static std::unique_ptr<PaxColumn>
BuildEncodingDecimalColumn(
offset_stream_len = static_cast<uint64>(len_stream.length());
padding = len_stream.padding();
- offset_stream_buffer = std::make_shared<DataBuffer<int32>>(
+ offset_stream_buffer = std::make_unique<DataBuffer<int32>>(
reinterpret_cast<int32 *>(data_buffer->GetAvailableBuffer()),
offset_stream_len, false, false);
@@ -560,7 +560,7 @@ static std::unique_ptr<PaxColumn>
BuildEncodingDecimalColumn(
}
#endif
- data_stream_buffer = std::make_shared<DataBuffer<char>>(
+ data_stream_buffer = std::make_unique<DataBuffer<char>>(
data_buffer->GetAvailableBuffer(), data_stream_len, false, false);
data_stream_buffer->BrushAll();
data_buffer->Brush(data_stream_len);
@@ -591,7 +591,7 @@ static std::unique_ptr<PaxColumn>
BuildEncodingDecimalColumn(
data_cap, offsets_cap, std::move(decoding_option));
// current memory will be freed in pax_columns->data_
- pax_column->Set(data_stream_buffer, offset_stream_buffer, data_stream_len);
+ pax_column->Set(std::move(data_stream_buffer),
std::move(offset_stream_buffer), data_stream_len);
return pax_column;
}
@@ -601,7 +601,7 @@ static std::unique_ptr<PaxColumn>
BuildVecEncodingDecimalColumn(
const ColumnEncoding &data_encoding, bool is_vec) {
uint32 not_null_rows = 0;
uint64 data_stream_len = 0;
- std::shared_ptr<DataBuffer<int8>> data_stream_buffer;
+ std::unique_ptr<DataBuffer<int8>> data_stream_buffer;
CBDB_CHECK(is_vec, cbdb::CException::ExType::kExTypeLogicError);
@@ -610,7 +610,7 @@ static std::unique_ptr<PaxColumn>
BuildVecEncodingDecimalColumn(
not_null_rows = static_cast<uint32>(data_stream.column());
data_stream_len = static_cast<uint64>(data_stream.length());
- data_stream_buffer = std::make_shared<DataBuffer<int8>>(
+ data_stream_buffer = std::make_unique<DataBuffer<int8>>(
reinterpret_cast<int8 *>(data_buffer->GetAvailableBuffer()),
data_stream_len, false, false);
@@ -630,7 +630,7 @@ static std::unique_ptr<PaxColumn>
BuildVecEncodingDecimalColumn(
auto pax_column = traits::ColumnOptCreateTraits2<PaxShortNumericColumn>:: //
create_decoding(alloc_size, decoding_option);
- pax_column->Set(data_stream_buffer, (size_t)not_null_rows);
+ pax_column->Set(std::move(data_stream_buffer), (size_t)not_null_rows);
return pax_column;
}
@@ -644,8 +644,8 @@ static std::unique_ptr<PaxColumn>
BuildEncodingVecNonFixedColumn(
uint64 offset_stream_len = 0;
uint64 padding = 0;
uint64 data_stream_len = 0;
- std::shared_ptr<DataBuffer<int32>> offset_stream_buffer;
- std::shared_ptr<DataBuffer<char>> data_stream_buffer;
+ std::unique_ptr<DataBuffer<int32>> offset_stream_buffer;
+ std::unique_ptr<DataBuffer<char>> data_stream_buffer;
std::unique_ptr<PaxVecNonFixedColumn> pax_column;
PaxDecoder::DecodingOption decoding_option;
size_t data_cap, offsets_cap;
@@ -658,7 +658,7 @@ static std::unique_ptr<PaxColumn>
BuildEncodingVecNonFixedColumn(
offset_stream_len = static_cast<uint64>(len_stream.length());
padding = len_stream.padding();
- offset_stream_buffer = std::make_shared<DataBuffer<int32>>(
+ offset_stream_buffer = std::make_unique<DataBuffer<int32>>(
reinterpret_cast<int32 *>(data_buffer->GetAvailableBuffer()),
offset_stream_len, false, false);
@@ -676,7 +676,7 @@ static std::unique_ptr<PaxColumn>
BuildEncodingVecNonFixedColumn(
}
data_buffer->Brush(offset_stream_len);
- data_stream_buffer = std::make_shared<DataBuffer<char>>(
+ data_stream_buffer = std::make_unique<DataBuffer<char>>(
data_buffer->GetAvailableBuffer(), data_stream_len, false, false);
decoding_option.column_encode_type = data_encoding.kind();
@@ -730,7 +730,7 @@ static std::unique_ptr<PaxColumn>
BuildEncodingVecNonFixedColumn(
create_decoding(data_cap, offsets_cap, std::move(decoding_option));
}
}
- pax_column->Set(data_stream_buffer, offset_stream_buffer, data_stream_len,
+ pax_column->Set(std::move(data_stream_buffer),
std::move(offset_stream_buffer), data_stream_len,
not_null_rows);
return pax_column;
}
@@ -743,8 +743,8 @@ static std::unique_ptr<PaxColumn>
BuildEncodingNonFixedColumn(
[[maybe_unused]] uint32 not_null_rows = 0;
uint64 offset_stream_len = 0;
uint64 data_stream_len = 0;
- std::shared_ptr<DataBuffer<int32>> offset_stream_buffer;
- std::shared_ptr<DataBuffer<char>> data_stream_buffer;
+ std::unique_ptr<DataBuffer<int32>> offset_stream_buffer;
+ std::unique_ptr<DataBuffer<char>> data_stream_buffer;
std::unique_ptr<PaxNonFixedColumn> pax_column;
uint64 padding = 0;
PaxDecoder::DecodingOption decoding_option;
@@ -754,7 +754,7 @@ static std::unique_ptr<PaxColumn>
BuildEncodingNonFixedColumn(
offset_stream_len = static_cast<uint64>(len_stream.length());
padding = len_stream.padding();
- offset_stream_buffer = std::make_shared<DataBuffer<int32>>(
+ offset_stream_buffer = std::make_unique<DataBuffer<int32>>(
reinterpret_cast<int32 *>(data_buffer->GetAvailableBuffer()),
offset_stream_len, false, false);
@@ -776,7 +776,7 @@ static std::unique_ptr<PaxColumn>
BuildEncodingNonFixedColumn(
}
#endif
- data_stream_buffer = std::make_shared<DataBuffer<char>>(
+ data_stream_buffer = std::make_unique<DataBuffer<char>>(
data_buffer->GetAvailableBuffer(), data_stream_len, false, false);
data_stream_buffer->BrushAll();
data_buffer->Brush(data_stream_len);
@@ -819,7 +819,7 @@ static std::unique_ptr<PaxColumn>
BuildEncodingNonFixedColumn(
}
// current memory will be freed in pax_columns->data_
- pax_column->Set(data_stream_buffer, offset_stream_buffer, data_stream_len);
+ pax_column->Set(std::move(data_stream_buffer),
std::move(offset_stream_buffer), data_stream_len);
return pax_column;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]