Skip to main content

nodedb_sql/planner/
sort.rs

1// SPDX-License-Identifier: Apache-2.0
2
3//! ORDER BY planning and sort key extraction.
4//!
5//! Search-triggering sort detection (vector_distance, bm25_score, rrf_score)
6//! is handled in select.rs as part of apply_order_by. This module provides
7//! sort key extraction utilities.
8
9use crate::error::Result;
10use crate::resolver::expr::convert_expr;
11use crate::types::SortKey;
12
13/// Convert sqlparser OrderByExpr list to SortKey list.
14pub fn convert_sort_keys(exprs: &[sqlparser::ast::OrderByExpr]) -> Result<Vec<SortKey>> {
15    exprs
16        .iter()
17        .map(|o| {
18            Ok(SortKey {
19                expr: convert_expr(&o.expr)?,
20                ascending: o.options.asc.unwrap_or(true),
21                nulls_first: o.options.nulls_first.unwrap_or(false),
22            })
23        })
24        .collect()
25}