dbt-labs/dbt-core · error

index_of_value_in_column

Error message

index_of_value_in_column

What it means

Unimplemented agate Table method: index_of_value_in_column should return the row index of the first occurrence of a needle Value in a column (or None), but the body is a todo!() stub after the single-column extraction. Any caller aborts here.

Solutions

  1. Scan the extracted column for the first agate-equal match and return its index
  2. Return None when the needle is absent or the column is null-only
  3. Return an unsupported error instead of todo!() in the interim
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at crates/dbt-agate/src/table.rs:250 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of dbt-labs/dbt-core@0267ce9170 (2026-09-07). Data as JSON: /api/errors/bc6c62c1369cbf8f. Report an issue: GitHub.

Appendix: source

Thrown at crates/dbt-agate/src/table.rs:250

    pub fn column_sorted(&self, col_idx: isize) -> Arc<Self> {
        let _col = self.single_column_table(col_idx).unwrap();
        todo!("column_sorted")
    }

    pub fn column_without_nulls_sorted(&self, col_idx: isize) -> Arc<Self> {
        let _col = self.single_column_table(col_idx).unwrap();
        todo!("column_without_nulls_sorted")
    }

    pub fn count_occurrences_of_value_in_column(&self, _needle: &Value, col_idx: isize) -> usize {
        let _col = self.single_column_table(col_idx).unwrap();
        todo!("count_occurrences_of_value_in_column")
    }

    pub fn index_of_value_in_column(&self, _needle: &Value, col_idx: isize) -> Option<usize> {
        let _col = self.single_column_table(col_idx).unwrap();
        todo!("index_of_value_in_column")
    }

    fn with_renamed_columns(&self, renamed_columns: Vec<String>) -> Arc<Self> {
        debug_assert!(renamed_columns.len() == self.num_columns());
        let new_batch = self.flat.with_renamed_columns(&renamed_columns);
        let new_vec_of_rows = self.peek_row_table().map(Arc::clone);
        let row_names = self.row_names.as_ref().map(Arc::clone);
        let repr = TableRepr::new(new_batch, new_vec_of_rows, row_names);
        Arc::new(repr)
    }

    fn with_renamed_rows(&self, renamed_columns: Arc<StringViewArray>) -> Arc<Self> {
        debug_assert!(renamed_columns.len() == self.num_rows());
        let new_batch = Arc::clone(&self.flat);
        let new_vec_of_rows = self.peek_row_table().map(Arc::clone);
        let row_named = Some(renamed_columns);
        let repr = TableRepr::new(new_batch, new_vec_of_rows, row_named);
        Arc::new(repr)

View on GitHub (pinned to 0267ce9170)