rkavanap commented on a change in pull request #10772:
URL: https://github.com/apache/arrow/pull/10772#discussion_r757234336



##########
File path: cpp/src/gandiva/gdv_function_stubs.h
##########
@@ -55,119 +55,119 @@ using gdv_month_interval = int32_t;
 #endif
 #endif
 
-bool gdv_fn_like_utf8_utf8(int64_t ptr, const char* data, int data_len,
-                           const char* pattern, int pattern_len);
+bool gdv_fn_like_utf8_utf8(void* ptr, const char* data, int data_len, const 
char* pattern,
+                           int pattern_len);
 
-bool gdv_fn_like_utf8_utf8_utf8(int64_t ptr, const char* data, int data_len,
+bool gdv_fn_like_utf8_utf8_utf8(void* ptr, const char* data, int data_len,
                                 const char* pattern, int pattern_len,
                                 const char* escape_char, int escape_char_len);
 
-bool gdv_fn_ilike_utf8_utf8(int64_t ptr, const char* data, int data_len,
+bool gdv_fn_ilike_utf8_utf8(void* ptr, const char* data, int data_len,
                             const char* pattern, int pattern_len);
 
-int64_t gdv_fn_to_date_utf8_utf8_int32(int64_t context, int64_t ptr, const 
char* data,
+int64_t gdv_fn_to_date_utf8_utf8_int32(void* context_ptr, void* ptr, const 
char* data,
                                        int data_len, bool in1_validity,
                                        const char* pattern, int pattern_len,
                                        bool in2_validity, int32_t 
suppress_errors,
                                        bool in3_validity, bool* out_valid);
 
-void gdv_fn_context_set_error_msg(int64_t context_ptr, const char* err_msg);
+void gdv_fn_context_set_error_msg(void* context_ptr, const char* err_msg);
 
-uint8_t* gdv_fn_context_arena_malloc(int64_t context_ptr, int32_t data_len);
+uint8_t* gdv_fn_context_arena_malloc(void* context_ptr, int32_t data_len);
 
-void gdv_fn_context_arena_reset(int64_t context_ptr);
+void gdv_fn_context_arena_reset(void* context_ptr);
 
-bool in_expr_lookup_int32(int64_t ptr, int32_t value, bool in_validity);
+bool in_expr_lookup_int32(void* ptr, int32_t value, bool in_validity);
 
-bool in_expr_lookup_int64(int64_t ptr, int64_t value, bool in_validity);
+bool in_expr_lookup_int64(void* ptr, int64_t value, bool in_validity);
 
-bool in_expr_lookup_utf8(int64_t ptr, const char* data, int data_len, bool 
in_validity);
+bool in_expr_lookup_utf8(void* ptr, const char* data, int data_len, bool 
in_validity);
 
 int gdv_fn_time_with_zone(int* time_fields, const char* zone, int zone_len,
                           int64_t* ret_time);
 
 GANDIVA_EXPORT
-const char* gdv_fn_base64_encode_binary(int64_t context, const char* in, 
int32_t in_len,
+const char* gdv_fn_base64_encode_binary(void* context_ptr, const char* in, 
int32_t in_len,
                                         int32_t* out_len);
 
 GANDIVA_EXPORT
-const char* gdv_fn_base64_decode_utf8(int64_t context, const char* in, int32_t 
in_len,
+const char* gdv_fn_base64_decode_utf8(void* context_ptr, const char* in, 
int32_t in_len,
                                       int32_t* out_len);
 
 GANDIVA_EXPORT
-const char* gdv_fn_castVARBINARY_int32_int64(int64_t context, gdv_int32 value,
+const char* gdv_fn_castVARBINARY_int32_int64(void* context_ptr, gdv_int32 
value,
                                              int64_t out_len, int32_t* 
out_length);
 
 GANDIVA_EXPORT
-const char* gdv_fn_castVARBINARY_int64_int64(int64_t context, gdv_int64 value,
+const char* gdv_fn_castVARBINARY_int64_int64(void* context_ptr, gdv_int64 
value,
                                              int64_t out_len, int32_t* 
out_length);
 
 GANDIVA_EXPORT
-const char* gdv_fn_sha256_decimal128(int64_t context, int64_t x_high, uint64_t 
x_low,
+const char* gdv_fn_sha256_decimal128(void* context_ptr, int64_t x_high, 
uint64_t x_low,
                                      int32_t x_precision, int32_t x_scale,
                                      gdv_boolean x_isvalid, int32_t* 
out_length);
 
 GANDIVA_EXPORT
-const char* gdv_fn_sha1_decimal128(int64_t context, int64_t x_high, uint64_t 
x_low,
+const char* gdv_fn_sha1_decimal128(void* context_ptr, int64_t x_high, uint64_t 
x_low,
                                    int32_t x_precision, int32_t x_scale,
                                    gdv_boolean x_isvalid, int32_t* out_length);
 
-int32_t gdv_fn_dec_from_string(int64_t context, const char* in, int32_t 
in_length,
+int32_t gdv_fn_dec_from_string(void* context_ptr, const char* in, int32_t 
in_length,
                                int32_t* precision_from_str, int32_t* 
scale_from_str,
                                int64_t* dec_high_from_str, uint64_t* 
dec_low_from_str);
 
-char* gdv_fn_dec_to_string(int64_t context, int64_t x_high, uint64_t x_low,
+char* gdv_fn_dec_to_string(void* context_ptr, int64_t x_high, uint64_t x_low,
                            int32_t x_scale, int32_t* dec_str_len);
 
 GANDIVA_EXPORT
-int32_t gdv_fn_castINT_utf8(int64_t context, const char* data, int32_t 
data_len);
+int32_t gdv_fn_castINT_utf8(void* context_ptr, const char* data, int32_t 
data_len);
 
 GANDIVA_EXPORT
-int64_t gdv_fn_castBIGINT_utf8(int64_t context, const char* data, int32_t 
data_len);
+int64_t gdv_fn_castBIGINT_utf8(void* context_ptr, const char* data, int32_t 
data_len);
 
 GANDIVA_EXPORT
-float gdv_fn_castFLOAT4_utf8(int64_t context, const char* data, int32_t 
data_len);
+float gdv_fn_castFLOAT4_utf8(void* context_ptr, const char* data, int32_t 
data_len);
 
 GANDIVA_EXPORT
-double gdv_fn_castFLOAT8_utf8(int64_t context, const char* data, int32_t 
data_len);
+double gdv_fn_castFLOAT8_utf8(void* context_ptr, const char* data, int32_t 
data_len);
 
 GANDIVA_EXPORT
-const char* gdv_fn_castVARCHAR_int32_int64(int64_t context, int32_t value, 
int64_t len,
+const char* gdv_fn_castVARCHAR_int32_int64(void* context_ptr, int32_t value, 
int64_t len,
                                            int32_t* out_len);
 GANDIVA_EXPORT
-const char* gdv_fn_castVARCHAR_int64_int64(int64_t context, int64_t value, 
int64_t len,
+const char* gdv_fn_castVARCHAR_int64_int64(void* context_ptr, int64_t value, 
int64_t len,
                                            int32_t* out_len);
 GANDIVA_EXPORT
-const char* gdv_fn_castVARCHAR_float32_int64(int64_t context, float value, 
int64_t len,
+const char* gdv_fn_castVARCHAR_float32_int64(void* context_ptr, float value, 
int64_t len,
                                              int32_t* out_len);
 GANDIVA_EXPORT
-const char* gdv_fn_castVARCHAR_float64_int64(int64_t context, double value, 
int64_t len,
+const char* gdv_fn_castVARCHAR_float64_int64(void* context_ptr, double value, 
int64_t len,
                                              int32_t* out_len);
 
 GANDIVA_EXPORT
 int32_t gdv_fn_utf8_char_length(char c);
 
 GANDIVA_EXPORT
-const char* gdv_fn_upper_utf8(int64_t context, const char* data, int32_t 
data_len,
+const char* gdv_fn_upper_utf8(void* context_ptr, const char* data, int32_t 
data_len,
                               int32_t* out_len);
 
 GANDIVA_EXPORT
-const char* gdv_fn_lower_utf8(int64_t context, const char* data, int32_t 
data_len,
+const char* gdv_fn_lower_utf8(void* context_ptr, const char* data, int32_t 
data_len,
                               int32_t* out_len);
 
 GANDIVA_EXPORT
-const char* gdv_fn_initcap_utf8(int64_t context, const char* data, int32_t 
data_len,
+const char* gdv_fn_initcap_utf8(void* context_ptr, const char* data, int32_t 
data_len,
                                 int32_t* out_len);
 
 GANDIVA_EXPORT
-int32_t gdv_fn_castINT_varbinary(gdv_int64 context, const char* in, int32_t 
in_len);

Review comment:
       why was this gdv_int64 instead of int64_t earlier? guessing they are of 
the same type.

##########
File path: cpp/src/gandiva/precompiled/string_ops.cc
##########
@@ -561,111 +564,112 @@ gdv_boolean castBIT_utf8(gdv_int64 context, const char* 
data, gdv_int32 data_len
     if (compare_lower_strings("false", 5, trimmed_data, trimmed_len)) return 
false;
   }
   // if no 'true', 'false', '0' or '1' value is found, set an error
-  gdv_fn_context_set_error_msg(context, "Invalid value for boolean.");
+  gdv_fn_context_set_error_msg(context_ptr, "Invalid value for boolean.");

Review comment:
       actually this is a comment not related to this PR. But I feel the error 
message should have more detail. For instance, 'Invalid value for boolean 
\<value\>' Just simply stating Invalid value for boolean does not give clarity 
on what was wrong with the value.

##########
File path: cpp/src/gandiva/llvm_types.h
##########
@@ -57,14 +58,20 @@ class GANDIVA_EXPORT LLVMTypes {
 
   llvm::PointerType* ptr_type(llvm::Type* type) { return type->getPointerTo(); 
}
 
+  llvm::PointerType* opaque_ptr_type() { return ptr_type(i8_type()); }

Review comment:
       shouldn't opaque_ptr_type be ptr_type(void_type)?; any reason why it is 
ptr_type() of i8_type

##########
File path: cpp/src/gandiva/precompiled/string_ops.cc
##########
@@ -530,9 +533,9 @@ gdv_boolean compare_lower_strings(const char* base_str, 
gdv_int32 base_str_len,
 // Try to cast the received string ('0', '1', 'true', 'false'), ignoring 
leading
 // and trailing spaces, also ignoring lower and upper case.
 FORCE_INLINE
-gdv_boolean castBIT_utf8(gdv_int64 context, const char* data, gdv_int32 
data_len) {
+gdv_boolean castBIT_utf8(void* context_ptr, const char* data, gdv_int32 
data_len) {
   if (data_len <= 0) {
-    gdv_fn_context_set_error_msg(context, "Invalid value for boolean.");
+    gdv_fn_context_set_error_msg(context_ptr, "Invalid value for boolean.");

Review comment:
       Not related to this PR. But it is a generic comment on not enough 
information in error messages through out Gandiva, which make it very difficult 
to understand why Gandiva rejected a request.
   
   In this case, the error message should have more details: e.g 'Invalid value 
for boolean; bad length \<length\>'




-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to