{"record":{"id":"3472d879d90b3a7a","repo":"risingwavelabs/risingwave","slug":"logicalvectorsearch-can-only-for-batch-plan-not-s","errorCode":null,"errorMessage":"LogicalVectorSearch can only for batch plan, not stream plan","messagePattern":"LogicalVectorSearch can only for batch plan, not stream plan","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/frontend/src/optimizer/plan_node/logical_vector_search.rs","lineNumber":269,"sourceCode":"    }\n}\n\nimpl PredicatePushdown for LogicalVectorSearch {\n    fn predicate_pushdown(\n        &self,\n        predicate: Condition,\n        ctx: &mut PredicatePushdownContext,\n    ) -> PlanRef {\n        gen_filter_and_pushdown(self, predicate, Condition::true_cond(), ctx)\n    }\n}\n\nimpl ToStream for LogicalVectorSearch {\n    fn logical_rewrite_for_stream(\n        &self,\n        _ctx: &mut RewriteStreamContext,\n    ) -> crate::error::Result<(PlanRef, ColIndexMapping)> {\n        bail!(\"LogicalVectorSearch can only for batch plan, not stream plan\");\n    }\n\n    fn to_stream(&self, _ctx: &mut ToStreamContext) -> crate::error::Result<StreamPlanRef> {\n        bail!(\"LogicalVectorSearch can only for batch plan, not stream plan\");\n    }\n}\n\nimpl LogicalVectorSearch {\n    pub fn to_top_n(\n        input: PlanRef,\n        left: ExprImpl,\n        right: ExprImpl,\n        distance_type: PbDistanceType,\n        top_n: u64,\n        output_indices: &[usize],\n    ) -> LogicalTopN {\n        let (neg, expr_type) = match distance_type {\n            PbDistanceType::Unspecified => {","sourceCodeStart":251,"sourceCodeEnd":287,"githubUrl":"https://github.com/risingwavelabs/risingwave/blob/6469eb736d691e8e9b8a419a57edd6429ca77417/src/frontend/src/optimizer/plan_node/logical_vector_search.rs#L251-L287","documentation":"Raised in LogicalVectorSearch::logical_rewrite_for_stream: a vector search node appeared in a streaming plan rewrite path, but vector search is only supported in batch queries, so the stream conversion fails with this error.","triggerScenarios":"Thrown at src/frontend/src/optimizer/plan_node/logical_vector_search.rs:269 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use this plan node only in batch queries; build a streaming plan without LogicalVectorSearch, or extend the optimizer to support stream generation.","Route vector search workloads through batch query paths."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"6469eb736d691e8e9b8a419a57edd6429ca77417","analyzedAt":"2026-09-11T21:06:21.487Z","contentChangedAt":"2026-09-11T21:06:21.487Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}