use crate::sql::Dialect;
use crate::sql::queries::Context;
use crate::sql::utils::Node;
use lutra_bin::ir;
use std::borrow::Cow;
impl<'a> Context<'a> {
pub fn native_import(&mut self, node: Node, ty: &ir::Ty) -> Node {
match self.dialect() {
Dialect::Postgres => self.pg_import(node, ty),
Dialect::DuckDB => self.duck_import(node, ty),
}
}
pub fn native_cols<'t>(&'t self, ty: &'t ir::Ty) -> Vec<(String, Cow<'t, ir::Ty>)> {
match self.dialect() {
Dialect::Postgres => self.pg_cols(ty, false),
Dialect::DuckDB => self.duck_cols(ty),
}
}
pub fn native_export(&mut self, node: Node, ty: &ir::Ty, include_index: bool) -> Node {
match self.dialect() {
Dialect::Postgres => self.pg_export(node, ty, include_index),
Dialect::DuckDB => self.duck_export(node, ty, include_index),
}
}
pub fn serialize(&mut self, node: Node, ty: &ir::Ty) -> Node {
match self.dialect() {
Dialect::Postgres => self.pg_serialize(node, ty),
Dialect::DuckDB => self.duck_serialize(node, ty),
}
}
pub fn deserialize(&mut self, input: Node, input_ty: &ir::Ty, ty: &ir::Ty) -> Node {
match self.dialect() {
Dialect::Postgres => self.pg_deserialize(input, input_ty, ty),
Dialect::DuckDB => self.duck_deserialize(input, ty),
}
}
pub fn row_id(&self) -> &str {
match self.dialect {
Dialect::Postgres => "ctid",
Dialect::DuckDB => "rowid",
}
}
}