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]

Reply via email to