diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 6db9430..c975af6 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -45,16 +45,6 @@ jobs: - uses: actions/checkout@master - run: cargo doc --document-private-items --no-deps --workspace --all-features - compile-no-std: - runs-on: ubuntu-latest - steps: - - name: Set up Rust - uses: hecrj/setup-rust-action@v1 - with: - targets: 'thumbv6m-none-eabi' - - uses: actions/checkout@master - - run: cargo check --no-default-features --target thumbv6m-none-eabi - test: strategy: matrix: diff --git a/src/base/column.rs b/src/base/column.rs index 97b0960..86a7727 100644 --- a/src/base/column.rs +++ b/src/base/column.rs @@ -1,5 +1,6 @@ use std::cmp::Ordering; use std::fmt::{self, Display}; +use std::ptr::null; use std::str; use std::str::FromStr; @@ -145,7 +146,7 @@ impl Display for FunctionArguments { } } -impl<'a> From> for FunctionArguments { +impl From> for FunctionArguments { fn from(args: Vec) -> FunctionArguments { FunctionArguments { arguments: args } } @@ -164,7 +165,7 @@ impl FunctionArgument { map(CaseWhenExpression::parse, |cw| { FunctionArgument::Conditional(cw) }), - map(Column::without_alias, |c| FunctionArgument::Column(c)), + map(Column::without_alias, FunctionArgument::Column), ))(i) } @@ -229,10 +230,7 @@ impl Column { map(table_parser, |tup| Column { name: tup.1.to_string(), alias: None, - table: match tup.0 { - None => None, - Some(t) => Some(t.to_string()), - }, + table: tup.0.map(|t| t.to_string()), function: None, }), ))(i) @@ -246,10 +244,7 @@ impl Column { None => format!("{}", tup.0), Some(a) => String::from(a), }, - alias: match tup.1 { - None => None, - Some(a) => Some(String::from(a)), - }, + alias: tup.1.map(String::from), table: None, function: Some(Box::new(tup.0)), } @@ -266,10 +261,7 @@ impl Column { None => None, Some(a) => Some(String::from(a)), }, - table: match tup.0 { - None => None, - Some(t) => Some(t.to_string()), - }, + table: tup.2.map(String::from), function: None, }, ); @@ -300,7 +292,7 @@ impl fmt::Display for Column { impl From for Column { fn from(value: String) -> Self { - match value.find(".") { + match value.find('.') { None => Column { name: value, alias: None, @@ -547,7 +539,7 @@ impl Display for ColumnPosition { ColumnPosition::After(column) => { let column_name = match &column.table { Some(table) => format!("{}.{}", table, &column.name), - None => format!("{}", &column.name), + None => (&column.name).to_string(), }; Ok(write!(f, "AFTER {column_name}")?) } @@ -594,7 +586,7 @@ impl ColumnSpecification { ColumnSpecification { column, sql_type, - constraints: constraints.into_iter().filter_map(|m| m).collect(), + constraints: constraints.into_iter().flatten().collect(), comment, position, }, diff --git a/src/das/set_statement.rs b/src/das/set_statement.rs index ab0d14e..3a0b7b4 100644 --- a/src/das/set_statement.rs +++ b/src/das/set_statement.rs @@ -2,8 +2,8 @@ use std::{fmt, str}; use nom::bytes::complete::tag_no_case; use nom::character::complete::{multispace0, multispace1}; -use nom::IResult; use nom::sequence::tuple; +use nom::IResult; use base::error::ParseSQLError; use base::Literal; diff --git a/src/parser.rs b/src/parser.rs index 94ff1a0..0fdbbe5 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -39,72 +39,40 @@ impl Parser { let input = input.trim(); let dds_parser = alt(( - map(AlterDatabaseStatement::parse, |parsed| { - Statement::AlterDatabase(parsed) - }), - map(AlterTableStatement::parse, |parsed| { - Statement::AlterTable(parsed) - }), - map(CreateIndexStatement::parse, |parsed| { - Statement::CreateIndex(parsed) - }), - map(CreateTableStatement::parse, |parsed| { - Statement::CreateTable(parsed) - }), - map(DropDatabaseStatement::parse, |parsed| { - Statement::DropDatabase(parsed) - }), - map(DropEventStatement::parse, |parsed| { - Statement::DropEvent(parsed) - }), - map(DropFunctionStatement::parse, |parsed| { - Statement::DropFunction(parsed) - }), - map(DropIndexStatement::parse, |parsed| { - Statement::DropIndex(parsed) - }), - map(DropLogfileGroupStatement::parse, |parsed| { - Statement::DropLogfileGroup(parsed) - }), - map(DropProcedureStatement::parse, |parsed| { - Statement::DropProcedure(parsed) - }), - map(DropServerStatement::parse, |parsed| { - Statement::DropServer(parsed) - }), - map(DropSpatialReferenceSystemStatement::parse, |parsed| { - Statement::DropSpatialReferenceSystem(parsed) - }), - map(DropTableStatement::parse, |parsed| { - Statement::DropTable(parsed) - }), - map(DropTablespaceStatement::parse, |parsed| { - Statement::DropTableSpace(parsed) - }), - map(DropTriggerStatement::parse, |parsed| { - Statement::DropTrigger(parsed) - }), - map(DropViewStatement::parse, |parsed| { - Statement::DropView(parsed) - }), - map(RenameTableStatement::parse, |parsed| { - Statement::RenameTable(parsed) - }), - map(TruncateTableStatement::parse, |parsed| { - Statement::TruncateTable(parsed) - }), + map(AlterDatabaseStatement::parse, Statement::AlterDatabase), + map(AlterTableStatement::parse, Statement::AlterTable), + map(CreateIndexStatement::parse, Statement::CreateIndex), + map(CreateTableStatement::parse, Statement::CreateTable), + map(DropDatabaseStatement::parse, Statement::DropDatabase), + map(DropEventStatement::parse, Statement::DropEvent), + map(DropFunctionStatement::parse, Statement::DropFunction), + map(DropIndexStatement::parse, Statement::DropIndex), + map( + DropLogfileGroupStatement::parse, + Statement::DropLogfileGroup, + ), + map(DropProcedureStatement::parse, Statement::DropProcedure), + map(DropServerStatement::parse, Statement::DropServer), + map( + DropSpatialReferenceSystemStatement::parse, + Statement::DropSpatialReferenceSystem, + ), + map(DropTableStatement::parse, Statement::DropTable), + map(DropTablespaceStatement::parse, Statement::DropTableSpace), + map(DropTriggerStatement::parse, Statement::DropTrigger), + map(DropViewStatement::parse, Statement::DropView), + map(RenameTableStatement::parse, Statement::RenameTable), + map(TruncateTableStatement::parse, Statement::TruncateTable), )); - let das_parser = alt((map(SetStatement::parse, |parsed| Statement::Set(parsed)),)); + let das_parser = alt((map(SetStatement::parse, Statement::Set),)); let dms_parser = alt(( - map(SelectStatement::parse, |parsed| Statement::Select(parsed)), - map(CompoundSelectStatement::parse, |parsed| { - Statement::CompoundSelect(parsed) - }), - map(InsertStatement::parse, |parsed| Statement::Insert(parsed)), - map(DeleteStatement::parse, |parsed| Statement::Delete(parsed)), - map(UpdateStatement::parse, |parsed| Statement::Update(parsed)), + map(SelectStatement::parse, Statement::Select), + map(CompoundSelectStatement::parse, Statement::CompoundSelect), + map(InsertStatement::parse, Statement::Insert), + map(DeleteStatement::parse, Statement::Delete), + map(UpdateStatement::parse, Statement::Update), )); let mut parser = alt((dds_parser, dms_parser, das_parser)); @@ -129,18 +97,11 @@ impl Parser { } } +#[derive(Default)] pub struct ParseConfig { pub log_with_backtrace: bool, } -impl Default for ParseConfig { - fn default() -> Self { - ParseConfig { - log_with_backtrace: false, - } - } -} - #[derive(Clone, Debug, Eq, Hash, PartialEq, Serialize, Deserialize)] pub enum Statement { // DDS