use crate::custom_err;
use crate::parser::ast::*;
use crate::parser::{Context, ParserError};
use crate::dialect::{from_bytes, from_token, Token, TokenType};
use indexmap::IndexMap;
use log::trace;
#[expect(non_camel_case_types)]
type sqlite3ParserError = crate::parser::ParserError;
pub type YYCODETYPE = u16; const YYNOCODE: YYCODETYPE = 294;
type YYACTIONTYPE = u16; const YYWILDCARD: YYCODETYPE = 102;
#[expect(non_camel_case_types)]
type sqlite3ParserTOKENTYPE<'i> = Token<'i>;
#[expect(non_camel_case_types)]
enum YYMINORTYPE<'i> {
yyinit(),
yy0(sqlite3ParserTOKENTYPE<'i>),
yy4(Option<FrameClause>),
yy13(Window),
yy18(Option<DistinctNames>),
yy19(Option<Vec<SortedColumn>>),
yy33(Vec<TriggerCmd>),
yy47(TriggerEvent),
yy54(Option<Box<Limit>>),
yy59(Option<TriggerTime>),
yy68(Option<GroupBy>),
yy77(Stmt),
yy84(ColumnConstraint),
yy85(Option<DeferSubclause>),
yy97(Vec<CommonTableExpr>),
yy105(Option<FrameExclude>),
yy106(Vec<ResultColumn>),
yy113(Over),
yy143(Option<Vec<IndexedColumn>>),
yy166(CompoundOperator),
yy173(bool),
yy181(Option<Indexed>),
yy182(Option<Vec<NamedTableConstraint>>),
yy201(TableOptions),
yy203(CreateTableBody),
yy207(ResolveType),
yy213(Select),
yy214(FrameExclude),
yy216(FrameBound),
yy220(String),
yy221(FrameMode),
yy222(Name),
yy238(RefAct),
yy254(Option<ResolveType>),
yy256(WindowDef),
yy265(Option<Vec<ResultColumn>>),
yy276(Option<TransactionType>),
yy277(NamedColumnConstraint),
yy279(DistinctNames),
yy280(Option<With>),
yy285(IndexMap<Name,ColumnDefinition>),
yy296(Option<SortOrder>),
yy300(Option<InitDeferredPred>),
yy305(Vec<NamedColumnConstraint>),
yy312(Vec<Expr>),
yy314(FromClause),
yy322(Option<NullsOrder>),
yy329(Option<Name>),
yy343((bool, LikeOperator)),
yy353(FunctionTail),
yy360(Vec<IndexedColumn>),
yy362(Option<Type>),
yy364(Option<As>),
yy394(DeferSubclause),
yy404(Vec<RefArg>),
yy415(Option<Distinctness>),
yy419(Option<Vec<Expr>>),
yy432(RefArg),
yy439(NamedTableConstraint),
yy444((Name, Option<Type>)),
yy463(OneSelect),
yy468(Vec<Vec<Expr>>),
yy472(Vec<WindowDef>),
yy473(Vec<(Expr, Expr)>),
yy474(QualifiedName),
yy479(Option<Expr>),
yy480(Expr),
yy485(Option<FromClause>),
yy496((Option<Expr>, Option<Vec<ResultColumn>>)),
yy503(SelectBody),
yy504((Option<Upsert>, Option<Vec<ResultColumn>>)),
yy517(Vec<Set>),
yy520(Materialized),
yy536(Vec<SortedColumn>),
yy557(CommonTableExpr),
yy559(Vec<NamedTableConstraint>),
yy569(TriggerCmd),
yy577(JoinOperator),
yy578(Option<JoinConstraint>),
}
impl<'i> Default for YYMINORTYPE<'i> {
fn default() -> YYMINORTYPE<'i> {
YYMINORTYPE::yyinit()
}
}
impl<'i> yyStackEntry<'i> {
fn yy0(self) -> sqlite3ParserTOKENTYPE<'i> {
if let YYMINORTYPE::yy0(v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy4(self) -> Option<FrameClause> {
if let YYMINORTYPE::yy4(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy4_ref(&mut self) -> &mut Option<FrameClause> {
if let YYMINORTYPE::yy4(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy13(self) -> Window {
if let YYMINORTYPE::yy13(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy13_ref(&mut self) -> &mut Window {
if let YYMINORTYPE::yy13(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy18(self) -> Option<DistinctNames> {
if let YYMINORTYPE::yy18(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy18_ref(&mut self) -> &mut Option<DistinctNames> {
if let YYMINORTYPE::yy18(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy19(self) -> Option<Vec<SortedColumn>> {
if let YYMINORTYPE::yy19(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy19_ref(&mut self) -> &mut Option<Vec<SortedColumn>> {
if let YYMINORTYPE::yy19(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy33(self) -> Vec<TriggerCmd> {
if let YYMINORTYPE::yy33(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy33_ref(&mut self) -> &mut Vec<TriggerCmd> {
if let YYMINORTYPE::yy33(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy47(self) -> TriggerEvent {
if let YYMINORTYPE::yy47(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy47_ref(&mut self) -> &mut TriggerEvent {
if let YYMINORTYPE::yy47(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy54(self) -> Option<Box<Limit>> {
if let YYMINORTYPE::yy54(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy54_ref(&mut self) -> &mut Option<Box<Limit>> {
if let YYMINORTYPE::yy54(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy59(self) -> Option<TriggerTime> {
if let YYMINORTYPE::yy59(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy59_ref(&mut self) -> &mut Option<TriggerTime> {
if let YYMINORTYPE::yy59(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy68(self) -> Option<GroupBy> {
if let YYMINORTYPE::yy68(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy68_ref(&mut self) -> &mut Option<GroupBy> {
if let YYMINORTYPE::yy68(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy77(self) -> Stmt {
if let YYMINORTYPE::yy77(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy77_ref(&mut self) -> &mut Stmt {
if let YYMINORTYPE::yy77(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy84(self) -> ColumnConstraint {
if let YYMINORTYPE::yy84(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy84_ref(&mut self) -> &mut ColumnConstraint {
if let YYMINORTYPE::yy84(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy85(self) -> Option<DeferSubclause> {
if let YYMINORTYPE::yy85(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy85_ref(&mut self) -> &mut Option<DeferSubclause> {
if let YYMINORTYPE::yy85(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy97(self) -> Vec<CommonTableExpr> {
if let YYMINORTYPE::yy97(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy97_ref(&mut self) -> &mut Vec<CommonTableExpr> {
if let YYMINORTYPE::yy97(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy105(self) -> Option<FrameExclude> {
if let YYMINORTYPE::yy105(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy105_ref(&mut self) -> &mut Option<FrameExclude> {
if let YYMINORTYPE::yy105(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy106(self) -> Vec<ResultColumn> {
if let YYMINORTYPE::yy106(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy106_ref(&mut self) -> &mut Vec<ResultColumn> {
if let YYMINORTYPE::yy106(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy113(self) -> Over {
if let YYMINORTYPE::yy113(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy113_ref(&mut self) -> &mut Over {
if let YYMINORTYPE::yy113(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy143(self) -> Option<Vec<IndexedColumn>> {
if let YYMINORTYPE::yy143(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy143_ref(&mut self) -> &mut Option<Vec<IndexedColumn>> {
if let YYMINORTYPE::yy143(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy166(self) -> CompoundOperator {
if let YYMINORTYPE::yy166(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy166_ref(&mut self) -> &mut CompoundOperator {
if let YYMINORTYPE::yy166(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy173(self) -> bool {
if let YYMINORTYPE::yy173(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy173_ref(&mut self) -> &mut bool {
if let YYMINORTYPE::yy173(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy181(self) -> Option<Indexed> {
if let YYMINORTYPE::yy181(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy181_ref(&mut self) -> &mut Option<Indexed> {
if let YYMINORTYPE::yy181(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy182(self) -> Option<Vec<NamedTableConstraint>> {
if let YYMINORTYPE::yy182(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy182_ref(&mut self) -> &mut Option<Vec<NamedTableConstraint>> {
if let YYMINORTYPE::yy182(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy201(self) -> TableOptions {
if let YYMINORTYPE::yy201(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy201_ref(&mut self) -> &mut TableOptions {
if let YYMINORTYPE::yy201(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy203(self) -> CreateTableBody {
if let YYMINORTYPE::yy203(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy203_ref(&mut self) -> &mut CreateTableBody {
if let YYMINORTYPE::yy203(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy207(self) -> ResolveType {
if let YYMINORTYPE::yy207(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy207_ref(&mut self) -> &mut ResolveType {
if let YYMINORTYPE::yy207(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy213(self) -> Select {
if let YYMINORTYPE::yy213(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy213_ref(&mut self) -> &mut Select {
if let YYMINORTYPE::yy213(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy214(self) -> FrameExclude {
if let YYMINORTYPE::yy214(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy214_ref(&mut self) -> &mut FrameExclude {
if let YYMINORTYPE::yy214(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy216(self) -> FrameBound {
if let YYMINORTYPE::yy216(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy216_ref(&mut self) -> &mut FrameBound {
if let YYMINORTYPE::yy216(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy220(self) -> String {
if let YYMINORTYPE::yy220(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy220_ref(&mut self) -> &mut String {
if let YYMINORTYPE::yy220(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy221(self) -> FrameMode {
if let YYMINORTYPE::yy221(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy221_ref(&mut self) -> &mut FrameMode {
if let YYMINORTYPE::yy221(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy222(self) -> Name {
if let YYMINORTYPE::yy222(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy222_ref(&mut self) -> &mut Name {
if let YYMINORTYPE::yy222(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy238(self) -> RefAct {
if let YYMINORTYPE::yy238(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy238_ref(&mut self) -> &mut RefAct {
if let YYMINORTYPE::yy238(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy254(self) -> Option<ResolveType> {
if let YYMINORTYPE::yy254(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy254_ref(&mut self) -> &mut Option<ResolveType> {
if let YYMINORTYPE::yy254(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy256(self) -> WindowDef {
if let YYMINORTYPE::yy256(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy256_ref(&mut self) -> &mut WindowDef {
if let YYMINORTYPE::yy256(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy265(self) -> Option<Vec<ResultColumn>> {
if let YYMINORTYPE::yy265(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy265_ref(&mut self) -> &mut Option<Vec<ResultColumn>> {
if let YYMINORTYPE::yy265(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy276(self) -> Option<TransactionType> {
if let YYMINORTYPE::yy276(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy276_ref(&mut self) -> &mut Option<TransactionType> {
if let YYMINORTYPE::yy276(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy277(self) -> NamedColumnConstraint {
if let YYMINORTYPE::yy277(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy277_ref(&mut self) -> &mut NamedColumnConstraint {
if let YYMINORTYPE::yy277(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy279(self) -> DistinctNames {
if let YYMINORTYPE::yy279(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy279_ref(&mut self) -> &mut DistinctNames {
if let YYMINORTYPE::yy279(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy280(self) -> Option<With> {
if let YYMINORTYPE::yy280(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy280_ref(&mut self) -> &mut Option<With> {
if let YYMINORTYPE::yy280(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy285(self) -> IndexMap<Name,ColumnDefinition> {
if let YYMINORTYPE::yy285(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy285_ref(&mut self) -> &mut IndexMap<Name,ColumnDefinition> {
if let YYMINORTYPE::yy285(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy296(self) -> Option<SortOrder> {
if let YYMINORTYPE::yy296(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy296_ref(&mut self) -> &mut Option<SortOrder> {
if let YYMINORTYPE::yy296(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy300(self) -> Option<InitDeferredPred> {
if let YYMINORTYPE::yy300(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy300_ref(&mut self) -> &mut Option<InitDeferredPred> {
if let YYMINORTYPE::yy300(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy305(self) -> Vec<NamedColumnConstraint> {
if let YYMINORTYPE::yy305(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy305_ref(&mut self) -> &mut Vec<NamedColumnConstraint> {
if let YYMINORTYPE::yy305(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy312(self) -> Vec<Expr> {
if let YYMINORTYPE::yy312(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy312_ref(&mut self) -> &mut Vec<Expr> {
if let YYMINORTYPE::yy312(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy314(self) -> FromClause {
if let YYMINORTYPE::yy314(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy314_ref(&mut self) -> &mut FromClause {
if let YYMINORTYPE::yy314(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy322(self) -> Option<NullsOrder> {
if let YYMINORTYPE::yy322(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy322_ref(&mut self) -> &mut Option<NullsOrder> {
if let YYMINORTYPE::yy322(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy329(self) -> Option<Name> {
if let YYMINORTYPE::yy329(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy329_ref(&mut self) -> &mut Option<Name> {
if let YYMINORTYPE::yy329(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy343(self) -> (bool, LikeOperator) {
if let YYMINORTYPE::yy343(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy343_ref(&mut self) -> &mut (bool, LikeOperator) {
if let YYMINORTYPE::yy343(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy353(self) -> FunctionTail {
if let YYMINORTYPE::yy353(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy353_ref(&mut self) -> &mut FunctionTail {
if let YYMINORTYPE::yy353(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy360(self) -> Vec<IndexedColumn> {
if let YYMINORTYPE::yy360(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy360_ref(&mut self) -> &mut Vec<IndexedColumn> {
if let YYMINORTYPE::yy360(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy362(self) -> Option<Type> {
if let YYMINORTYPE::yy362(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy362_ref(&mut self) -> &mut Option<Type> {
if let YYMINORTYPE::yy362(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy364(self) -> Option<As> {
if let YYMINORTYPE::yy364(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy364_ref(&mut self) -> &mut Option<As> {
if let YYMINORTYPE::yy364(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy394(self) -> DeferSubclause {
if let YYMINORTYPE::yy394(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy394_ref(&mut self) -> &mut DeferSubclause {
if let YYMINORTYPE::yy394(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy404(self) -> Vec<RefArg> {
if let YYMINORTYPE::yy404(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy404_ref(&mut self) -> &mut Vec<RefArg> {
if let YYMINORTYPE::yy404(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy415(self) -> Option<Distinctness> {
if let YYMINORTYPE::yy415(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy415_ref(&mut self) -> &mut Option<Distinctness> {
if let YYMINORTYPE::yy415(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy419(self) -> Option<Vec<Expr>> {
if let YYMINORTYPE::yy419(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy419_ref(&mut self) -> &mut Option<Vec<Expr>> {
if let YYMINORTYPE::yy419(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy432(self) -> RefArg {
if let YYMINORTYPE::yy432(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy432_ref(&mut self) -> &mut RefArg {
if let YYMINORTYPE::yy432(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy439(self) -> NamedTableConstraint {
if let YYMINORTYPE::yy439(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy439_ref(&mut self) -> &mut NamedTableConstraint {
if let YYMINORTYPE::yy439(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy444(self) -> (Name, Option<Type>) {
if let YYMINORTYPE::yy444(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy444_ref(&mut self) -> &mut (Name, Option<Type>) {
if let YYMINORTYPE::yy444(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy463(self) -> OneSelect {
if let YYMINORTYPE::yy463(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy463_ref(&mut self) -> &mut OneSelect {
if let YYMINORTYPE::yy463(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy468(self) -> Vec<Vec<Expr>> {
if let YYMINORTYPE::yy468(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy468_ref(&mut self) -> &mut Vec<Vec<Expr>> {
if let YYMINORTYPE::yy468(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy472(self) -> Vec<WindowDef> {
if let YYMINORTYPE::yy472(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy472_ref(&mut self) -> &mut Vec<WindowDef> {
if let YYMINORTYPE::yy472(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy473(self) -> Vec<(Expr, Expr)> {
if let YYMINORTYPE::yy473(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy473_ref(&mut self) -> &mut Vec<(Expr, Expr)> {
if let YYMINORTYPE::yy473(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy474(self) -> QualifiedName {
if let YYMINORTYPE::yy474(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy474_ref(&mut self) -> &mut QualifiedName {
if let YYMINORTYPE::yy474(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy479(self) -> Option<Expr> {
if let YYMINORTYPE::yy479(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy479_ref(&mut self) -> &mut Option<Expr> {
if let YYMINORTYPE::yy479(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy480(self) -> Expr {
if let YYMINORTYPE::yy480(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy480_ref(&mut self) -> &mut Expr {
if let YYMINORTYPE::yy480(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy485(self) -> Option<FromClause> {
if let YYMINORTYPE::yy485(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy485_ref(&mut self) -> &mut Option<FromClause> {
if let YYMINORTYPE::yy485(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy496(self) -> (Option<Expr>, Option<Vec<ResultColumn>>) {
if let YYMINORTYPE::yy496(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy496_ref(&mut self) -> &mut (Option<Expr>, Option<Vec<ResultColumn>>) {
if let YYMINORTYPE::yy496(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy503(self) -> SelectBody {
if let YYMINORTYPE::yy503(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy503_ref(&mut self) -> &mut SelectBody {
if let YYMINORTYPE::yy503(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy504(self) -> (Option<Upsert>, Option<Vec<ResultColumn>>) {
if let YYMINORTYPE::yy504(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy504_ref(&mut self) -> &mut (Option<Upsert>, Option<Vec<ResultColumn>>) {
if let YYMINORTYPE::yy504(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy517(self) -> Vec<Set> {
if let YYMINORTYPE::yy517(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy517_ref(&mut self) -> &mut Vec<Set> {
if let YYMINORTYPE::yy517(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy520(self) -> Materialized {
if let YYMINORTYPE::yy520(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy520_ref(&mut self) -> &mut Materialized {
if let YYMINORTYPE::yy520(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy536(self) -> Vec<SortedColumn> {
if let YYMINORTYPE::yy536(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy536_ref(&mut self) -> &mut Vec<SortedColumn> {
if let YYMINORTYPE::yy536(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy557(self) -> CommonTableExpr {
if let YYMINORTYPE::yy557(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy557_ref(&mut self) -> &mut CommonTableExpr {
if let YYMINORTYPE::yy557(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy559(self) -> Vec<NamedTableConstraint> {
if let YYMINORTYPE::yy559(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy559_ref(&mut self) -> &mut Vec<NamedTableConstraint> {
if let YYMINORTYPE::yy559(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy569(self) -> TriggerCmd {
if let YYMINORTYPE::yy569(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy569_ref(&mut self) -> &mut TriggerCmd {
if let YYMINORTYPE::yy569(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy577(self) -> JoinOperator {
if let YYMINORTYPE::yy577(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy577_ref(&mut self) -> &mut JoinOperator {
if let YYMINORTYPE::yy577(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
fn yy578(self) -> Option<JoinConstraint> {
if let YYMINORTYPE::yy578(v) = self.minor {
v
} else {
unreachable!()
}
}
#[allow(dead_code)]
fn yy578_ref(&mut self) -> &mut Option<JoinConstraint> {
if let YYMINORTYPE::yy578(ref mut v) = self.minor {
v
} else {
unreachable!()
}
}
}
const YYSTACKDEPTH: usize = 128;
const YYERRORSYMBOL: YYCODETYPE = 0; const YYFALLBACK: bool = true;
#[cfg(any(feature = "YYCOVERAGE", not(feature = "NDEBUG")))]
const YYNSTATE: YYACTIONTYPE = 560;
const YYNRULE: usize = 405;
#[cfg(not(feature = "NDEBUG"))]
const YYNRULE_WITH_ACTION: YYACTIONTYPE = 376;
const YYNTOKEN: YYACTIONTYPE = 168;
const YY_MAX_SHIFT: YYACTIONTYPE = 559;
const YY_MIN_SHIFTREDUCE: YYACTIONTYPE = 826;
const YY_MAX_SHIFTREDUCE: YYACTIONTYPE = 1230;
const YY_ERROR_ACTION: YYACTIONTYPE = 1231;
const YY_ACCEPT_ACTION: YYACTIONTYPE = 1232;
const YY_MIN_REDUCE: YYACTIONTYPE = 1234;
macro_rules! YY_ACTTAB_COUNT {() => {2155}}
#[rustfmt::skip]
#[expect(non_upper_case_globals)]
static yy_action: [YYACTIONTYPE; 2155] = [
1260, 1260, 553, 122, 119, 179, 553, 1272, 471, 555,
553, 555, 1258, 553, 469, 1286, 553, 1325, 1325, 395,
1352, 1312, 43, 43, 263, 368, 43, 43, 263, 515,
43, 43, 1583, 75, 75, 8, 75, 75, 368, 122,
119, 179, 32, 129, 130, 83, 553, 1048, 1048, 1062,
1065, 1052, 1052, 127, 127, 128, 128, 128, 128, 1275,
948, 215, 1337, 395, 948, 553, 15, 15, 516, 156,
1278, 516, 372, 541, 33, 979, 510, 260, 177, 517,
321, 406, 159, 980, 287, 75, 75, 129, 130, 83,
469, 1048, 1048, 1062, 1065, 1052, 1052, 127, 127, 128,
128, 128, 128, 126, 126, 126, 126, 125, 125, 124,
124, 124, 123, 120, 432, 1590, 371, 368, 948, 1592,
516, 370, 948, 1590, 529, 122, 119, 179, 421, 1573,
432, 128, 128, 128, 128, 121, 1323, 1323, 395, 122,
119, 179, 1573, 128, 128, 128, 128, 126, 126, 126,
126, 125, 125, 124, 124, 124, 123, 120, 432, 1547,
292, 155, 129, 130, 83, 1503, 1048, 1048, 1062, 1065,
1052, 1052, 127, 127, 128, 128, 128, 128, 146, 126,
126, 126, 126, 125, 125, 124, 124, 124, 123, 120,
432, 126, 126, 126, 126, 125, 125, 124, 124, 124,
123, 120, 432, 178, 236, 501, 1188, 271, 1186, 126,
126, 126, 126, 125, 125, 124, 124, 124, 123, 120,
432, 1573, 126, 126, 126, 126, 125, 125, 124, 124,
124, 123, 120, 432, 253, 315, 535, 490, 487, 486,
553, 856, 395, 553, 544, 544, 544, 485, 100, 856,
511, 125, 125, 124, 124, 124, 123, 120, 432, 368,
75, 75, 856, 73, 73, 1277, 129, 130, 83, 894,
1048, 1048, 1062, 1065, 1052, 1052, 127, 127, 128, 128,
128, 128, 215, 1337, 1111, 124, 124, 124, 123, 120,
432, 1338, 469, 131, 541, 516, 430, 429, 856, 857,
856, 494, 541, 512, 553, 1105, 856, 857, 856, 895,
1107, 502, 1582, 1635, 388, 8, 549, 19, 1106, 856,
857, 856, 201, 374, 75, 75, 126, 126, 126, 126,
125, 125, 124, 124, 124, 123, 120, 432, 1232, 1,
1, 559, 3, 1236, 1109, 1109, 395, 1016, 218, 845,
1611, 559, 3, 1236, 88, 146, 1333, 407, 218, 310,
856, 1540, 295, 1574, 1540, 417, 1333, 387, 1229, 856,
129, 130, 83, 1512, 1048, 1048, 1062, 1065, 1052, 1052,
127, 127, 128, 128, 128, 128, 553, 332, 215, 1337,
440, 439, 405, 215, 1337, 85, 215, 1337, 215, 1337,
541, 343, 460, 342, 856, 541, 15, 15, 541, 450,
541, 551, 315, 535, 247, 419, 264, 856, 857, 856,
354, 409, 467, 1576, 247, 467, 856, 857, 856, 366,
126, 126, 126, 126, 125, 125, 124, 124, 124, 123,
120, 432, 6, 459, 436, 469, 476, 1230, 1608, 329,
395, 331, 1086, 967, 436, 86, 323, 552, 1016, 440,
178, 856, 857, 856, 253, 414, 146, 490, 487, 486,
395, 1016, 442, 402, 129, 130, 83, 485, 1048, 1048,
1062, 1065, 1052, 1052, 127, 127, 128, 128, 128, 128,
1495, 152, 493, 856, 129, 130, 83, 964, 1048, 1048,
1062, 1065, 1052, 1052, 127, 127, 128, 128, 128, 128,
416, 553, 343, 460, 342, 297, 270, 231, 362, 496,
357, 495, 258, 315, 535, 343, 447, 326, 353, 863,
106, 75, 75, 330, 126, 126, 126, 126, 125, 125,
124, 124, 124, 123, 120, 432, 1049, 1049, 1063, 1066,
856, 857, 856, 453, 126, 126, 126, 126, 125, 125,
124, 124, 124, 123, 120, 432, 311, 444, 547, 1582,
856, 1038, 8, 856, 82, 395, 553, 966, 221, 350,
7, 1580, 1180, 148, 8, 380, 150, 863, 1027, 482,
391, 239, 1025, 430, 429, 1179, 137, 137, 1181, 129,
130, 83, 226, 1048, 1048, 1062, 1065, 1052, 1052, 127,
127, 128, 128, 128, 128, 521, 965, 257, 856, 395,
210, 1053, 1180, 491, 1026, 1028, 1028, 856, 857, 856,
856, 857, 856, 525, 238, 1179, 133, 1445, 1181, 373,
856, 1109, 1109, 129, 130, 83, 285, 1048, 1048, 1062,
1065, 1052, 1052, 127, 127, 128, 128, 128, 128, 126,
126, 126, 126, 125, 125, 124, 124, 124, 123, 120,
432, 856, 363, 1605, 871, 856, 857, 856, 215, 1337,
2, 431, 431, 431, 116, 542, 400, 4, 475, 946,
541, 524, 122, 119, 179, 551, 514, 856, 857, 856,
369, 545, 353, 126, 126, 126, 126, 125, 125, 124,
124, 124, 123, 120, 432, 1038, 14, 14, 856, 553,
1558, 233, 232, 395, 553, 433, 221, 876, 856, 857,
856, 871, 1027, 549, 315, 535, 1025, 538, 390, 139,
139, 202, 1557, 553, 58, 58, 1299, 129, 130, 83,
437, 1048, 1048, 1062, 1065, 1052, 1052, 127, 127, 128,
128, 128, 128, 15, 15, 553, 1038, 395, 1026, 1028,
1028, 868, 114, 114, 945, 856, 857, 856, 532, 856,
115, 291, 433, 554, 433, 59, 59, 1025, 123, 120,
432, 129, 130, 83, 1555, 1048, 1048, 1062, 1065, 1052,
1052, 127, 127, 128, 128, 128, 128, 126, 126, 126,
126, 125, 125, 124, 124, 124, 123, 120, 432, 1026,
1028, 1028, 1029, 29, 553, 1428, 553, 34, 1117, 1116,
456, 146, 116, 542, 503, 4, 856, 857, 856, 550,
1575, 1263, 401, 553, 53, 53, 75, 75, 553, 545,
296, 126, 126, 126, 126, 125, 125, 124, 124, 124,
123, 120, 432, 75, 75, 856, 215, 1337, 17, 17,
441, 395, 551, 433, 1321, 1201, 1295, 399, 541, 504,
1298, 427, 215, 1337, 1319, 538, 498, 551, 315, 535,
455, 553, 1554, 106, 541, 129, 130, 83, 428, 1048,
1048, 1062, 1065, 1052, 1052, 127, 127, 128, 128, 128,
128, 15, 15, 941, 1038, 395, 862, 553, 940, 1039,
114, 114, 856, 857, 856, 979, 415, 364, 115, 223,
433, 554, 433, 980, 12, 1025, 263, 45, 45, 129,
130, 83, 1444, 1048, 1048, 1062, 1065, 1052, 1052, 127,
127, 128, 128, 128, 128, 126, 126, 126, 126, 125,
125, 124, 124, 124, 123, 120, 432, 1026, 1028, 1028,
1029, 29, 948, 1512, 862, 234, 553, 363, 1605, 1581,
1157, 1633, 8, 1633, 1331, 1371, 221, 368, 366, 1256,
1508, 1510, 553, 505, 553, 885, 15, 15, 394, 126,
126, 126, 126, 125, 125, 124, 124, 124, 123, 120,
432, 299, 15, 15, 15, 15, 215, 1337, 300, 395,
1313, 215, 1337, 1021, 424, 215, 1337, 420, 541, 212,
948, 157, 284, 541, 834, 835, 836, 541, 461, 395,
279, 551, 964, 129, 130, 83, 1552, 1048, 1048, 1062,
1065, 1052, 1052, 127, 127, 128, 128, 128, 128, 1508,
1155, 338, 856, 129, 130, 83, 317, 1048, 1048, 1062,
1065, 1052, 1052, 127, 127, 128, 128, 128, 128, 1180,
1428, 553, 405, 1157, 1634, 1135, 1634, 208, 1337, 551,
546, 1573, 1179, 229, 404, 1181, 318, 553, 381, 541,
1136, 15, 15, 126, 126, 126, 126, 125, 125, 124,
124, 124, 123, 120, 432, 1137, 213, 75, 75, 856,
857, 856, 534, 126, 126, 126, 126, 125, 125, 124,
124, 124, 123, 120, 432, 1370, 239, 918, 513, 531,
933, 934, 387, 1156, 1135, 411, 288, 919, 523, 533,
553, 234, 312, 395, 215, 1337, 1180, 1134, 530, 1136,
346, 965, 348, 1155, 216, 1337, 541, 1194, 405, 1179,
60, 60, 1181, 395, 1137, 113, 541, 129, 130, 83,
107, 1048, 1048, 1062, 1065, 1052, 1052, 127, 127, 128,
128, 128, 128, 378, 553, 223, 537, 129, 130, 83,
553, 1048, 1048, 1062, 1065, 1052, 1052, 127, 127, 128,
128, 128, 128, 446, 46, 46, 256, 255, 254, 1193,
61, 61, 1230, 551, 1579, 551, 879, 8, 1546, 553,
1502, 553, 290, 553, 282, 553, 1443, 126, 126, 126,
126, 125, 125, 124, 124, 124, 123, 120, 432, 62,
62, 63, 63, 64, 64, 65, 65, 126, 126, 126,
126, 125, 125, 124, 124, 124, 123, 120, 432, 553,
1216, 363, 1605, 551, 553, 551, 104, 553, 1332, 553,
1328, 553, 243, 553, 879, 553, 551, 395, 553, 47,
47, 449, 222, 475, 48, 48, 533, 49, 49, 51,
51, 52, 52, 66, 66, 135, 135, 395, 136, 136,
1297, 129, 130, 83, 111, 1048, 1048, 1062, 1065, 1052,
1052, 127, 127, 128, 128, 128, 128, 395, 1224, 553,
1360, 129, 130, 83, 1561, 1048, 1048, 1062, 1065, 1052,
1052, 127, 127, 128, 128, 128, 128, 553, 475, 67,
67, 129, 118, 83, 1264, 1048, 1048, 1062, 1065, 1052,
1052, 127, 127, 128, 128, 128, 128, 68, 68, 553,
451, 126, 126, 126, 126, 125, 125, 124, 124, 124,
123, 120, 432, 553, 1535, 553, 340, 553, 229, 69,
69, 126, 126, 126, 126, 125, 125, 124, 124, 124,
123, 120, 432, 16, 16, 70, 70, 54, 54, 1534,
1428, 126, 126, 126, 126, 125, 125, 124, 124, 124,
123, 120, 432, 553, 379, 553, 223, 553, 551, 553,
349, 395, 553, 452, 553, 1113, 1428, 551, 1428, 1112,
1598, 298, 345, 71, 71, 55, 55, 72, 72, 56,
56, 395, 74, 74, 165, 165, 130, 83, 465, 1048,
1048, 1062, 1065, 1052, 1052, 127, 127, 128, 128, 128,
128, 553, 454, 1315, 553, 412, 553, 83, 553, 1048,
1048, 1062, 1065, 1052, 1052, 127, 127, 128, 128, 128,
128, 166, 166, 228, 79, 79, 57, 57, 138, 138,
551, 413, 551, 425, 551, 277, 1296, 347, 553, 316,
116, 542, 553, 4, 113, 126, 126, 126, 126, 125,
125, 124, 124, 124, 123, 120, 432, 545, 76, 76,
543, 401, 163, 163, 553, 126, 126, 126, 126, 125,
125, 124, 124, 124, 123, 120, 432, 257, 553, 1578,
445, 433, 8, 518, 140, 140, 553, 82, 553, 473,
553, 244, 553, 538, 553, 1311, 553, 906, 134, 134,
553, 116, 542, 146, 4, 553, 164, 164, 158, 158,
144, 144, 143, 143, 141, 141, 142, 142, 545, 356,
78, 78, 1038, 507, 553, 80, 80, 553, 114, 114,
553, 10, 315, 535, 462, 112, 115, 109, 433, 554,
433, 82, 433, 1025, 77, 77, 400, 44, 44, 162,
50, 50, 403, 181, 538, 466, 281, 177, 314, 103,
315, 535, 82, 89, 225, 82, 1093, 105, 527, 941,
154, 463, 40, 526, 940, 1026, 1028, 1028, 1029, 29,
1152, 519, 389, 1038, 334, 361, 106, 474, 520, 114,
114, 339, 1030, 106, 293, 360, 1018, 115, 262, 433,
554, 433, 1162, 468, 1025, 262, 470, 367, 262, 246,
483, 351, 259, 106, 893, 892, 900, 901, 161, 1089,
106, 259, 1381, 970, 1093, 262, 982, 983, 938, 939,
113, 113, 1110, 1110, 1108, 1108, 1026, 1028, 1028, 1029,
29, 1610, 1205, 435, 1427, 860, 283, 151, 309, 1355,
1030, 385, 385, 384, 273, 382, 536, 1367, 1210, 1432,
1274, 116, 542, 1259, 4, 1248, 1247, 1249, 1240, 478,
276, 185, 499, 320, 116, 542, 13, 4, 545, 386,
305, 319, 306, 307, 242, 1413, 286, 325, 443, 328,
289, 545, 336, 337, 1418, 472, 294, 1417, 488, 1295,
341, 359, 433, 1538, 235, 1394, 1499, 1498, 1224, 1364,
230, 1250, 187, 1365, 538, 433, 1363, 219, 1362, 539,
170, 220, 308, 145, 1221, 377, 84, 538, 527, 240,
183, 88, 227, 528, 199, 132, 87, 1504, 1414, 1408,
186, 527, 324, 1038, 533, 37, 526, 175, 189, 114,
114, 448, 1401, 191, 327, 192, 1038, 115, 193, 433,
554, 433, 114, 114, 1025, 195, 116, 542, 194, 4,
115, 481, 433, 554, 433, 396, 104, 1025, 1420, 1493,
315, 535, 196, 545, 203, 1539, 464, 1419, 38, 1537,
1423, 90, 458, 477, 205, 209, 1026, 1028, 1028, 1029,
29, 206, 479, 497, 438, 392, 1318, 433, 344, 1026,
1028, 1028, 1029, 29, 1205, 435, 1317, 1316, 283, 538,
418, 96, 1306, 385, 385, 384, 273, 382, 1289, 1288,
1210, 393, 283, 81, 542, 1283, 4, 385, 385, 384,
273, 382, 885, 185, 1210, 320, 1282, 358, 1038, 1281,
545, 1305, 1280, 319, 114, 114, 236, 185, 1604, 320,
1335, 422, 115, 506, 433, 554, 433, 319, 423, 1025,
303, 304, 365, 11, 433, 1478, 265, 426, 1386, 108,
313, 1586, 1585, 153, 187, 1385, 538, 1344, 509, 522,
375, 376, 170, 36, 1336, 145, 1334, 556, 187, 217,
1208, 1026, 1028, 1028, 1029, 29, 170, 272, 274, 145,
275, 557, 186, 1245, 1237, 1038, 167, 168, 397, 398,
827, 114, 114, 149, 182, 301, 186, 434, 224, 115,
169, 433, 554, 433, 241, 558, 1025, 1236, 184, 188,
1103, 1101, 218, 322, 190, 1216, 171, 396, 921, 245,
1333, 248, 315, 535, 333, 508, 18, 249, 335, 1114,
262, 396, 197, 1125, 1121, 198, 315, 535, 1026, 1028,
1028, 1029, 29, 457, 172, 173, 438, 408, 410, 174,
200, 91, 215, 1337, 92, 93, 1128, 94, 250, 251,
438, 1124, 5, 204, 541, 39, 844, 480, 360, 252,
352, 207, 95, 20, 484, 21, 883, 489, 247, 355,
492, 97, 896, 302, 160, 98, 500, 99, 1199, 176,
22, 1068, 1164, 41, 1163, 101, 102, 1084, 1069, 1067,
932, 237, 278, 113, 280, 211, 261, 23, 436, 968,
974, 24, 1183, 1187, 25, 1185, 26, 106, 1192, 1191,
27, 1071, 28, 266, 110, 1133, 1072, 30, 9, 540,
42, 31, 1031, 861, 117, 548, 1169, 383, 35, 214,
1207, 267, 180, 147, 1206, 1233, 1233, 1233, 1233, 268,
1233, 1233, 269, 1233, 1265,
];
#[rustfmt::skip]
#[expect(non_upper_case_globals)]
static yy_lookahead: [YYCODETYPE; 2323] = [
176, 176, 176, 252, 253, 254, 176, 195, 176, 185,
176, 187, 187, 176, 176, 203, 176, 215, 216, 19,
233, 210, 196, 197, 24, 176, 196, 197, 24, 186,
196, 197, 285, 196, 197, 288, 196, 197, 176, 252,
253, 254, 22, 43, 44, 45, 176, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, 57, 58, 196,
60, 218, 219, 19, 60, 176, 196, 197, 231, 220,
196, 231, 199, 230, 54, 31, 239, 234, 235, 239,
176, 211, 220, 39, 246, 196, 197, 43, 44, 45,
176, 47, 48, 49, 50, 51, 52, 53, 54, 55,
56, 57, 58, 103, 104, 105, 106, 107, 108, 109,
110, 111, 112, 113, 114, 289, 290, 176, 118, 289,
231, 291, 118, 289, 290, 252, 253, 254, 239, 280,
114, 55, 56, 57, 58, 59, 215, 216, 19, 252,
253, 254, 280, 55, 56, 57, 58, 103, 104, 105,
106, 107, 108, 109, 110, 111, 112, 113, 114, 272,
246, 220, 43, 44, 45, 261, 47, 48, 49, 50,
51, 52, 53, 54, 55, 56, 57, 58, 82, 103,
104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
114, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 176, 166, 167, 87, 26, 89, 103,
104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
114, 280, 103, 104, 105, 106, 107, 108, 109, 110,
111, 112, 113, 114, 120, 139, 140, 123, 124, 125,
176, 60, 19, 176, 192, 193, 194, 133, 25, 60,
186, 107, 108, 109, 110, 111, 112, 113, 114, 176,
196, 197, 60, 196, 197, 196, 43, 44, 45, 35,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
57, 58, 218, 219, 11, 109, 110, 111, 112, 113,
114, 219, 176, 70, 230, 231, 107, 108, 117, 118,
119, 67, 230, 239, 176, 116, 117, 118, 119, 75,
121, 284, 285, 277, 278, 288, 176, 22, 129, 117,
118, 119, 22, 256, 196, 197, 103, 104, 105, 106,
107, 108, 109, 110, 111, 112, 113, 114, 168, 169,
170, 171, 172, 173, 155, 156, 19, 74, 178, 21,
170, 171, 172, 173, 152, 82, 186, 62, 178, 231,
60, 186, 246, 280, 186, 131, 186, 22, 23, 60,
43, 44, 45, 176, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, 57, 58, 176, 16, 218, 219,
193, 194, 176, 218, 219, 68, 218, 219, 218, 219,
230, 128, 129, 130, 60, 230, 196, 197, 230, 81,
230, 176, 139, 140, 244, 19, 181, 117, 118, 119,
24, 211, 247, 283, 244, 247, 117, 118, 119, 176,
103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
113, 114, 267, 268, 274, 176, 268, 102, 176, 78,
19, 80, 124, 144, 274, 24, 240, 176, 74, 262,
176, 117, 118, 119, 120, 212, 82, 123, 124, 125,
19, 74, 247, 179, 43, 44, 45, 133, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
162, 22, 96, 60, 43, 44, 45, 25, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
114, 176, 128, 129, 130, 246, 120, 121, 122, 123,
124, 125, 126, 139, 140, 128, 129, 130, 132, 60,
25, 196, 197, 162, 103, 104, 105, 106, 107, 108,
109, 110, 111, 112, 113, 114, 47, 48, 49, 50,
117, 118, 119, 259, 103, 104, 105, 106, 107, 108,
109, 110, 111, 112, 113, 114, 231, 225, 284, 285,
60, 101, 288, 60, 232, 19, 176, 144, 176, 23,
22, 285, 77, 73, 288, 183, 73, 118, 118, 19,
188, 119, 122, 107, 108, 90, 196, 197, 93, 43,
44, 45, 151, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56, 57, 58, 176, 144, 47, 60, 19,
25, 122, 77, 23, 154, 155, 156, 117, 118, 119,
117, 118, 119, 88, 176, 90, 22, 251, 93, 199,
60, 155, 156, 43, 44, 45, 186, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, 57, 58, 103,
104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
114, 60, 286, 287, 60, 117, 118, 119, 218, 219,
22, 192, 193, 194, 19, 20, 116, 22, 176, 109,
230, 146, 252, 253, 254, 176, 176, 117, 118, 119,
181, 36, 132, 103, 104, 105, 106, 107, 108, 109,
110, 111, 112, 113, 114, 101, 196, 197, 60, 176,
176, 107, 108, 19, 176, 60, 176, 23, 117, 118,
119, 117, 118, 176, 139, 140, 122, 72, 188, 196,
197, 22, 176, 176, 196, 197, 206, 43, 44, 45,
176, 47, 48, 49, 50, 51, 52, 53, 54, 55,
56, 57, 58, 196, 197, 176, 101, 19, 154, 155,
156, 23, 107, 108, 109, 117, 118, 119, 211, 60,
115, 269, 117, 118, 119, 196, 197, 122, 112, 113,
114, 43, 44, 45, 176, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, 58, 103, 104, 105,
106, 107, 108, 109, 110, 111, 112, 113, 114, 154,
155, 156, 157, 158, 176, 176, 176, 22, 128, 129,
130, 82, 19, 20, 186, 22, 117, 118, 119, 282,
283, 190, 191, 176, 196, 197, 196, 197, 176, 36,
186, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 196, 197, 60, 218, 219, 196, 197,
121, 19, 176, 60, 203, 23, 205, 181, 230, 231,
206, 231, 218, 219, 213, 72, 109, 176, 139, 140,
241, 176, 181, 25, 230, 43, 44, 45, 231, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
58, 196, 197, 136, 101, 19, 60, 176, 141, 23,
107, 108, 117, 118, 119, 31, 211, 221, 115, 223,
117, 118, 119, 39, 22, 122, 24, 196, 197, 43,
44, 45, 251, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56, 57, 58, 103, 104, 105, 106, 107,
108, 109, 110, 111, 112, 113, 114, 154, 155, 156,
157, 158, 60, 176, 118, 25, 176, 286, 287, 285,
22, 23, 288, 25, 186, 176, 176, 176, 176, 186,
193, 194, 176, 186, 176, 127, 196, 197, 188, 103,
104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
114, 211, 196, 197, 196, 197, 218, 219, 208, 19,
210, 218, 219, 23, 212, 218, 219, 211, 230, 211,
118, 220, 100, 230, 7, 8, 9, 230, 130, 19,
23, 176, 25, 43, 44, 45, 181, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, 57, 58, 262,
102, 153, 60, 43, 44, 45, 134, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, 57, 58, 77,
176, 176, 176, 22, 23, 12, 25, 218, 219, 176,
88, 280, 90, 143, 181, 93, 164, 176, 16, 230,
27, 196, 197, 103, 104, 105, 106, 107, 108, 109,
110, 111, 112, 113, 114, 42, 211, 196, 197, 117,
118, 119, 186, 103, 104, 105, 106, 107, 108, 109,
110, 111, 112, 113, 114, 176, 119, 64, 135, 67,
137, 138, 22, 23, 12, 241, 240, 74, 146, 146,
176, 25, 231, 19, 218, 219, 77, 23, 86, 27,
78, 144, 80, 102, 218, 219, 230, 95, 176, 90,
196, 197, 93, 19, 42, 25, 230, 43, 44, 45,
160, 47, 48, 49, 50, 51, 52, 53, 54, 55,
56, 57, 58, 221, 176, 223, 64, 43, 44, 45,
176, 47, 48, 49, 50, 51, 52, 53, 54, 55,
56, 57, 58, 176, 196, 197, 128, 129, 130, 147,
196, 197, 102, 176, 285, 176, 60, 288, 181, 176,
181, 176, 240, 176, 22, 176, 251, 103, 104, 105,
106, 107, 108, 109, 110, 111, 112, 113, 114, 196,
197, 196, 197, 196, 197, 196, 197, 103, 104, 105,
106, 107, 108, 109, 110, 111, 112, 113, 114, 176,
25, 286, 287, 176, 176, 176, 150, 176, 181, 176,
181, 176, 15, 176, 118, 176, 176, 19, 176, 196,
197, 181, 24, 176, 196, 197, 146, 196, 197, 196,
197, 196, 197, 196, 197, 196, 197, 19, 196, 197,
206, 43, 44, 45, 160, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, 58, 19, 61, 176,
236, 43, 44, 45, 176, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, 58, 176, 176, 196,
197, 43, 44, 45, 142, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, 58, 196, 197, 176,
176, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 176, 176, 176, 269, 176, 143, 196,
197, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 196, 197, 196, 197, 196, 197, 176,
176, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 176, 221, 176, 223, 176, 176, 176,
176, 19, 176, 181, 176, 29, 176, 176, 176, 33,
293, 269, 181, 196, 197, 196, 197, 196, 197, 196,
197, 19, 196, 197, 196, 197, 44, 45, 116, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
58, 176, 66, 176, 176, 241, 176, 45, 176, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
58, 196, 197, 151, 196, 197, 196, 197, 196, 197,
176, 241, 176, 241, 176, 181, 176, 181, 176, 181,
19, 20, 176, 22, 25, 103, 104, 105, 106, 107,
108, 109, 110, 111, 112, 113, 114, 36, 196, 197,
190, 191, 196, 197, 176, 103, 104, 105, 106, 107,
108, 109, 110, 111, 112, 113, 114, 47, 176, 285,
225, 60, 288, 19, 196, 197, 176, 232, 176, 19,
176, 24, 176, 72, 176, 23, 176, 25, 196, 197,
176, 19, 20, 82, 22, 176, 196, 197, 196, 197,
196, 197, 196, 197, 196, 197, 196, 197, 36, 176,
196, 197, 101, 19, 176, 196, 197, 176, 107, 108,
176, 49, 139, 140, 225, 159, 115, 161, 117, 118,
119, 232, 60, 122, 196, 197, 116, 196, 197, 23,
196, 197, 275, 276, 72, 225, 234, 235, 225, 116,
139, 140, 232, 150, 151, 232, 60, 148, 86, 136,
22, 130, 24, 91, 141, 154, 155, 156, 157, 158,
23, 117, 25, 101, 23, 122, 25, 117, 145, 107,
108, 23, 60, 25, 153, 132, 23, 115, 25, 117,
118, 119, 98, 23, 122, 25, 23, 176, 25, 142,
23, 23, 25, 25, 121, 122, 7, 8, 23, 23,
25, 25, 176, 23, 118, 25, 84, 85, 23, 23,
25, 25, 155, 156, 155, 156, 154, 155, 156, 157,
158, 0, 1, 2, 176, 23, 5, 25, 233, 176,
118, 10, 11, 12, 13, 14, 216, 176, 17, 176,
176, 19, 20, 176, 22, 176, 176, 176, 176, 264,
263, 30, 146, 32, 19, 20, 224, 22, 36, 174,
233, 40, 233, 233, 273, 249, 226, 245, 237, 245,
237, 36, 270, 227, 249, 270, 227, 249, 200, 205,
226, 199, 60, 249, 209, 243, 199, 199, 61, 238,
224, 182, 71, 238, 72, 60, 238, 221, 238, 258,
79, 221, 237, 82, 38, 226, 271, 72, 86, 273,
273, 152, 151, 91, 22, 149, 271, 261, 250, 222,
99, 86, 221, 101, 146, 248, 91, 43, 214, 107,
108, 18, 222, 217, 221, 217, 101, 115, 217, 117,
118, 119, 107, 108, 122, 180, 19, 20, 217, 22,
115, 18, 117, 118, 119, 134, 150, 122, 250, 227,
139, 140, 180, 36, 214, 227, 227, 250, 248, 227,
214, 159, 63, 266, 180, 22, 154, 155, 156, 157,
158, 180, 201, 116, 163, 201, 198, 60, 265, 154,
155, 156, 157, 158, 1, 2, 198, 198, 5, 72,
65, 22, 207, 10, 11, 12, 13, 14, 204, 204,
17, 201, 5, 19, 20, 198, 22, 10, 11, 12,
13, 14, 127, 30, 17, 32, 200, 198, 101, 198,
36, 207, 198, 40, 107, 108, 166, 30, 287, 32,
222, 24, 115, 281, 117, 118, 119, 40, 114, 122,
260, 260, 201, 22, 60, 255, 92, 83, 242, 159,
257, 292, 292, 165, 71, 242, 72, 229, 141, 147,
228, 227, 79, 25, 222, 82, 222, 184, 71, 180,
13, 154, 155, 156, 157, 158, 79, 177, 177, 82,
6, 175, 99, 175, 175, 101, 189, 189, 279, 279,
4, 107, 108, 202, 276, 202, 99, 3, 22, 115,
189, 117, 118, 119, 15, 171, 122, 173, 16, 152,
23, 23, 178, 140, 143, 25, 131, 134, 20, 24,
186, 145, 139, 140, 16, 141, 22, 116, 162, 69,
25, 134, 69, 1, 76, 143, 139, 140, 154, 155,
156, 157, 158, 41, 131, 131, 163, 62, 37, 131,
152, 54, 218, 219, 54, 54, 117, 54, 34, 142,
163, 1, 5, 116, 230, 24, 20, 19, 132, 126,
23, 22, 22, 22, 68, 22, 60, 68, 244, 24,
97, 22, 28, 68, 23, 150, 22, 25, 23, 37,
34, 23, 23, 22, 98, 143, 143, 23, 23, 23,
136, 142, 23, 25, 23, 22, 34, 34, 274, 144,
117, 34, 89, 76, 34, 87, 34, 25, 76, 94,
34, 23, 22, 22, 25, 23, 11, 22, 44, 25,
22, 34, 23, 23, 22, 24, 23, 15, 22, 25,
1, 142, 25, 23, 1, 294, 294, 294, 294, 142,
294, 294, 142, 294, 142, 294, 294, 294, 294, 294,
294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
294, 294, 294, 294, 294, 294, 294, 294, 294, 294,
294, 294, 294,
];
#[expect(non_camel_case_types)]
type YY_SHIFT_TYPE = u16;
const YY_SHIFT_COUNT: YYACTIONTYPE = 559;
#[rustfmt::skip]
#[expect(non_upper_case_globals)]
static yy_shift_ofst: [YY_SHIFT_TYPE; 560] = [
1883, 1711, 1491, 1897, 1491, 384, 273, 96, 1552, 1712,
1725, 813, 813, 813, 0, 44, 44, 327, 813, 813,
813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
813, 813, 189, 189, 1002, 1002, 344, 749, 96, 96,
96, 96, 96, 119, 223, 431, 451, 556, 600, 704,
748, 852, 896, 1000, 1020, 1134, 1154, 1268, 1288, 1288,
1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288,
1288, 1288, 1288, 1288, 1288, 1288, 1308, 1288, 1412, 1432,
1432, 1817, 665, 1884, 813, 813, 813, 813, 813, 813,
813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
813, 813, 813, 813, 76, 88, 88, 88, 88, 88,
88, 88, 106, 144, 176, 510, 513, 181, 611, 570,
611, 486, 486, 611, 611, 595, 595, 595, 676, 595,
38, 38, 38, 16, 16, 2155, 2155, 396, 396, 396,
202, 300, 300, 300, 300, 1073, 1073, 558, 545, 658,
181, 958, 1061, 611, 611, 611, 611, 611, 611, 611,
611, 611, 611, 611, 611, 611, 611, 611, 611, 611,
611, 611, 611, 611, 611, 611, 611, 611, 1003, 611,
611, 611, 505, 505, 611, 1003, 1003, 611, 328, 1079,
1079, 856, 856, 1463, 2155, 2155, 2155, 2155, 2155, 2155,
2155, 614, 470, 470, 719, 114, 805, 580, 309, 433,
611, 611, 611, 611, 611, 611, 611, 397, 611, 611,
611, 611, 611, 611, 234, 234, 234, 611, 611, 611,
1017, 611, 611, 611, 912, 1072, 1132, 611, 611, 611,
611, 611, 611, 611, 611, 611, 700, 1406, 4, 4,
4, 472, 777, 1027, 1267, 1342, 1483, 950, 1534, 1483,
1534, 1540, 1126, 1342, 1342, 1126, 1342, 950, 1540, 868,
1542, 1500, 894, 894, 894, 1513, 1513, 1513, 1513, 1534,
1489, 1150, 1150, 1446, 1245, 1503, 1618, 1717, 1717, 1756,
1756, 1649, 1651, 1782, 1656, 1668, 1774, 1656, 1668, 1803,
1803, 1803, 1803, 1823, 1696, 1823, 1696, 1651, 1651, 1696,
1782, 1696, 1774, 1774, 1702, 1799, 1823, 1843, 1823, 1843,
1757, 1757, 1757, 1825, 1869, 1869, 1843, 1757, 1785, 1757,
1825, 1757, 1757, 1760, 1656, 1907, 1824, 1824, 1843, 1921,
1854, 1854, 1864, 1864, 1790, 1788, 1812, 1696, 1656, 1656,
1938, 1823, 1957, 1957, 1974, 1974, 1974, 2155, 2155, 2155,
2155, 2155, 2155, 2155, 2155, 499, 371, 345, 1120, 932,
1088, 469, 1082, 1627, 20, 1537, 1631, 908, 1511, 1638,
295, 1643, 1650, 1653, 1657, 1658, 1166, 1563, 1679, 1533,
1665, 1596, 1574, 1576, 1666, 1670, 1612, 1675, 1676, 1547,
1549, 1692, 1602, 1212, 1986, 1994, 1976, 1989, 1992, 1987,
1988, 1873, 1857, 1885, 1990, 1990, 1995, 1871, 1998, 1876,
2008, 2004, 1911, 1866, 1960, 2005, 1963, 1958, 2002, 2032,
1892, 1913, 1990, 1914, 1985, 2011, 1990, 1898, 1997, 2000,
2001, 2003, 1918, 1939, 2024, 1917, 2060, 2057, 1947, 2041,
2046, 2048, 1936, 1943, 2049, 2006, 2050, 2051, 2047, 2053,
2009, 2016, 2055, 1983, 2054, 2059, 2015, 2052, 2061, 2056,
1935, 2064, 2065, 2068, 2062, 2069, 2071, 1996, 1952, 1953,
2074, 2075, 2076, 1964, 1959, 2079, 2078, 2081, 1993, 2072,
2083, 1965, 2073, 2077, 2080, 2082, 2023, 2037, 2028, 2084,
2042, 2025, 2092, 2086, 2098, 2100, 2099, 2102, 2101, 2115,
2105, 2104, 2108, 2109, 2110, 2112, 2097, 2113, 2116, 2111,
2114, 1999, 2007, 2010, 2012, 2117, 2120, 2122, 2139, 2143,
];
#[expect(non_camel_case_types)]
type YY_REDUCE_TYPE = i16;
const YY_REDUCE_COUNT: YYACTIONTYPE = 394;
#[rustfmt::skip]
#[expect(non_upper_case_globals)]
static yy_reduce_ofst: [YY_REDUCE_TYPE; 395] = [
170, 180, 64, 1834, 648, 175, 178, -157, -174, -170,
-166, -163, -160, -111, -213, -127, 440, -113, -130, 210,
715, 800, 816, 128, 818, 905, 335, 567, 650, 67,
667, 921, 197, 797, 27, 284, 810, 460, 664, 798,
803, 807, 936, -249, -249, -249, -249, -249, -249, -249,
-249, -249, -249, -249, -249, -249, -249, -249, -249, -249,
-249, -249, -249, -249, -249, -249, -249, -249, -249, -249,
-249, -249, -249, -249, -249, -249, -249, -249, -249, -249,
-249, 400, 520, 543, 548, 589, 672, 741, 974, 1018,
1024, 1053, 1055, 1057, 1059, 1093, 1098, 1101, 1103, 1105,
1107, 1109, 1112, 1153, 1171, 1193, 1207, 1209, 1211, 1247,
1249, 1251, 1253, 1256, 1258, 1295, 1298, 1300, 1302, 1332,
1336, 1358, 1372, 1380, 1382, 1384, 1386, 1388, 1390, 1394,
1399, 1418, 1421, 1424, -249, -249, -249, -249, -249, -249,
-249, -249, -249, -249, -249, -151, -138, -176, -59, 671,
811, 52, 489, 557, 402, 869, 946, 869, -249, 946,
386, 691, 985, -249, -249, -249, -249, -188, -188, -188,
-96, -162, -86, 116, 269, -198, -79, 235, -253, 519,
-175, 36, 36, 550, 696, 711, 865, 913, 216, 906,
992, 1047, 1049, 1097, 1099, 1110, 1252, 649, 512, 904,
1117, 1234, 1260, 1172, 1261, 1324, 1326, 253, 706, 812,
83, 1262, 296, 694, 140, 972, 1203, 1328, 294, 939,
1264, 651, 1340, 72, 1347, 342, 1325, 1379, 1400, 1392,
1403, -137, -126, 69, -168, -189, 272, 281, 439, 458,
544, 566, 574, 618, 809, 959, 1037, 225, 1158, 1194,
1208, 1233, 1254, 1297, 540, 674, 1104, 1330, 1413, 1501,
1094, 1516, 1538, 1543, 1485, 1147, 1510, 1551, 1553, 281,
1554, 1557, 1559, 1560, 1561, 1562, 1475, 1477, 1517, 1519,
1520, 1094, 1522, 1575, 1481, 1506, 1512, 1530, 1521, 1514,
1523, 1492, 1536, 1515, 1518, 1539, 1524, 1544, 1495, 1568,
1565, 1564, 1572, 1577, 1578, 1541, 1545, 1548, 1550, 1555,
1532, 1566, 1570, 1531, 1569, 1556, 1599, 1526, 1527, 1525,
1535, 1546, 1558, 1567, 1587, 1591, 1604, 1600, 1603, 1606,
1608, 1611, 1621, 1655, 1622, 1672, 1628, 1598, 1607, 1629,
1610, 1632, 1640, 1646, 1597, 1613, 1684, 1671, 1691, 1674,
1678, 1688, 1689, 1685, 1694, 1695, 1700, 1707, 1716, 1719,
1714, 1721, 1724, 1641, 1708, 1652, 1680, 1681, 1741, 1690,
1659, 1660, 1706, 1713, 1693, 1728, 1732, 1734, 1742, 1744,
1783, 1789, 1800, 1801, 1806, 1808, 1809, 1709, 1710, 1718,
1797, 1798, 1791, 1793, 1811,
];
#[rustfmt::skip]
#[expect(non_upper_case_globals)]
static yy_default: [YYACTIONTYPE; 560] = [
1566, 1566, 1488, 1566, 1231, 1231, 1231, 1361, 1231, 1231,
1231, 1488, 1488, 1488, 1357, 1389, 1389, 1549, 1231, 1231,
1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1486,
1231, 1231, 1231, 1231, 1584, 1584, 1231, 1231, 1231, 1231,
1231, 1231, 1231, 1231, 1398, 1231, 1405, 1231, 1231, 1231,
1231, 1231, 1489, 1490, 1231, 1231, 1231, 1231, 1548, 1550,
1505, 1531, 1412, 1411, 1410, 1409, 1400, 1377, 1403, 1396,
1482, 1483, 1481, 1485, 1489, 1490, 1231, 1399, 1449, 1466,
1448, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1231, 1231, 1231, 1231, 1458, 1465, 1464, 1463, 1472, 1462,
1459, 1451, 1450, 1452, 1453, 1231, 1231, 1257, 1231, 1320,
1231, 1231, 1231, 1231, 1231, 1568, 1567, 1231, 1454, 1231,
1442, 1441, 1440, 1469, 1455, 1468, 1467, 1556, 1262, 1261,
1506, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1584, 1231,
1231, 1231, 1231, 1231, 1231, 1553, 1551, 1231, 1231, 1231,
1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1383, 1231,
1231, 1231, 1584, 1584, 1231, 1383, 1383, 1231, 1254, 1584,
1584, 1266, 1266, 1231, 1562, 1351, 1351, 1351, 1351, 1361,
1351, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1231, 1231, 1231, 1231, 1357, 1231, 1231, 1231, 1231, 1231,
1231, 1231, 1231, 1231, 1231, 1239, 1231, 1523, 1357, 1357,
1357, 1359, 1350, 1241, 1631, 1415, 1404, 1358, 1380, 1404,
1380, 1628, 1402, 1415, 1415, 1402, 1415, 1358, 1628, 1292,
1622, 1285, 1389, 1389, 1389, 1379, 1379, 1379, 1379, 1380,
1395, 1383, 1383, 1484, 1358, 1350, 1231, 1631, 1631, 1630,
1630, 1506, 1422, 1425, 1397, 1383, 1324, 1397, 1383, 1330,
1330, 1330, 1330, 1251, 1402, 1251, 1402, 1422, 1422, 1402,
1425, 1402, 1324, 1324, 1530, 1528, 1251, 1496, 1251, 1496,
1322, 1322, 1322, 1307, 1231, 1231, 1496, 1322, 1292, 1322,
1307, 1322, 1322, 1606, 1397, 1231, 1500, 1500, 1496, 1491,
1597, 1597, 1392, 1392, 1231, 1343, 1393, 1402, 1397, 1397,
1310, 1251, 1617, 1617, 1238, 1238, 1238, 1636, 1636, 1562,
1273, 1273, 1294, 1294, 1273, 1231, 1231, 1231, 1231, 1231,
1231, 1267, 1231, 1231, 1507, 1368, 1231, 1231, 1231, 1231,
1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1231, 1231, 1569, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1231, 1231, 1231, 1430, 1231, 1234, 1559, 1231, 1231, 1231,
1231, 1231, 1231, 1231, 1406, 1407, 1369, 1231, 1231, 1231,
1231, 1231, 1231, 1231, 1231, 1527, 1526, 1231, 1231, 1231,
1231, 1231, 1421, 1231, 1231, 1231, 1416, 1231, 1231, 1231,
1231, 1231, 1231, 1231, 1231, 1627, 1231, 1231, 1231, 1231,
1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1231, 1290, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1231, 1231, 1231, 1339, 1231, 1231, 1487, 1231, 1231, 1231,
1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1231, 1231, 1384, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1231, 1345, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1603, 1366, 1431, 1231, 1435, 1255, 1231, 1246, 1231, 1231,
];
#[expect(non_upper_case_globals)]
static yyFallback: [YYCODETYPE; 168] = [
0,
0,
60,
60,
60,
60,
0,
60,
60,
60,
0,
60,
60,
60,
60,
0,
0,
0,
60,
0,
0,
60,
0,
0,
0,
0,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
0,
0,
0,
0,
60,
60,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
60,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
];
#[expect(non_camel_case_types)]
#[derive(Default)]
pub struct yyStackEntry<'i> {
stateno: YYACTIONTYPE,
major: YYCODETYPE,
minor: YYMINORTYPE<'i>,
}
#[expect(non_camel_case_types)]
pub struct yyParser<'input> {
yyidx: usize,
#[cfg(feature = "YYTRACKMAXSTACKDEPTH")]
yyhwm: usize,
yyerrcnt: i32,
pub ctx: Context<'input>,
yystack: Vec<yyStackEntry<'input>>,
}
use std::cmp::Ordering;
use std::ops::Neg;
impl<'input> yyParser<'input> {
fn shift(&self, shift: i8) -> usize {
assert!(shift <= 1);
match shift.cmp(&0) {
Ordering::Equal => self.yyidx,
Ordering::Greater => self.yyidx + shift as usize,
Ordering::Less => self.yyidx.checked_sub(shift.neg() as usize).unwrap(),
}
}
fn yyidx_shift(&mut self, shift: i8) {
match shift.cmp(&0) {
Ordering::Greater => self.yyidx += shift as usize,
Ordering::Less => self.yyidx = self.yyidx.checked_sub(shift.neg() as usize).unwrap(),
Ordering::Equal => {}
}
}
fn yy_move(&mut self, shift: i8) -> yyStackEntry<'input> {
use std::mem::take;
let idx = self.shift(shift);
take(&mut self.yystack[idx])
}
fn push(&mut self, entry: yyStackEntry<'input>) {
if self.yyidx == self.yystack.len() {
self.yystack.push(entry);
} else {
self.yystack[self.yyidx] = entry;
}
}
}
use std::ops::{Index, IndexMut};
impl<'input> Index<i8> for yyParser<'input> {
type Output = yyStackEntry<'input>;
fn index(&self, shift: i8) -> &yyStackEntry<'input> {
let idx = self.shift(shift);
&self.yystack[idx]
}
}
impl<'input> IndexMut<i8> for yyParser<'input> {
fn index_mut(&mut self, shift: i8) -> &mut yyStackEntry<'input> {
let idx = self.shift(shift);
&mut self.yystack[idx]
}
}
#[cfg(not(feature = "NDEBUG"))]
use log::{debug, log_enabled, Level::Debug};
static TARGET: &str = "sqlite3Parser";
#[cfg(any(feature = "YYCOVERAGE", not(feature = "NDEBUG")))]
#[rustfmt::skip]
#[expect(non_upper_case_globals)]
static yyTokenName: [&str; 294] = [
"$",
"SEMI",
"EXPLAIN",
"QUERY",
"PLAN",
"BEGIN",
"TRANSACTION",
"DEFERRED",
"IMMEDIATE",
"EXCLUSIVE",
"COMMIT",
"END",
"ROLLBACK",
"SAVEPOINT",
"RELEASE",
"TO",
"TABLE",
"CREATE",
"IF",
"NOT",
"EXISTS",
"TEMP",
"LP",
"RP",
"AS",
"COMMA",
"WITHOUT",
"ABORT",
"ACTION",
"AFTER",
"ANALYZE",
"ASC",
"ATTACH",
"BEFORE",
"BY",
"CASCADE",
"CAST",
"CONFLICT",
"DATABASE",
"DESC",
"DETACH",
"EACH",
"FAIL",
"OR",
"AND",
"IS",
"ISNOT",
"MATCH",
"LIKE_KW",
"BETWEEN",
"IN",
"ISNULL",
"NOTNULL",
"NE",
"EQ",
"GT",
"LE",
"LT",
"GE",
"ESCAPE",
"ID",
"COLUMNKW",
"DO",
"FOR",
"IGNORE",
"INITIALLY",
"INSTEAD",
"NO",
"KEY",
"OF",
"OFFSET",
"PRAGMA",
"RAISE",
"RECURSIVE",
"REPLACE",
"RESTRICT",
"ROW",
"ROWS",
"TRIGGER",
"VACUUM",
"VIEW",
"VIRTUAL",
"WITH",
"NULLS",
"FIRST",
"LAST",
"CURRENT",
"FOLLOWING",
"PARTITION",
"PRECEDING",
"RANGE",
"UNBOUNDED",
"EXCLUDE",
"GROUPS",
"OTHERS",
"TIES",
"GENERATED",
"ALWAYS",
"MATERIALIZED",
"REINDEX",
"RENAME",
"CTIME_KW",
"ANY",
"BITAND",
"BITOR",
"LSHIFT",
"RSHIFT",
"PLUS",
"MINUS",
"STAR",
"SLASH",
"REM",
"CONCAT",
"PTR",
"COLLATE",
"BITNOT",
"ON",
"INDEXED",
"STRING",
"JOIN_KW",
"CONSTRAINT",
"DEFAULT",
"NULL",
"PRIMARY",
"UNIQUE",
"CHECK",
"REFERENCES",
"AUTOINCR",
"INSERT",
"DELETE",
"UPDATE",
"SET",
"DEFERRABLE",
"FOREIGN",
"DROP",
"UNION",
"ALL",
"EXCEPT",
"INTERSECT",
"SELECT",
"VALUES",
"DISTINCT",
"DOT",
"FROM",
"JOIN",
"USING",
"ORDER",
"GROUP",
"HAVING",
"LIMIT",
"WHERE",
"RETURNING",
"INTO",
"NOTHING",
"BLOB",
"FLOAT",
"INTEGER",
"VARIABLE",
"CASE",
"WHEN",
"THEN",
"ELSE",
"INDEX",
"ALTER",
"ADD",
"WINDOW",
"OVER",
"FILTER",
"input",
"cmdlist",
"ecmd",
"cmdx",
"explain",
"cmd",
"transtype",
"trans_opt",
"nm",
"savepoint_opt",
"createkw",
"temp",
"ifnotexists",
"fullname",
"create_table_args",
"columnlist",
"conslist_opt",
"table_option_set",
"select",
"table_option",
"columnname",
"carglist",
"typetoken",
"typename",
"signed",
"plus_num",
"minus_num",
"ccons",
"term",
"expr",
"onconf",
"sortorder",
"autoinc",
"eidlist_opt",
"refargs",
"defer_subclause",
"generated",
"refarg",
"refact",
"init_deferred_pred_opt",
"conslist",
"tconscomma",
"tcons",
"sortlist",
"eidlist",
"defer_subclause_opt",
"orconf",
"resolvetype",
"raisetype",
"ifexists",
"selectnowith",
"oneselect",
"wqlist",
"orderby_opt",
"limit_opt",
"multiselect_op",
"distinct",
"selcollist",
"from",
"where_opt",
"groupby_opt",
"window_clause",
"values",
"nexprlist",
"sclp",
"as",
"seltablist",
"stl_prefix",
"joinop",
"indexed_opt",
"on_using",
"exprlist",
"xfullname",
"idlist",
"nulls",
"having_opt",
"with",
"where_opt_ret",
"setlist",
"insert_cmd",
"idlist_opt",
"upsert",
"returning",
"filter_over",
"likeop",
"between_op",
"in_op",
"paren_exprlist",
"case_operand",
"case_exprlist",
"case_else",
"uniqueflag",
"collate",
"vinto",
"nmnum",
"trigger_time",
"trigger_event",
"foreach_clause",
"when_clause",
"trigger_cmd_list",
"trigger_cmd",
"trnm",
"tridxby",
"database_kw_opt",
"key_opt",
"kwcolumn_opt",
"create_vtab",
"vtabarglist",
"vtabarg",
"vtabargtoken",
"lp",
"anylist",
"wqitem",
"wqas",
"windowdefn_list",
"windowdefn",
"window",
"frame_opt",
"filter_clause",
"over_clause",
"range_or_rows",
"frame_bound",
"frame_bound_s",
"frame_bound_e",
"frame_exclude_opt",
"frame_exclude",
];
#[cfg(not(feature = "NDEBUG"))]
#[rustfmt::skip]
#[expect(non_upper_case_globals)]
static yyRuleName: [&str; YYNRULE] = [
"explain ::= EXPLAIN",
"explain ::= EXPLAIN QUERY PLAN",
"cmdx ::= cmd",
"cmd ::= BEGIN transtype trans_opt",
"trans_opt ::=",
"trans_opt ::= TRANSACTION",
"trans_opt ::= TRANSACTION nm",
"transtype ::=",
"transtype ::= DEFERRED",
"transtype ::= IMMEDIATE",
"transtype ::= EXCLUSIVE",
"cmd ::= COMMIT|END trans_opt",
"cmd ::= ROLLBACK trans_opt",
"cmd ::= SAVEPOINT nm",
"cmd ::= RELEASE savepoint_opt nm",
"cmd ::= ROLLBACK trans_opt TO savepoint_opt nm",
"cmd ::= createkw temp TABLE ifnotexists fullname create_table_args",
"ifnotexists ::=",
"ifnotexists ::= IF NOT EXISTS",
"temp ::= TEMP",
"temp ::=",
"create_table_args ::= LP columnlist conslist_opt RP table_option_set",
"create_table_args ::= AS select",
"table_option_set ::=",
"table_option_set ::= table_option_set COMMA table_option",
"table_option ::= WITHOUT nm",
"table_option ::= nm",
"columnlist ::= columnlist COMMA columnname carglist",
"columnlist ::= columnname carglist",
"columnname ::= nm typetoken",
"nm ::= ID|INDEXED|JOIN_KW",
"nm ::= STRING",
"typetoken ::=",
"typetoken ::= typename",
"typetoken ::= typename LP signed RP",
"typetoken ::= typename LP signed COMMA signed RP",
"typename ::= ID|STRING",
"typename ::= typename ID|STRING",
"carglist ::= carglist ccons",
"carglist ::=",
"ccons ::= CONSTRAINT nm",
"ccons ::= DEFAULT term",
"ccons ::= DEFAULT LP expr RP",
"ccons ::= DEFAULT PLUS term",
"ccons ::= DEFAULT MINUS term",
"ccons ::= DEFAULT ID|INDEXED",
"ccons ::= NULL onconf",
"ccons ::= NOT NULL onconf",
"ccons ::= PRIMARY KEY sortorder onconf autoinc",
"ccons ::= UNIQUE onconf",
"ccons ::= CHECK LP expr RP",
"ccons ::= REFERENCES nm eidlist_opt refargs",
"ccons ::= defer_subclause",
"ccons ::= COLLATE ID|STRING",
"ccons ::= GENERATED ALWAYS AS generated",
"ccons ::= AS generated",
"generated ::= LP expr RP",
"generated ::= LP expr RP ID",
"autoinc ::=",
"autoinc ::= AUTOINCR",
"refargs ::=",
"refargs ::= refargs refarg",
"refarg ::= MATCH nm",
"refarg ::= ON INSERT refact",
"refarg ::= ON DELETE refact",
"refarg ::= ON UPDATE refact",
"refact ::= SET NULL",
"refact ::= SET DEFAULT",
"refact ::= CASCADE",
"refact ::= RESTRICT",
"refact ::= NO ACTION",
"defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt",
"defer_subclause ::= DEFERRABLE init_deferred_pred_opt",
"init_deferred_pred_opt ::=",
"init_deferred_pred_opt ::= INITIALLY DEFERRED",
"init_deferred_pred_opt ::= INITIALLY IMMEDIATE",
"conslist_opt ::=",
"conslist_opt ::= COMMA conslist",
"conslist ::= conslist tconscomma tcons",
"conslist ::= tcons",
"tconscomma ::= COMMA",
"tcons ::= CONSTRAINT nm",
"tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf",
"tcons ::= UNIQUE LP sortlist RP onconf",
"tcons ::= CHECK LP expr RP onconf",
"tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt",
"defer_subclause_opt ::=",
"defer_subclause_opt ::= defer_subclause",
"onconf ::=",
"onconf ::= ON CONFLICT resolvetype",
"orconf ::=",
"orconf ::= OR resolvetype",
"resolvetype ::= IGNORE",
"resolvetype ::= REPLACE",
"cmd ::= DROP TABLE ifexists fullname",
"ifexists ::= IF EXISTS",
"ifexists ::=",
"cmd ::= createkw temp VIEW ifnotexists fullname eidlist_opt AS select",
"cmd ::= DROP VIEW ifexists fullname",
"cmd ::= select",
"select ::= WITH wqlist selectnowith orderby_opt limit_opt",
"select ::= WITH RECURSIVE wqlist selectnowith orderby_opt limit_opt",
"select ::= selectnowith orderby_opt limit_opt",
"selectnowith ::= oneselect",
"selectnowith ::= selectnowith multiselect_op oneselect",
"multiselect_op ::= UNION",
"multiselect_op ::= UNION ALL",
"multiselect_op ::= EXCEPT",
"multiselect_op ::= INTERSECT",
"oneselect ::= SELECT distinct selcollist from where_opt groupby_opt",
"oneselect ::= SELECT distinct selcollist from where_opt groupby_opt window_clause",
"oneselect ::= values",
"values ::= VALUES LP nexprlist RP",
"values ::= values COMMA LP nexprlist RP",
"distinct ::= DISTINCT",
"distinct ::= ALL",
"distinct ::=",
"sclp ::=",
"selcollist ::= sclp expr as",
"selcollist ::= sclp STAR",
"selcollist ::= sclp nm DOT STAR",
"as ::= AS nm",
"as ::= ID|STRING",
"as ::=",
"from ::=",
"from ::= FROM seltablist",
"stl_prefix ::= seltablist joinop",
"stl_prefix ::=",
"seltablist ::= stl_prefix fullname as indexed_opt on_using",
"seltablist ::= stl_prefix fullname LP exprlist RP as on_using",
"seltablist ::= stl_prefix LP select RP as on_using",
"seltablist ::= stl_prefix LP seltablist RP as on_using",
"fullname ::= nm",
"fullname ::= nm DOT nm",
"xfullname ::= nm",
"xfullname ::= nm DOT nm",
"xfullname ::= nm DOT nm AS nm",
"xfullname ::= nm AS nm",
"joinop ::= COMMA",
"joinop ::= JOIN",
"joinop ::= JOIN_KW JOIN",
"joinop ::= JOIN_KW nm JOIN",
"joinop ::= JOIN_KW nm nm JOIN",
"on_using ::= ON expr",
"on_using ::= USING LP idlist RP",
"on_using ::=",
"indexed_opt ::=",
"indexed_opt ::= INDEXED BY nm",
"indexed_opt ::= NOT INDEXED",
"orderby_opt ::=",
"orderby_opt ::= ORDER BY sortlist",
"sortlist ::= sortlist COMMA expr sortorder nulls",
"sortlist ::= expr sortorder nulls",
"sortorder ::= ASC",
"sortorder ::= DESC",
"sortorder ::=",
"nulls ::= NULLS FIRST",
"nulls ::= NULLS LAST",
"nulls ::=",
"groupby_opt ::=",
"groupby_opt ::= GROUP BY nexprlist having_opt",
"having_opt ::=",
"having_opt ::= HAVING expr",
"limit_opt ::=",
"limit_opt ::= LIMIT expr",
"limit_opt ::= LIMIT expr OFFSET expr",
"limit_opt ::= LIMIT expr COMMA expr",
"cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret orderby_opt limit_opt",
"where_opt ::=",
"where_opt ::= WHERE expr",
"where_opt_ret ::=",
"where_opt_ret ::= WHERE expr",
"where_opt_ret ::= RETURNING selcollist",
"where_opt_ret ::= WHERE expr RETURNING selcollist",
"cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret orderby_opt limit_opt",
"setlist ::= setlist COMMA nm EQ expr",
"setlist ::= setlist COMMA LP idlist RP EQ expr",
"setlist ::= nm EQ expr",
"setlist ::= LP idlist RP EQ expr",
"cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert",
"cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning",
"upsert ::=",
"upsert ::= RETURNING selcollist",
"upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert",
"upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert",
"upsert ::= ON CONFLICT DO NOTHING returning",
"upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning",
"returning ::= RETURNING selcollist",
"returning ::=",
"insert_cmd ::= INSERT orconf",
"insert_cmd ::= REPLACE",
"idlist_opt ::=",
"idlist_opt ::= LP idlist RP",
"idlist ::= idlist COMMA nm",
"idlist ::= nm",
"expr ::= LP expr RP",
"expr ::= ID|INDEXED|JOIN_KW",
"expr ::= nm DOT nm",
"expr ::= nm DOT nm DOT nm",
"term ::= NULL",
"term ::= BLOB",
"term ::= STRING",
"term ::= FLOAT|INTEGER",
"expr ::= VARIABLE",
"expr ::= expr COLLATE ID|STRING",
"expr ::= CAST LP expr AS typetoken RP",
"expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist RP",
"expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist ORDER BY sortlist RP",
"expr ::= ID|INDEXED|JOIN_KW LP STAR RP",
"expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist RP filter_over",
"expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist ORDER BY sortlist RP filter_over",
"expr ::= ID|INDEXED|JOIN_KW LP STAR RP filter_over",
"term ::= CTIME_KW",
"expr ::= LP nexprlist COMMA expr RP",
"expr ::= expr AND expr",
"expr ::= expr OR expr",
"expr ::= expr LT|GT|GE|LE expr",
"expr ::= expr EQ|NE expr",
"expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
"expr ::= expr PLUS|MINUS expr",
"expr ::= expr STAR|SLASH|REM expr",
"expr ::= expr CONCAT expr",
"likeop ::= LIKE_KW|MATCH",
"likeop ::= NOT LIKE_KW|MATCH",
"expr ::= expr likeop expr",
"expr ::= expr likeop expr ESCAPE expr",
"expr ::= expr ISNULL|NOTNULL",
"expr ::= expr NOT NULL",
"expr ::= expr IS expr",
"expr ::= expr IS NOT expr",
"expr ::= expr IS NOT DISTINCT FROM expr",
"expr ::= expr IS DISTINCT FROM expr",
"expr ::= NOT expr",
"expr ::= BITNOT expr",
"expr ::= PLUS|MINUS expr",
"expr ::= expr PTR expr",
"between_op ::= BETWEEN",
"between_op ::= NOT BETWEEN",
"expr ::= expr between_op expr AND expr",
"in_op ::= IN",
"in_op ::= NOT IN",
"expr ::= expr in_op LP exprlist RP",
"expr ::= LP select RP",
"expr ::= expr in_op LP select RP",
"expr ::= expr in_op fullname paren_exprlist",
"expr ::= EXISTS LP select RP",
"expr ::= CASE case_operand case_exprlist case_else END",
"case_exprlist ::= case_exprlist WHEN expr THEN expr",
"case_exprlist ::= WHEN expr THEN expr",
"case_else ::= ELSE expr",
"case_else ::=",
"case_operand ::= expr",
"case_operand ::=",
"exprlist ::= nexprlist",
"exprlist ::=",
"nexprlist ::= nexprlist COMMA expr",
"nexprlist ::= expr",
"paren_exprlist ::=",
"paren_exprlist ::= LP exprlist RP",
"cmd ::= createkw uniqueflag INDEX ifnotexists fullname ON nm LP sortlist RP where_opt",
"uniqueflag ::= UNIQUE",
"uniqueflag ::=",
"eidlist_opt ::=",
"eidlist_opt ::= LP eidlist RP",
"eidlist ::= eidlist COMMA nm collate sortorder",
"eidlist ::= nm collate sortorder",
"collate ::=",
"collate ::= COLLATE ID|STRING",
"cmd ::= DROP INDEX ifexists fullname",
"cmd ::= VACUUM vinto",
"cmd ::= VACUUM nm vinto",
"vinto ::= INTO expr",
"vinto ::=",
"cmd ::= PRAGMA fullname",
"cmd ::= PRAGMA fullname EQ nmnum",
"cmd ::= PRAGMA fullname LP nmnum RP",
"cmd ::= PRAGMA fullname EQ minus_num",
"cmd ::= PRAGMA fullname LP minus_num RP",
"nmnum ::= nm",
"nmnum ::= ON",
"nmnum ::= DELETE",
"nmnum ::= DEFAULT",
"plus_num ::= PLUS INTEGER|FLOAT",
"plus_num ::= INTEGER|FLOAT",
"minus_num ::= MINUS INTEGER|FLOAT",
"cmd ::= createkw temp TRIGGER ifnotexists fullname trigger_time trigger_event ON fullname foreach_clause when_clause BEGIN trigger_cmd_list END",
"trigger_time ::= BEFORE",
"trigger_time ::= AFTER",
"trigger_time ::= INSTEAD OF",
"trigger_time ::=",
"trigger_event ::= DELETE",
"trigger_event ::= INSERT",
"trigger_event ::= UPDATE",
"trigger_event ::= UPDATE OF idlist",
"foreach_clause ::=",
"foreach_clause ::= FOR EACH ROW",
"when_clause ::=",
"when_clause ::= WHEN expr",
"trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
"trigger_cmd_list ::= trigger_cmd SEMI",
"trnm ::= nm DOT nm",
"tridxby ::= INDEXED BY nm",
"tridxby ::= NOT INDEXED",
"trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt",
"trigger_cmd ::= insert_cmd INTO trnm idlist_opt select upsert",
"trigger_cmd ::= DELETE FROM trnm tridxby where_opt",
"trigger_cmd ::= select",
"expr ::= RAISE LP IGNORE RP",
"expr ::= RAISE LP raisetype COMMA expr RP",
"raisetype ::= ROLLBACK",
"raisetype ::= ABORT",
"raisetype ::= FAIL",
"cmd ::= DROP TRIGGER ifexists fullname",
"cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
"cmd ::= DETACH database_kw_opt expr",
"key_opt ::=",
"key_opt ::= KEY expr",
"cmd ::= REINDEX",
"cmd ::= REINDEX fullname",
"cmd ::= ANALYZE",
"cmd ::= ANALYZE fullname",
"cmd ::= ALTER TABLE fullname RENAME TO nm",
"cmd ::= ALTER TABLE fullname ADD kwcolumn_opt columnname carglist",
"cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm",
"cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm",
"cmd ::= create_vtab",
"cmd ::= create_vtab LP vtabarglist RP",
"create_vtab ::= createkw VIRTUAL TABLE ifnotexists fullname USING nm",
"vtabarg ::=",
"vtabargtoken ::= ANY",
"vtabargtoken ::= lp anylist RP",
"lp ::= LP",
"with ::=",
"with ::= WITH wqlist",
"with ::= WITH RECURSIVE wqlist",
"wqas ::= AS",
"wqas ::= AS MATERIALIZED",
"wqas ::= AS NOT MATERIALIZED",
"wqitem ::= nm eidlist_opt wqas LP select RP",
"wqlist ::= wqitem",
"wqlist ::= wqlist COMMA wqitem",
"windowdefn_list ::= windowdefn",
"windowdefn_list ::= windowdefn_list COMMA windowdefn",
"windowdefn ::= nm AS LP window RP",
"window ::= PARTITION BY nexprlist orderby_opt frame_opt",
"window ::= nm PARTITION BY nexprlist orderby_opt frame_opt",
"window ::= ORDER BY sortlist frame_opt",
"window ::= nm ORDER BY sortlist frame_opt",
"window ::= frame_opt",
"window ::= nm frame_opt",
"frame_opt ::=",
"frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt",
"frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt",
"range_or_rows ::= RANGE",
"range_or_rows ::= ROWS",
"range_or_rows ::= GROUPS",
"frame_bound_s ::= frame_bound",
"frame_bound_s ::= UNBOUNDED PRECEDING",
"frame_bound_e ::= frame_bound",
"frame_bound_e ::= UNBOUNDED FOLLOWING",
"frame_bound ::= expr PRECEDING",
"frame_bound ::= CURRENT ROW",
"frame_bound ::= expr FOLLOWING",
"frame_exclude_opt ::=",
"frame_exclude_opt ::= EXCLUDE frame_exclude",
"frame_exclude ::= NO OTHERS",
"frame_exclude ::= CURRENT ROW",
"frame_exclude ::= GROUP",
"frame_exclude ::= TIES",
"window_clause ::= WINDOW windowdefn_list",
"filter_over ::= filter_clause over_clause",
"filter_over ::= over_clause",
"filter_over ::= filter_clause",
"over_clause ::= OVER LP window RP",
"over_clause ::= OVER nm",
"filter_clause ::= FILTER LP WHERE expr RP",
"input ::= cmdlist",
"cmdlist ::= cmdlist ecmd",
"cmdlist ::= ecmd",
"ecmd ::= SEMI",
"ecmd ::= cmdx SEMI",
"ecmd ::= explain cmdx SEMI",
"savepoint_opt ::= SAVEPOINT",
"savepoint_opt ::=",
"createkw ::= CREATE",
"table_option_set ::= table_option",
"signed ::= plus_num",
"signed ::= minus_num",
"tconscomma ::=",
"resolvetype ::= raisetype",
"sclp ::= selcollist COMMA",
"expr ::= term",
"nmnum ::= plus_num",
"trnm ::= nm",
"tridxby ::=",
"database_kw_opt ::= DATABASE",
"database_kw_opt ::=",
"kwcolumn_opt ::=",
"kwcolumn_opt ::= COLUMNKW",
"vtabarglist ::= vtabarg",
"vtabarglist ::= vtabarglist COMMA vtabarg",
"vtabarg ::= vtabarg vtabargtoken",
"anylist ::=",
"anylist ::= anylist LP anylist RP",
"anylist ::= anylist ANY",
];
impl yyParser<'_> {
fn yy_grow_stack_if_needed(&mut self) -> bool {
false
}
fn yy_grow_stack_for_push(&mut self) -> bool {
if self.yyidx == self.yystack.len() {
self.yystack.push(yyStackEntry::default());
} else if self.yyidx + 1 == self.yystack.len() {
self.yystack.push(yyStackEntry::default());
}
false
}
}
impl yyParser<'_> {
pub fn new(
ctx: Context,
) -> yyParser {
let mut p = yyParser {
yyidx: 0,
#[cfg(feature = "YYTRACKMAXSTACKDEPTH")]
yyhwm: 0,
yystack: Vec::with_capacity(YYSTACKDEPTH),
yyerrcnt: -1,
ctx,
};
p.push(yyStackEntry::default());
p
}
}
impl yyParser<'_> {
fn yy_pop_parser_stack(&mut self) {
use std::mem::take;
let _yytos = take(&mut self.yystack[self.yyidx]);
self.yyidx = self.yyidx.checked_sub(1).unwrap();
#[cfg(not(feature = "NDEBUG"))]
{
debug!(
target: TARGET,
"Popping {}", yyTokenName[_yytos.major as usize]
);
}
}
}
impl yyParser<'_> {
#[expect(non_snake_case)]
pub fn sqlite3ParserFinalize(&mut self) {
while self.yyidx > 0 {
self.yy_pop_parser_stack();
}
}
}
#[cfg(feature = "YYTRACKMAXSTACKDEPTH")]
impl yyParser<'_> {
#[expect(non_snake_case)]
pub fn sqlite3ParserStackPeak(&self) -> usize {
self.yyhwm
}
fn yyhwm_incr(&mut self) {
if self.yyidx > self.yyhwm {
self.yyhwm = self.yyidx;
}
}
}
#[cfg(not(feature = "YYTRACKMAXSTACKDEPTH"))]
impl yyParser<'_> {
#[inline]
fn yyhwm_incr(&mut self) {}
}
#[cfg(feature = "YYCOVERAGE")]
fn sqlite3ParserCoverage() -> i32 {
let nMissed = 0;
return nMissed;
}
#[expect(non_snake_case)]
fn yy_find_shift_action(
mut iLookAhead: YYCODETYPE,
stateno: YYACTIONTYPE,
) -> YYACTIONTYPE {
if stateno > YY_MAX_SHIFT {
return stateno;
}
assert!(stateno <= YY_SHIFT_COUNT);
#[cfg(feature = "YYCOVERAGE")]
{
}
loop {
let mut i = yy_shift_ofst[stateno as usize] as usize;
assert!(i <= YY_ACTTAB_COUNT!());
assert!(i + usize::from(YYNTOKEN) <= yy_lookahead.len());
assert_ne!(iLookAhead, YYNOCODE);
assert!((iLookAhead as YYACTIONTYPE) < YYNTOKEN);
i += iLookAhead as usize;
if yy_lookahead[i] != iLookAhead {
if YYFALLBACK {
let iFallback = yyFallback[iLookAhead as usize];
if iFallback != 0 {
#[cfg(not(feature = "NDEBUG"))]
{
debug!(
target: TARGET,
"FALLBACK {} => {}",
yyTokenName[iLookAhead as usize],
yyTokenName[iFallback as usize]
);
}
assert_eq!(yyFallback[iFallback as usize], 0);
iLookAhead = iFallback;
continue;
}
}
if YYWILDCARD > 0 {
let j = i - iLookAhead as usize + YYWILDCARD as usize;
if yy_lookahead[j] == YYWILDCARD && iLookAhead > 0 {
#[cfg(not(feature = "NDEBUG"))]
{
debug!(
target: TARGET,
"WILDCARD {} => {}",
yyTokenName[iLookAhead as usize],
yyTokenName[YYWILDCARD as usize]
);
}
return yy_action[j];
}
}
return yy_default[stateno as usize];
} else {
return yy_action[i];
}
}
}
#[expect(non_snake_case)]
fn yy_find_reduce_action(
stateno: YYACTIONTYPE,
iLookAhead: YYCODETYPE,
) -> YYACTIONTYPE {
if YYERRORSYMBOL > 0 {
if stateno > YY_REDUCE_COUNT {
return yy_default[stateno as usize];
}
} else {
assert!(stateno <= YY_REDUCE_COUNT);
}
let mut i: i32 = yy_reduce_ofst[stateno as usize].into();
assert_ne!(iLookAhead, YYNOCODE);
i += i32::from(iLookAhead);
if YYERRORSYMBOL > 0 {
if !(0..YY_ACTTAB_COUNT!()).contains(&i) || yy_lookahead[i as usize] != iLookAhead {
return yy_default[stateno as usize];
}
} else {
assert!((0..YY_ACTTAB_COUNT!()).contains(&i));
assert_eq!(yy_lookahead[i as usize], iLookAhead);
}
yy_action[i as usize]
}
impl yyParser<'_> {
#[expect(non_snake_case)]
#[cfg(feature = "NDEBUG")]
fn yyTraceShift(&self, _: YYACTIONTYPE, _: &str) {
}
#[expect(non_snake_case)]
#[cfg(not(feature = "NDEBUG"))]
fn yyTraceShift(&self, yyNewState: YYACTIONTYPE, zTag: &str) {
let yytos = &self[0];
if yyNewState < YYNSTATE {
debug!(
target: TARGET,
"{} '{}', go to state {}", zTag, yyTokenName[yytos.major as usize], yyNewState
);
} else {
debug!(
target: TARGET,
"{} '{}', pending reduce {:?}",
zTag,
yyTokenName[yytos.major as usize],
yyNewState.checked_sub(YY_MIN_REDUCE)
);
}
}
}
impl<'input> yyParser<'input> {
#[expect(non_snake_case)]
fn yy_shift(
&mut self,
mut yyNewState: YYACTIONTYPE,
yyMajor: YYCODETYPE,
yyMinor: sqlite3ParserTOKENTYPE<'input>,
) {
self.yyidx_shift(1);
self.yyhwm_incr();
if self.yy_grow_stack_if_needed() {
return;
}
if yyNewState > YY_MAX_SHIFT {
yyNewState += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE;
}
let yytos = yyStackEntry {
stateno: yyNewState,
major: yyMajor,
minor: YYMINORTYPE::yy0(yyMinor),
};
self.push(yytos);
self.yyTraceShift(yyNewState, "Shift");
}
}
#[expect(non_upper_case_globals)]
static yyRuleInfoLhs: [YYCODETYPE; YYNRULE] = [
172,
172,
171,
173,
175,
175,
175,
174,
174,
174,
174,
173,
173,
173,
173,
173,
173,
180,
180,
179,
179,
182,
182,
185,
185,
187,
187,
183,
183,
188,
176,
176,
190,
190,
190,
190,
191,
191,
189,
189,
195,
195,
195,
195,
195,
195,
195,
195,
195,
195,
195,
195,
195,
195,
195,
195,
204,
204,
200,
200,
202,
202,
205,
205,
205,
205,
206,
206,
206,
206,
206,
203,
203,
207,
207,
207,
184,
184,
208,
208,
209,
210,
210,
210,
210,
210,
213,
213,
198,
198,
214,
214,
215,
215,
173,
217,
217,
173,
173,
173,
186,
186,
186,
218,
218,
223,
223,
223,
223,
219,
219,
219,
230,
230,
224,
224,
224,
232,
225,
225,
225,
233,
233,
233,
226,
226,
235,
235,
234,
234,
234,
234,
181,
181,
240,
240,
240,
240,
236,
236,
236,
236,
236,
238,
238,
238,
237,
237,
237,
221,
221,
211,
211,
199,
199,
199,
242,
242,
242,
228,
228,
243,
243,
222,
222,
222,
222,
173,
227,
227,
245,
245,
245,
245,
173,
246,
246,
246,
246,
173,
173,
249,
249,
249,
249,
249,
249,
250,
250,
247,
247,
248,
248,
241,
241,
197,
197,
197,
197,
196,
196,
196,
196,
197,
197,
197,
197,
197,
197,
197,
197,
197,
196,
197,
197,
197,
197,
197,
197,
197,
197,
197,
252,
252,
197,
197,
197,
197,
197,
197,
197,
197,
197,
197,
197,
197,
253,
253,
197,
254,
254,
197,
197,
197,
197,
197,
197,
257,
257,
258,
258,
256,
256,
239,
239,
231,
231,
255,
255,
173,
259,
259,
201,
201,
212,
212,
260,
260,
173,
173,
173,
261,
261,
173,
173,
173,
173,
173,
262,
262,
262,
262,
193,
193,
194,
173,
263,
263,
263,
263,
264,
264,
264,
264,
265,
265,
266,
266,
267,
267,
269,
270,
270,
268,
268,
268,
268,
197,
197,
216,
216,
216,
173,
173,
173,
272,
272,
173,
173,
173,
173,
173,
173,
173,
173,
173,
173,
274,
276,
277,
277,
278,
244,
244,
244,
281,
281,
281,
280,
220,
220,
282,
282,
283,
284,
284,
284,
284,
284,
284,
285,
285,
285,
288,
288,
288,
290,
290,
291,
291,
289,
289,
289,
292,
292,
293,
293,
293,
293,
229,
251,
251,
251,
287,
287,
286,
168,
169,
169,
170,
170,
170,
177,
177,
178,
185,
192,
192,
209,
215,
232,
197,
262,
269,
270,
271,
271,
273,
273,
275,
275,
276,
279,
279,
279,
];
#[expect(non_upper_case_globals)]
static yyRuleInfoNRhs: [i8; YYNRULE] = [
-1,
-3,
-1,
-3,
0,
-1,
-2,
0,
-1,
-1,
-1,
-2,
-2,
-2,
-3,
-5,
-6,
0,
-3,
-1,
0,
-5,
-2,
0,
-3,
-2,
-1,
-4,
-2,
-2,
-1,
-1,
0,
-1,
-4,
-6,
-1,
-2,
-2,
0,
-2,
-2,
-4,
-3,
-3,
-2,
-2,
-3,
-5,
-2,
-4,
-4,
-1,
-2,
-4,
-2,
-3,
-4,
0,
-1,
0,
-2,
-2,
-3,
-3,
-3,
-2,
-2,
-1,
-1,
-2,
-3,
-2,
0,
-2,
-2,
0,
-2,
-3,
-1,
-1,
-2,
-7,
-5,
-5,
-10,
0,
-1,
0,
-3,
0,
-2,
-1,
-1,
-4,
-2,
0,
-8,
-4,
-1,
-5,
-6,
-3,
-1,
-3,
-1,
-2,
-1,
-1,
-6,
-7,
-1,
-4,
-5,
-1,
-1,
0,
0,
-3,
-2,
-4,
-2,
-1,
0,
0,
-2,
-2,
0,
-5,
-7,
-6,
-6,
-1,
-3,
-1,
-3,
-5,
-3,
-1,
-1,
-2,
-3,
-4,
-2,
-4,
0,
0,
-3,
-2,
0,
-3,
-5,
-3,
-1,
-1,
0,
-2,
-2,
0,
0,
-4,
0,
-2,
0,
-2,
-4,
-4,
-8,
0,
-2,
0,
-2,
-2,
-4,
-11,
-5,
-7,
-3,
-5,
-7,
-8,
0,
-2,
-12,
-9,
-5,
-8,
-2,
0,
-2,
-1,
0,
-3,
-3,
-1,
-3,
-1,
-3,
-5,
-1,
-1,
-1,
-1,
-1,
-3,
-6,
-5,
-8,
-4,
-6,
-9,
-5,
-1,
-5,
-3,
-3,
-3,
-3,
-3,
-3,
-3,
-3,
-1,
-2,
-3,
-5,
-2,
-3,
-3,
-4,
-6,
-5,
-2,
-2,
-2,
-3,
-1,
-2,
-5,
-1,
-2,
-5,
-3,
-5,
-4,
-4,
-5,
-5,
-4,
-2,
0,
-1,
0,
-1,
0,
-3,
-1,
0,
-3,
-11,
-1,
0,
0,
-3,
-5,
-3,
0,
-2,
-4,
-2,
-3,
-2,
0,
-2,
-4,
-5,
-4,
-5,
-1,
-1,
-1,
-1,
-2,
-1,
-2,
-14,
-1,
-1,
-2,
0,
-1,
-1,
-1,
-3,
0,
-3,
0,
-2,
-3,
-2,
-3,
-3,
-2,
-8,
-6,
-5,
-1,
-4,
-6,
-1,
-1,
-1,
-4,
-6,
-3,
0,
-2,
-1,
-2,
-1,
-2,
-6,
-7,
-8,
-6,
-1,
-4,
-7,
0,
-1,
-3,
-1,
0,
-2,
-3,
-1,
-2,
-3,
-6,
-1,
-3,
-1,
-3,
-5,
-5,
-6,
-4,
-5,
-1,
-2,
0,
-3,
-6,
-1,
-1,
-1,
-1,
-2,
-1,
-2,
-2,
-2,
-2,
0,
-2,
-2,
-2,
-1,
-1,
-2,
-2,
-1,
-1,
-4,
-2,
-5,
-1,
-2,
-1,
-1,
-2,
-3,
-1,
0,
-1,
-1,
-1,
-1,
0,
-1,
-2,
-1,
-1,
-1,
0,
-1,
0,
0,
-1,
-1,
-3,
-2,
0,
-4,
-2,
];
impl yyParser<'_> {
fn yy_reduce(
&mut self,
yyruleno: YYACTIONTYPE,
yy_look_ahead: YYCODETYPE,
yy_lookahead_token: &sqlite3ParserTOKENTYPE,
) -> Result<YYACTIONTYPE, sqlite3ParserError> {
let _ = yy_look_ahead;
let _ = yy_lookahead_token;
let yylhsminor: YYMINORTYPE<'_>;
match yyruleno {
0
=> {
{ self.ctx.explain = Some(ExplainKind::Explain); }
}
1
=> {
{ self.ctx.explain = Some(ExplainKind::QueryPlan); }
}
2
=> {
{ self.ctx.sqlite3_finish_coding(); }
}
3
=> {
{self.ctx.stmt = Some(Stmt::Begin(self.yy_move(-1).yy276(), self.yy_move(0).yy329()));}
}
4
| 266
=> {
{self[1] .minor= YYMINORTYPE::yy329( None);}
}
5
=> {
{self[0] .minor= YYMINORTYPE::yy329( None);}
}
6
=> {
{self[-1] .minor= YYMINORTYPE::yy329( Some(self.yy_move(0).yy222()));}
}
7
=> {
{self[1] .minor= YYMINORTYPE::yy276( None);}
}
8
=> {
{self[0] .minor= YYMINORTYPE::yy276( Some(TransactionType::Deferred));}
}
9
=> {
{self[0] .minor= YYMINORTYPE::yy276( Some(TransactionType::Immediate));}
}
10
=> {
{self[0] .minor= YYMINORTYPE::yy276( Some(TransactionType::Exclusive));}
}
11
=> {
{self.ctx.stmt = Some(Stmt::Commit(self.yy_move(0).yy329()));}
}
12
=> {
{self.ctx.stmt = Some(Stmt::Rollback{tx_name: self.yy_move(0).yy329(), savepoint_name: None});}
}
13
=> {
{
self.ctx.stmt = Some(Stmt::Savepoint(self.yy_move(0).yy222()));
}
}
14
=> {
{
self.ctx.stmt = Some(Stmt::Release(self.yy_move(0).yy222()));
}
}
15
=> {
{
self.ctx.stmt = Some(Stmt::Rollback{tx_name: self.yy_move(-3).yy329(), savepoint_name: Some(self.yy_move(0).yy222())});
}
}
16
=> {
{
self.ctx.stmt = Some(Stmt::CreateTable{ temporary: self.yy_move(-4).yy173(), if_not_exists: self.yy_move(-2).yy173(), tbl_name: self.yy_move(-1).yy474(), body: Box::new(self.yy_move(0).yy203()) });
}
}
17
| 20
| 58
| 96
| 261
=> {
{self[1] .minor= YYMINORTYPE::yy173( false);}
}
18
=> {
{self[-2] .minor= YYMINORTYPE::yy173( true);}
}
19
| 59
| 260
=> {
{self[0] .minor= YYMINORTYPE::yy173( true);}
}
21
=> {
{
self[-4] .minor= YYMINORTYPE::yy203( CreateTableBody::columns_and_constraints(self.yy_move(-3).yy285(), self.yy_move(-2).yy182(), self.yy_move(0).yy201())?);
}
}
22
=> {
{
self[-1] .minor= YYMINORTYPE::yy203( CreateTableBody::AsSelect(Box::new(self.yy_move(0).yy213())));
}
}
23
=> {
{self[1] .minor= YYMINORTYPE::yy201( TableOptions::NONE);}
}
24
=> {
{yylhsminor = YYMINORTYPE::yy201( self.yy_move(-2).yy201()|self.yy_move(0).yy201());}
self[-2].minor = yylhsminor;
}
25
=> {
{
let option = self.yy_move(0).yy222();
if option == "rowid" {
self[-1] .minor= YYMINORTYPE::yy201( TableOptions::WITHOUT_ROWID);
}else{
return Err(custom_err!("unknown table option: {}", option));
}
}
}
26
=> {
{
let option = self.yy_move(0).yy222();
if option == "strict" {
yylhsminor = YYMINORTYPE::yy201( TableOptions::STRICT);
}else{
return Err(custom_err!("unknown table option: {}", option));
}
}
self[0].minor = yylhsminor;
}
27
=> {
{
let col = self.yy_move(-1).yy444();
let cd = ColumnDefinition{ col_name: col.0, col_type: col.1, constraints: self.yy_move(0).yy305() };
ColumnDefinition::add_column(self[-3].yy285_ref(), cd)?;
}
}
28
=> {
{
let col = self.yy_move(-1).yy444();
let cd = ColumnDefinition{ col_name: col.0, col_type: col.1, constraints: self.yy_move(0).yy305() };
let mut map = IndexMap::new();
ColumnDefinition::add_column(&mut map, cd)?;
yylhsminor = YYMINORTYPE::yy285( map);
}
self[-1].minor = yylhsminor;
}
29
=> {
{yylhsminor = YYMINORTYPE::yy444( (self.yy_move(-1).yy222(), self.yy_move(0).yy362()));}
self[-1].minor = yylhsminor;
}
30
| 31
=> {
{ yylhsminor = YYMINORTYPE::yy222( Name::from_token(self[0].major, self.yy_move(0).yy0())); }
self[0].minor = yylhsminor;
}
32
=> {
{self[1] .minor= YYMINORTYPE::yy362( None);}
}
33
=> {
{yylhsminor = YYMINORTYPE::yy362( Some(Type{ name: self.yy_move(0).yy220(), size: None }));}
self[0].minor = yylhsminor;
}
34
=> {
{
yylhsminor = YYMINORTYPE::yy362( Some(Type{ name: self.yy_move(-3).yy220(), size: Some(TypeSize::MaxSize(Box::new(self.yy_move(-1).yy480()))) }));
}
self[-3].minor = yylhsminor;
}
35
=> {
{
yylhsminor = YYMINORTYPE::yy362( Some(Type{ name: self.yy_move(-5).yy220(), size: Some(TypeSize::TypeSize(Box::new(self.yy_move(-3).yy480()), Box::new(self.yy_move(-1).yy480()))) }));
}
self[-5].minor = yylhsminor;
}
36
=> {
{yylhsminor= YYMINORTYPE::yy220(from_token(self[0].major, self.yy_move(0).yy0()));}
self[0].minor = yylhsminor;
}
37
=> {
{let ids=from_token(self[0].major, self.yy_move(0).yy0()); self[-1].yy220_ref().push(' '); self[-1].yy220_ref().push_str(&ids);}
}
38
=> {
{if self.ctx.no_constraint_name() { let cc = self.yy_move(0).yy277(); self[-1].yy305_ref().push(cc); }}
}
39
=> {
{self[1] .minor= YYMINORTYPE::yy305( vec![]);}
}
40
=> {
{ self.ctx.constraint_name = Some(self.yy_move(0).yy222());}
}
41
=> {
{
let name = self.ctx.constraint_name();
let constraint = ColumnConstraint::Default(self.yy_move(0).yy480());
self[-1] .minor= YYMINORTYPE::yy277( NamedColumnConstraint{ name, constraint });
}
}
42
=> {
{
let name = self.ctx.constraint_name();
let constraint = ColumnConstraint::Default(Expr::parenthesized(self.yy_move(-1).yy480()));
self[-3] .minor= YYMINORTYPE::yy277( NamedColumnConstraint{ name, constraint });
}
}
43
=> {
{
let name = self.ctx.constraint_name();
let constraint = ColumnConstraint::Default(Expr::Unary(UnaryOperator::Positive, Box::new(self.yy_move(0).yy480())));
self[-2] .minor= YYMINORTYPE::yy277( NamedColumnConstraint{ name, constraint });
}
}
44
=> {
{
let name = self.ctx.constraint_name();
let constraint = ColumnConstraint::Default(Expr::Unary(UnaryOperator::Negative, Box::new(self.yy_move(0).yy480())));
self[-2] .minor= YYMINORTYPE::yy277( NamedColumnConstraint{ name, constraint });
}
}
45
=> {
{
let name = self.ctx.constraint_name();
let constraint = ColumnConstraint::Default(Expr::id(self[0].major, self.yy_move(0).yy0()));
self[-1] .minor= YYMINORTYPE::yy277( NamedColumnConstraint{ name, constraint });
}
}
46
=> {
{
let name = self.ctx.constraint_name();
let constraint = ColumnConstraint::NotNull{ nullable: true, conflict_clause: self.yy_move(0).yy254()};
self[-1] .minor= YYMINORTYPE::yy277( NamedColumnConstraint{ name, constraint });
}
}
47
=> {
{
let name = self.ctx.constraint_name();
let constraint = ColumnConstraint::NotNull{ nullable: false, conflict_clause: self.yy_move(0).yy254()};
self[-2] .minor= YYMINORTYPE::yy277( NamedColumnConstraint{ name, constraint });
}
}
48
=> {
{
let name = self.ctx.constraint_name();
let constraint = ColumnConstraint::PrimaryKey{ order: self.yy_move(-2).yy296(), conflict_clause: self.yy_move(-1).yy254(), auto_increment: self.yy_move(0).yy173() };
self[-4] .minor= YYMINORTYPE::yy277( NamedColumnConstraint{ name, constraint });
}
}
49
=> {
{
let name = self.ctx.constraint_name();
let constraint = ColumnConstraint::Unique(self.yy_move(0).yy254());
self[-1] .minor= YYMINORTYPE::yy277( NamedColumnConstraint{ name, constraint });
}
}
50
=> {
{
let name = self.ctx.constraint_name();
let constraint = ColumnConstraint::Check(self.yy_move(-1).yy480());
self[-3] .minor= YYMINORTYPE::yy277( NamedColumnConstraint{ name, constraint });
}
}
51
=> {
{
let name = self.ctx.constraint_name();
let clause = ForeignKeyClause{ tbl_name: self.yy_move(-2).yy222(), columns: self.yy_move(-1).yy143(), args: self.yy_move(0).yy404() };
let constraint = ColumnConstraint::ForeignKey{ clause, deref_clause: None }; self[-3] .minor= YYMINORTYPE::yy277( NamedColumnConstraint{ name, constraint });
}
}
52
=> {
{
let constraint = ColumnConstraint::Defer(self.yy_move(0).yy394());
yylhsminor = YYMINORTYPE::yy277( NamedColumnConstraint{ name: None, constraint });
}
self[0].minor = yylhsminor;
}
53
=> {
{
let name = self.ctx.constraint_name();
let constraint = ColumnConstraint::Collate{ collation_name: Name::from_token(self[0].major, self.yy_move(0).yy0()) };
self[-1] .minor= YYMINORTYPE::yy277( NamedColumnConstraint{ name, constraint });
}
}
54
=> {
{
let name = self.ctx.constraint_name();
let constraint = self.yy_move(0).yy84();
self[-3] .minor= YYMINORTYPE::yy277( NamedColumnConstraint{ name, constraint });
}
}
55
=> {
{
let name = self.ctx.constraint_name();
let constraint = self.yy_move(0).yy84();
self[-1] .minor= YYMINORTYPE::yy277( NamedColumnConstraint{ name, constraint });
}
}
56
=> {
{
self[-2] .minor= YYMINORTYPE::yy84( ColumnConstraint::Generated{ expr: self.yy_move(-1).yy480(), typ: None });
}
}
57
=> {
{
self[-3] .minor= YYMINORTYPE::yy84( ColumnConstraint::Generated{ expr: self.yy_move(-2).yy480(), typ: Some(Id::from_token(self[0].major, self.yy_move(0).yy0())) });
}
}
60
=> {
{ self[1] .minor= YYMINORTYPE::yy404( vec![]); }
}
61
=> {
{ let ra = self.yy_move(0).yy432(); self[-1].yy404_ref().push(ra); }
}
62
=> {
{ self[-1] .minor= YYMINORTYPE::yy432( RefArg::Match(self.yy_move(0).yy222())); }
}
63
=> {
{ self[-2] .minor= YYMINORTYPE::yy432( RefArg::OnInsert(self.yy_move(0).yy238())); }
}
64
=> {
{ self[-2] .minor= YYMINORTYPE::yy432( RefArg::OnDelete(self.yy_move(0).yy238())); }
}
65
=> {
{ self[-2] .minor= YYMINORTYPE::yy432( RefArg::OnUpdate(self.yy_move(0).yy238())); }
}
66
=> {
{ self[-1] .minor= YYMINORTYPE::yy238( RefAct::SetNull); }
}
67
=> {
{ self[-1] .minor= YYMINORTYPE::yy238( RefAct::SetDefault); }
}
68
=> {
{ self[0] .minor= YYMINORTYPE::yy238( RefAct::Cascade); }
}
69
=> {
{ self[0] .minor= YYMINORTYPE::yy238( RefAct::Restrict); }
}
70
=> {
{ self[-1] .minor= YYMINORTYPE::yy238( RefAct::NoAction); }
}
71
=> {
{self[-2] .minor= YYMINORTYPE::yy394( DeferSubclause{ deferrable: false, init_deferred: self.yy_move(0).yy300() });}
}
72
=> {
{self[-1] .minor= YYMINORTYPE::yy394( DeferSubclause{ deferrable: true, init_deferred: self.yy_move(0).yy300() });}
}
73
=> {
{self[1] .minor= YYMINORTYPE::yy300( None);}
}
74
=> {
{self[-1] .minor= YYMINORTYPE::yy300( Some(InitDeferredPred::InitiallyDeferred));}
}
75
=> {
{self[-1] .minor= YYMINORTYPE::yy300( Some(InitDeferredPred::InitiallyImmediate));}
}
76
=> {
{self[1] .minor= YYMINORTYPE::yy182( None);}
}
77
=> {
{self[-1] .minor= YYMINORTYPE::yy182( Some(self.yy_move(0).yy559()));}
}
78
=> {
{if self.ctx.no_constraint_name() { let tc = self.yy_move(0).yy439(); self[-2].yy559_ref().push(tc); }}
}
79
=> {
{if self.ctx.no_constraint_name() { let tc = self.yy_move(0).yy439(); yylhsminor = YYMINORTYPE::yy559( vec![tc]); } else { yylhsminor = YYMINORTYPE::yy559( vec![]); }}
self[0].minor = yylhsminor;
}
80
=> {
{ self.ctx.constraint_name = None;}
}
81
=> {
{ self.ctx.constraint_name = Some(self.yy_move(0).yy222())}
}
82
=> {
{
let name = self.ctx.constraint_name();
let constraint = TableConstraint::PrimaryKey{ columns: self.yy_move(-3).yy536(), auto_increment: self.yy_move(-2).yy173(), conflict_clause: self.yy_move(0).yy254() };
self[-6] .minor= YYMINORTYPE::yy439( NamedTableConstraint{ name, constraint });
}
}
83
=> {
{
let name = self.ctx.constraint_name();
let constraint = TableConstraint::Unique{ columns: self.yy_move(-2).yy536(), conflict_clause: self.yy_move(0).yy254() };
self[-4] .minor= YYMINORTYPE::yy439( NamedTableConstraint{ name, constraint });
}
}
84
=> {
{
let name = self.ctx.constraint_name();
let constraint = TableConstraint::Check(self.yy_move(-2).yy480());
self[-4] .minor= YYMINORTYPE::yy439( NamedTableConstraint{ name, constraint });
}
}
85
=> {
{
let name = self.ctx.constraint_name();
let clause = ForeignKeyClause{ tbl_name: self.yy_move(-3).yy222(), columns: self.yy_move(-2).yy143(), args: self.yy_move(-1).yy404() };
let constraint = TableConstraint::ForeignKey{ columns: self.yy_move(-6).yy360(), clause, deref_clause: self.yy_move(0).yy85() };
self[-9] .minor= YYMINORTYPE::yy439( NamedTableConstraint{ name, constraint });
}
}
86
=> {
{self[1] .minor= YYMINORTYPE::yy85( None);}
}
87
=> {
{yylhsminor = YYMINORTYPE::yy85( Some(self.yy_move(0).yy394()));}
self[0].minor = yylhsminor;
}
88
| 90
=> {
{self[1] .minor= YYMINORTYPE::yy254( None);}
}
89
=> {
{self[-2] .minor= YYMINORTYPE::yy254( Some(self.yy_move(0).yy207()));}
}
91
=> {
{self[-1] .minor= YYMINORTYPE::yy254( Some(self.yy_move(0).yy207()));}
}
92
=> {
{self[0] .minor= YYMINORTYPE::yy207( ResolveType::Ignore);}
}
93
=> {
{self[0] .minor= YYMINORTYPE::yy207( ResolveType::Replace);}
}
94
=> {
{
self.ctx.stmt = Some(Stmt::DropTable{ if_exists: self.yy_move(-1).yy173(), tbl_name: self.yy_move(0).yy474()});
}
}
95
| 237
| 240
=> {
{self[-1] .minor= YYMINORTYPE::yy173( true);}
}
97
=> {
{
self.ctx.stmt = Some(Stmt::CreateView{ temporary: self.yy_move(-6).yy173(), if_not_exists: self.yy_move(-4).yy173(), view_name: self.yy_move(-3).yy474(), columns: self.yy_move(-2).yy143(),
select: Box::new(self.yy_move(0).yy213()) });
}
}
98
=> {
{
self.ctx.stmt = Some(Stmt::DropView{ if_exists: self.yy_move(-1).yy173(), view_name: self.yy_move(0).yy474() });
}
}
99
=> {
{
self.ctx.stmt = Some(Stmt::Select(Box::new(self.yy_move(0).yy213())));
}
}
100
=> {
{
self[-4] .minor= YYMINORTYPE::yy213( Select{ with: Some(With { recursive: false, ctes: self.yy_move(-3).yy97() }), body: self.yy_move(-2).yy503(), order_by: self.yy_move(-1).yy19(), limit: self.yy_move(0).yy54() });
}
}
101
=> {
{
self[-5] .minor= YYMINORTYPE::yy213( Select{ with: Some(With { recursive: true, ctes: self.yy_move(-3).yy97() }), body: self.yy_move(-2).yy503(), order_by: self.yy_move(-1).yy19(), limit: self.yy_move(0).yy54() });
}
}
102
=> {
{
self[-2] .minor= YYMINORTYPE::yy213( Select{ with: None, body: self.yy_move(-2).yy503(), order_by: self.yy_move(-1).yy19(), limit: self.yy_move(0).yy54() });
}
}
103
=> {
{
yylhsminor = YYMINORTYPE::yy503( SelectBody{ select: Box::new(self.yy_move(0).yy463()), compounds: None });
}
self[0].minor = yylhsminor;
}
104
=> {
{
let cs = CompoundSelect{ operator: self.yy_move(-1).yy166(), select: Box::new(self.yy_move(0).yy463()) };
self[-2].yy503_ref().push(cs)?;
}
}
105
=> {
{self[0] .minor= YYMINORTYPE::yy166( CompoundOperator::Union);}
}
106
=> {
{self[-1] .minor= YYMINORTYPE::yy166( CompoundOperator::UnionAll);}
}
107
=> {
{self[0] .minor= YYMINORTYPE::yy166( CompoundOperator::Except);}
}
108
=> {
{self[0] .minor= YYMINORTYPE::yy166( CompoundOperator::Intersect);}
}
109
=> {
{
self[-5] .minor= YYMINORTYPE::yy463( OneSelect::Select(Box::new(SelectInner{ distinctness: self.yy_move(-4).yy415(), columns: self.yy_move(-3).yy106(), from: self.yy_move(-2).yy485(), where_clause: self.yy_move(-1).yy479(),
group_by: self.yy_move(0).yy68(), window_clause: None })));
}
}
110
=> {
{
self[-6] .minor= YYMINORTYPE::yy463( OneSelect::Select(Box::new(SelectInner{ distinctness: self.yy_move(-5).yy415(), columns: self.yy_move(-4).yy106(), from: self.yy_move(-3).yy485(), where_clause: self.yy_move(-2).yy479(),
group_by: self.yy_move(-1).yy68(), window_clause: Some(self.yy_move(0).yy472()) })));
}
}
111
=> {
{ yylhsminor = YYMINORTYPE::yy463( OneSelect::Values(self.yy_move(0).yy468())); }
self[0].minor = yylhsminor;
}
112
=> {
{
self[-3] .minor= YYMINORTYPE::yy468( vec![self.yy_move(-1).yy312()]);
}
}
113
=> {
{
let exprs = self.yy_move(-1).yy312();
OneSelect::push(self[-4].yy468_ref(), exprs)?;
}
}
114
=> {
{self[0] .minor= YYMINORTYPE::yy415( Some(Distinctness::Distinct));}
}
115
=> {
{self[0] .minor= YYMINORTYPE::yy415( Some(Distinctness::All));}
}
116
=> {
{self[1] .minor= YYMINORTYPE::yy415( None);}
}
117
=> {
{self[1] .minor= YYMINORTYPE::yy106( Vec::<ResultColumn>::new());}
}
118
=> {
{
let rc = ResultColumn::Expr(self.yy_move(-1).yy480(), self.yy_move(0).yy364());
self[-2].yy106_ref().push(rc);
}
}
119
=> {
{
let rc = ResultColumn::Star;
self[-1].yy106_ref().push(rc);
}
}
120
=> {
{
let rc = ResultColumn::TableStar(self.yy_move(-2).yy222());
self[-3].yy106_ref().push(rc);
}
}
121
=> {
{self[-1] .minor= YYMINORTYPE::yy364( Some(As::As(self.yy_move(0).yy222())));}
}
122
=> {
{yylhsminor = YYMINORTYPE::yy364( Some(As::Elided(Name::from_token(self[0].major, self.yy_move(0).yy0()))));}
self[0].minor = yylhsminor;
}
123
=> {
{self[1] .minor= YYMINORTYPE::yy364( None);}
}
124
=> {
{self[1] .minor= YYMINORTYPE::yy485( None);}
}
125
=> {
{
self[-1] .minor= YYMINORTYPE::yy485( Some(self.yy_move(0).yy314()));
}
}
126
=> {
{
let op = self.yy_move(0).yy577();
self[-1].yy314_ref().push_op(op);
}
}
127
=> {
{self[1] .minor= YYMINORTYPE::yy314( FromClause::empty());}
}
128
=> {
{
let st = SelectTable::Table(self.yy_move(-3).yy474(), self.yy_move(-2).yy364(), self.yy_move(-1).yy181());
let jc = self.yy_move(0).yy578();
self[-4].yy314_ref().push(st, jc)?;
}
}
129
=> {
{
let st = SelectTable::TableCall(self.yy_move(-5).yy474(), self.yy_move(-3).yy419(), self.yy_move(-1).yy364());
let jc = self.yy_move(0).yy578();
self[-6].yy314_ref().push(st, jc)?;
}
}
130
=> {
{
let st = SelectTable::Select(Box::new(self.yy_move(-3).yy213()), self.yy_move(-1).yy364());
let jc = self.yy_move(0).yy578();
self[-5].yy314_ref().push(st, jc)?;
}
}
131
=> {
{
let st = SelectTable::Sub(self.yy_move(-3).yy314(), self.yy_move(-1).yy364());
let jc = self.yy_move(0).yy578();
self[-5].yy314_ref().push(st, jc)?;
}
}
132
=> {
{
yylhsminor = YYMINORTYPE::yy474( QualifiedName::single(self.yy_move(0).yy222()));
}
self[0].minor = yylhsminor;
}
133
=> {
{
yylhsminor = YYMINORTYPE::yy474( QualifiedName::fullname(self.yy_move(-2).yy222(), self.yy_move(0).yy222()));
}
self[-2].minor = yylhsminor;
}
134
=> {
{self[0] .minor= YYMINORTYPE::yy474( QualifiedName::single(self.yy_move(0).yy222())); }
}
135
=> {
{self[-2] .minor= YYMINORTYPE::yy474( QualifiedName::fullname(self.yy_move(-2).yy222(), self.yy_move(0).yy222())); }
}
136
=> {
{
self[-4] .minor= YYMINORTYPE::yy474( QualifiedName::xfullname(self.yy_move(-4).yy222(), self.yy_move(-2).yy222(), self.yy_move(0).yy222()));
}
}
137
=> {
{
self[-2] .minor= YYMINORTYPE::yy474( QualifiedName::alias(self.yy_move(-2).yy222(), self.yy_move(0).yy222()));
}
}
138
=> {
{ self[0] .minor= YYMINORTYPE::yy577( JoinOperator::Comma); }
}
139
=> {
{ self[0] .minor= YYMINORTYPE::yy577( JoinOperator::TypedJoin(None)); }
}
140
=> {
{self[-1] .minor= YYMINORTYPE::yy577( JoinOperator::from(self.yy_move(-1).yy0(), None, None)?); }
}
141
=> {
{self[-2] .minor= YYMINORTYPE::yy577( JoinOperator::from(self.yy_move(-2).yy0(), Some(self.yy_move(-1).yy222()), None)?); }
}
142
=> {
{self[-3] .minor= YYMINORTYPE::yy577( JoinOperator::from(self.yy_move(-3).yy0(), Some(self.yy_move(-2).yy222()), Some(self.yy_move(-1).yy222()))?);}
}
143
=> {
{self[-1] .minor= YYMINORTYPE::yy578( Some(JoinConstraint::On(self.yy_move(0).yy480())));}
}
144
=> {
{self[-3] .minor= YYMINORTYPE::yy578( Some(JoinConstraint::Using(self.yy_move(-1).yy279())));}
}
145
=> {
{self[1] .minor= YYMINORTYPE::yy578( None);}
}
146
=> {
{self[1] .minor= YYMINORTYPE::yy181( None);}
}
147
=> {
{self[-2] .minor= YYMINORTYPE::yy181( Some(Indexed::IndexedBy(self.yy_move(0).yy222())));}
}
148
=> {
{self[-1] .minor= YYMINORTYPE::yy181( Some(Indexed::NotIndexed));}
}
149
=> {
{self[1] .minor= YYMINORTYPE::yy19( None);}
}
150
=> {
{self[-2] .minor= YYMINORTYPE::yy19( Some(self.yy_move(0).yy536()));}
}
151
=> {
{
let sc = SortedColumn { expr: self.yy_move(-2).yy480(), order: self.yy_move(-1).yy296(), nulls: self.yy_move(0).yy322() };
self[-4].yy536_ref().push(sc);
}
}
152
=> {
{
self[-2] .minor= YYMINORTYPE::yy536( vec![SortedColumn { expr: self.yy_move(-2).yy480(), order: self.yy_move(-1).yy296(), nulls: self.yy_move(0).yy322() }]);
}
}
153
=> {
{self[0] .minor= YYMINORTYPE::yy296( Some(SortOrder::Asc));}
}
154
=> {
{self[0] .minor= YYMINORTYPE::yy296( Some(SortOrder::Desc));}
}
155
=> {
{self[1] .minor= YYMINORTYPE::yy296( None);}
}
156
=> {
{self[-1] .minor= YYMINORTYPE::yy322( Some(NullsOrder::First));}
}
157
=> {
{self[-1] .minor= YYMINORTYPE::yy322( Some(NullsOrder::Last));}
}
158
=> {
{self[1] .minor= YYMINORTYPE::yy322( None);}
}
159
=> {
{self[1] .minor= YYMINORTYPE::yy68( None);}
}
160
=> {
{self[-3] .minor= YYMINORTYPE::yy68( Some(GroupBy{ exprs: self.yy_move(-1).yy312(), having: self.yy_move(0).yy479().map(Box::new) }));}
}
161
| 168
| 250
| 252
| 272
=> {
{self[1] .minor= YYMINORTYPE::yy479( None);}
}
162
| 169
| 249
| 271
=> {
{self[-1] .minor= YYMINORTYPE::yy479( Some(self.yy_move(0).yy480()));}
}
163
=> {
{self[1] .minor= YYMINORTYPE::yy54( None);}
}
164
=> {
{self[-1] .minor= YYMINORTYPE::yy54( Some(Box::new(Limit{ expr: self.yy_move(0).yy480(), offset: None })));}
}
165
| 166
=> {
{self[-3] .minor= YYMINORTYPE::yy54( Some(Box::new(Limit{ expr: self.yy_move(-2).yy480(), offset: Some(self.yy_move(0).yy480()) })));}
}
167
=> {
{
let (where_clause, returning) = self.yy_move(-2).yy496();
self.ctx.stmt = Some(Stmt::Delete(Box::new(Delete{ with: self.yy_move(-7).yy280(), tbl_name: self.yy_move(-4).yy474(), indexed: self.yy_move(-3).yy181(), where_clause: where_clause.map(Box::new), returning,
order_by: self.yy_move(-1).yy19(), limit: self.yy_move(0).yy54() })));
}
}
170
=> {
{self[1] .minor= YYMINORTYPE::yy496( (None, None));}
}
171
=> {
{self[-1] .minor= YYMINORTYPE::yy496( (Some(self.yy_move(0).yy480()), None));}
}
172
=> {
{self[-1] .minor= YYMINORTYPE::yy496( (None, Some(self.yy_move(0).yy106())));}
}
173
=> {
{self[-3] .minor= YYMINORTYPE::yy496( (Some(self.yy_move(-2).yy480()), Some(self.yy_move(0).yy106())));}
}
174
=> {
{
let (where_clause, returning) = self.yy_move(-2).yy496();
self.ctx.stmt = Some(Stmt::Update(Box::new(Update{ with: self.yy_move(-10).yy280(), or_conflict: self.yy_move(-8).yy254(), tbl_name: self.yy_move(-7).yy474(), indexed: self.yy_move(-6).yy181(), sets: self.yy_move(-4).yy517(), from: self.yy_move(-3).yy485(),
where_clause: where_clause.map(Box::new), returning, order_by: self.yy_move(-1).yy19(), limit: self.yy_move(0).yy54() })));
}
}
175
=> {
{
let s = Set{ col_names: DistinctNames::single(self.yy_move(-2).yy222()), expr: self.yy_move(0).yy480() };
self[-4].yy517_ref().push(s);
}
}
176
=> {
{
let s = Set{ col_names: self.yy_move(-3).yy279(), expr: self.yy_move(0).yy480() };
self[-6].yy517_ref().push(s);
}
}
177
=> {
{
yylhsminor = YYMINORTYPE::yy517( vec![Set{ col_names: DistinctNames::single(self.yy_move(-2).yy222()), expr: self.yy_move(0).yy480() }]);
}
self[-2].minor = yylhsminor;
}
178
=> {
{
self[-4] .minor= YYMINORTYPE::yy517( vec![Set{ col_names: self.yy_move(-3).yy279(), expr: self.yy_move(0).yy480() }]);
}
}
179
=> {
{
let (upsert, returning) = self.yy_move(0).yy504();
let body = InsertBody::Select(Box::new(self.yy_move(-1).yy213()), upsert);
self.ctx.stmt = Some(Stmt::Insert(Box::new(Insert{ with: self.yy_move(-6).yy280(), or_conflict: self.yy_move(-5).yy254(), tbl_name: self.yy_move(-3).yy474(), columns: self.yy_move(-2).yy18(),
body, returning })));
}
}
180
=> {
{
let body = InsertBody::DefaultValues;
self.ctx.stmt = Some(Stmt::Insert(Box::new(Insert{ with: self.yy_move(-7).yy280(), or_conflict: self.yy_move(-6).yy254(), tbl_name: self.yy_move(-4).yy474(), columns: self.yy_move(-3).yy18(),
body, returning: self.yy_move(0).yy265() })));
}
}
181
=> {
{ self[1] .minor= YYMINORTYPE::yy504( (None, None)); }
}
182
=> {
{ self[-1] .minor= YYMINORTYPE::yy504( (None, Some(self.yy_move(0).yy106()))); }
}
183
=> {
{ let index = UpsertIndex{ targets: self.yy_move(-8).yy536(), where_clause: self.yy_move(-6).yy479() };
let do_clause = UpsertDo::Set{ sets: self.yy_move(-2).yy517(), where_clause: self.yy_move(-1).yy479() };
let (next, returning) = self.yy_move(0).yy504();
self[-11] .minor= YYMINORTYPE::yy504( (Some(Upsert{ index: Some(Box::new(index)), do_clause: Box::new(do_clause), next: next.map(Box::new) }), returning));}
}
184
=> {
{ let index = UpsertIndex{ targets: self.yy_move(-5).yy536(), where_clause: self.yy_move(-3).yy479() };
let (next, returning) = self.yy_move(0).yy504();
self[-8] .minor= YYMINORTYPE::yy504( (Some(Upsert{ index: Some(Box::new(index)), do_clause: Box::new(UpsertDo::Nothing), next: next.map(Box::new) }), returning)); }
}
185
=> {
{ self[-4] .minor= YYMINORTYPE::yy504( (Some(Upsert{ index: None, do_clause: Box::new(UpsertDo::Nothing), next: None }), self.yy_move(0).yy265())); }
}
186
=> {
{ let do_clause = UpsertDo::Set{ sets: self.yy_move(-2).yy517(), where_clause: self.yy_move(-1).yy479() };
self[-7] .minor= YYMINORTYPE::yy504( (Some(Upsert{ index: None, do_clause: Box::new(do_clause), next: None }), self.yy_move(0).yy265()));}
}
187
=> {
{self[-1] .minor= YYMINORTYPE::yy265( Some(self.yy_move(0).yy106()));}
}
188
=> {
{self[1] .minor= YYMINORTYPE::yy265( None);}
}
189
=> {
{self[-1] .minor= YYMINORTYPE::yy254( self.yy_move(0).yy254());}
}
190
=> {
{self[0] .minor= YYMINORTYPE::yy254( Some(ResolveType::Replace));}
}
191
=> {
{self[1] .minor= YYMINORTYPE::yy18( None);}
}
192
=> {
{self[-2] .minor= YYMINORTYPE::yy18( Some(self.yy_move(-1).yy279()));}
}
193
=> {
{let id = self.yy_move(0).yy222(); self[-2].yy279_ref().insert(id)?;}
}
194
=> {
{ self[0] .minor= YYMINORTYPE::yy279( DistinctNames::new(self.yy_move(0).yy222())); }
}
195
=> {
{self[-2] .minor= YYMINORTYPE::yy480( Expr::parenthesized(self.yy_move(-1).yy480()));}
}
196
=> {
{self[0].minor= YYMINORTYPE::yy480( Expr::id(self[0].major, self.yy_move(0).yy0())); }
}
197
=> {
{
self[-2] .minor= YYMINORTYPE::yy480( Expr::Qualified(self.yy_move(-2).yy222(), self.yy_move(0).yy222()));
}
}
198
=> {
{
self[-4] .minor= YYMINORTYPE::yy480( Expr::DoublyQualified(self.yy_move(-4).yy222(), self.yy_move(-2).yy222(), self.yy_move(0).yy222()));
}
}
199
=> {
{self[0].minor= YYMINORTYPE::yy480(Expr::Literal(Literal::Null));}
}
200
=> {
{self[0].minor= YYMINORTYPE::yy480(Expr::Literal(Literal::Blob(self.yy_move(0).yy0().unwrap()))); }
}
201
=> {
{self[0].minor= YYMINORTYPE::yy480(Expr::Literal(Literal::String(self.yy_move(0).yy0().unwrap()))); }
}
202
=> {
{
self[0] .minor= YYMINORTYPE::yy480( Expr::Literal(Literal::Numeric(self.yy_move(0).yy0().unwrap())));
}
}
203
=> {
{
self[0] .minor= YYMINORTYPE::yy480( Expr::Variable(self.yy_move(0).yy0().unwrap()));
}
}
204
=> {
{
self[-2] .minor= YYMINORTYPE::yy480( Expr::collate(self.yy_move(-2).yy480(), self[0].major, self.yy_move(0).yy0()));
}
}
205
=> {
{
self[-5] .minor= YYMINORTYPE::yy480( Expr::cast(self.yy_move(-3).yy480(), self.yy_move(-1).yy362()));
}
}
206
=> {
{
self[-4] .minor= YYMINORTYPE::yy480( Expr::FunctionCall{ name: Id::from_token(self[-4].major, self.yy_move(-4).yy0()), distinctness: self.yy_move(-2).yy415(), args: self.yy_move(-1).yy419(), order_by: None, filter_over: None });
}
}
207
=> {
{
self[-7] .minor= YYMINORTYPE::yy480( Expr::FunctionCall{ name: Id::from_token(self[-7].major, self.yy_move(-7).yy0()), distinctness: self.yy_move(-5).yy415(), args: self.yy_move(-4).yy419(), order_by: Some(self.yy_move(-1).yy536()), filter_over: None });
}
}
208
=> {
{
self[-3] .minor= YYMINORTYPE::yy480( Expr::FunctionCallStar{ name: Id::from_token(self[-3].major, self.yy_move(-3).yy0()), filter_over: None });
}
}
209
=> {
{
self[-5] .minor= YYMINORTYPE::yy480( Expr::FunctionCall{ name: Id::from_token(self[-5].major, self.yy_move(-5).yy0()), distinctness: self.yy_move(-3).yy415(), args: self.yy_move(-2).yy419(), order_by: None, filter_over: Some(self.yy_move(0).yy353()) });
}
}
210
=> {
{
self[-8] .minor= YYMINORTYPE::yy480( Expr::FunctionCall{ name: Id::from_token(self[-8].major, self.yy_move(-8).yy0()), distinctness: self.yy_move(-6).yy415(), args: self.yy_move(-5).yy419(), order_by: Some(self.yy_move(-2).yy536()), filter_over: Some(self.yy_move(0).yy353()) });
}
}
211
=> {
{
self[-4] .minor= YYMINORTYPE::yy480( Expr::FunctionCallStar{ name: Id::from_token(self[-4].major, self.yy_move(-4).yy0()), filter_over: Some(self.yy_move(0).yy353()) });
}
}
212
=> {
{
yylhsminor = YYMINORTYPE::yy480( Expr::Literal(Literal::from_ctime_kw(self.yy_move(0).yy0())));
}
self[0].minor = yylhsminor;
}
213
=> {
{
let mut x = self.yy_move(-3).yy312();
x.push(self.yy_move(-1).yy480());
self[-4] .minor= YYMINORTYPE::yy480( Expr::Parenthesized(x));
}
}
214
| 215
| 216
| 217
| 218
| 219
| 220
| 221
=> {
{self[-2].minor= YYMINORTYPE::yy480(Expr::binary(self.yy_move(-2).yy480(),self[-1].major,self.yy_move(0).yy480())); }
}
222
=> {
{yylhsminor= YYMINORTYPE::yy343((false, LikeOperator::from_token(self[0].major, self.yy_move(0).yy0()))); }
self[0].minor = yylhsminor;
}
223
=> {
{self[-1].minor= YYMINORTYPE::yy343((true, LikeOperator::from_token(self[0].major, self.yy_move(0).yy0()))); }
}
224
=> {
{
let op = self.yy_move(-1).yy343();
self[-2].minor= YYMINORTYPE::yy480(Expr::like(self.yy_move(-2).yy480(),op.0,op.1,self.yy_move(0).yy480(),None));
}
}
225
=> {
{
let op = self.yy_move(-3).yy343();
self[-4].minor= YYMINORTYPE::yy480(Expr::like(self.yy_move(-4).yy480(),op.0,op.1,self.yy_move(-2).yy480(),Some(self.yy_move(0).yy480())));
}
}
226
=> {
{self[-1] .minor= YYMINORTYPE::yy480( Expr::not_null(self.yy_move(-1).yy480(), self[0].major)); }
}
227
=> {
{self[-2] .minor= YYMINORTYPE::yy480( Expr::not_null(self.yy_move(-2).yy480(), TokenType::TK_NOTNULL as YYCODETYPE)); }
}
228
=> {
{
self[-2] .minor= YYMINORTYPE::yy480( Expr::binary(self.yy_move(-2).yy480(), self[-1].major, self.yy_move(0).yy480()));
}
}
229
=> {
{
self[-3] .minor= YYMINORTYPE::yy480( Expr::binary(self.yy_move(-3).yy480(), TokenType::TK_NOT as YYCODETYPE, self.yy_move(0).yy480()));
}
}
230
=> {
{
self[-5] .minor= YYMINORTYPE::yy480( Expr::binary(self.yy_move(-5).yy480(), TokenType::TK_IS as YYCODETYPE, self.yy_move(0).yy480()));
}
}
231
=> {
{
self[-4] .minor= YYMINORTYPE::yy480( Expr::binary(self.yy_move(-4).yy480(), TokenType::TK_NOT as YYCODETYPE, self.yy_move(0).yy480()));
}
}
232
| 233
=> {
{self[-1] .minor= YYMINORTYPE::yy480( Expr::unary(UnaryOperator::from(self[-1].major), self.yy_move(0).yy480()));}
}
234
=> {
{
self[-1] .minor= YYMINORTYPE::yy480( Expr::unary(UnaryOperator::from(self[-1].major), self.yy_move(0).yy480()));
}
}
235
=> {
{
yylhsminor = YYMINORTYPE::yy480( Expr::ptr(self.yy_move(-2).yy480(), self.yy_move(-1).yy0(), self.yy_move(0).yy480()));
}
self[-2].minor = yylhsminor;
}
236
| 239
=> {
{self[0] .minor= YYMINORTYPE::yy173( false);}
}
238
=> {
{
self[-4] .minor= YYMINORTYPE::yy480( Expr::between(self.yy_move(-4).yy480(), self.yy_move(-3).yy173(), self.yy_move(-2).yy480(), self.yy_move(0).yy480()));
}
}
241
=> {
{
self[-4] .minor= YYMINORTYPE::yy480( Expr::in_list(self.yy_move(-4).yy480(), self.yy_move(-3).yy173(), self.yy_move(-1).yy419()));
}
}
242
=> {
{
self[-2] .minor= YYMINORTYPE::yy480( Expr::sub_query(self.yy_move(-1).yy213()));
}
}
243
=> {
{
self[-4] .minor= YYMINORTYPE::yy480( Expr::in_select(self.yy_move(-4).yy480(), self.yy_move(-3).yy173(), self.yy_move(-1).yy213()));
}
}
244
=> {
{
self[-3] .minor= YYMINORTYPE::yy480( Expr::in_table(self.yy_move(-3).yy480(), self.yy_move(-2).yy173(), self.yy_move(-1).yy474(), self.yy_move(0).yy419()));
}
}
245
=> {
{
self[-3] .minor= YYMINORTYPE::yy480( Expr::Exists(Box::new(self.yy_move(-1).yy213())));
}
}
246
=> {
{
self[-4] .minor= YYMINORTYPE::yy480( Expr::Case{ base: self.yy_move(-3).yy479().map(Box::new), when_then_pairs: self.yy_move(-2).yy473(), else_expr: self.yy_move(-1).yy479().map(Box::new)});
}
}
247
=> {
{
let pair = (self.yy_move(-2).yy480(), self.yy_move(0).yy480());
self[-4].yy473_ref().push(pair);
}
}
248
=> {
{
self[-3] .minor= YYMINORTYPE::yy473( vec![(self.yy_move(-2).yy480(), self.yy_move(0).yy480())]);
}
}
251
=> {
{self[0] .minor= YYMINORTYPE::yy479( Some(self.yy_move(0).yy480())); }
}
253
=> {
{yylhsminor = YYMINORTYPE::yy419( Some(self.yy_move(0).yy312()));}
self[0].minor = yylhsminor;
}
254
| 257
=> {
{self[1] .minor= YYMINORTYPE::yy419( None);}
}
255
=> {
{ let expr = self.yy_move(0).yy480(); self[-2].yy312_ref().push(expr);}
}
256
=> {
{self[0] .minor= YYMINORTYPE::yy312( vec![self.yy_move(0).yy480()]); }
}
258
=> {
{self[-2] .minor= YYMINORTYPE::yy419( self.yy_move(-1).yy419());}
}
259
=> {
{
self.ctx.stmt = Some(Stmt::CreateIndex { unique: self.yy_move(-9).yy173(), if_not_exists: self.yy_move(-7).yy173(), idx_name: Box::new(self.yy_move(-6).yy474()),
tbl_name: self.yy_move(-4).yy222(), columns: self.yy_move(-2).yy536(), where_clause: self.yy_move(0).yy479().map(Box::new) });
}
}
262
=> {
{self[1] .minor= YYMINORTYPE::yy143( None);}
}
263
=> {
{self[-2] .minor= YYMINORTYPE::yy143( Some(self.yy_move(-1).yy360()));}
}
264
=> {
{
let ic = IndexedColumn{ col_name: self.yy_move(-2).yy222(), collation_name: self.yy_move(-1).yy329(), order: self.yy_move(0).yy296() };
self[-4].yy360_ref().push(ic);
}
}
265
=> {
{
self[-2] .minor= YYMINORTYPE::yy360( vec![IndexedColumn{ col_name: self.yy_move(-2).yy222(), collation_name: self.yy_move(-1).yy329(), order: self.yy_move(0).yy296() }]);
}
}
267
=> {
{self[-1] .minor= YYMINORTYPE::yy329( Some(Name::from_token(self[0].major, self.yy_move(0).yy0())));}
}
268
=> {
{self.ctx.stmt = Some(Stmt::DropIndex{if_exists: self.yy_move(-1).yy173(), idx_name: self.yy_move(0).yy474()});}
}
269
=> {
{self.ctx.stmt = Some(Stmt::Vacuum(None, self.yy_move(0).yy479().map(Box::new)));}
}
270
=> {
{self.ctx.stmt = Some(Stmt::Vacuum(Some(self.yy_move(-1).yy222()), self.yy_move(0).yy479().map(Box::new)));}
}
273
=> {
{self.ctx.stmt = Some(Stmt::Pragma(Box::new(self.yy_move(0).yy474()), None));}
}
274
| 276
=> {
{self.ctx.stmt = Some(Stmt::Pragma(Box::new(self.yy_move(-2).yy474()), Some(Box::new(PragmaBody::Equals(self.yy_move(0).yy480())))));}
}
275
| 277
=> {
{self.ctx.stmt = Some(Stmt::Pragma(Box::new(self.yy_move(-3).yy474()), Some(Box::new(PragmaBody::Call(self.yy_move(-1).yy480())))));}
}
278
=> {
{yylhsminor = YYMINORTYPE::yy480( Expr::Name(self.yy_move(0).yy222()));}
self[0].minor = yylhsminor;
}
279
| 280
| 281
=> {
{yylhsminor = YYMINORTYPE::yy480( Expr::Literal(Literal::Keyword(from_token(self[0].major, self.yy_move(0).yy0()))));}
self[0].minor = yylhsminor;
}
282
=> {
{self[-1] .minor= YYMINORTYPE::yy480( Expr::unary(UnaryOperator::Positive, Expr::Literal(Literal::Numeric(self.yy_move(0).yy0().unwrap()))));}
}
283
=> {
{yylhsminor = YYMINORTYPE::yy480( Expr::Literal(Literal::Numeric(self.yy_move(0).yy0().unwrap())));}
self[0].minor = yylhsminor;
}
284
=> {
{self[-1] .minor= YYMINORTYPE::yy480( Expr::unary(UnaryOperator::Negative, Expr::Literal(Literal::Numeric(self.yy_move(0).yy0().unwrap()))));}
}
285
=> {
{
self.ctx.stmt = Some(Stmt::CreateTrigger(Box::new(CreateTrigger{
temporary: self.yy_move(-12).yy173(), if_not_exists: self.yy_move(-10).yy173(), trigger_name: self.yy_move(-9).yy474(), time: self.yy_move(-8).yy59(), event: self.yy_move(-7).yy47(), tbl_name: self.yy_move(-5).yy474(),
for_each_row: self.yy_move(-4).yy173(), when_clause: self.yy_move(-3).yy479(), commands: self.yy_move(-1).yy33()
})));
}
}
286
=> {
{ self[0] .minor= YYMINORTYPE::yy59( Some(TriggerTime::Before)); }
}
287
=> {
{ self[0] .minor= YYMINORTYPE::yy59( Some(TriggerTime::After)); }
}
288
=> {
{ self[-1] .minor= YYMINORTYPE::yy59( Some(TriggerTime::InsteadOf));}
}
289
=> {
{ self[1] .minor= YYMINORTYPE::yy59( None); }
}
290
=> {
{self[0] .minor= YYMINORTYPE::yy47( TriggerEvent::Delete);}
}
291
=> {
{self[0] .minor= YYMINORTYPE::yy47( TriggerEvent::Insert);}
}
292
=> {
{self[0] .minor= YYMINORTYPE::yy47( TriggerEvent::Update);}
}
293
=> {
{self[-2] .minor= YYMINORTYPE::yy47( TriggerEvent::UpdateOf(self.yy_move(0).yy279()));}
}
294
=> {
{ self[1] .minor= YYMINORTYPE::yy173( false); }
}
295
=> {
{ self[-2] .minor= YYMINORTYPE::yy173( true); }
}
296
| 315
=> {
{ self[1] .minor= YYMINORTYPE::yy479( None); }
}
297
| 316
=> {
{ self[-1] .minor= YYMINORTYPE::yy479( Some(self.yy_move(0).yy480())); }
}
298
=> {
{
let tc = self.yy_move(-1).yy569();
self[-2].yy33_ref().push(tc);
}
}
299
=> {
{
yylhsminor = YYMINORTYPE::yy33( vec![self.yy_move(-1).yy569()]);
}
self[-1].minor = yylhsminor;
}
300
=> {
{
self[-2] .minor= YYMINORTYPE::yy222( self.yy_move(0).yy222());
return Err(custom_err!("qualified table names are not allowed on INSERT, UPDATE, and DELETE \
statements within triggers"));
}
}
301
=> {
{
return Err(custom_err!(
"the INDEXED BY clause is not allowed on UPDATE or DELETE statements \
within triggers"));
}
}
302
=> {
{
return Err(custom_err!(
"the NOT INDEXED clause is not allowed on UPDATE or DELETE statements \
within triggers"));
}
}
303
=> {
{self[-7] .minor= YYMINORTYPE::yy569( TriggerCmd::Update(Box::new(TriggerCmdUpdate{ or_conflict: self.yy_move(-6).yy254(), tbl_name: self.yy_move(-5).yy222(), sets: self.yy_move(-2).yy517(), from: self.yy_move(-1).yy485(), where_clause: self.yy_move(0).yy479() })));}
}
304
=> {
{
let (upsert, returning) = self.yy_move(0).yy504();
self[-5] .minor= YYMINORTYPE::yy569( TriggerCmd::Insert(Box::new(TriggerCmdInsert{ or_conflict: self.yy_move(-5).yy254(), tbl_name: self.yy_move(-3).yy222(), col_names: self.yy_move(-2).yy18(), select: Box::new(self.yy_move(-1).yy213()), upsert, returning })));
}
}
305
=> {
{self[-4] .minor= YYMINORTYPE::yy569( TriggerCmd::Delete(Box::new(TriggerCmdDelete{ tbl_name: self.yy_move(-2).yy222(), where_clause: self.yy_move(0).yy479() })));}
}
306
=> {
{self[0] .minor= YYMINORTYPE::yy569( TriggerCmd::Select(Box::new(self.yy_move(0).yy213()))); }
}
307
=> {
{
self[-3] .minor= YYMINORTYPE::yy480( Expr::Raise(ResolveType::Ignore, None));
}
}
308
=> {
{
self[-5] .minor= YYMINORTYPE::yy480( Expr::Raise(self.yy_move(-3).yy207(), Some(Box::new(self.yy_move(-1).yy480()))));
}
}
309
=> {
{self[0] .minor= YYMINORTYPE::yy207( ResolveType::Rollback);}
}
310
=> {
{self[0] .minor= YYMINORTYPE::yy207( ResolveType::Abort);}
}
311
=> {
{self[0] .minor= YYMINORTYPE::yy207( ResolveType::Fail);}
}
312
=> {
{
self.ctx.stmt = Some(Stmt::DropTrigger{ if_exists: self.yy_move(-1).yy173(), trigger_name: self.yy_move(0).yy474()});
}
}
313
=> {
{
self.ctx.stmt = Some(Stmt::Attach{ expr: Box::new(self.yy_move(-3).yy480()), db_name: Box::new(self.yy_move(-1).yy480()), key: self.yy_move(0).yy479().map(Box::new) });
}
}
314
=> {
{
self.ctx.stmt = Some(Stmt::Detach(Box::new(self.yy_move(0).yy480())));
}
}
317
=> {
{self.ctx.stmt = Some(Stmt::Reindex { obj_name: None });}
}
318
=> {
{self.ctx.stmt = Some(Stmt::Reindex { obj_name: Some(self.yy_move(0).yy474()) });}
}
319
=> {
{self.ctx.stmt = Some(Stmt::Analyze(None));}
}
320
=> {
{self.ctx.stmt = Some(Stmt::Analyze(Some(self.yy_move(0).yy474())));}
}
321
=> {
{
self.ctx.stmt = Some(Stmt::AlterTable(Box::new((self.yy_move(-3).yy474(), AlterTableBody::RenameTo(self.yy_move(0).yy222())))));
}
}
322
=> {
{
let (col_name, col_type) = self.yy_move(-1).yy444();
let cd = ColumnDefinition{ col_name, col_type, constraints: self.yy_move(0).yy305() };
self.ctx.stmt = Some(Stmt::AlterTable(Box::new((self.yy_move(-4).yy474(), AlterTableBody::AddColumn(cd)))));
}
}
323
=> {
{
self.ctx.stmt = Some(Stmt::AlterTable(Box::new((self.yy_move(-5).yy474(), AlterTableBody::RenameColumn{ old: self.yy_move(-2).yy222(), new: self.yy_move(0).yy222() }))));
}
}
324
=> {
{
self.ctx.stmt = Some(Stmt::AlterTable(Box::new((self.yy_move(-3).yy474(), AlterTableBody::DropColumn(self.yy_move(0).yy222())))));
}
}
325
=> {
{self.ctx.stmt = Some(self.yy_move(0).yy77());}
}
326
=> {
{
let mut stmt = self.yy_move(-3).yy77();
if let Stmt::CreateVirtualTable(ref mut create_virtual_table) = stmt {
create_virtual_table.args = self.ctx.module_args();
}
self.ctx.stmt = Some(stmt);
}
}
327
=> {
{
self[-6] .minor= YYMINORTYPE::yy77( Stmt::CreateVirtualTable(Box::new(CreateVirtualTable{ if_not_exists: self.yy_move(-3).yy173(), tbl_name: self.yy_move(-2).yy474(), module_name: self.yy_move(0).yy222(), args: None })));
}
}
328
=> {
{self.ctx.vtab_arg_init();}
}
329
=> {
{ let x = self.yy_move(0).yy0(); self.ctx.vtab_arg_extend(x);}
}
330
| 331
=> {
{let x = self.yy_move(0).yy0(); self.ctx.vtab_arg_extend(x);}
}
332
=> {
{ self[1] .minor= YYMINORTYPE::yy280( None); }
}
333
=> {
{ self[-1] .minor= YYMINORTYPE::yy280( Some(With{ recursive: false, ctes: self.yy_move(0).yy97() })); }
}
334
=> {
{ self[-2] .minor= YYMINORTYPE::yy280( Some(With{ recursive: true, ctes: self.yy_move(0).yy97() })); }
}
335
=> {
{self[0] .minor= YYMINORTYPE::yy520( Materialized::Any);}
}
336
=> {
{self[-1] .minor= YYMINORTYPE::yy520( Materialized::Yes);}
}
337
=> {
{self[-2] .minor= YYMINORTYPE::yy520( Materialized::No);}
}
338
=> {
{
self[-5] .minor= YYMINORTYPE::yy557( CommonTableExpr{ tbl_name: self.yy_move(-5).yy222(), columns: self.yy_move(-4).yy143(), materialized: self.yy_move(-3).yy520(), select: Box::new(self.yy_move(-1).yy213()) });
}
}
339
=> {
{
self[0] .minor= YYMINORTYPE::yy97( vec![self.yy_move(0).yy557()]);
}
}
340
=> {
{
let cte = self.yy_move(0).yy557();
CommonTableExpr::add_cte(self[-2].yy97_ref(), cte)?;
}
}
341
=> {
{ yylhsminor = YYMINORTYPE::yy472( vec![self.yy_move(0).yy256()]); }
self[0].minor = yylhsminor;
}
342
=> {
{
let w = self.yy_move(0).yy256();
self[-2].yy472_ref().push(w);
}
}
343
=> {
{
yylhsminor = YYMINORTYPE::yy256( WindowDef { name: self.yy_move(-4).yy222(), window: self.yy_move(-1).yy13()});
}
self[-4].minor = yylhsminor;
}
344
=> {
{
self[-4] .minor= YYMINORTYPE::yy13( Window{ base: None, partition_by: Some(self.yy_move(-2).yy312()), order_by: self.yy_move(-1).yy19(), frame_clause: self.yy_move(0).yy4()});
}
}
345
=> {
{
yylhsminor = YYMINORTYPE::yy13( Window{ base: Some(self.yy_move(-5).yy222()), partition_by: Some(self.yy_move(-2).yy312()), order_by: self.yy_move(-1).yy19(), frame_clause: self.yy_move(0).yy4()});
}
self[-5].minor = yylhsminor;
}
346
=> {
{
self[-3] .minor= YYMINORTYPE::yy13( Window{ base: None, partition_by: None, order_by: Some(self.yy_move(-1).yy536()), frame_clause: self.yy_move(0).yy4()});
}
}
347
=> {
{
yylhsminor = YYMINORTYPE::yy13( Window{ base: Some(self.yy_move(-4).yy222()), partition_by: None, order_by: Some(self.yy_move(-1).yy536()), frame_clause: self.yy_move(0).yy4()});
}
self[-4].minor = yylhsminor;
}
348
=> {
{
yylhsminor = YYMINORTYPE::yy13( Window{ base: None, partition_by: None, order_by: None, frame_clause: self.yy_move(0).yy4()});
}
self[0].minor = yylhsminor;
}
349
=> {
{
yylhsminor = YYMINORTYPE::yy13( Window{ base: Some(self.yy_move(-1).yy222()), partition_by: None, order_by: None, frame_clause: self.yy_move(0).yy4()});
}
self[-1].minor = yylhsminor;
}
350
=> {
{
self[1] .minor= YYMINORTYPE::yy4( None);
}
}
351
=> {
{
yylhsminor = YYMINORTYPE::yy4( Some(FrameClause{ mode: self.yy_move(-2).yy221(), start: self.yy_move(-1).yy216(), end: None, exclude: self.yy_move(0).yy105() }));
}
self[-2].minor = yylhsminor;
}
352
=> {
{
yylhsminor = YYMINORTYPE::yy4( Some(FrameClause{ mode: self.yy_move(-5).yy221(), start: self.yy_move(-3).yy216(), end: Some(self.yy_move(-1).yy216()), exclude: self.yy_move(0).yy105() }));
}
self[-5].minor = yylhsminor;
}
353
=> {
{ self[0] .minor= YYMINORTYPE::yy221( FrameMode::Range); }
}
354
=> {
{ self[0] .minor= YYMINORTYPE::yy221( FrameMode::Rows); }
}
355
=> {
{ self[0] .minor= YYMINORTYPE::yy221( FrameMode::Groups); }
}
356
| 358
=> {
{yylhsminor = YYMINORTYPE::yy216( self.yy_move(0).yy216());}
self[0].minor = yylhsminor;
}
357
=> {
{self[-1] .minor= YYMINORTYPE::yy216( FrameBound::UnboundedPreceding);}
}
359
=> {
{self[-1] .minor= YYMINORTYPE::yy216( FrameBound::UnboundedFollowing);}
}
360
=> {
{ yylhsminor = YYMINORTYPE::yy216( FrameBound::Preceding(Box::new(self.yy_move(-1).yy480()))); }
self[-1].minor = yylhsminor;
}
361
=> {
{ self[-1] .minor= YYMINORTYPE::yy216( FrameBound::CurrentRow); }
}
362
=> {
{ yylhsminor = YYMINORTYPE::yy216( FrameBound::Following(Box::new(self.yy_move(-1).yy480()))); }
self[-1].minor = yylhsminor;
}
363
=> {
{self[1] .minor= YYMINORTYPE::yy105( None);}
}
364
=> {
{self[-1] .minor= YYMINORTYPE::yy105( Some(self.yy_move(0).yy214()));}
}
365
=> {
{ self[-1] .minor= YYMINORTYPE::yy214( FrameExclude::NoOthers); }
}
366
=> {
{ self[-1] .minor= YYMINORTYPE::yy214( FrameExclude::CurrentRow); }
}
367
=> {
{ self[0] .minor= YYMINORTYPE::yy214( FrameExclude::Group); }
}
368
=> {
{ self[0] .minor= YYMINORTYPE::yy214( FrameExclude::Ties); }
}
369
=> {
{ self[-1] .minor= YYMINORTYPE::yy472( self.yy_move(0).yy472()); }
}
370
=> {
{
yylhsminor = YYMINORTYPE::yy353( FunctionTail{ filter_clause: Some(Box::new(self.yy_move(-1).yy480())), over_clause: Some(Box::new(self.yy_move(0).yy113())) });
}
self[-1].minor = yylhsminor;
}
371
=> {
{
yylhsminor = YYMINORTYPE::yy353( FunctionTail{ filter_clause: None, over_clause: Some(Box::new(self.yy_move(0).yy113())) });
}
self[0].minor = yylhsminor;
}
372
=> {
{
yylhsminor = YYMINORTYPE::yy353( FunctionTail{ filter_clause: Some(Box::new(self.yy_move(0).yy480())), over_clause: None });
}
self[0].minor = yylhsminor;
}
373
=> {
{
self[-3] .minor= YYMINORTYPE::yy113( Over::Window(self.yy_move(-1).yy13()));
}
}
374
=> {
{
self[-1] .minor= YYMINORTYPE::yy113( Over::Name(self.yy_move(0).yy222()));
}
}
375
=> {
{ self[-4] .minor= YYMINORTYPE::yy480( self.yy_move(-1).yy480()); }
}
_ => {
debug_assert_ne!(yyruleno, 378);
debug_assert_ne!(yyruleno, 385);
debug_assert_ne!(yyruleno, 386);
debug_assert_ne!(yyruleno, 387);
debug_assert_ne!(yyruleno, 389);
debug_assert_ne!(yyruleno, 391);
debug_assert_ne!(yyruleno, 392);
}
};
let yygoto: YYCODETYPE = yyRuleInfoLhs[yyruleno as usize];
let yysize: i8 = yyRuleInfoNRhs[yyruleno as usize];
let yyact: YYACTIONTYPE = yy_find_reduce_action(self[yysize].stateno, yygoto);
assert!(!(yyact > YY_MAX_SHIFT && yyact <= YY_MAX_SHIFTREDUCE));
assert_ne!(yyact, YY_ERROR_ACTION);
self.yyidx_shift(yysize + 1);
{
let yymsp = &mut self[0];
yymsp.stateno = yyact;
yymsp.major = yygoto;
}
self.yyTraceShift(yyact, "... then shift");
Ok(yyact)
}
}
impl yyParser<'_> {
#[cfg(not(feature = "YYNOERRORRECOVERY"))]
fn yy_parse_failed(&mut self) {
#[cfg(not(feature = "NDEBUG"))]
{
error!(target: TARGET, "Fail!");
}
while self.yyidx > 0 {
self.yy_pop_parser_stack();
}
}
#[cfg(feature = "YYNOERRORRECOVERY")]
fn yy_parse_failed(&mut self) {}
}
impl yyParser<'_> {
fn yy_syntax_error(
&mut self,
yymajor: YYCODETYPE,
yyminor: &sqlite3ParserTOKENTYPE,
) {
if TokenType::TK_EOF as YYCODETYPE == yymajor {
trace!(target: TARGET, "incomplete input");
self.ctx.error = Some(ParserError::UnexpectedEof);
} else {
trace!(target: TARGET, "near \"{:?}\": syntax error", yyminor);
self.ctx.error = Some(ParserError::SyntaxError(from_bytes(yyminor.1)));
}
}
}
impl yyParser<'_> {
fn yy_accept(&mut self) {
#[cfg(not(feature = "NDEBUG"))]
{
debug!(target: TARGET, "Accept!");
}
if cfg!(not(feature = "YYNOERRORRECOVERY")) {
self.yyerrcnt = -1;
}
assert_eq!(self.yyidx, 0);
}
}
impl<'input> yyParser<'input> {
#[expect(non_snake_case)]
pub fn sqlite3Parser(
&mut self,
yymajor: TokenType,
yyminor: sqlite3ParserTOKENTYPE<'input>,
) -> Result<(), sqlite3ParserError> {
let mut yymajor = yymajor as YYCODETYPE;
let mut yyendofinput: bool = false;
let mut yyerrorhit: bool = false;
if YYERRORSYMBOL == 0 && cfg!(not(feature = "YYNOERRORRECOVERY")) {
yyendofinput = yymajor == 0;
}
let mut yyact: YYACTIONTYPE = self[0].stateno;
#[cfg(not(feature = "NDEBUG"))]
{
if yyact < YY_MIN_REDUCE {
debug!(
target: TARGET,
"Input '{}' in state {}", yyTokenName[yymajor as usize], yyact
);
} else {
debug!(
target: TARGET,
"Input '{}' with pending reduce {}",
yyTokenName[yymajor as usize],
yyact - YY_MIN_REDUCE
);
}
}
loop {
assert_eq!(yyact, self[0].stateno);
yyact = yy_find_shift_action(yymajor, yyact);
if yyact >= YY_MIN_REDUCE {
let yyruleno = yyact - YY_MIN_REDUCE;
#[cfg(not(feature = "NDEBUG"))]
{
assert!((yyruleno as usize) < yyRuleName.len());
let yysize = yyRuleInfoNRhs[yyruleno as usize];
let action = if yyruleno < YYNRULE_WITH_ACTION {
""
} else {
" without external action"
};
if yysize != 0 {
debug!(
target: TARGET,
"Reduce {} [{}]{}, pop back to state {}.",
yyruleno,
yyRuleName[yyruleno as usize],
action,
self[yysize].stateno
);
} else {
debug!(
target: TARGET,
"Reduce {} [{}]{}.", yyruleno, yyRuleName[yyruleno as usize], action
);
}
}
if yyRuleInfoNRhs[yyruleno as usize] == 0 {
self.yyhwm_incr();
if self.yy_grow_stack_for_push() {
break;
}
}
yyact = self.yy_reduce(yyruleno, yymajor, &yyminor)?;
} else if yyact <= YY_MAX_SHIFTREDUCE {
self.yy_shift(yyact, yymajor, yyminor);
if cfg!(not(feature = "YYNOERRORRECOVERY")) {
self.yyerrcnt -= 1;
}
break;
} else if yyact == YY_ACCEPT_ACTION {
self.yyidx_shift(-1);
self.yy_accept();
return Ok(());
} else {
assert_eq!(yyact, YY_ERROR_ACTION);
#[cfg(not(feature = "NDEBUG"))]
{
debug!(target: TARGET, "Syntax Error!");
}
if YYERRORSYMBOL > 0 {
if self.yyerrcnt < 0 {
self.yy_syntax_error(yymajor, &yyminor);
}
let yymx = self[0].major;
if yymx == YYERRORSYMBOL || yyerrorhit {
#[cfg(not(feature = "NDEBUG"))]
{
debug!(
target: TARGET,
"Discard input token {}", yyTokenName[yymajor as usize]
);
}
yymajor = YYNOCODE;
} else {
while self.yyidx > 0 {
yyact = yy_find_reduce_action(self[0].stateno, YYERRORSYMBOL);
if yyact <= YY_MAX_SHIFTREDUCE {
break;
}
self.yy_pop_parser_stack();
}
if self.yyidx <= 0 || yymajor == 0 {
self.yy_parse_failed();
if cfg!(not(feature = "YYNOERRORRECOVERY")) {
self.yyerrcnt = -1;
}
yymajor = YYNOCODE;
} else if yymx != YYERRORSYMBOL {
self.yy_shift(yyact, YYERRORSYMBOL, yyminor);
}
}
self.yyerrcnt = 3;
yyerrorhit = true;
if yymajor == YYNOCODE {
break;
}
yyact = self[0].stateno;
} else if cfg!(feature = "YYNOERRORRECOVERY") {
self.yy_syntax_error(yymajor, &yyminor);
break;
} else {
if self.yyerrcnt <= 0 {
self.yy_syntax_error(yymajor, &yyminor);
}
self.yyerrcnt = 3;
if yyendofinput {
self.yy_parse_failed();
if cfg!(not(feature = "YYNOERRORRECOVERY")) {
self.yyerrcnt = -1;
}
}
break;
}
}
if self.yyidx <= 0 {
break;
}
}
#[cfg(not(feature = "NDEBUG"))]
{
if log_enabled!(target: TARGET, Debug) {
let msg = self.yystack[1..=self.yyidx]
.iter()
.map(|entry| yyTokenName[entry.major as usize])
.collect::<Vec<&str>>()
.join(" ");
debug!(target: TARGET, "Return. Stack=[{}]", msg);
}
}
return Ok(());
}
pub fn parse_fallback(i_token: YYCODETYPE) -> YYCODETYPE {
if YYFALLBACK {
return yyFallback[i_token as usize];
}
0
}
}