Skip to content
This repository was archived by the owner on Oct 18, 2023. It is now read-only.

Commit d511206

Browse files
committed
add savepoint and release stmt categories
1 parent 244ce0e commit d511206

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

sqld/src/query_analysis.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ pub enum StmtKind {
2828
TxnEnd,
2929
Read,
3030
Write,
31+
Savepoint,
32+
Release,
3133
Other,
3234
}
3335

@@ -50,7 +52,7 @@ impl StmtKind {
5052
Cmd::Explain(_) => Some(Self::Other),
5153
Cmd::ExplainQueryPlan(_) => Some(Self::Other),
5254
Cmd::Stmt(Stmt::Begin { .. }) => Some(Self::TxnBegin),
53-
Cmd::Stmt(Stmt::Commit { .. } | Stmt::Rollback { .. }) => Some(Self::TxnEnd),
55+
Cmd::Stmt(Stmt::Commit { .. } | Stmt::Rollback { savepoint_name: None, .. }) => Some(Self::TxnEnd),
5456
Cmd::Stmt(
5557
Stmt::CreateVirtualTable { tbl_name, .. }
5658
| Stmt::CreateTable {
@@ -84,14 +86,15 @@ impl StmtKind {
8486
Cmd::Stmt(Stmt::AlterTable(tbl_name, _)) => write_if_not_reserved(tbl_name),
8587
Cmd::Stmt(
8688
Stmt::DropIndex { .. }
87-
| Stmt::Savepoint(_)
8889
| Stmt::CreateTrigger {
8990
temporary: false, ..
9091
}
9192
| Stmt::CreateIndex { .. },
9293
) => Some(Self::Write),
9394
Cmd::Stmt(Stmt::Select { .. }) => Some(Self::Read),
9495
Cmd::Stmt(Stmt::Pragma(name, body)) => Self::pragma_kind(name, body.as_ref()),
96+
Cmd::Stmt(Stmt::Savepoint(_)) => Some(Self::Savepoint),
97+
Cmd::Stmt(Stmt::Release(_)) | Cmd::Stmt(Stmt::Rollback { savepoint_name: Some(_) , ..}) => Some(Self::Release),
9598
_ => None,
9699
}
97100
}
@@ -181,7 +184,7 @@ impl State {
181184
(State::Txn, StmtKind::TxnEnd) => State::Init,
182185
(state, StmtKind::Other | StmtKind::Write | StmtKind::Read) => state,
183186
(State::Invalid, _) => State::Invalid,
184-
(State::Init, StmtKind::TxnBegin) => State::Txn,
187+
(State::Init, StmtKind::TxnBegin | ) => State::Txn,
185188
};
186189
}
187190

0 commit comments

Comments
 (0)