-
Notifications
You must be signed in to change notification settings - Fork 3.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ARROW-12410: [C++][Gandiva] Implement regexp_replace function on Gandiva #10059
ARROW-12410: [C++][Gandiva] Implement regexp_replace function on Gandiva #10059
Conversation
Thanks for opening a pull request! If this is not a minor PR. Could you open an issue for this pull request on JIRA? https://issues.apache.org/jira/browse/ARROW Opening JIRAs ahead of time contributes to the Openness of the Apache Arrow project. Then could you also rename pull request title in the following format?
or
See also: |
24cf8a1
to
5803007
Compare
java/gandiva/src/test/java/org/apache/arrow/gandiva/evaluator/ProjectorTest.java
Outdated
Show resolved
Hide resolved
java/gandiva/src/test/java/org/apache/arrow/gandiva/evaluator/ProjectorTest.java
Outdated
Show resolved
Hide resolved
cpp/src/gandiva/replace_holder.h
Outdated
*out_length = static_cast<int32_t>(user_input.size()); | ||
|
||
if (!was_replaced) { | ||
return user_input.data(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can't return user_input.data() since it wil get deallocated when returning from the parent function. Its better just pass the user_input char* and len as parameters to the method, instead of passing std::string and memcpying for no replace
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Problem solved, now, for this case is returning the user input char pointer
cca8c38
to
0aee337
Compare
|
||
char* result_buffer = reinterpret_cast<char*>(ctx->arena()->Allocate(*out_length)); | ||
|
||
if (result_buffer == NULLPTR) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nullptr
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@projjal the cpp linter runs a checker that raises an error if there is some nullptr construction inside a header file. I need to use the NULLPTR macro to works.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok
cpp/src/gandiva/replace_holder.h
Outdated
std::string replace_input_as_str(replace_input, replace_input_len); | ||
|
||
int32_t total_replaces = | ||
RE2::GlobalReplace(&user_input_as_str, regex_, replace_input); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
shouldn't the third argument be replace_input_as_str
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@projjal yeah, it should so I did changed the argument to replace_input_as_str
4420eee
to
cf7a800
Compare
@projjal needs a rebase |
cf7a800
to
c397031
Compare
@praveenbingo The rebase was applied in the Pull Request. |
c397031
to
7da85c1
Compare
7da85c1
to
baf2778
Compare
@projjal @praveenbingo I applied the rebase |
Closes apache#10059 from rodrigojdebem/feature/implement-regexp-replace and squashes the following commits: baf2778 <rodrigojdebem> Add implementation for REGEXP_REPLACE Authored-by: rodrigojdebem <rodrigodebem1@gmail.com> Signed-off-by: Praveen <praveen@dremio.com>
Closes apache#10059 from rodrigojdebem/feature/implement-regexp-replace and squashes the following commits: baf2778 <rodrigojdebem> Add implementation for REGEXP_REPLACE Authored-by: rodrigojdebem <rodrigodebem1@gmail.com> Signed-off-by: Praveen <praveen@dremio.com> (cherry picked from commit 5f0641b)
Closes apache#10059 from rodrigojdebem/feature/implement-regexp-replace and squashes the following commits: baf2778 <rodrigojdebem> Add implementation for REGEXP_REPLACE Authored-by: rodrigojdebem <rodrigodebem1@gmail.com> Signed-off-by: Praveen <praveen@dremio.com>
* ARROW-11960: [C++][Gandiva] Support escape in LIKE Add gdv_fn_like_utf8_utf8_int8 function in Gandiva to support escape char in LIKE. An escape char is stored in an int8 type which is compatible with char type in C++. Closes apache#9700 from Crystrix/arrow-11960 Authored-by: crystrix <chenxi.li@live.com> Signed-off-by: Sutou Kouhei <kou@clear-code.com> * ARROW-12567: [C++][Gandiva] Implement ILIKE SQL function Closes apache#10179 from jvictorhuguenin/feature/implement-sql-ilike and squashes the following commits: f160880 <frank400> Optimize holder constructor call 97e6e2d <frank400> Remove unnecessary Make method c2363b1 <frank400> Disable TryOptimize for ilike a484149 <frank400> Fix checkstyle on cmake file c6a8372 <frank400> Delete unnecessary holder 4be6cc6 <frank400> Fix redefined function b78085a <frank400> Fix miss include 2efd43e <frank400> Implement ilike function Authored-by: frank400 <j.victorhuguenin2018@gmail.com> Signed-off-by: Praveen <praveen@dremio.com> * ARROW-12410: [C++][Gandiva] Implement regexp_replace function on Gandiva Closes apache#10059 from rodrigojdebem/feature/implement-regexp-replace and squashes the following commits: baf2778 <rodrigojdebem> Add implementation for REGEXP_REPLACE Authored-by: rodrigojdebem <rodrigodebem1@gmail.com> Signed-off-by: Praveen <praveen@dremio.com> Co-authored-by: crystrix <chenxi.li@live.com> Co-authored-by: frank400 <j.victorhuguenin2018@gmail.com> Co-authored-by: rodrigojdebem <rodrigodebem1@gmail.com>
No description provided.