From 929ef2a4b8b29f0b3fbb66a8f41e779a0edfaef3 Mon Sep 17 00:00:00 2001 From: Tao Wu Date: Sat, 5 Feb 2022 20:26:09 +0800 Subject: [PATCH] fix: export all methods of parser (#397) --- src/parser.rs | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/src/parser.rs b/src/parser.rs index 14aa8d56..8db90147 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -1716,7 +1716,7 @@ impl<'a> Parser<'a> { }) } - fn parse_columns(&mut self) -> Result<(Vec, Vec), ParserError> { + pub fn parse_columns(&mut self) -> Result<(Vec, Vec), ParserError> { let mut columns = vec![]; let mut constraints = vec![]; if !self.consume_token(&Token::LParen) || self.consume_token(&Token::RParen) { @@ -1743,7 +1743,7 @@ impl<'a> Parser<'a> { Ok((columns, constraints)) } - fn parse_column_def(&mut self) -> Result { + pub fn parse_column_def(&mut self) -> Result { let name = self.parse_identifier()?; let data_type = self.parse_data_type()?; let collation = if self.parse_keyword(Keyword::COLLATE) { @@ -2099,11 +2099,11 @@ impl<'a> Parser<'a> { /// Parse a tab separated values in /// COPY payload - fn parse_tsv(&mut self) -> Vec> { + pub fn parse_tsv(&mut self) -> Vec> { self.parse_tab_value() } - fn parse_tab_value(&mut self) -> Vec> { + pub fn parse_tab_value(&mut self) -> Vec> { let mut values = vec![]; let mut content = String::from(""); while let Some(t) = self.next_token_no_skip() { @@ -2135,7 +2135,7 @@ impl<'a> Parser<'a> { } /// Parse a literal value (numbers, strings, date/time, booleans) - fn parse_value(&mut self) -> Result { + pub fn parse_value(&mut self) -> Result { match self.next_token() { Token::Word(w) => match w.keyword { Keyword::TRUE => Ok(Value::Boolean(true)), @@ -2540,7 +2540,7 @@ impl<'a> Parser<'a> { } /// Parse a CTE (`alias [( col1, col2, ... )] AS (subquery)`) - fn parse_cte(&mut self) -> Result { + pub fn parse_cte(&mut self) -> Result { let name = self.parse_identifier()?; let mut cte = if self.parse_keyword(Keyword::AS) { @@ -2583,7 +2583,7 @@ impl<'a> Parser<'a> { /// subquery ::= query_body [ order_by_limit ] /// set_operation ::= query_body { 'UNION' | 'EXCEPT' | 'INTERSECT' } [ 'ALL' ] query_body /// ``` - fn parse_query_body(&mut self, precedence: u8) -> Result { + pub fn parse_query_body(&mut self, precedence: u8) -> Result { // We parse the expression using a Pratt parser, as in `parse_expr()`. // Start by parsing a restricted SELECT or a `(subquery)`: let mut expr = if self.parse_keyword(Keyword::SELECT) { @@ -2628,7 +2628,7 @@ impl<'a> Parser<'a> { Ok(expr) } - fn parse_set_operator(&mut self, token: &Token) -> Option { + pub fn parse_set_operator(&mut self, token: &Token) -> Option { match token { Token::Word(w) if w.keyword == Keyword::UNION => Some(SetOperator::Union), Token::Word(w) if w.keyword == Keyword::EXCEPT => Some(SetOperator::Except), @@ -2827,7 +2827,7 @@ impl<'a> Parser<'a> { } } - fn parse_show_create(&mut self) -> Result { + pub fn parse_show_create(&mut self) -> Result { let obj_type = match self.expect_one_of_keywords(&[ Keyword::TABLE, Keyword::TRIGGER, @@ -2851,7 +2851,7 @@ impl<'a> Parser<'a> { Ok(Statement::ShowCreate { obj_type, obj_name }) } - fn parse_show_columns(&mut self) -> Result { + pub fn parse_show_columns(&mut self) -> Result { let extended = self.parse_keyword(Keyword::EXTENDED); let full = self.parse_keyword(Keyword::FULL); self.expect_one_of_keywords(&[Keyword::COLUMNS, Keyword::FIELDS])?; @@ -2869,7 +2869,9 @@ impl<'a> Parser<'a> { }) } - fn parse_show_statement_filter(&mut self) -> Result, ParserError> { + pub fn parse_show_statement_filter( + &mut self, + ) -> Result, ParserError> { if self.parse_keyword(Keyword::LIKE) { Ok(Some(ShowStatementFilter::Like( self.parse_literal_string()?, @@ -3101,7 +3103,7 @@ impl<'a> Parser<'a> { }) } - fn parse_join_constraint(&mut self, natural: bool) -> Result { + pub fn parse_join_constraint(&mut self, natural: bool) -> Result { if natural { Ok(JoinConstraint::Natural) } else if self.parse_keyword(Keyword::ON) { @@ -3139,7 +3141,7 @@ impl<'a> Parser<'a> { }) } - fn parse_grant_revoke_privileges_objects( + pub fn parse_grant_revoke_privileges_objects( &mut self, ) -> Result<(Privileges, GrantObjects), ParserError> { let privileges = if self.parse_keyword(Keyword::ALL) { @@ -3200,7 +3202,7 @@ impl<'a> Parser<'a> { Ok((privileges, objects)) } - fn parse_grant_permission(&mut self) -> Result<(Keyword, Option>), ParserError> { + pub fn parse_grant_permission(&mut self) -> Result<(Keyword, Option>), ParserError> { if let Some(kw) = self.parse_one_of_keywords(&[ Keyword::CONNECT, Keyword::CREATE, @@ -3364,7 +3366,7 @@ impl<'a> Parser<'a> { Ok(Assignment { id, value }) } - fn parse_function_args(&mut self) -> Result { + pub fn parse_function_args(&mut self) -> Result { if self.peek_nth_token(1) == Token::RArrow { let name = self.parse_identifier()?; @@ -3583,13 +3585,13 @@ impl<'a> Parser<'a> { } } - fn parse_deallocate(&mut self) -> Result { + pub fn parse_deallocate(&mut self) -> Result { let prepare = self.parse_keyword(Keyword::PREPARE); let name = self.parse_identifier()?; Ok(Statement::Deallocate { name, prepare }) } - fn parse_execute(&mut self) -> Result { + pub fn parse_execute(&mut self) -> Result { let name = self.parse_identifier()?; let mut parameters = vec![]; @@ -3601,7 +3603,7 @@ impl<'a> Parser<'a> { Ok(Statement::Execute { name, parameters }) } - fn parse_prepare(&mut self) -> Result { + pub fn parse_prepare(&mut self) -> Result { let name = self.parse_identifier()?; let mut data_types = vec![]; @@ -3619,7 +3621,7 @@ impl<'a> Parser<'a> { }) } - fn parse_comment(&mut self) -> Result { + pub fn parse_comment(&mut self) -> Result { self.expect_keyword(Keyword::ON)?; let token = self.next_token();