Skip to main content

icydb_core/db/session/sql/
result.rs

1//! Module: db::session::sql::result
2//! Responsibility: SQL statement result DTOs returned by session SQL surfaces.
3//! Does not own: execution, projection materialization, or compile routing.
4//! Boundary: stable SQL-shaped response payloads.
5
6use crate::{db::GroupedRow, value::OutputValue};
7
8///
9/// SqlStatementResult
10///
11/// Unified SQL statement payload returned by shared SQL lane execution.
12/// Query, mutation, explain, and metadata statements all shape their response
13/// through this single session-owned enum.
14///
15
16#[derive(Debug)]
17pub enum SqlStatementResult {
18    Count {
19        row_count: u32,
20    },
21    Projection {
22        columns: Vec<String>,
23        fixed_scales: Vec<Option<u32>>,
24        rows: Vec<Vec<OutputValue>>,
25        row_count: u32,
26    },
27    ProjectionText {
28        columns: Vec<String>,
29        rows: Vec<Vec<String>>,
30        row_count: u32,
31    },
32    Grouped {
33        columns: Vec<String>,
34        fixed_scales: Vec<Option<u32>>,
35        rows: Vec<GroupedRow>,
36        row_count: u32,
37        next_cursor: Option<String>,
38    },
39    Explain(String),
40    Describe(crate::db::EntitySchemaDescription),
41    ShowIndexes(Vec<String>),
42    ShowColumns(Vec<crate::db::EntityFieldDescription>),
43    ShowEntities(Vec<String>),
44}