You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@arrow.apache.org by GitBox <gi...@apache.org> on 2022/03/16 23:12:35 UTC

[GitHub] [arrow] Johnnathanalmeida commented on a change in pull request #12480: ARROW-15744: [Gandiva][C++] Add NEGATIVE function for interval types

Johnnathanalmeida commented on a change in pull request #12480:
URL: https://github.com/apache/arrow/pull/12480#discussion_r828523273



##########
File path: cpp/src/gandiva/precompiled/arithmetic_ops.cc
##########
@@ -363,6 +367,28 @@ NUMERIC_FUNCTION_FOR_REAL(NEGATIVE)
 
 NEGATIVE_INTEGER(int32, 32)
 NEGATIVE_INTEGER(int64, 64)
+NEGATIVE_INTEGER(month_interval, 32)
+
+const int64_t INT_MAX_TO_NEGATIVE_INTERVAL_DAY_TIME = 9223372034707292159;
+
+gdv_int64 negative_daytimeinterval(gdv_int64 context, gdv_day_time_interval interval) {
+  if (interval > INT_MAX_TO_NEGATIVE_INTERVAL_DAY_TIME) {
+    gdv_fn_context_set_error_msg(
+        context, "Interval is more than max allowed in negative execution");
+    return 0;
+  }
+
+  int64_t qty_days = interval >> 32;
+  int64_t qty_millis = ((interval & 0x00000000FFFFFFFF) << 32) >> 32;

Review comment:
       I removed the unnecessary left and right shift operations.
   The first tests are ok.
   Let's check if all Git' tests are ok too.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org