iffyio commented on code in PR #1476:
URL: 
https://github.com/apache/datafusion-sqlparser-rs/pull/1476#discussion_r1835448776


##########
src/parser/mod.rs:
##########
@@ -7156,6 +7156,35 @@ impl<'a> Parser<'a> {
                 partition,
                 with_name,
             }
+        } else if self.dialect.supports_alter_table_update() && 
self.parse_keyword(Keyword::UPDATE)
+        {
+            let mut assignments = vec![];

Review Comment:
   One minor request, could we move this new block to its own function to keep 
the branch of the current function smaller/more-focused?



##########
src/parser/mod.rs:
##########
@@ -7156,6 +7156,35 @@ impl<'a> Parser<'a> {
                 partition,
                 with_name,
             }
+        } else if self.dialect.supports_alter_table_update() && 
self.parse_keyword(Keyword::UPDATE)
+        {
+            let mut assignments = vec![];
+            loop {
+                let target = self.parse_assignment_target()?;
+                self.expect_token(&Token::Eq)?;
+                // NOTE: Maybe it's better to save the index before 
parse_subexpr to do a real look

Review Comment:
   Ah so regarding the earlier comment, I think what we could do would be to 
make `self.parse_assignment` reusable:
   
   ```rust
   pub fn parse_assignment(&mut self) -> Result<Assignment, ParserError> {
        self.parse_assignment_with_prec(self.dialect.prec_unknown())
   }
   
   fn parse_assignment_with_precedence(self, precedence: u8) -> 
Result<Assignment, ParserError> {
        let target = self.parse_assignment_target()?;
       self.expect_token(&Token::Eq)?;
        let value = self.parse_subexpr(precedence)?;
       Ok(Assignment { target, value })
   
   }
   ```
   That would make it possible to use `parse_comma_separated` as well, since 
the issue seems to be with the `IN PARTITION` precedence when parsing the 
assigned expr



##########
src/parser/mod.rs:
##########
@@ -1081,7 +1081,7 @@ impl<'a> Parser<'a> {
                     self.parse_bigquery_struct_literal()
                 }
                 Keyword::PRIOR if matches!(self.state, ParserState::ConnectBy) 
=> {
-                    let expr = 
self.parse_subexpr(self.dialect.prec_value(Precedence::PlusMinus))?;
+                    let expr = 
self.parse_subexpr(self.dialect.prec_value(Precedence::Pipe))?;

Review Comment:
   Oh was there a reason for this change?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org
For additional commands, e-mail: github-h...@datafusion.apache.org

Reply via email to