Skip to content

Commit 988aee5

Browse files
committed
sql_parser: explain statement parser implemented
1 parent f6febdd commit 988aee5

28 files changed

+628
-61
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ The items were taken from the official SQLite documentation
9696
1. [create-table-stmt](https://www.sqlite.org/lang_createtable.html) ✅
9797
1. [create-trigger-stmt](https://www.sqlite.org/lang_createtrigger.html) ✅
9898

99-
#### EXPLAIN Statements ![progress](https://progress-bar.xyz/0/?scale=1&suffix=%%%20(0%20of%201)&width=140)
100-
1. explain-stmt
99+
#### EXPLAIN Statements ![progress](https://progress-bar.xyz/1/?scale=1&suffix=%%%20(1%20of%201)&width=140)
100+
1. [explain-stmt](https://www.sqlite.org/lang_explain.html) ✅
101101

102102
#### Optional statements ![progress](https://progress-bar.xyz/0/?scale=5&suffix=%%%20(0%20of%205)&width=140)
103103
1. [math-functions](https://www.sqlite.org/lang_mathfunc.html)

src/parser/alter/mod.rs

+18
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,24 @@ impl<'a> AlterTableStatementParser for Parser<'a> {
106106
}
107107
}
108108

109+
#[cfg(test)]
110+
pub mod test_utils {
111+
use crate::{
112+
AlterTableStatement, AlterTableStatementType, ColumnDefinition, DataType, Identifier,
113+
};
114+
115+
pub fn alter_table_statement2() -> AlterTableStatement {
116+
AlterTableStatement {
117+
table_name: Identifier::Single("table_name".to_string()),
118+
statement_type: AlterTableStatementType::AddColumn(ColumnDefinition {
119+
column_name: Identifier::Single("column_name".to_string()),
120+
column_type: Some(DataType::PlainDataType("integer".to_string())),
121+
column_constraints: vec![],
122+
}),
123+
}
124+
}
125+
}
126+
109127
#[cfg(test)]
110128
mod alter_table_statement_tests {
111129
use crate::expression::test_utils::*;

src/parser/create/create_index.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ impl<'a> CreateIndexStatementParser for Parser<'a> {
4141
}
4242

4343
#[cfg(test)]
44-
mod test_utils {
44+
pub mod test_utils {
4545
use crate::{
4646
expression::test_utils::identifier_expression, CreateIndexStatement, Identifier,
4747
IndexedColumn,

src/parser/create/create_table.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ impl<'a> CreateTableStatementParser for Parser<'a> {
181181
}
182182

183183
#[cfg(test)]
184-
mod test_utils {
184+
pub mod test_utils {
185185
use crate::{
186186
parser::select::test_utils::select_from, CreateTableOption, CreateTableStatement,
187187
FromClause, Identifier, QualifiedTableName,

src/parser/create/create_trigger.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ impl<'a> CreateTriggerStatementParser for Parser<'a> {
159159
}
160160

161161
#[cfg(test)]
162-
mod test_utils {
162+
pub mod test_utils {
163163
use crate::{
164164
parser::select::test_utils::select_from, CreateTriggerStatement, FromClause, Identifier,
165165
QualifiedTableName, TriggerEvent, TriggerEventType, TriggerStatement,

src/parser/create/create_view.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ impl<'a> CreateViewStatementParser for Parser<'a> {
3939
}
4040

4141
#[cfg(test)]
42-
mod test_utils {
42+
pub mod test_utils {
4343
use crate::{
4444
parser::select::test_utils::select_from, CreateViewStatement, FromClause, Identifier,
4545
QualifiedTableName,

src/parser/create/create_virtual_table.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ impl<'a> CreateVirtualTableStatementParser for Parser<'a> {
5656
}
5757

5858
#[cfg(test)]
59-
mod test_utils {
59+
pub mod test_utils {
6060
use crate::{CreateVirtualTableStatement, Identifier};
6161

6262
pub fn create_virtual_table_statement() -> CreateVirtualTableStatement {

src/parser/create/mod.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
mod create_index;
2-
mod create_table;
3-
mod create_trigger;
4-
mod create_view;
5-
mod create_virtual_table;
1+
pub mod create_index;
2+
pub mod create_table;
3+
pub mod create_trigger;
4+
pub mod create_view;
5+
pub mod create_virtual_table;
66

77
use create_index::CreateIndexStatementParser;
88
use create_table::CreateTableStatementParser;

src/parser/drop/drop_index.rs

+12
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,18 @@ impl<'a> DropIndexStatementParser for Parser<'a> {
1919
}
2020
}
2121

22+
#[cfg(test)]
23+
pub mod test_utils {
24+
use crate::{ast::DropIndexStatement, Identifier};
25+
26+
pub fn drop_index_statement() -> DropIndexStatement {
27+
DropIndexStatement {
28+
if_exists: false,
29+
identifier: Identifier::Single("my_index".to_string()),
30+
}
31+
}
32+
}
33+
2234
#[cfg(test)]
2335
mod drop_index_tests {
2436
use crate::ast::DropIndexStatement;

src/parser/drop/drop_table.rs

+12
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,18 @@ impl<'a> DropTableStatementParser for Parser<'a> {
1919
}
2020
}
2121

22+
#[cfg(test)]
23+
pub mod test_utils {
24+
use crate::{ast::DropTableStatement, Identifier};
25+
26+
pub fn drop_table_statement() -> DropTableStatement {
27+
DropTableStatement {
28+
if_exists: false,
29+
identifier: Identifier::Single("my_table".to_string()),
30+
}
31+
}
32+
}
33+
2234
#[cfg(test)]
2335
mod drop_table_tests {
2436
use crate::ast::DropTableStatement;

src/parser/drop/drop_trigger.rs

+12
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,18 @@ impl<'a> DropTriggerStatementParser for Parser<'a> {
1919
}
2020
}
2121

22+
#[cfg(test)]
23+
pub mod test_utils {
24+
use crate::{ast::DropTriggerStatement, Identifier};
25+
26+
pub fn drop_trigger_statement() -> DropTriggerStatement {
27+
DropTriggerStatement {
28+
if_exists: false,
29+
identifier: Identifier::Single("my_trigger".to_string()),
30+
}
31+
}
32+
}
33+
2234
#[cfg(test)]
2335
mod drop_trigger_tests {
2436
use crate::ast::DropTriggerStatement;

src/parser/drop/drop_view.rs

+12
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,18 @@ impl<'a> DropViewStatementParser for Parser<'a> {
1919
}
2020
}
2121

22+
#[cfg(test)]
23+
pub mod test_utils {
24+
use crate::{ast::DropViewStatement, Identifier};
25+
26+
pub fn drop_view_statement() -> DropViewStatement {
27+
DropViewStatement {
28+
if_exists: false,
29+
identifier: Identifier::Single("my_view".to_string()),
30+
}
31+
}
32+
}
33+
2234
#[cfg(test)]
2335
mod drop_view_tests {
2436
use crate::ast::DropViewStatement;

src/parser/drop/mod.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
mod drop_generic;
2-
mod drop_index;
3-
mod drop_table;
4-
mod drop_trigger;
5-
mod drop_view;
1+
pub mod drop_generic;
2+
pub mod drop_index;
3+
pub mod drop_table;
4+
pub mod drop_trigger;
5+
pub mod drop_view;
66

77
use drop_generic::*;
88
use drop_index::*;

0 commit comments

Comments
 (0)