Skip to content

GH-50752: [C++][Compute] Fix unused variable warning when ARROW_WITH_RE2 is disabled - #50754

Merged
raulcd merged 1 commit into
apache:mainfrom
komainu8:fix-50752
Jul 31, 2026
Merged

GH-50752: [C++][Compute] Fix unused variable warning when ARROW_WITH_RE2 is disabled#50754
raulcd merged 1 commit into
apache:mainfrom
komainu8:fix-50752

Conversation

@komainu8

@komainu8 komainu8 commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Rationale for this change

This change fixes the following build error:

/arrow/cpp/src/arrow/compute/kernels/scalar_string_ascii.cc:1753:16: error: unused variable ‘is_utf8’ [-Werror=unused-variable]
 1753 |     const bool is_utf8 = is_string_or_string_view(batch[0].type()->id());
      |                ^~~~~~~

The is_utf8 variable introduced by commit 374db36 is unused when ARROW_WITH_RE2=OFF is specified.

  static Status Exec(KernelContext* ctx, const ExecSpan& batch, ExecResult* out) {
    const MatchSubstringOptions& options = MatchSubstringState::Get(ctx);
+   const bool is_utf8 = is_string_or_string_view(batch[0].type()->id());
    if (options.ignore_case) {
      ARROW_ASSIGN_OR_RAISE(auto matcher,
-                           FindSubstringRegex::Make(options, InputType::is_utf8, true));
-     applicator::ScalarUnaryNotNullStateful<OffsetType, InputType, FindSubstringRegex>
+                           FindSubstringRegex::Make(options, is_utf8, true));
+     applicator::ScalarUnaryNotNullStateful<OffsetType, InputPhysicalType,
+                                            FindSubstringRegex>
          kernel{std::move(matcher)};
      return kernel.Exec(ctx, batch, out);
      return Status::NotImplemented("ignore_case requires RE2");
    }
-   applicator::ScalarUnaryNotNullStateful<OffsetType, InputType, FindSubstring> kernel{
-       FindSubstring(PlainSubstringMatcher(options))};
+   applicator::ScalarUnaryNotNullStateful<OffsetType, InputPhysicalType, FindSubstring>
+       kernel{FindSubstring(PlainSubstringMatcher(options))};
    return kernel.Exec(ctx, batch, out);
  }
};

Therefore, I move the declaration of is_utf8 inside the #ifdef ARROW_WITH_RE2 block to prevent this error.

What changes are included in this PR?

I move the declaration of is_utf8 inside the #ifdef ARROW_WITH_RE2 block to prevent this error.

This PR does not includes breaking changes to public APIs.
This PR does not contains a "Critical Fix".

Are these changes tested?

Yes.
This change only moves the declaration of is_utf8 and does not change any logic.

Therefore, the existing tests introduced by 374db36 should continue to pass. These tests are already covered by CI, and CI passes successfully with this change.

No new tests are added because this change only moves a variable declaration and does not affect behavior.
I have confirmed that C++ CI checks pass on my fork.
See: https://github.com/komainu8/arrow/actions/runs/30619400223/job/91120073626

Are there any user-facing changes?

No.

…_WITH_RE2 is disabled

This change fixes the following build error:

```
/arrow/cpp/src/arrow/compute/kernels/scalar_string_ascii.cc:1753:16: error: unused variable ‘is_utf8’ [-Werror=unused-variable]
 1753 |     const bool is_utf8 = is_string_or_string_view(batch[0].type()->id());
      |                ^~~~~~~
```

The `is_utf8` variable introduced by commit 374db36 is unused when `ARROW_WITH_RE2=OFF` is specified.

```diff
  static Status Exec(KernelContext* ctx, const ExecSpan& batch, ExecResult* out) {
    const MatchSubstringOptions& options = MatchSubstringState::Get(ctx);
+   const bool is_utf8 = is_string_or_string_view(batch[0].type()->id());
    if (options.ignore_case) {
      ARROW_ASSIGN_OR_RAISE(auto matcher,
-                           FindSubstringRegex::Make(options, InputType::is_utf8, true));
-     applicator::ScalarUnaryNotNullStateful<OffsetType, InputType, FindSubstringRegex>
+                           FindSubstringRegex::Make(options, is_utf8, true));
+     applicator::ScalarUnaryNotNullStateful<OffsetType, InputPhysicalType,
+                                            FindSubstringRegex>
          kernel{std::move(matcher)};
      return kernel.Exec(ctx, batch, out);
      return Status::NotImplemented("ignore_case requires RE2");
    }
-   applicator::ScalarUnaryNotNullStateful<OffsetType, InputType, FindSubstring> kernel{
-       FindSubstring(PlainSubstringMatcher(options))};
+   applicator::ScalarUnaryNotNullStateful<OffsetType, InputPhysicalType, FindSubstring>
+       kernel{FindSubstring(PlainSubstringMatcher(options))};
    return kernel.Exec(ctx, batch, out);
  }
};
```

Therefore, I move the declaration of `is_utf8` inside the `#ifdef ARROW_WITH_RE2` block to prevent this error.

Yes.
This change only moves the declaration of `is_utf8` and does not change any logic.

Therefore, the existing tests introduced by 374db36 should continue to
pass. These tests are already covered by CI, and CI passes successfully
with this change.

No new tests are added because this change only moves a variable declaration and does not affect behavior.

No.

- GitHub Issue: apacheGH-50752

@raulcd raulcd left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes a C++ build failure when compiling Arrow Compute with -Werror and ARROW_WITH_RE2=OFF by ensuring is_utf8 is only declared in the ARROW_WITH_RE2 code path where it’s used.

Changes:

  • Move is_utf8 declaration into the #ifdef ARROW_WITH_RE2 block within FindSubstringExec::Exec to avoid an unused-variable warning when RE2 is disabled.

@github-actions github-actions Bot added awaiting merge Awaiting merge and removed awaiting review Awaiting review labels Jul 31, 2026
@raulcd
raulcd merged commit 0d2db98 into apache:main Jul 31, 2026
71 of 72 checks passed
@raulcd raulcd removed the awaiting merge Awaiting merge label Jul 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants