pub struct ClassifiedStatement {
pub category: SqlCategory,
pub ast_type: &'static str,
pub target_databases: Vec<String>,
pub read_tables: Vec<TableRef>,
pub mutated_tables: Vec<TableRef>,
pub locking_read: bool,
pub file_io: bool,
pub executes_wrapped: bool,
pub if_exists: bool,
pub drop_object_type: Option<&'static str>,
}Fields§
§category: SqlCategory§ast_type: &'static strLegacy-compatible AST type name (select, insert, update,
delete, replace, create, drop, alter, truncate, rename,
grant, set, show, describe, explain, pragma,
transaction, admin-keyword).
target_databases: Vec<String>Distinct database qualifiers across all table references, sorted
(legacy targetDatabases).
read_tables: Vec<TableRef>Tables the statement reads.
mutated_tables: Vec<TableRef>Tables the statement can mutate. For UPDATE/DELETE every from/using table counts: MySQL may mutate any joined table.
locking_read: boolFOR UPDATE / LOCK IN SHARE MODE present — not an ordinary read.
file_io: boolStatement reads or writes server-side files (INTO OUTFILE,
LOAD DATA [LOCAL] INFILE) — denied by policy regardless of
category grants.
executes_wrapped: boolEXPLAIN ANALYZE — executes the wrapped statement.
if_exists: boolIF EXISTS present on DROP/TRUNCATE DDL (absent-target handling:
preflight turns a missing target into an audited local no-op).
drop_object_type: Option<&'static str>Object type of a DROP statement (table, view, index,
other); None for non-DROP statements. The Mixed-IF-EXISTS
rewrite only reconstructs statements it knows (table/view)
and fails closed otherwise.
Trait Implementations§
Source§impl Clone for ClassifiedStatement
impl Clone for ClassifiedStatement
Source§impl Debug for ClassifiedStatement
impl Debug for ClassifiedStatement
Source§impl PartialEq for ClassifiedStatement
impl PartialEq for ClassifiedStatement
impl StructuralPartialEq for ClassifiedStatement
Auto Trait Implementations§
impl Freeze for ClassifiedStatement
impl RefUnwindSafe for ClassifiedStatement
impl Send for ClassifiedStatement
impl Sync for ClassifiedStatement
impl Unpin for ClassifiedStatement
impl UnsafeUnpin for ClassifiedStatement
impl UnwindSafe for ClassifiedStatement
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more