You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by tu...@apache.org on 2023/09/23 16:21:46 UTC

[arrow-rs] branch master updated: fix: make_primitive_scalar bug (#4852)

This is an automated email from the ASF dual-hosted git repository.

tustvold pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git


The following commit(s) were added to refs/heads/master by this push:
     new 1de21d29ad fix: make_primitive_scalar bug (#4852)
1de21d29ad is described below

commit 1de21d29ade3dbc48a89e150c00fd548f0b83aab
Author: JasonLi <li...@126.com>
AuthorDate: Sun Sep 24 00:21:41 2023 +0800

    fix: make_primitive_scalar bug (#4852)
    
    Co-authored-by: jasonnnli <ja...@tencent.com>
---
 arrow-ord/src/comparison.rs | 42 ++++++++++++++++++++++++------------------
 1 file changed, 24 insertions(+), 18 deletions(-)

diff --git a/arrow-ord/src/comparison.rs b/arrow-ord/src/comparison.rs
index 4e475d8fd5..ffd35a6070 100644
--- a/arrow-ord/src/comparison.rs
+++ b/arrow-ord/src/comparison.rs
@@ -105,15 +105,17 @@ fn make_primitive_scalar<T: num::ToPrimitive + std::fmt::Debug>(
         }
         DataType::Decimal128(_, _) => {
             let right = try_to_type!(scalar, to_i128)?;
-            Ok(Arc::new(PrimitiveArray::<Decimal128Type>::from(vec![
-                right,
-            ])))
+            Ok(Arc::new(
+                PrimitiveArray::<Decimal128Type>::from(vec![right])
+                    .with_data_type(d.clone()),
+            ))
         }
         DataType::Decimal256(_, _) => {
             let right = try_to_type!(scalar, to_i128)?;
-            Ok(Arc::new(PrimitiveArray::<Decimal256Type>::from(vec![
-                i256::from_i128(right),
-            ])))
+            Ok(Arc::new(
+                PrimitiveArray::<Decimal256Type>::from(vec![i256::from_i128(right)])
+                    .with_data_type(d.clone()),
+            ))
         }
         DataType::Date32 => {
             let right = try_to_type!(scalar, to_i32)?;
@@ -125,27 +127,31 @@ fn make_primitive_scalar<T: num::ToPrimitive + std::fmt::Debug>(
         }
         DataType::Timestamp(TimeUnit::Nanosecond, _) => {
             let right = try_to_type!(scalar, to_i64)?;
-            Ok(Arc::new(PrimitiveArray::<TimestampNanosecondType>::from(
-                vec![right],
-            )))
+            Ok(Arc::new(
+                PrimitiveArray::<TimestampNanosecondType>::from(vec![right])
+                    .with_data_type(d.clone()),
+            ))
         }
         DataType::Timestamp(TimeUnit::Microsecond, _) => {
             let right = try_to_type!(scalar, to_i64)?;
-            Ok(Arc::new(PrimitiveArray::<TimestampMicrosecondType>::from(
-                vec![right],
-            )))
+            Ok(Arc::new(
+                PrimitiveArray::<TimestampMicrosecondType>::from(vec![right])
+                    .with_data_type(d.clone()),
+            ))
         }
         DataType::Timestamp(TimeUnit::Millisecond, _) => {
             let right = try_to_type!(scalar, to_i64)?;
-            Ok(Arc::new(PrimitiveArray::<TimestampMillisecondType>::from(
-                vec![right],
-            )))
+            Ok(Arc::new(
+                PrimitiveArray::<TimestampMillisecondType>::from(vec![right])
+                    .with_data_type(d.clone()),
+            ))
         }
         DataType::Timestamp(TimeUnit::Second, _) => {
             let right = try_to_type!(scalar, to_i64)?;
-            Ok(Arc::new(PrimitiveArray::<TimestampSecondType>::from(vec![
-                right,
-            ])))
+            Ok(Arc::new(
+                PrimitiveArray::<TimestampSecondType>::from(vec![right])
+                    .with_data_type(d.clone()),
+            ))
         }
         DataType::Time32(TimeUnit::Second) => {
             let right = try_to_type!(scalar, to_i32)?;