proof_of_sql/sql/proof_plans/
empty_exec.rsuse crate::{
base::{
database::{
ColumnField, ColumnRef, OwnedTable, Table, TableEvaluation, TableOptions, TableRef,
},
map::{IndexMap, IndexSet},
proof::ProofError,
scalar::Scalar,
},
sql::proof::{
CountBuilder, FinalRoundBuilder, FirstRoundBuilder, ProofPlan, ProverEvaluate,
VerificationBuilder,
},
};
use alloc::{vec, vec::Vec};
use bumpalo::Bump;
use serde::{Deserialize, Serialize};
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct EmptyExec {}
impl Default for EmptyExec {
fn default() -> Self {
Self::new()
}
}
impl EmptyExec {
#[must_use]
pub fn new() -> Self {
Self {}
}
}
impl ProofPlan for EmptyExec {
fn count(&self, _builder: &mut CountBuilder) -> Result<(), ProofError> {
Ok(())
}
#[allow(unused_variables)]
fn verifier_evaluate<S: Scalar>(
&self,
builder: &mut VerificationBuilder<S>,
_accessor: &IndexMap<ColumnRef, S>,
_result: Option<&OwnedTable<S>>,
_one_eval_map: &IndexMap<TableRef, S>,
) -> Result<TableEvaluation<S>, ProofError> {
Ok(TableEvaluation::new(
Vec::<S>::new(),
builder.mle_evaluations.singleton_one_evaluation,
))
}
fn get_column_result_fields(&self) -> Vec<ColumnField> {
Vec::new()
}
fn get_column_references(&self) -> IndexSet<ColumnRef> {
IndexSet::default()
}
fn get_table_references(&self) -> IndexSet<TableRef> {
IndexSet::default()
}
}
impl ProverEvaluate for EmptyExec {
#[tracing::instrument(name = "EmptyExec::result_evaluate", level = "debug", skip_all)]
fn result_evaluate<'a, S: Scalar>(
&self,
_alloc: &'a Bump,
_table_map: &IndexMap<TableRef, Table<'a, S>>,
) -> (Table<'a, S>, Vec<usize>) {
(
Table::<'a, S>::try_new_with_options(IndexMap::default(), TableOptions::new(Some(1)))
.unwrap(),
vec![],
)
}
fn first_round_evaluate(&self, _builder: &mut FirstRoundBuilder) {}
#[tracing::instrument(name = "EmptyExec::final_round_evaluate", level = "debug", skip_all)]
#[allow(unused_variables)]
fn final_round_evaluate<'a, S: Scalar>(
&self,
_builder: &mut FinalRoundBuilder<'a, S>,
_alloc: &'a Bump,
_table_map: &IndexMap<TableRef, Table<'a, S>>,
) -> Table<'a, S> {
Table::<'a, S>::try_new_with_options(IndexMap::default(), TableOptions::new(Some(1)))
.unwrap()
}
}