rapidsai/cudf

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

Open

#19,367 建立於 2025年7月14日

在 GitHub 查看
 (4 留言) (0 反應) (0 負責人)C++ (6,000 star) (735 fork)batch import
buggood first issuelibcudf

描述

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.

貢獻者指南