This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-4.0 by this push:
new fbcdcac4709 branch-4.0: [chore](json) Use const to qualify related
functions when possible #58696 (#58702)
fbcdcac4709 is described below
commit fbcdcac4709b721554bc0fca4638612a4109f49d
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Fri Dec 5 11:43:16 2025 +0800
branch-4.0: [chore](json) Use const to qualify related functions when
possible #58696 (#58702)
Cherry-picked from #58696
Co-authored-by: Jerry Hu <[email protected]>
---
be/src/util/jsonb_document.cpp | 2 +-
be/src/util/jsonb_document.h | 91 +++++----------
be/src/util/jsonb_utils.h | 2 +-
be/src/util/jsonb_writer.h | 9 +-
be/src/vec/data_types/convert_field_to_type.cpp | 2 +-
.../vec/data_types/serde/data_type_jsonb_serde.cpp | 2 +-
be/src/vec/data_types/serde/data_type_serde.cpp | 2 +-
be/src/vec/data_types/serde/data_type_serde.h | 8 +-
.../exprs/table_function/vexplode_json_object.cpp | 8 +-
be/src/vec/functions/cast/cast_to_jsonb.h | 4 +-
be/src/vec/functions/function_json.cpp | 6 +-
be/src/vec/functions/function_json_hash.cpp | 2 +-
be/src/vec/functions/function_jsonb.cpp | 50 ++++----
be/src/vec/functions/function_jsonb_transform.cpp | 4 +-
be/src/vec/jsonb/serialize.cpp | 4 +-
be/src/vec/olap/olap_data_convertor.cpp | 4 +-
be/test/util/jsonb_serialize_test.cpp | 2 +-
.../vec/data_types/common_data_type_serder_test.h | 4 +-
.../serde/data_type_jsonb_serde_test.cpp | 4 +-
.../serde/data_type_serde_agg_state_test.cpp | 8 +-
.../serde/data_type_serde_bitmap_test.cpp | 4 +-
.../serde/data_type_serde_datetime_v1_test.cpp | 4 +-
.../serde/data_type_serde_datetime_v2_test.cpp | 4 +-
.../serde/data_type_serde_decimal_test.cpp | 4 +-
.../data_type_serde_fixed_length_object_test.cpp | 4 +-
.../data_types/serde/data_type_serde_hll_test.cpp | 4 +-
.../serde/data_type_serde_number_test.cpp | 4 +-
.../serde/data_type_serde_quantile_state_test.cpp | 4 +-
.../serde/data_type_serde_string_test.cpp | 4 +-
.../vec/data_types/serde/data_type_serde_test.cpp | 8 +-
be/test/vec/jsonb/convert_field_to_type_test.cpp | 30 ++---
be/test/vec/jsonb/jsonb_document_cast_test.cpp | 128 ++++++++++-----------
be/test/vec/jsonb/jsonb_document_test.cpp | 8 +-
33 files changed, 196 insertions(+), 232 deletions(-)
diff --git a/be/src/util/jsonb_document.cpp b/be/src/util/jsonb_document.cpp
index 2ffa8f129e1..2cebd3f2221 100644
--- a/be/src/util/jsonb_document.cpp
+++ b/be/src/util/jsonb_document.cpp
@@ -147,7 +147,7 @@ JsonbFindResult JsonbValue::findValue(JsonbPath& path)
const {
}
result.writer->writeEndArray();
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
THROW_IF_ERROR(JsonbDocument::checkAndCreateDocument(
result.writer->getOutput()->getBuffer(),
result.writer->getOutput()->getSize(),
&doc));
diff --git a/be/src/util/jsonb_document.h b/be/src/util/jsonb_document.h
index 34f47fa0b01..9e3bdaed796 100644
--- a/be/src/util/jsonb_document.h
+++ b/be/src/util/jsonb_document.h
@@ -520,21 +520,17 @@ class JsonbDocument {
public:
// create an JsonbDocument object from JSONB packed bytes
[[nodiscard]] static Status checkAndCreateDocument(const char* pb, size_t
size,
- JsonbDocument** doc);
+ const JsonbDocument**
doc);
// create an JsonbValue from JSONB packed bytes
- static JsonbValue* createValue(const char* pb, size_t size);
+ static const JsonbValue* createValue(const char* pb, size_t size);
uint8_t version() const { return header_.ver_; }
- JsonbValue* getValue() { return ((JsonbValue*)payload_); }
-
- void setValue(const JsonbValue* value);
+ const JsonbValue* getValue() const { return ((const JsonbValue*)payload_);
}
unsigned int numPackedBytes() const;
- // ObjectVal* operator->();
-
const ObjectVal* operator->() const;
private:
@@ -594,7 +590,9 @@ public:
return size ? (sizeof(size) + size) : (sizeof(size) +
sizeof(keyid_type));
}
- JsonbValue* value() const { return (JsonbValue*)(((char*)this) +
keyPackedBytes()); }
+ const JsonbValue* value() const {
+ return (const JsonbValue*)(((char*)this) + keyPackedBytes());
+ }
// size of the total packed bytes (key+value)
unsigned int numPackedBytes() const;
@@ -697,7 +695,7 @@ struct JsonbValue {
int numElements() const;
//Whether to include the jsonbvalue rhs
- bool contains(JsonbValue* rhs) const;
+ bool contains(const JsonbValue* rhs) const;
// find the JSONB value by JsonbPath
JsonbFindResult findValue(JsonbPath& path) const;
@@ -751,7 +749,7 @@ struct JsonbValue {
// }
inline const ObjectVal* JsonbDocument::operator->() const {
- return (((JsonbValue*)payload_)->unpack<ObjectVal>());
+ return (((const JsonbValue*)payload_)->unpack<ObjectVal>());
}
/*
@@ -881,29 +879,16 @@ struct ObjectVal : public ContainerVal {
using value_type = JsonbKeyValue;
using pointer = value_type*;
using const_pointer = const value_type*;
- using iterator = JsonbFwdIteratorT<pointer, ObjectVal>;
using const_iterator = JsonbFwdIteratorT<const_pointer, ObjectVal>;
const_iterator search(const char* key) const {
- // Calling a non-const method on a const variable and does not modify
the
- // variable; using const_cast is permissible
- return const_cast<ObjectVal*>(this)->search(key);
- }
-
- const_iterator search(const char* key, unsigned int klen) const {
- // Calling a non-const method on a const variable and does not modify
the
- // variable; using const_cast is permissible
- return const_cast<ObjectVal*>(this)->search(key, klen);
- }
-
- iterator search(const char* key) {
if (!key) {
return end();
}
return search(key, (unsigned int)strlen(key));
}
- iterator search(const char* key, unsigned int klen) {
+ const_iterator search(const char* key, unsigned int klen) const {
if (!key || !klen) {
return end();
}
@@ -927,20 +912,8 @@ struct ObjectVal : public ContainerVal {
return num;
}
- const JsonbValue* find(const char* key) const {
- // Calling a non-const method on a const variable and does not modify
the
- // variable; using const_cast is permissible
- return const_cast<ObjectVal*>(this)->find(key);
- }
-
- const JsonbValue* find(const char* key, unsigned int klen) const {
- // Calling a non-const method on a const variable and does not modify
the
- // variable; using const_cast is permissible
- return const_cast<ObjectVal*>(this)->find(key, klen);
- }
-
// find the JSONB value by a key string (null terminated)
- JsonbValue* find(const char* key) {
+ const JsonbValue* find(const char* key) const {
if (!key) {
return nullptr;
}
@@ -948,33 +921,29 @@ struct ObjectVal : public ContainerVal {
}
// find the JSONB value by a key string (with length)
- JsonbValue* find(const char* key, unsigned int klen) {
- iterator kv = search(key, klen);
+ const JsonbValue* find(const char* key, unsigned int klen) const {
+ const_iterator kv = search(key, klen);
if (end() == kv) {
return nullptr;
}
return kv->value();
}
- iterator begin() { return iterator((pointer)payload); }
-
const_iterator begin() const { return const_iterator((pointer)payload); }
- iterator end() { return iterator((pointer)(payload + size)); }
-
const_iterator end() const { return const_iterator((pointer)(payload +
size)); }
std::vector<std::pair<StringRef, const JsonbValue*>>
get_ordered_key_value_pairs() const;
private:
- iterator internalSearch(const char* key, unsigned int klen) {
+ const_iterator internalSearch(const char* key, unsigned int klen) const {
const char* pch = payload;
const char* fence = payload + size;
while (pch < fence) {
- auto* pkey = (JsonbKeyValue*)(pch);
+ const auto* pkey = (const JsonbKeyValue*)(pch);
if (klen == pkey->klen() && strncmp(key, pkey->getKeyStr(), klen)
== 0) {
- return iterator(pkey);
+ return const_iterator(pkey);
}
pch += pkey->numPackedBytes();
}
@@ -992,11 +961,10 @@ struct ArrayVal : public ContainerVal {
using value_type = JsonbValue;
using pointer = value_type*;
using const_pointer = const value_type*;
- using iterator = JsonbFwdIteratorT<pointer, ArrayVal>;
using const_iterator = JsonbFwdIteratorT<const_pointer, ArrayVal>;
// get the JSONB value at index
- JsonbValue* get(int idx) const {
+ const JsonbValue* get(int idx) const {
if (idx < 0) {
return nullptr;
}
@@ -1005,13 +973,13 @@ struct ArrayVal : public ContainerVal {
const char* fence = payload + size;
while (pch < fence && idx-- > 0) {
- pch += ((JsonbValue*)pch)->numPackedBytes();
+ pch += ((const JsonbValue*)pch)->numPackedBytes();
}
if (idx > 0 || pch == fence) {
return nullptr;
}
- return (JsonbValue*)pch;
+ return (const JsonbValue*)pch;
}
// Get number of elements in array
@@ -1022,7 +990,7 @@ struct ArrayVal : public ContainerVal {
unsigned int num = 0;
while (pch < fence) {
++num;
- pch += ((JsonbValue*)pch)->numPackedBytes();
+ pch += ((const JsonbValue*)pch)->numPackedBytes();
}
assert(pch == fence);
@@ -1030,30 +998,26 @@ struct ArrayVal : public ContainerVal {
return num;
}
- iterator begin() { return iterator((pointer)payload); }
-
const_iterator begin() const { return const_iterator((pointer)payload); }
- iterator end() { return iterator((pointer)(payload + size)); }
-
const_iterator end() const { return const_iterator((pointer)(payload +
size)); }
};
inline Status JsonbDocument::checkAndCreateDocument(const char* pb, size_t
size,
- JsonbDocument** doc) {
+ const JsonbDocument** doc)
{
*doc = nullptr;
if (!pb || size < sizeof(JsonbHeader) + sizeof(JsonbValue)) {
return Status::InvalidArgument("Invalid JSONB document: too small
size({}) or null pointer",
size);
}
- auto* doc_ptr = (JsonbDocument*)pb;
+ const auto* doc_ptr = (const JsonbDocument*)pb;
if (doc_ptr->header_.ver_ != JSONB_VER) {
return Status::InvalidArgument("Invalid JSONB document: invalid
version({})",
doc_ptr->header_.ver_);
}
- auto* val = (JsonbValue*)doc_ptr->payload_;
+ const auto* val = (const JsonbValue*)doc_ptr->payload_;
if (val->type < JsonbType::T_Null || val->type >= JsonbType::NUM_TYPES ||
size != sizeof(JsonbHeader) + val->numPackedBytes()) {
return Status::InvalidArgument("Invalid JSONB document: invalid
type({}) or size({})",
@@ -1063,11 +1027,8 @@ inline Status
JsonbDocument::checkAndCreateDocument(const char* pb, size_t size,
*doc = doc_ptr;
return Status::OK();
}
-inline void JsonbDocument::setValue(const JsonbValue* value) {
- memcpy(payload_, value, value->numPackedBytes());
-}
-inline JsonbValue* JsonbDocument::createValue(const char* pb, size_t size) {
+inline const JsonbValue* JsonbDocument::createValue(const char* pb, size_t
size) {
if (!pb || size < sizeof(JsonbHeader) + sizeof(JsonbValue)) {
return nullptr;
}
@@ -1077,7 +1038,7 @@ inline JsonbValue* JsonbDocument::createValue(const char*
pb, size_t size) {
return nullptr;
}
- auto* val = (JsonbValue*)doc->payload_;
+ const auto* val = (const JsonbValue*)doc->payload_;
if (size != sizeof(JsonbHeader) + val->numPackedBytes()) {
return nullptr;
}
@@ -1091,7 +1052,7 @@ inline unsigned int JsonbDocument::numPackedBytes() const
{
inline unsigned int JsonbKeyValue::numPackedBytes() const {
unsigned int ks = keyPackedBytes();
- auto* val = (JsonbValue*)(((char*)this) + ks);
+ const auto* val = (const JsonbValue*)(((char*)this) + ks);
return ks + val->numPackedBytes();
}
@@ -1187,7 +1148,7 @@ inline int JsonbValue::numElements() const {
static_cast<int32_t>(type));
}
-inline bool JsonbValue::contains(JsonbValue* rhs) const {
+inline bool JsonbValue::contains(const JsonbValue* rhs) const {
switch (type) {
case JsonbType::T_Int8:
case JsonbType::T_Int16:
diff --git a/be/src/util/jsonb_utils.h b/be/src/util/jsonb_utils.h
index 938de6a6cb6..17ed9a43d34 100644
--- a/be/src/util/jsonb_utils.h
+++ b/be/src/util/jsonb_utils.h
@@ -38,7 +38,7 @@ public:
// get json string
std::string to_json_string(const char* data, size_t size) {
- JsonbDocument* pdoc;
+ const JsonbDocument* pdoc;
THROW_IF_ERROR(doris::JsonbDocument::checkAndCreateDocument(data,
size, &pdoc));
return to_json_string(pdoc->getValue());
}
diff --git a/be/src/util/jsonb_writer.h b/be/src/util/jsonb_writer.h
index 2f059525fa0..32d2babc64e 100644
--- a/be/src/util/jsonb_writer.h
+++ b/be/src/util/jsonb_writer.h
@@ -550,16 +550,19 @@ public:
}
OS_TYPE* getOutput() { return os_; }
- JsonbDocument* getDocument() {
- JsonbDocument* doc = nullptr;
+
+#ifdef BE_TEST
+ const JsonbDocument* getDocument() {
+ const JsonbDocument* doc = nullptr;
THROW_IF_ERROR(JsonbDocument::checkAndCreateDocument(getOutput()->getBuffer(),
getOutput()->getSize(), &doc));
return doc;
}
- JsonbValue* getValue() {
+ const JsonbValue* getValue() {
return JsonbDocument::createValue(getOutput()->getBuffer(),
getOutput()->getSize());
}
+#endif
bool writeEnd() {
while (!stack_.empty()) {
diff --git a/be/src/vec/data_types/convert_field_to_type.cpp
b/be/src/vec/data_types/convert_field_to_type.cpp
index 420affd91b1..bdd3a7922ba 100644
--- a/be/src/vec/data_types/convert_field_to_type.cpp
+++ b/be/src/vec/data_types/convert_field_to_type.cpp
@@ -94,7 +94,7 @@ public:
writer->writeEndString();
}
void operator()(const JsonbField& x, JsonbWriter* writer) const {
- JsonbDocument* doc;
+ const JsonbDocument* doc;
THROW_IF_ERROR(JsonbDocument::checkAndCreateDocument(x.get_value(),
x.get_size(), &doc));
writer->writeValue(doc->getValue());
}
diff --git a/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp
b/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp
index 47eac3bc600..53afaf24cfc 100644
--- a/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp
@@ -267,7 +267,7 @@ void convert_jsonb_to_rapidjson(const JsonbValue& val,
rapidjson::Value& target,
Status DataTypeJsonbSerDe::serialize_column_to_jsonb(const IColumn&
from_column, int64_t row_num,
JsonbWriter& writer)
const {
const auto& jsonb_binary = assert_cast<const
ColumnString&>(from_column).get_data_at(row_num);
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
RETURN_IF_ERROR(
JsonbDocument::checkAndCreateDocument(jsonb_binary.data,
jsonb_binary.size, &doc));
diff --git a/be/src/vec/data_types/serde/data_type_serde.cpp
b/be/src/vec/data_types/serde/data_type_serde.cpp
index 6a190140ae6..bffe0a2dde7 100644
--- a/be/src/vec/data_types/serde/data_type_serde.cpp
+++ b/be/src/vec/data_types/serde/data_type_serde.cpp
@@ -97,7 +97,7 @@ Status
DataTypeSerDe::deserialize_column_from_jsonb_vector(ColumnNullable& colum
const bool is_strict = castParms.is_strict;
for (size_t i = 0; i < size; ++i) {
const auto& val = col_from_json.get_data_at(i);
- auto* value = handle_jsonb_value(val);
+ const auto* value = handle_jsonb_value(val);
if (!value) {
column_to.insert_default();
continue;
diff --git a/be/src/vec/data_types/serde/data_type_serde.h
b/be/src/vec/data_types/serde/data_type_serde.h
index e98460dc795..52961f75e5b 100644
--- a/be/src/vec/data_types/serde/data_type_serde.h
+++ b/be/src/vec/data_types/serde/data_type_serde.h
@@ -393,7 +393,7 @@ public:
// if jsonb is invalid, return nullptr
// if josnb is null json , return nullptr
// else return jsonb_value
- static JsonbValue* handle_jsonb_value(const StringRef& val);
+ static const JsonbValue* handle_jsonb_value(const StringRef& val);
virtual Status deserialize_column_from_jsonb_vector(ColumnNullable&
column_to,
const ColumnString&
from_column,
@@ -500,8 +500,8 @@ inline Status checkArrowStatus(const arrow::Status& status,
const std::string& c
return Status::OK();
}
-inline JsonbValue* DataTypeSerDe::handle_jsonb_value(const StringRef& val) {
- JsonbDocument* doc = nullptr;
+inline const JsonbValue* DataTypeSerDe::handle_jsonb_value(const StringRef&
val) {
+ const JsonbDocument* doc = nullptr;
if (val.size == 0) {
return nullptr;
}
@@ -509,7 +509,7 @@ inline JsonbValue* DataTypeSerDe::handle_jsonb_value(const
StringRef& val) {
if (!st.ok() || !doc || !doc->getValue()) [[unlikely]] {
return nullptr;
}
- JsonbValue* value = doc->getValue();
+ const JsonbValue* value = doc->getValue();
if (UNLIKELY(!value)) {
return nullptr;
}
diff --git a/be/src/vec/exprs/table_function/vexplode_json_object.cpp
b/be/src/vec/exprs/table_function/vexplode_json_object.cpp
index 59b43dc1bcb..a79472c49ad 100644
--- a/be/src/vec/exprs/table_function/vexplode_json_object.cpp
+++ b/be/src/vec/exprs/table_function/vexplode_json_object.cpp
@@ -57,25 +57,25 @@ void VExplodeJsonObjectTableFunction::process_row(size_t
row_idx) {
StringRef text = _json_object_column->get_data_at(row_idx);
if (text.data != nullptr) {
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(text.data, text.size,
&doc);
if (!st.ok() || !doc || !doc->getValue()) [[unlikely]] {
// error jsonb, put null into output, cur_size = 0 , we will
insert_default
return;
}
// value is NOT necessary to be deleted since JsonbValue will not
allocate memory
- JsonbValue* value = doc->getValue();
+ const JsonbValue* value = doc->getValue();
auto writer = std::make_unique<JsonbWriter>();
if (value->isObject()) {
_cur_size = value->numElements();
- auto* obj = value->unpack<ObjectVal>();
+ const auto* obj = value->unpack<ObjectVal>();
_object_pairs.first =
ColumnNullable::create(ColumnString::create(),
ColumnUInt8::create());
_object_pairs.second =
ColumnNullable::create(ColumnString::create(),
ColumnUInt8::create());
_object_pairs.first->reserve(_cur_size);
_object_pairs.second->reserve(_cur_size);
- for (auto& it : *obj) {
+ for (const auto& it : *obj) {
_object_pairs.first->insert_data(it.getKeyStr(), it.klen());
writer->reset();
writer->writeValue(it.value());
diff --git a/be/src/vec/functions/cast/cast_to_jsonb.h
b/be/src/vec/functions/cast/cast_to_jsonb.h
index 9391dbfb55b..8a3e9ae0623 100644
--- a/be/src/vec/functions/cast/cast_to_jsonb.h
+++ b/be/src/vec/functions/cast/cast_to_jsonb.h
@@ -56,7 +56,7 @@ struct ConvertImplGenericFromJsonb {
const bool is_dst_string =
is_string_type(data_type_to->get_primitive_type());
for (size_t i = 0; i < size; ++i) {
const auto& val = col_from_string->get_data_at(i);
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(val.data,
val.size, &doc);
if (!st.ok() || !doc || !doc->getValue()) [[unlikely]] {
(*vec_null_map_to)[i] = 1;
@@ -65,7 +65,7 @@ struct ConvertImplGenericFromJsonb {
}
// value is NOT necessary to be deleted since JsonbValue will
not allocate memory
- JsonbValue* value = doc->getValue();
+ const JsonbValue* value = doc->getValue();
if (UNLIKELY(!value)) {
(*vec_null_map_to)[i] = 1;
col_to->insert_default();
diff --git a/be/src/vec/functions/function_json.cpp
b/be/src/vec/functions/function_json.cpp
index 837858fac95..3ef077a47dd 100644
--- a/be/src/vec/functions/function_json.cpp
+++ b/be/src/vec/functions/function_json.cpp
@@ -320,7 +320,7 @@ struct JsonParser<'7'> {
static void update_value(StringParser::ParseResult& result,
rapidjson::Value& value,
StringRef data,
rapidjson::Document::AllocatorType& allocator) {
rapidjson::Document document;
- JsonbValue* json_val = JsonbDocument::createValue(data.data,
data.size);
+ const JsonbValue* json_val = JsonbDocument::createValue(data.data,
data.size);
convert_jsonb_to_rapidjson(*json_val, document, allocator);
value.CopyFrom(document, allocator);
}
@@ -509,13 +509,13 @@ public:
vec_to[i] = 0;
continue;
}
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(val.data,
val.size, &doc);
if (!st.ok() || !doc || !doc->getValue()) [[unlikely]] {
vec_to[i] = 0;
continue;
}
- JsonbValue* value = doc->getValue();
+ const JsonbValue* value = doc->getValue();
if (UNLIKELY(!value)) {
vec_to[i] = 0;
continue;
diff --git a/be/src/vec/functions/function_json_hash.cpp
b/be/src/vec/functions/function_json_hash.cpp
index fd20a221708..264a1f946ec 100644
--- a/be/src/vec/functions/function_json_hash.cpp
+++ b/be/src/vec/functions/function_json_hash.cpp
@@ -77,7 +77,7 @@ public:
for (size_t i = 0; i < size; ++i) {
StringRef val = input_jsonb_column.get_data_at(i);
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(val.data,
val.size, &doc);
if (!st.ok() || !doc || !doc->getValue()) [[unlikely]] {
// mayby be invalid jsonb, just insert default
diff --git a/be/src/vec/functions/function_jsonb.cpp
b/be/src/vec/functions/function_jsonb.cpp
index abfbc527d4b..4594fd6e668 100644
--- a/be/src/vec/functions/function_jsonb.cpp
+++ b/be/src/vec/functions/function_jsonb.cpp
@@ -252,7 +252,7 @@ public:
std::tie(default_value_col, default_value_const) =
unpack_if_const(block.get_by_position(arguments[1]).column);
if (default_value_const) {
- JsonbDocument* default_value_doc = nullptr;
+ const JsonbDocument* default_value_doc = nullptr;
if (default_value_col->is_null_at(0)) {
default_value_null_const = true;
} else {
@@ -595,7 +595,7 @@ private:
}
auto json_data = col_from_string.get_data_at(index);
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(json_data.data,
json_data.size, &doc);
if (!st.ok() || !doc || !doc->getValue()) [[unlikely]] {
dst_arr.clear();
@@ -775,7 +775,7 @@ private:
static ALWAYS_INLINE void inner_loop_impl(size_t i, Container& res, const
char* l_raw_str,
size_t l_str_size, JsonbPath&
path) {
// doc is NOT necessary to be deleted since JsonbDocument will not
allocate memory
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(l_raw_str, l_str_size,
&doc);
if (!st.ok() || !doc || !doc->getValue()) [[unlikely]] {
return;
@@ -876,7 +876,7 @@ private:
std::unique_ptr<JsonbToJson>&
formater,
const char* l_raw, size_t
l_size, JsonbPath& path) {
// doc is NOT necessary to be deleted since JsonbDocument will not
allocate memory
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(l_raw, l_size, &doc);
if (!st.ok() || !doc || !doc->getValue()) [[unlikely]] {
StringOP::push_null_string(i, res_data, res_offsets, null_map);
@@ -1005,7 +1005,7 @@ public:
bool has_value = false;
// doc is NOT necessary to be deleted since JsonbDocument will
not allocate memory
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(l_raw, l_size,
&doc);
for (size_t pi = 0; pi < rdata_columns.size(); ++pi) {
@@ -1184,7 +1184,7 @@ private:
}
// doc is NOT necessary to be deleted since JsonbDocument will not
allocate memory
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(l_raw_str, l_str_size,
&doc);
if (!st.ok() || !doc || !doc->getValue()) [[unlikely]] {
null_map[i] = 1;
@@ -1425,7 +1425,7 @@ struct JsonbLengthUtil {
}
auto jsonb_value = jsonb_data_column->get_data_at(i);
// doc is NOT necessary to be deleted since JsonbDocument will not
allocate memory
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
RETURN_IF_ERROR(JsonbDocument::checkAndCreateDocument(jsonb_value.data,
jsonb_value.size, &doc));
auto find_result = doc->getValue()->findValue(path);
@@ -1547,16 +1547,16 @@ struct JsonbContainsUtil {
continue;
}
// doc is NOT necessary to be deleted since JsonbDocument will not
allocate memory
- JsonbDocument* doc1 = nullptr;
+ const JsonbDocument* doc1 = nullptr;
RETURN_IF_ERROR(JsonbDocument::checkAndCreateDocument(jsonb_value1.data,
jsonb_value1.size, &doc1));
- JsonbDocument* doc2 = nullptr;
+ const JsonbDocument* doc2 = nullptr;
RETURN_IF_ERROR(JsonbDocument::checkAndCreateDocument(jsonb_value2.data,
jsonb_value2.size, &doc2));
auto find_result = doc1->getValue()->findValue(path);
const auto* value1 = find_result.value;
- JsonbValue* value2 = doc2->getValue();
+ const JsonbValue* value2 = doc2->getValue();
if (!value1 || !value2) {
null_map->get_data()[i] = 1;
res->insert_data(nullptr, 0);
@@ -1622,7 +1622,7 @@ public:
}
} else {
auto jsonb_binary = jsonb_column.get_data_at(index);
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto st =
JsonbDocument::checkAndCreateDocument(jsonb_binary.data,
jsonb_binary.size, &doc);
if (!st.ok() || !doc || !doc->getValue()) [[unlikely]]
{
@@ -1642,7 +1642,7 @@ public:
auto index = index_check_const(i, is_const);
auto jsonb_binary = jsonb_column.get_data_at(index);
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto st =
JsonbDocument::checkAndCreateDocument(jsonb_binary.data,
jsonb_binary.size, &doc);
if (!st.ok() || !doc || !doc->getValue()) [[unlikely]] {
@@ -1726,7 +1726,7 @@ public:
}
auto value_string = value_col.get_data_at(index);
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
RETURN_IF_ERROR(JsonbDocument::checkAndCreateDocument(value_string.data,
value_string.size, &doc));
writer.writeValue(doc->getValue());
@@ -1956,10 +1956,10 @@ public:
}
}
- DorisVector<JsonbDocument*> json_documents(input_rows_count);
+ DorisVector<const JsonbDocument*> json_documents(input_rows_count);
if (json_data_const) {
auto json_data_string = json_data_column->get_data_at(0);
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
RETURN_IF_ERROR(JsonbDocument::checkAndCreateDocument(json_data_string.data,
json_data_string.size, &doc));
if (!doc || !doc->getValue()) [[unlikely]] {
@@ -1977,7 +1977,7 @@ public:
}
auto json_data_string = json_data_column->get_data_at(i);
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
RETURN_IF_ERROR(JsonbDocument::checkAndCreateDocument(json_data_string.data,
json_data_string.size, &doc));
if (!doc || !doc->getValue()) [[unlikely]] {
@@ -1989,7 +1989,7 @@ public:
}
DorisVector<DorisVector<JsonbPath>> json_paths(keys_count);
- DorisVector<DorisVector<JsonbValue*>> json_values(keys_count);
+ DorisVector<DorisVector<const JsonbValue*>> json_values(keys_count);
RETURN_IF_ERROR(parse_paths_and_values(json_paths, json_values,
arguments, input_rows_count,
json_path_columns,
json_path_constant,
@@ -2115,7 +2115,7 @@ public:
if (!null_map[row_idx]) {
auto* ptr = res_chars.data() + res_offsets[row_idx - 1];
auto size = res_offsets[row_idx] - res_offsets[row_idx - 1];
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
THROW_IF_ERROR(JsonbDocument::checkAndCreateDocument(
reinterpret_cast<const char*>(ptr), size, &doc));
}
@@ -2272,7 +2272,7 @@ public:
}
Status parse_paths_and_values(DorisVector<DorisVector<JsonbPath>>&
json_paths,
- DorisVector<DorisVector<JsonbValue*>>&
json_values,
+ DorisVector<DorisVector<const JsonbValue*>>&
json_values,
const ColumnNumbers& arguments, const size_t
input_rows_count,
const std::vector<const ColumnString*>&
json_path_columns,
const std::vector<bool>& json_path_constant,
@@ -2316,7 +2316,7 @@ public:
}
auto value_string = value_column->get_data_at(row_idx);
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
RETURN_IF_ERROR(JsonbDocument::checkAndCreateDocument(value_string.data,
value_string.size, &doc));
if (doc) {
@@ -2477,7 +2477,7 @@ private:
continue;
}
const auto& json_doc_str = col_json_string(i);
- JsonbDocument* json_doc = nullptr;
+ const JsonbDocument* json_doc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(json_doc_str.data,
json_doc_str.size,
&json_doc);
if (!st.ok()) {
@@ -2810,7 +2810,7 @@ public:
// Parse JSON document
const auto& json_data = json_data_column->get_data_at(json_idx);
- JsonbDocument* json_doc = nullptr;
+ const JsonbDocument* json_doc = nullptr;
Status parse_status =
JsonbDocument::checkAndCreateDocument(json_data.data,
json_data.size, &json_doc);
@@ -2889,7 +2889,7 @@ public:
writer_output->getSize());
tmp_buffer.size = writer_output->getSize();
- JsonbDocument* new_doc = nullptr;
+ const JsonbDocument* new_doc = nullptr;
RETURN_IF_ERROR(JsonbDocument::checkAndCreateDocument(
tmp_buffer.ptr.get(), tmp_buffer.size, &new_doc));
@@ -2897,7 +2897,7 @@ public:
}
}
- JsonbDocument* modified_doc = nullptr;
+ const JsonbDocument* modified_doc = nullptr;
if (current_value != json_doc->getValue()) {
RETURN_IF_ERROR(JsonbDocument::checkAndCreateDocument(
tmp_buffer.ptr.get(), tmp_buffer.size, &modified_doc));
@@ -3070,7 +3070,7 @@ public:
result_data_col.insert_default();
continue;
}
- JsonbDocument* json_doc = nullptr;
+ const JsonbDocument* json_doc = nullptr;
const auto& json_str = json_column->get_data_at(i);
RETURN_IF_ERROR(
JsonbDocument::checkAndCreateDocument(json_str.data,
json_str.size, &json_doc));
diff --git a/be/src/vec/functions/function_jsonb_transform.cpp
b/be/src/vec/functions/function_jsonb_transform.cpp
index 34b9ca97467..d57ad314bc9 100644
--- a/be/src/vec/functions/function_jsonb_transform.cpp
+++ b/be/src/vec/functions/function_jsonb_transform.cpp
@@ -124,7 +124,7 @@ public:
JsonbWriter writer;
for (size_t i = 0; i < size; ++i) {
StringRef val = input_jsonb_column.get_data_at(i);
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(val.data,
val.size, &doc);
if (!st.ok() || !doc || !doc->getValue()) [[unlikely]] {
// mayby be invalid jsonb, just insert default
@@ -133,7 +133,7 @@ public:
to_column->insert_default();
continue;
}
- JsonbValue* value = doc->getValue();
+ const JsonbValue* value = doc->getValue();
if (UNLIKELY(!value)) {
// mayby be invalid jsonb, just insert default
// invalid jsonb value may be caused by the default null
processing
diff --git a/be/src/vec/jsonb/serialize.cpp b/be/src/vec/jsonb/serialize.cpp
index afafbe6d217..a4158f78b3f 100644
--- a/be/src/vec/jsonb/serialize.cpp
+++ b/be/src/vec/jsonb/serialize.cpp
@@ -91,9 +91,9 @@ Status JsonbSerializeUtil::jsonb_to_block(
const std::unordered_map<uint32_t, uint32_t>& col_id_to_idx, Block&
dst,
const std::vector<std::string>& default_values,
const std::unordered_set<int>& include_cids) {
- JsonbDocument* pdoc = nullptr;
+ const JsonbDocument* pdoc = nullptr;
RETURN_IF_ERROR(JsonbDocument::checkAndCreateDocument(data, size, &pdoc));
- JsonbDocument& doc = *pdoc;
+ const JsonbDocument& doc = *pdoc;
size_t num_rows = dst.rows();
size_t filled_columns = 0;
for (auto it = doc->begin(); it != doc->end(); ++it) {
diff --git a/be/src/vec/olap/olap_data_convertor.cpp
b/be/src/vec/olap/olap_data_convertor.cpp
index 5bcfae7ea43..3e28ae55f68 100644
--- a/be/src/vec/olap/olap_data_convertor.cpp
+++ b/be/src/vec/olap/olap_data_convertor.cpp
@@ -603,7 +603,7 @@ Status
OlapBlockDataConvertor::OlapColumnDataConvertorVarChar::convert_to_olap(
}
// Make sure that the json binary data written in is the
correct jsonb value.
if (_is_jsonb) {
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
RETURN_IF_ERROR(doris::JsonbDocument::checkAndCreateDocument(
slice->data, slice->size, &doc));
}
@@ -630,7 +630,7 @@ Status
OlapBlockDataConvertor::OlapColumnDataConvertorVarChar::convert_to_olap(
}
// Make sure that the json binary data written in is the correct
jsonb value.
if (_is_jsonb) {
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
RETURN_IF_ERROR(doris::JsonbDocument::checkAndCreateDocument(slice->data,
slice->size, &doc));
}
diff --git a/be/test/util/jsonb_serialize_test.cpp
b/be/test/util/jsonb_serialize_test.cpp
index ff3de97b0e9..946bb26b0bf 100644
--- a/be/test/util/jsonb_serialize_test.cpp
+++ b/be/test/util/jsonb_serialize_test.cpp
@@ -124,7 +124,7 @@ TEST_F(JsonbSerializeTest, serialize) {
ASSERT_EQ(memcmp(output->getBuffer(), serialized_data.data(),
serialized_data.size()), 0)
<< "Serialized data does not match expected data";
- JsonbDocument* jsonb_doc = nullptr;
+ const JsonbDocument* jsonb_doc = nullptr;
st = JsonbDocument::checkAndCreateDocument(output->getBuffer(),
output->getSize(), &jsonb_doc);
ASSERT_TRUE(st.ok()) << "Failed to create JsonbDocument: " <<
st.to_string();
}
diff --git a/be/test/vec/data_types/common_data_type_serder_test.h
b/be/test/vec/data_types/common_data_type_serder_test.h
index ae0756c278c..601b0a78f7f 100644
--- a/be/test/vec/data_types/common_data_type_serder_test.h
+++ b/be/test/vec/data_types/common_data_type_serder_test.h
@@ -288,11 +288,11 @@ public:
EXPECT_EQ(jsonb_column->size(), load_cols[0]->size());
for (size_t r = 0; r < jsonb_column->size(); ++r) {
StringRef jsonb_data = jsonb_column->get_data_at(r);
- JsonbDocument* pdoc = nullptr;
+ const JsonbDocument* pdoc = nullptr;
auto st =
JsonbDocument::checkAndCreateDocument(jsonb_data.data,
jsonb_data.size, &pdoc);
ASSERT_TRUE(st.ok()) << "checkAndCreateDocument failed: " <<
st.to_string();
- JsonbDocument& doc = *pdoc;
+ const JsonbDocument& doc = *pdoc;
size_t cIdx = 0;
for (auto it = doc->begin(); it != doc->end(); ++it) {
serders[cIdx]->read_one_cell_from_jsonb(*assert_cols[cIdx],
it->value());
diff --git a/be/test/vec/data_types/serde/data_type_jsonb_serde_test.cpp
b/be/test/vec/data_types/serde/data_type_jsonb_serde_test.cpp
index 895efd0efc3..1bb52c8d851 100644
--- a/be/test/vec/data_types/serde/data_type_jsonb_serde_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_jsonb_serde_test.cpp
@@ -171,12 +171,12 @@ TEST_F(DataTypeJsonbSerDeTest, serdes) {
ser_col->reserve(row_count);
MutableColumnPtr deser_column = source_column->clone_empty();
const auto* deser_col_with_type = assert_cast<const
ColumnType*>(deser_column.get());
- JsonbDocument* pdoc = nullptr;
+ const JsonbDocument* pdoc = nullptr;
auto st =
JsonbDocument::checkAndCreateDocument(jsonb_writer.getOutput()->getBuffer(),
jsonb_writer.getOutput()->getSize(),
&pdoc);
EXPECT_TRUE(st.ok()) << "Failed to check and create jsonb
document: " << st;
- JsonbDocument& doc = *pdoc;
+ const JsonbDocument& doc = *pdoc;
for (auto it = doc->begin(); it != doc->end(); ++it) {
serde.read_one_cell_from_jsonb(*deser_column, it->value());
}
diff --git a/be/test/vec/data_types/serde/data_type_serde_agg_state_test.cpp
b/be/test/vec/data_types/serde/data_type_serde_agg_state_test.cpp
index 70cf6158640..f56d4369318 100644
--- a/be/test/vec/data_types/serde/data_type_serde_agg_state_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_agg_state_test.cpp
@@ -58,10 +58,10 @@ TEST_F(AggStateSerdeTest, writeOneCellToJsonb) {
jsonb_column->insert_data(jsonb_writer.getOutput()->getBuffer(),
jsonb_writer.getOutput()->getSize());
StringRef jsonb_data = jsonb_column->get_data_at(0);
- JsonbDocument* pdoc = nullptr;
+ const JsonbDocument* pdoc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(jsonb_data.data,
jsonb_data.size, &pdoc);
ASSERT_TRUE(st.ok()) << "checkAndCreateDocument failed: " <<
st.to_string();
- JsonbDocument& doc = *pdoc;
+ const JsonbDocument& doc = *pdoc;
for (auto it = doc->begin(); it != doc->end(); ++it) {
datatype_agg_state_serde_count->read_one_cell_from_jsonb(*column_fixed_length,
it->value());
}
@@ -86,10 +86,10 @@ TEST_F(AggStateSerdeTest, writeOneCellToJsonb2) {
jsonb_column->insert_data(jsonb_writer.getOutput()->getBuffer(),
jsonb_writer.getOutput()->getSize());
StringRef jsonb_data = jsonb_column->get_data_at(0);
- JsonbDocument* pdoc = nullptr;
+ const JsonbDocument* pdoc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(jsonb_data.data,
jsonb_data.size, &pdoc);
ASSERT_TRUE(st.ok()) << "checkAndCreateDocument failed: " <<
st.to_string();
- JsonbDocument& doc = *pdoc;
+ const JsonbDocument& doc = *pdoc;
for (auto it = doc->begin(); it != doc->end(); ++it) {
datatype_agg_state_serde_hll_union->read_one_cell_from_jsonb(*column_string,
it->value());
}
diff --git a/be/test/vec/data_types/serde/data_type_serde_bitmap_test.cpp
b/be/test/vec/data_types/serde/data_type_serde_bitmap_test.cpp
index 2987d6c9a35..d088641c532 100644
--- a/be/test/vec/data_types/serde/data_type_serde_bitmap_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_bitmap_test.cpp
@@ -41,10 +41,10 @@ TEST(BitmapSerdeTest, writeOneCellToJsonb) {
jsonb_column->insert_data(jsonb_writer.getOutput()->getBuffer(),
jsonb_writer.getOutput()->getSize());
StringRef jsonb_data = jsonb_column->get_data_at(0);
- JsonbDocument* pdoc = nullptr;
+ const JsonbDocument* pdoc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(jsonb_data.data,
jsonb_data.size, &pdoc);
ASSERT_TRUE(st.ok()) << "checkAndCreateDocument failed: " <<
st.to_string();
- JsonbDocument& doc = *pdoc;
+ const JsonbDocument& doc = *pdoc;
for (auto it = doc->begin(); it != doc->end(); ++it) {
bitmap_serde->read_one_cell_from_jsonb(*column_bitmap, it->value());
}
diff --git a/be/test/vec/data_types/serde/data_type_serde_datetime_v1_test.cpp
b/be/test/vec/data_types/serde/data_type_serde_datetime_v1_test.cpp
index fa5a0729164..605978a9f2f 100644
--- a/be/test/vec/data_types/serde/data_type_serde_datetime_v1_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_datetime_v1_test.cpp
@@ -164,12 +164,12 @@ TEST_F(DataTypeDateTimeV1SerDeTest, serdes) {
ser_col->reserve(row_count);
MutableColumnPtr deser_column = source_column->clone_empty();
const auto* deser_col_with_type = assert_cast<const
ColumnType*>(deser_column.get());
- JsonbDocument* pdoc = nullptr;
+ const JsonbDocument* pdoc = nullptr;
auto st =
JsonbDocument::checkAndCreateDocument(jsonb_writer.getOutput()->getBuffer(),
jsonb_writer.getOutput()->getSize(),
&pdoc);
ASSERT_TRUE(st.ok()) << "checkAndCreateDocument failed: " <<
st.to_string();
- JsonbDocument& doc = *pdoc;
+ const JsonbDocument& doc = *pdoc;
for (auto it = doc->begin(); it != doc->end(); ++it) {
serde.read_one_cell_from_jsonb(*deser_column, it->value());
}
diff --git a/be/test/vec/data_types/serde/data_type_serde_datetime_v2_test.cpp
b/be/test/vec/data_types/serde/data_type_serde_datetime_v2_test.cpp
index 31661c2441e..d755f42d531 100644
--- a/be/test/vec/data_types/serde/data_type_serde_datetime_v2_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_datetime_v2_test.cpp
@@ -191,12 +191,12 @@ TEST_F(DataTypeDateTimeV2SerDeTest, serdes) {
ser_col->reserve(row_count);
MutableColumnPtr deser_column = source_column->clone_empty();
const auto* deser_col_with_type = assert_cast<const
ColumnType*>(deser_column.get());
- JsonbDocument* pdoc = nullptr;
+ const JsonbDocument* pdoc = nullptr;
auto st =
JsonbDocument::checkAndCreateDocument(jsonb_writer.getOutput()->getBuffer(),
jsonb_writer.getOutput()->getSize(),
&pdoc);
EXPECT_TRUE(st.ok()) << "Failed to create JsonbDocument: " << st;
- JsonbDocument& doc = *pdoc;
+ const JsonbDocument& doc = *pdoc;
for (auto it = doc->begin(); it != doc->end(); ++it) {
serde.read_one_cell_from_jsonb(*deser_column, it->value());
}
diff --git a/be/test/vec/data_types/serde/data_type_serde_decimal_test.cpp
b/be/test/vec/data_types/serde/data_type_serde_decimal_test.cpp
index 1be5a6befba..07076d4b4c0 100644
--- a/be/test/vec/data_types/serde/data_type_serde_decimal_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_decimal_test.cpp
@@ -250,12 +250,12 @@ TEST_F(DataTypeDecimalSerDeTest, serdes) {
ser_col->reserve(row_count);
MutableColumnPtr deser_column = source_column->clone_empty();
const auto* deser_col_with_type = assert_cast<const
ColumnType*>(deser_column.get());
- JsonbDocument* pdoc = nullptr;
+ const JsonbDocument* pdoc = nullptr;
auto st =
JsonbDocument::checkAndCreateDocument(jsonb_writer.getOutput()->getBuffer(),
jsonb_writer.getOutput()->getSize(),
&pdoc);
EXPECT_TRUE(st.ok()) << "Failed to create JsonbDocument: " << st;
- JsonbDocument& doc = *pdoc;
+ const JsonbDocument& doc = *pdoc;
for (auto it = doc->begin(); it != doc->end(); ++it) {
serde.read_one_cell_from_jsonb(*deser_column, it->value());
}
diff --git
a/be/test/vec/data_types/serde/data_type_serde_fixed_length_object_test.cpp
b/be/test/vec/data_types/serde/data_type_serde_fixed_length_object_test.cpp
index d7e2a84208c..7bdc0683e9d 100644
--- a/be/test/vec/data_types/serde/data_type_serde_fixed_length_object_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_fixed_length_object_test.cpp
@@ -41,10 +41,10 @@ TEST(FixedLengthObjectSerdeTest, writeOneCellToJsonb) {
jsonb_column->insert_data(jsonb_writer.getOutput()->getBuffer(),
jsonb_writer.getOutput()->getSize());
StringRef jsonb_data = jsonb_column->get_data_at(0);
- JsonbDocument* pdoc = nullptr;
+ const JsonbDocument* pdoc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(jsonb_data.data,
jsonb_data.size, &pdoc);
ASSERT_TRUE(st.ok()) << "checkAndCreateDocument failed: " <<
st.to_string();
- JsonbDocument& doc = *pdoc;
+ const JsonbDocument& doc = *pdoc;
for (auto it = doc->begin(); it != doc->end(); ++it) {
fixed_length_serde->read_one_cell_from_jsonb(*column_fixed_length,
it->value());
}
diff --git a/be/test/vec/data_types/serde/data_type_serde_hll_test.cpp
b/be/test/vec/data_types/serde/data_type_serde_hll_test.cpp
index bc522eba0b3..60464ed5be0 100644
--- a/be/test/vec/data_types/serde/data_type_serde_hll_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_hll_test.cpp
@@ -44,10 +44,10 @@ TEST(HLLSerdeTest, writeOneCellToJsonb) {
jsonb_column->insert_data(jsonb_writer.getOutput()->getBuffer(),
jsonb_writer.getOutput()->getSize());
StringRef jsonb_data = jsonb_column->get_data_at(0);
- JsonbDocument* pdoc = nullptr;
+ const JsonbDocument* pdoc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(jsonb_data.data,
jsonb_data.size, &pdoc);
ASSERT_TRUE(st.ok()) << "checkAndCreateDocument failed: " <<
st.to_string();
- JsonbDocument& doc = *pdoc;
+ const JsonbDocument& doc = *pdoc;
for (auto it = doc->begin(); it != doc->end(); ++it) {
hll_serde->read_one_cell_from_jsonb(*column_hll, it->value());
}
diff --git a/be/test/vec/data_types/serde/data_type_serde_number_test.cpp
b/be/test/vec/data_types/serde/data_type_serde_number_test.cpp
index 43186d1fa26..b5a0b984007 100644
--- a/be/test/vec/data_types/serde/data_type_serde_number_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_number_test.cpp
@@ -247,12 +247,12 @@ TEST_F(DataTypeNumberSerDeTest, serdes) {
ser_col->reserve(row_count);
MutableColumnPtr deser_column = source_column->clone_empty();
const auto* deser_col_with_type = assert_cast<const
ColumnType*>(deser_column.get());
- JsonbDocument* pdoc = nullptr;
+ const JsonbDocument* pdoc = nullptr;
auto st =
JsonbDocument::checkAndCreateDocument(jsonb_writer.getOutput()->getBuffer(),
jsonb_writer.getOutput()->getSize(),
&pdoc);
ASSERT_TRUE(st.ok()) << "checkAndCreateDocument failed: " <<
st.to_string();
- JsonbDocument& doc = *pdoc;
+ const JsonbDocument& doc = *pdoc;
for (auto it = doc->begin(); it != doc->end(); ++it) {
serde.read_one_cell_from_jsonb(*deser_column, it->value());
}
diff --git
a/be/test/vec/data_types/serde/data_type_serde_quantile_state_test.cpp
b/be/test/vec/data_types/serde/data_type_serde_quantile_state_test.cpp
index bb74794836d..03d83db1913 100644
--- a/be/test/vec/data_types/serde/data_type_serde_quantile_state_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_quantile_state_test.cpp
@@ -42,10 +42,10 @@ TEST(QuantileStateSerdeTest, writeOneCellToJsonb) {
jsonb_column->insert_data(jsonb_writer.getOutput()->getBuffer(),
jsonb_writer.getOutput()->getSize());
StringRef jsonb_data = jsonb_column->get_data_at(0);
- JsonbDocument* pdoc = nullptr;
+ const JsonbDocument* pdoc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(jsonb_data.data,
jsonb_data.size, &pdoc);
ASSERT_TRUE(st.ok()) << "checkAndCreateDocument failed: " <<
st.to_string();
- JsonbDocument& doc = *pdoc;
+ const JsonbDocument& doc = *pdoc;
for (auto it = doc->begin(); it != doc->end(); ++it) {
quantile_state_serde->read_one_cell_from_jsonb(*column_quantile_state,
it->value());
}
diff --git a/be/test/vec/data_types/serde/data_type_serde_string_test.cpp
b/be/test/vec/data_types/serde/data_type_serde_string_test.cpp
index 81c25d79cfd..5068e1c65d9 100644
--- a/be/test/vec/data_types/serde/data_type_serde_string_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_string_test.cpp
@@ -173,12 +173,12 @@ TEST_F(DataTypeStringSerDeTest, serdes) {
ser_col->reserve(row_count);
MutableColumnPtr deser_column = source_column->clone_empty();
const auto* deser_col_with_type = assert_cast<const
ColumnType*>(deser_column.get());
- JsonbDocument* pdoc = nullptr;
+ const JsonbDocument* pdoc = nullptr;
auto st =
JsonbDocument::checkAndCreateDocument(jsonb_writer.getOutput()->getBuffer(),
jsonb_writer.getOutput()->getSize(),
&pdoc);
ASSERT_TRUE(st.ok()) << "checkAndCreateDocument failed: " <<
st.to_string();
- JsonbDocument& doc = *pdoc;
+ const JsonbDocument& doc = *pdoc;
for (auto it = doc->begin(); it != doc->end(); ++it) {
serde.read_one_cell_from_jsonb(*deser_column, it->value());
}
diff --git a/be/test/vec/data_types/serde/data_type_serde_test.cpp
b/be/test/vec/data_types/serde/data_type_serde_test.cpp
index 62e4a65f760..02199053242 100644
--- a/be/test/vec/data_types/serde/data_type_serde_test.cpp
+++ b/be/test/vec/data_types/serde/data_type_serde_test.cpp
@@ -227,10 +227,10 @@ TEST(DataTypeSerDeTest, DataTypeRowStoreSerDeTest) {
jsonb_column->insert_data(jsonb_writer.getOutput()->getBuffer(),
jsonb_writer.getOutput()->getSize());
StringRef jsonb_data = jsonb_column->get_data_at(0);
- JsonbDocument* pdoc = nullptr;
+ const JsonbDocument* pdoc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(jsonb_data.data,
jsonb_data.size, &pdoc);
ASSERT_TRUE(st.ok()) << "checkAndCreateDocument failed: " <<
st.to_string();
- JsonbDocument& doc = *pdoc;
+ const JsonbDocument& doc = *pdoc;
for (auto it = doc->begin(); it != doc->end(); ++it) {
serde->read_one_cell_from_jsonb(*vec, it->value());
}
@@ -259,10 +259,10 @@ TEST(DataTypeSerDeTest, DataTypeRowStoreSerDeTest) {
jsonb_column->insert_data(jsonb_writer.getOutput()->getBuffer(),
jsonb_writer.getOutput()->getSize());
StringRef jsonb_data = jsonb_column->get_data_at(0);
- JsonbDocument* pdoc = nullptr;
+ const JsonbDocument* pdoc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(jsonb_data.data,
jsonb_data.size, &pdoc);
ASSERT_TRUE(st.ok()) << "checkAndCreateDocument failed: " <<
st.to_string();
- JsonbDocument& doc = *pdoc;
+ const JsonbDocument& doc = *pdoc;
for (auto it = doc->begin(); it != doc->end(); ++it) {
serde->read_one_cell_from_jsonb(*vec, it->value());
}
diff --git a/be/test/vec/jsonb/convert_field_to_type_test.cpp
b/be/test/vec/jsonb/convert_field_to_type_test.cpp
index a848f7165ab..09d443d0b99 100644
--- a/be/test/vec/jsonb/convert_field_to_type_test.cpp
+++ b/be/test/vec/jsonb/convert_field_to_type_test.cpp
@@ -53,7 +53,7 @@ TEST_F(ConvertFieldToTypeTest, FieldVisitorToJsonb_Null) {
ASSERT_GT(output->getSize(), 0);
// Verify the output is valid JSONB
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto status =
JsonbDocument::checkAndCreateDocument(output->getBuffer(),
output->getSize(), &doc);
ASSERT_TRUE(status.ok()) << "Failed to create JsonbDocument: " <<
status.to_string();
@@ -77,7 +77,7 @@ TEST_F(ConvertFieldToTypeTest, FieldVisitorToJsonb_Int64) {
ASSERT_GT(output->getSize(), 0);
// Verify the output is valid JSONB
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto status =
JsonbDocument::checkAndCreateDocument(output->getBuffer(),
output->getSize(), &doc);
ASSERT_TRUE(status.ok()) << "Failed to create JsonbDocument: " <<
status.to_string();
@@ -102,7 +102,7 @@ TEST_F(ConvertFieldToTypeTest, FieldVisitorToJsonb_UInt64) {
ASSERT_GT(output->getSize(), 0);
// Verify the output is valid JSONB
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto status =
JsonbDocument::checkAndCreateDocument(output->getBuffer(),
output->getSize(), &doc);
ASSERT_TRUE(status.ok()) << "Failed to create JsonbDocument: " <<
status.to_string();
@@ -127,7 +127,7 @@ TEST_F(ConvertFieldToTypeTest, FieldVisitorToJsonb_Float64)
{
ASSERT_GT(output->getSize(), 0);
// Verify the output is valid JSONB
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto status =
JsonbDocument::checkAndCreateDocument(output->getBuffer(),
output->getSize(), &doc);
ASSERT_TRUE(status.ok()) << "Failed to create JsonbDocument: " <<
status.to_string();
@@ -152,7 +152,7 @@ TEST_F(ConvertFieldToTypeTest, FieldVisitorToJsonb_String) {
ASSERT_GT(output->getSize(), 0);
// Verify the output is valid JSONB
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto status =
JsonbDocument::checkAndCreateDocument(output->getBuffer(),
output->getSize(), &doc);
ASSERT_TRUE(status.ok()) << "Failed to create JsonbDocument: " <<
status.to_string();
@@ -182,7 +182,7 @@ TEST_F(ConvertFieldToTypeTest,
FieldVisitorToJsonb_JsonbField) {
ASSERT_GT(output->getSize(), 0);
// Verify the output is valid JSONB
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto status =
JsonbDocument::checkAndCreateDocument(output->getBuffer(),
output->getSize(), &doc);
ASSERT_TRUE(status.ok()) << "Failed to create JsonbDocument: " <<
status.to_string();
@@ -212,7 +212,7 @@ TEST_F(ConvertFieldToTypeTest, FieldVisitorToJsonb_Array) {
ASSERT_GT(output->getSize(), 0);
// Verify the output is valid JSONB
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto status =
JsonbDocument::checkAndCreateDocument(output->getBuffer(),
output->getSize(), &doc);
ASSERT_TRUE(status.ok()) << "Failed to create JsonbDocument: " <<
status.to_string();
@@ -246,7 +246,7 @@ TEST_F(ConvertFieldToTypeTest,
FieldVisitorToJsonb_NestedArray) {
ASSERT_GT(output->getSize(), 0);
// Verify the output is valid JSONB
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto status =
JsonbDocument::checkAndCreateDocument(output->getBuffer(),
output->getSize(), &doc);
ASSERT_TRUE(status.ok()) << "Failed to create JsonbDocument: " <<
status.to_string();
@@ -271,7 +271,7 @@ TEST_F(ConvertFieldToTypeTest,
FieldVisitorToJsonb_LargeInt) {
ASSERT_GT(output->getSize(), 0);
// Verify the output is valid JSONB
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto status =
JsonbDocument::checkAndCreateDocument(output->getBuffer(),
output->getSize(), &doc);
ASSERT_TRUE(status.ok()) << "Failed to create JsonbDocument: " <<
status.to_string();
@@ -296,7 +296,7 @@ TEST_F(ConvertFieldToTypeTest, FieldVisitorToJsonb_UInt128)
{
ASSERT_GT(output->getSize(), 0);
// Verify the output is valid JSONB
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto status =
JsonbDocument::checkAndCreateDocument(output->getBuffer(),
output->getSize(), &doc);
ASSERT_TRUE(status.ok()) << "Failed to create JsonbDocument: " <<
status.to_string();
@@ -327,7 +327,7 @@ TEST_F(ConvertFieldToTypeTest, ConvertFieldToType_ToJsonb) {
ASSERT_GT(jsonb_result.get_size(), 0);
// Verify the JSONB content
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto status =
JsonbDocument::checkAndCreateDocument(jsonb_result.get_value(),
jsonb_result.get_size(), &doc);
ASSERT_TRUE(status.ok()) << "Failed to create JsonbDocument: " <<
status.to_string();
@@ -352,7 +352,7 @@ TEST_F(ConvertFieldToTypeTest, ConvertFieldToType_ToJsonb) {
ASSERT_GT(jsonb_result.get_size(), 0);
// Verify the JSONB content
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto status =
JsonbDocument::checkAndCreateDocument(jsonb_result.get_value(),
jsonb_result.get_size(), &doc);
ASSERT_TRUE(status.ok()) << "Failed to create JsonbDocument: " <<
status.to_string();
@@ -383,7 +383,7 @@ TEST_F(ConvertFieldToTypeTest, ConvertFieldToType_ToJsonb) {
ASSERT_GT(jsonb_result.get_size(), 0);
// Verify the JSONB content
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto status =
JsonbDocument::checkAndCreateDocument(jsonb_result.get_value(),
jsonb_result.get_size(), &doc);
ASSERT_TRUE(status.ok()) << "Failed to create JsonbDocument: " <<
status.to_string();
@@ -450,7 +450,7 @@ TEST_F(ConvertFieldToTypeTest,
ConvertFieldToType_ToNullableJsonb) {
ASSERT_GT(jsonb_result.get_size(), 0);
// Verify the JSONB content
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto status =
JsonbDocument::checkAndCreateDocument(jsonb_result.get_value(),
jsonb_result.get_size(), &doc);
ASSERT_TRUE(status.ok()) << "Failed to create JsonbDocument: " <<
status.to_string();
@@ -493,7 +493,7 @@ TEST_F(ConvertFieldToTypeTest,
ConvertFieldToType_ArrayToJsonb) {
ASSERT_GT(jsonb_element.get_size(), 0);
// Verify the JSONB content
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto status =
JsonbDocument::checkAndCreateDocument(jsonb_element.get_value(),
jsonb_element.get_size(), &doc);
ASSERT_TRUE(status.ok()) << "Failed to create JsonbDocument for
element " << i << ": "
diff --git a/be/test/vec/jsonb/jsonb_document_cast_test.cpp
b/be/test/vec/jsonb/jsonb_document_cast_test.cpp
index e220aefa70d..05cab000da7 100644
--- a/be/test/vec/jsonb/jsonb_document_cast_test.cpp
+++ b/be/test/vec/jsonb/jsonb_document_cast_test.cpp
@@ -133,100 +133,100 @@ protected:
};
TEST_F(JsonbDocumentCastTest, test_to_bool) {
- auto get_json_value = [&](int idx) -> JsonbValue* {
+ auto get_json_value = [&](int idx) -> const JsonbValue* {
auto& val = jsonbs[idx];
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(val.data(),
val.size(), &doc);
- JsonbValue* value = doc->getValue();
+ const JsonbValue* value = doc->getValue();
return value;
};
{
- JsonbValue* jsonb_value = get_json_value(0); // true
+ const JsonbValue* jsonb_value = get_json_value(0); // true
UInt8 to = false;
EXPECT_TRUE(JsonbCast::cast_from_json_to_boolean(jsonb_value, to,
params));
EXPECT_TRUE(to);
}
{
- JsonbValue* jsonb_value = get_json_value(1); // false
+ const JsonbValue* jsonb_value = get_json_value(1); // false
UInt8 to = true;
EXPECT_TRUE(JsonbCast::cast_from_json_to_boolean(jsonb_value, to,
params));
EXPECT_FALSE(to);
}
{
- JsonbValue* jsonb_value = get_json_value(2); // Int8 123
+ const JsonbValue* jsonb_value = get_json_value(2); // Int8 123
UInt8 to = false;
EXPECT_TRUE(JsonbCast::cast_from_json_to_boolean(jsonb_value, to,
params));
EXPECT_TRUE(to);
}
{
- JsonbValue* jsonb_value = get_json_value(3); // Int16 12345
+ const JsonbValue* jsonb_value = get_json_value(3); // Int16 12345
UInt8 to = false;
EXPECT_TRUE(JsonbCast::cast_from_json_to_boolean(jsonb_value, to,
params));
EXPECT_TRUE(to);
}
{
- JsonbValue* jsonb_value = get_json_value(4); // Int32 1234567890
+ const JsonbValue* jsonb_value = get_json_value(4); // Int32 1234567890
UInt8 to = false;
EXPECT_TRUE(JsonbCast::cast_from_json_to_boolean(jsonb_value, to,
params));
EXPECT_TRUE(to);
}
{
- JsonbValue* jsonb_value = get_json_value(5); // Int64
1234567890123456789
+ const JsonbValue* jsonb_value = get_json_value(5); // Int64
1234567890123456789
UInt8 to = false;
EXPECT_TRUE(JsonbCast::cast_from_json_to_boolean(jsonb_value, to,
params));
EXPECT_TRUE(to);
}
{
- JsonbValue* jsonb_value = get_json_value(6); // Int128
1234567890123456789
+ const JsonbValue* jsonb_value = get_json_value(6); // Int128
1234567890123456789
UInt8 to = false;
EXPECT_TRUE(JsonbCast::cast_from_json_to_boolean(jsonb_value, to,
params));
EXPECT_TRUE(to);
}
{
- JsonbValue* jsonb_value = get_json_value(7); // Float 123.456F
+ const JsonbValue* jsonb_value = get_json_value(7); // Float 123.456F
UInt8 to = false;
EXPECT_TRUE(JsonbCast::cast_from_json_to_boolean(jsonb_value, to,
params));
EXPECT_TRUE(to);
}
{
- JsonbValue* jsonb_value = get_json_value(8); // Double
123.4567890123456789
+ const JsonbValue* jsonb_value = get_json_value(8); // Double
123.4567890123456789
UInt8 to = false;
EXPECT_TRUE(JsonbCast::cast_from_json_to_boolean(jsonb_value, to,
params));
EXPECT_TRUE(to);
}
{
- JsonbValue* jsonb_value = get_json_value(9); // Decimal32 12345678
+ const JsonbValue* jsonb_value = get_json_value(9); // Decimal32
12345678
UInt8 to = false;
EXPECT_TRUE(JsonbCast::cast_from_json_to_boolean(jsonb_value, to,
params));
EXPECT_TRUE(to);
}
{
- JsonbValue* jsonb_value = get_json_value(10); // Decimal64
1234567890123456789
+ const JsonbValue* jsonb_value = get_json_value(10); // Decimal64
1234567890123456789
UInt8 to = false;
EXPECT_TRUE(JsonbCast::cast_from_json_to_boolean(jsonb_value, to,
params));
EXPECT_TRUE(to);
}
{
- JsonbValue* jsonb_value = get_json_value(11); // Decimal128V3
1234567890123456789
+ const JsonbValue* jsonb_value = get_json_value(11); // Decimal128V3
1234567890123456789
UInt8 to = false;
EXPECT_TRUE(JsonbCast::cast_from_json_to_boolean(jsonb_value, to,
params));
EXPECT_TRUE(to);
}
{
- JsonbValue* jsonb_value = get_json_value(12); // Decimal256
1234567890123456789
+ const JsonbValue* jsonb_value = get_json_value(12); // Decimal256
1234567890123456789
UInt8 to = false;
EXPECT_TRUE(JsonbCast::cast_from_json_to_boolean(jsonb_value, to,
params));
EXPECT_TRUE(to);
@@ -234,100 +234,100 @@ TEST_F(JsonbDocumentCastTest, test_to_bool) {
}
TEST_F(JsonbDocumentCastTest, test_to_int) {
- auto get_json_value = [&](int idx) -> JsonbValue* {
+ auto get_json_value = [&](int idx) -> const JsonbValue* {
auto& val = jsonbs[idx];
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(val.data(),
val.size(), &doc);
- JsonbValue* value = doc->getValue();
+ const JsonbValue* value = doc->getValue();
return value;
};
{
- JsonbValue* jsonb_value = get_json_value(0); // true
+ const JsonbValue* jsonb_value = get_json_value(0); // true
Int8 to = 0;
EXPECT_TRUE(JsonbCast::cast_from_json_to_int(jsonb_value, to, params));
EXPECT_EQ(to, 1);
}
{
- JsonbValue* jsonb_value = get_json_value(1); // false
+ const JsonbValue* jsonb_value = get_json_value(1); // false
Int8 to = 0;
EXPECT_TRUE(JsonbCast::cast_from_json_to_int(jsonb_value, to, params));
EXPECT_EQ(to, 0);
}
{
- JsonbValue* jsonb_value = get_json_value(2); // Int8 123
+ const JsonbValue* jsonb_value = get_json_value(2); // Int8 123
Int8 to = 0;
EXPECT_TRUE(JsonbCast::cast_from_json_to_int(jsonb_value, to, params));
EXPECT_EQ(to, 123);
}
{
- JsonbValue* jsonb_value = get_json_value(3); // Int16 12345
+ const JsonbValue* jsonb_value = get_json_value(3); // Int16 12345
Int16 to = 0;
EXPECT_TRUE(JsonbCast::cast_from_json_to_int(jsonb_value, to, params));
EXPECT_EQ(to, 12345);
}
{
- JsonbValue* jsonb_value = get_json_value(4); // Int32 1234567890
+ const JsonbValue* jsonb_value = get_json_value(4); // Int32 1234567890
Int32 to = 0;
EXPECT_TRUE(JsonbCast::cast_from_json_to_int(jsonb_value, to, params));
EXPECT_EQ(to, 1234567890);
}
{
- JsonbValue* jsonb_value = get_json_value(5); // Int64
1234567890123456789
+ const JsonbValue* jsonb_value = get_json_value(5); // Int64
1234567890123456789
Int64 to = 0;
EXPECT_TRUE(JsonbCast::cast_from_json_to_int(jsonb_value, to, params));
EXPECT_EQ(to, 1234567890123456789LL);
}
{
- JsonbValue* jsonb_value = get_json_value(6); // Int128
1234567890123456789
+ const JsonbValue* jsonb_value = get_json_value(6); // Int128
1234567890123456789
Int128 to = 0;
EXPECT_TRUE(JsonbCast::cast_from_json_to_int(jsonb_value, to, params));
EXPECT_EQ(to, 1234567890123456789LL);
}
{
- JsonbValue* jsonb_value = get_json_value(7); // Float 123.456F
+ const JsonbValue* jsonb_value = get_json_value(7); // Float 123.456F
Int32 to = 0;
EXPECT_TRUE(JsonbCast::cast_from_json_to_int(jsonb_value, to, params));
EXPECT_EQ(to, 123);
}
{
- JsonbValue* jsonb_value = get_json_value(8); // Double
123.4567890123456789
+ const JsonbValue* jsonb_value = get_json_value(8); // Double
123.4567890123456789
Int64 to = 0;
EXPECT_TRUE(JsonbCast::cast_from_json_to_int(jsonb_value, to, params));
EXPECT_EQ(to, 123);
}
{
- JsonbValue* jsonb_value = get_json_value(9); // Decimal32 12345678
+ const JsonbValue* jsonb_value = get_json_value(9); // Decimal32
12345678
Int32 to = 0;
EXPECT_TRUE(JsonbCast::cast_from_json_to_int(jsonb_value, to, params));
EXPECT_EQ(to, 1234567);
}
{
- JsonbValue* jsonb_value = get_json_value(10); // Decimal64
1234567890123456789
+ const JsonbValue* jsonb_value = get_json_value(10); // Decimal64
1234567890123456789
Int64 to = 0;
EXPECT_TRUE(JsonbCast::cast_from_json_to_int(jsonb_value, to, params));
EXPECT_EQ(to, 12345678901234567);
}
{
- JsonbValue* jsonb_value = get_json_value(11); // Decimal128V3
1234567890123456789
+ const JsonbValue* jsonb_value = get_json_value(11); // Decimal128V3
1234567890123456789
Int128 to = 0;
EXPECT_TRUE(JsonbCast::cast_from_json_to_int(jsonb_value, to, params));
EXPECT_EQ(to, 1234567890123456);
}
{
- JsonbValue* jsonb_value = get_json_value(12); // Decimal256
1234567890123456789
+ const JsonbValue* jsonb_value = get_json_value(12); // Decimal256
1234567890123456789
Int128 to = 0;
EXPECT_TRUE(JsonbCast::cast_from_json_to_int(jsonb_value, to, params));
EXPECT_EQ(to, 1234567890123456);
@@ -335,100 +335,100 @@ TEST_F(JsonbDocumentCastTest, test_to_int) {
}
TEST_F(JsonbDocumentCastTest, test_to_float) {
- auto get_json_value = [&](int idx) -> JsonbValue* {
+ auto get_json_value = [&](int idx) -> const JsonbValue* {
auto& val = jsonbs[idx];
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(val.data(),
val.size(), &doc);
- JsonbValue* value = doc->getValue();
+ const JsonbValue* value = doc->getValue();
return value;
};
{
- JsonbValue* jsonb_value = get_json_value(0); // true
+ const JsonbValue* jsonb_value = get_json_value(0); // true
Float32 to = 0.0F;
EXPECT_TRUE(JsonbCast::cast_from_json_to_float(jsonb_value, to,
params));
EXPECT_EQ(to, 1.0F);
}
{
- JsonbValue* jsonb_value = get_json_value(1); // false
+ const JsonbValue* jsonb_value = get_json_value(1); // false
Float32 to = 0.0F;
EXPECT_TRUE(JsonbCast::cast_from_json_to_float(jsonb_value, to,
params));
EXPECT_EQ(to, 0.0F);
}
{
- JsonbValue* jsonb_value = get_json_value(2); // Int8 123
+ const JsonbValue* jsonb_value = get_json_value(2); // Int8 123
Float32 to = 0.0F;
EXPECT_TRUE(JsonbCast::cast_from_json_to_float(jsonb_value, to,
params));
EXPECT_EQ(to, 123.0F);
}
{
- JsonbValue* jsonb_value = get_json_value(3); // Int16 12345
+ const JsonbValue* jsonb_value = get_json_value(3); // Int16 12345
Float32 to = 0.0F;
EXPECT_TRUE(JsonbCast::cast_from_json_to_float(jsonb_value, to,
params));
EXPECT_EQ(to, 12345.0F);
}
{
- JsonbValue* jsonb_value = get_json_value(4); // Int32 1234567890
+ const JsonbValue* jsonb_value = get_json_value(4); // Int32 1234567890
Float32 to = 0.0F;
EXPECT_TRUE(JsonbCast::cast_from_json_to_float(jsonb_value, to,
params));
EXPECT_EQ(to, 1234567890.0F);
}
{
- JsonbValue* jsonb_value = get_json_value(5); // Int64
1234567890123456789
+ const JsonbValue* jsonb_value = get_json_value(5); // Int64
1234567890123456789
Float32 to = 0.0F;
EXPECT_TRUE(JsonbCast::cast_from_json_to_float(jsonb_value, to,
params));
EXPECT_EQ(to, 1234567890123456789LL);
}
{
- JsonbValue* jsonb_value = get_json_value(6); // Int128
1234567890123456789
+ const JsonbValue* jsonb_value = get_json_value(6); // Int128
1234567890123456789
Float32 to = 0.0F;
EXPECT_TRUE(JsonbCast::cast_from_json_to_float(jsonb_value, to,
params));
EXPECT_EQ(to, 1234567890123456789LL);
}
{
- JsonbValue* jsonb_value = get_json_value(7); // Float 123.456F
+ const JsonbValue* jsonb_value = get_json_value(7); // Float 123.456F
Float32 to = 0.0F;
EXPECT_TRUE(JsonbCast::cast_from_json_to_float(jsonb_value, to,
params));
EXPECT_EQ(to, 123.456F);
}
{
- JsonbValue* jsonb_value = get_json_value(8); // Double
123.4567890123456789
+ const JsonbValue* jsonb_value = get_json_value(8); // Double
123.4567890123456789
Float32 to = 0.0F;
EXPECT_TRUE(JsonbCast::cast_from_json_to_float(jsonb_value, to,
params));
EXPECT_EQ(to, 123.456789F);
}
{
- JsonbValue* jsonb_value = get_json_value(9); // Decimal32 12345678
+ const JsonbValue* jsonb_value = get_json_value(9); // Decimal32
12345678
Float32 to = 0.0F;
EXPECT_TRUE(JsonbCast::cast_from_json_to_float(jsonb_value, to,
params));
EXPECT_EQ(to, 1234567.8F);
}
{
- JsonbValue* jsonb_value = get_json_value(10); // Decimal64
1234567890123456789
+ const JsonbValue* jsonb_value = get_json_value(10); // Decimal64
1234567890123456789
Float32 to = 0.0F;
EXPECT_TRUE(JsonbCast::cast_from_json_to_float(jsonb_value, to,
params));
EXPECT_EQ(to, 12345678901234567.89F);
}
{
- JsonbValue* jsonb_value = get_json_value(11); // Decimal128V3
1234567890123456789
+ const JsonbValue* jsonb_value = get_json_value(11); // Decimal128V3
1234567890123456789
Float32 to = 0.0F;
EXPECT_TRUE(JsonbCast::cast_from_json_to_float(jsonb_value, to,
params));
EXPECT_EQ(to, 1234567890123456.789F);
}
{
- JsonbValue* jsonb_value = get_json_value(12); // Decimal256
1234567890123456789
+ const JsonbValue* jsonb_value = get_json_value(12); // Decimal256
1234567890123456789
Float32 to = 0.0F;
EXPECT_TRUE(JsonbCast::cast_from_json_to_float(jsonb_value, to,
params));
EXPECT_EQ(to, 1234567890123456.789F);
@@ -436,94 +436,94 @@ TEST_F(JsonbDocumentCastTest, test_to_float) {
}
TEST_F(JsonbDocumentCastTest, test_to_decimal) {
- auto get_json_value = [&](int idx) -> JsonbValue* {
+ auto get_json_value = [&](int idx) -> const JsonbValue* {
auto& val = jsonbs[idx];
- JsonbDocument* doc = nullptr;
+ const JsonbDocument* doc = nullptr;
auto st = JsonbDocument::checkAndCreateDocument(val.data(),
val.size(), &doc);
- JsonbValue* value = doc->getValue();
+ const JsonbValue* value = doc->getValue();
return value;
};
{
- JsonbValue* jsonb_value = get_json_value(0); // true
+ const JsonbValue* jsonb_value = get_json_value(0); // true
Decimal32 to = 0;
EXPECT_TRUE(JsonbCast::cast_from_json_to_decimal(jsonb_value, to, 4,
1, params));
EXPECT_EQ(to.value, 10);
}
{
- JsonbValue* jsonb_value = get_json_value(1); // false
+ const JsonbValue* jsonb_value = get_json_value(1); // false
Decimal32 to = 0;
EXPECT_TRUE(JsonbCast::cast_from_json_to_decimal(jsonb_value, to, 4,
1, params));
EXPECT_EQ(to.value, 0);
}
{
- JsonbValue* jsonb_value = get_json_value(2); // Int8 123
+ const JsonbValue* jsonb_value = get_json_value(2); // Int8 123
Decimal32 to = 0;
EXPECT_TRUE(JsonbCast::cast_from_json_to_decimal(jsonb_value, to, 4,
1, params));
EXPECT_EQ(to.value, 1230);
}
{
- JsonbValue* jsonb_value = get_json_value(3); // Int16 12345
+ const JsonbValue* jsonb_value = get_json_value(3); // Int16 12345
Decimal32 to = 0;
EXPECT_FALSE(JsonbCast::cast_from_json_to_decimal(jsonb_value, to, 4,
1, params));
}
{
- JsonbValue* jsonb_value = get_json_value(4); // Int32 1234567890
+ const JsonbValue* jsonb_value = get_json_value(4); // Int32 1234567890
Decimal32 to = 0;
EXPECT_FALSE(JsonbCast::cast_from_json_to_decimal(jsonb_value, to, 4,
1, params));
}
{
- JsonbValue* jsonb_value = get_json_value(5); // Int64
1234567890123456789
+ const JsonbValue* jsonb_value = get_json_value(5); // Int64
1234567890123456789
Decimal32 to = 0;
EXPECT_FALSE(JsonbCast::cast_from_json_to_decimal(jsonb_value, to, 4,
1, params));
}
{
- JsonbValue* jsonb_value = get_json_value(6); // Int128
1234567890123456789
+ const JsonbValue* jsonb_value = get_json_value(6); // Int128
1234567890123456789
Decimal32 to = 0;
EXPECT_FALSE(JsonbCast::cast_from_json_to_decimal(jsonb_value, to, 4,
1, params));
}
{
- JsonbValue* jsonb_value = get_json_value(7); // Float 123.456F
+ const JsonbValue* jsonb_value = get_json_value(7); // Float 123.456F
Decimal32 to = 0;
EXPECT_TRUE(JsonbCast::cast_from_json_to_decimal(jsonb_value, to, 4,
1, params));
EXPECT_EQ(to.value, 1235);
}
{
- JsonbValue* jsonb_value = get_json_value(8); // Double
123.4567890123456789
+ const JsonbValue* jsonb_value = get_json_value(8); // Double
123.4567890123456789
Decimal32 to = 0;
EXPECT_TRUE(JsonbCast::cast_from_json_to_decimal(jsonb_value, to, 4,
1, params));
EXPECT_EQ(to.value, 1235);
}
{
- JsonbValue* jsonb_value = get_json_value(9); // Decimal32 12345678
+ const JsonbValue* jsonb_value = get_json_value(9); // Decimal32
12345678
Decimal32 to = 0;
EXPECT_TRUE(JsonbCast::cast_from_json_to_decimal(jsonb_value, to, 4,
1, params));
EXPECT_EQ(to.value, 12345678);
}
{
- JsonbValue* jsonb_value = get_json_value(10); // Decimal64
1234567890123456789
+ const JsonbValue* jsonb_value = get_json_value(10); // Decimal64
1234567890123456789
Decimal32 to = 0;
EXPECT_FALSE(JsonbCast::cast_from_json_to_decimal(jsonb_value, to, 4,
1, params));
}
{
- JsonbValue* jsonb_value = get_json_value(11); // Decimal128V3
1234567890123456789
+ const JsonbValue* jsonb_value = get_json_value(11); // Decimal128V3
1234567890123456789
Decimal32 to = 0;
EXPECT_FALSE(JsonbCast::cast_from_json_to_decimal(jsonb_value, to, 4,
1, params));
}
{
- JsonbValue* jsonb_value = get_json_value(12); // Decimal256
1234567890123456789
+ const JsonbValue* jsonb_value = get_json_value(12); // Decimal256
1234567890123456789
Decimal32 to = 0;
EXPECT_FALSE(JsonbCast::cast_from_json_to_decimal(jsonb_value, to, 4,
1, params));
}
diff --git a/be/test/vec/jsonb/jsonb_document_test.cpp
b/be/test/vec/jsonb/jsonb_document_test.cpp
index 82d6ae324d3..56d0f5fa960 100644
--- a/be/test/vec/jsonb/jsonb_document_test.cpp
+++ b/be/test/vec/jsonb/jsonb_document_test.cpp
@@ -93,8 +93,8 @@ TEST_F(JsonbDocumentTest, writer) {
writer.writeEndObject();
- JsonbDocument* doc = writer.getDocument();
- auto* root = doc->getValue();
+ const JsonbDocument* doc = writer.getDocument();
+ const auto* root = doc->getValue();
ASSERT_TRUE(root->type == JsonbType::T_Object)
<< "invalid root type:" << static_cast<JsonbTypeUnder>(root->type);
@@ -242,8 +242,8 @@ TEST_F(JsonbDocumentTest, forobject) {
writer.writeEndObject();
- JsonbDocument* doc = writer.getDocument();
- auto* root = doc->getValue();
+ const JsonbDocument* doc = writer.getDocument();
+ const auto* root = doc->getValue();
std::cout << JsonbToJson {}.to_json_string(root) << std::endl;
EXPECT_EQ(
JsonbToJson {}.to_json_string(root),
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]