Skip to content

Commit

Permalink
进一步优化括号的输出逻辑 #3775
Browse files Browse the repository at this point in the history
进一步优化括号的输出逻辑 #3775
  • Loading branch information
lizongbo committed May 14, 2024
1 parent a5d0bef commit cddd2cb
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -851,7 +851,7 @@ public boolean visitInternal(SQLBinaryOpExpr x) {

for (; ; ) {
if (left instanceof SQLBinaryOpExpr && ((SQLBinaryOpExpr) left).getOperator() == operator
&& operator != SQLBinaryOperator.IsNot && operator != SQLBinaryOperator.Is) {
&& operator != SQLBinaryOperator.IsNot && operator != SQLBinaryOperator.Is && operator != SQLBinaryOperator.Modulus) {
SQLBinaryOpExpr binaryLeft = (SQLBinaryOpExpr) left;
groupList.add(binaryLeft.getRight());
left = binaryLeft.getLeft();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.alibaba.druid.bvt.sql.mysql.issues;

import java.util.List;

import com.alibaba.druid.DbType;
import com.alibaba.druid.sql.SQLParseAssertUtil;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.parser.SQLParserUtils;
import com.alibaba.druid.sql.parser.SQLStatementParser;

import org.junit.Test;

import static org.junit.Assert.assertEquals;

/**
* @author lizongbo
* @see <a href="https://github.com/alibaba/druid/issues/3775>Issue来源</a>
*/
public class Issue3775 {
@Test
public void test_parse_parentheses() {
for (DbType dbType : new DbType[]{DbType.mysql}) {
for (String sql : new String[]{
"SELECT ((700055789 % (66666*4444))%8888);",
}) {
SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, dbType);
List<SQLStatement> statementList = parser.parseStatementList();
System.out.println(statementList);
assertEquals(1, statementList.size());
assertEquals("SELECT ((700055789 % (66666 * 4444)) % 8888);", statementList.get(0).toString());
SQLParseAssertUtil.assertParseSql(sql, dbType);
}
}
}
}

0 comments on commit cddd2cb

Please sign in to comment.