rapidsai/cudf

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

Fechada

#19.367 aberto em 14 de jul. de 2025

 (5 comentários) (0 reação) (0 responsável)C++ (735 forks)batch import
buggood first issuelibcudf

Métricas do repositório

Stars
 (6.000 estrelas)
Métricas de merge de PR
 (Mesclagem média 17d 21h) (230 fundiu PRs em 30d)

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.

Guia do colaborador