This is an automated email from the ASF dual-hosted git repository.
lihaopeng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new d14e1d25ff [Bug](vectorized) Fix wrong column type (#14387)
d14e1d25ff is described below
commit d14e1d25ffd4d7a1200c5e4a92c0d60fe8014be8
Author: Gabriel <[email protected]>
AuthorDate: Wed Nov 23 18:07:33 2022 +0800
[Bug](vectorized) Fix wrong column type (#14387)
---
be/src/vec/exec/vjdbc_connector.cpp | 4 ++--
be/src/vec/exec/vschema_scan_node.cpp | 32 +++++++++++++++++++++++++-------
2 files changed, 27 insertions(+), 9 deletions(-)
diff --git a/be/src/vec/exec/vjdbc_connector.cpp
b/be/src/vec/exec/vjdbc_connector.cpp
index b64f69fe30..459ca3da05 100644
--- a/be/src/vec/exec/vjdbc_connector.cpp
+++ b/be/src/vec/exec/vjdbc_connector.cpp
@@ -308,8 +308,8 @@ Status JdbcConnector::_convert_column_data(JNIEnv* env,
jobject jobj,
std::string data = _jobject_to_string(env, jobj);
DecimalV2Value decimal_slot;
decimal_slot.parse_from_str(data.c_str(), data.length());
-
reinterpret_cast<vectorized::ColumnVector<vectorized::Int128>*>(col_ptr)->insert_value(
- decimal_slot.value());
+ reinterpret_cast<vectorized::ColumnDecimal128*>(col_ptr)->insert_data(
+ const_cast<const
char*>(reinterpret_cast<char*>(&decimal_slot)), 0);
break;
}
case TYPE_DECIMAL32: {
diff --git a/be/src/vec/exec/vschema_scan_node.cpp
b/be/src/vec/exec/vschema_scan_node.cpp
index f6e36800a0..a50e91b510 100644
--- a/be/src/vec/exec/vschema_scan_node.cpp
+++ b/be/src/vec/exec/vschema_scan_node.cpp
@@ -367,15 +367,13 @@ Status
VSchemaScanNode::write_slot_to_vectorized_column(void* slot, SlotDescript
break;
}
- case TYPE_INT:
- case TYPE_DECIMAL32: {
+ case TYPE_INT: {
int32_t num = *reinterpret_cast<int32_t*>(slot);
reinterpret_cast<vectorized::ColumnVector<vectorized::Int32>*>(col_ptr)->insert_value(num);
break;
}
- case TYPE_BIGINT:
- case TYPE_DECIMAL64: {
+ case TYPE_BIGINT: {
int64_t num = *reinterpret_cast<int64_t*>(slot);
reinterpret_cast<vectorized::ColumnVector<vectorized::Int64>*>(col_ptr)->insert_value(num);
break;
@@ -432,10 +430,30 @@ Status
VSchemaScanNode::write_slot_to_vectorized_column(void* slot, SlotDescript
break;
}
- case TYPE_DECIMALV2:
+ case TYPE_DECIMALV2: {
+ const Int128 num = (reinterpret_cast<PackedInt128*>(slot))->value;
+ reinterpret_cast<vectorized::ColumnDecimal128*>(col_ptr)->insert_data(
+ reinterpret_cast<const char*>(&num), 0);
+ break;
+ }
case TYPE_DECIMAL128I: {
- Int128 num = (reinterpret_cast<PackedInt128*>(slot))->value;
-
reinterpret_cast<vectorized::ColumnVector<Int128>*>(col_ptr)->insert_value(num);
+ const Int128 num = (reinterpret_cast<PackedInt128*>(slot))->value;
+ reinterpret_cast<vectorized::ColumnDecimal128I*>(col_ptr)->insert_data(
+ reinterpret_cast<const char*>(&num), 0);
+ break;
+ }
+
+ case TYPE_DECIMAL32: {
+ const int32_t num = *reinterpret_cast<int32_t*>(slot);
+ reinterpret_cast<vectorized::ColumnDecimal32*>(col_ptr)->insert_data(
+ reinterpret_cast<const char*>(&num), 0);
+ break;
+ }
+
+ case TYPE_DECIMAL64: {
+ const int64_t num = *reinterpret_cast<int64_t*>(slot);
+ reinterpret_cast<vectorized::ColumnDecimal64*>(col_ptr)->insert_data(
+ reinterpret_cast<const char*>(&num), 0);
break;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]