risingwavelabs/risingwave · error

{:?}

Error message

{:?}

What it means

Catch-all error in LogicalVectorSearch::to_batch (message is just the debug-printed value): an unexpected case was hit while converting a vector search to a batch plan, e.g. an unhandled expression shape during unnesting of the array column. Indicates an optimizer-internal unsupported/unexpected state.

Solutions

  1. Read the surrounding message: this formatting of an inner error occurs while converting LogicalVectorSearch to a batch plan.
  2. Fix the root cause indicated by the inner value (typically an unsupported expression or parameter in the vector search).
  3. Simplify or adjust the vector search query so it maps to a supported batch plan.
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at src/frontend/src/optimizer/plan_node/logical_vector_search.rs:486 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of risingwavelabs/risingwave@6469eb736d (2026-09-11). Data as JSON: /api/errors/970bb517398d4974. Report an issue: GitHub.

Appendix: source

Thrown at src/frontend/src/optimizer/plan_node/logical_vector_search.rs:486

                };
                let vector_search: BatchPlanRef = {
                    let vector_search: BatchPlanRef = BatchVectorSearch::with_core(core).into();
                    let unnested_array: BatchPlanRef = BatchProjectSet::new(generic::ProjectSet {
                        select_list: vec![ExprImpl::TableFunction(
                            TableFunction::new(
                                TableFunctionType::Unnest,
                                vec![ExprImpl::InputRef(
                                    InputRef::new(1, vector_search.schema()[1].data_type()).into(),
                                )],
                            )?
                            .into(),
                        )],
                        input: vector_search,
                    })
                    .into();
                    let DataType::Struct(struct_type) = &unnested_array.schema()[1].data_type
                    else {
                        panic!("{:?}", unnested_array.schema()[1].data_type);
                    };
                    let unnest_struct = BatchProject::new(generic::Project::new(
                        struct_type
                            .types()
                            .enumerate()
                            .map(|(idx, data_type)| {
                                ExprImpl::FunctionCall(
                                    FunctionCall::new_unchecked(
                                        ExprType::Field,
                                        vec![
                                            ExprImpl::InputRef(
                                                InputRef::new(
                                                    1,
                                                    DataType::Struct(struct_type.clone()),
                                                )
                                                .into(),
                                            ),
                                            ExprImpl::Literal(

View on GitHub (pinned to 6469eb736d)