rapidsai/cudf

[BUG] AST evaluation should check for bounds checking for column_reference

Fermée

#19 367 ouverte le 14 juil. 2025

 (5 commentaires) (0 réaction) (0 personne assignée)C++ (735 forks)batch import
buggood first issuelibcudf

Métriques du dépôt

Stars
 (6 000 étoiles)
Métriques de merge PR
 (Merge moyen 17j 21h) (230 PRs mergées en 30 j)

Description

Describe the bug When column_reference is out of bounds, AST errors with C++ exception with description "vector::_M_range_check: __n (which is 2) >= this->size() (which is 2)" thrown in the test body. This error is hard to debug and narrow down exact error.

Steps/Code to reproduce bug Add following test to cpp/tests/ast/transform_tests.cpp

cpp
TEST_F(TransformTest, ColumnReferenceExceed)
{
  auto c_0   = column_wrapper<int32_t>{3, 20, 1, 50};
  auto c_1   = column_wrapper<int32_t>{10, 7, 20, 0};
  auto table = cudf::table_view{{c_0, c_1}};

  auto col_ref_0 = cudf::ast::column_reference(2);

  auto const& expected = c_0;
  auto result          = cudf::compute_column(table, col_ref_0);

  CUDF_TEST_EXPECT_COLUMNS_EQUAL(expected, result->view(), verbosity);
}

Expected behavior Consider bounds checking of column index before https://github.com/rapidsai/cudf/blob/ac03ea89ab835f407356874f41e90bd6a5a89654/cpp/src/ast/expression_parser.cpp#L223 and throw relevant error, or std::out_of_range

Additional context I encountered this bug while debugging filter evaluation for velox.

Guide contributeur