Skip to content

Commit

Permalink
继续优化逻辑和断言
Browse files Browse the repository at this point in the history
继续优化逻辑和断言
  • Loading branch information
lizongbo committed Apr 23, 2024
1 parent ad9f126 commit 4f3591d
Show file tree
Hide file tree
Showing 8 changed files with 67 additions and 55 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -756,11 +756,11 @@ public boolean visit(SQLBinaryOpExprGroup x) {
indentCount++;
}

boolean bracket;
boolean bracket = false;
if (itemOp.priority > operator.priority) {
bracket = true;
} else {
bracket = !parameterized;
//bracket = !parameterized && !((SQLBinaryOpExpr) item).isParenthesized();
}
if (bracket) {
print('(');
Expand Down Expand Up @@ -5601,11 +5601,11 @@ public boolean visit(SQLCheck x) {
print(' ');
}

print0(ucase ? "CHECK (" : "check (");
print0(ucase ? "CHECK " : "check ");
this.indentCount++;
x.getExpr().accept(this);
this.indentCount--;
print(')');
print("");

Boolean enforced = x.getEnforced();
if (enforced != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,12 @@ public void test_0() throws Exception {
// Assert.assertTrue(visitor.getColumns().contains(new Column("mytable", "full_name")));

Assert.assertEquals("MERGE INTO product T"
+ "\nUSING sales S ON (S.id = T.id) "
+ "\nUSING sales S ON S.id = T.id "
+ "\nWHEN MATCHED THEN UPDATE SET inventory = T.inventory - S.sold;", //
SQLUtils.toSQLString(stmt, JdbcConstants.DB2));

Assert.assertEquals("merge into product T"
+ "\nusing sales S on (S.id = T.id) "
+ "\nusing sales S on S.id = T.id "
+ "\nwhen matched then update set inventory = T.inventory - S.sold;", //
SQLUtils.toSQLString(stmt, JdbcConstants.DB2, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,31 +94,31 @@ public void test_create1() {
SQLCheck sqlCheck = (SQLCheck) element;
Assert.assertEquals(false, sqlCheck.getEnforced());
Assert.assertEquals("`c12_positive`", sqlCheck.getName().getSimpleName());
Assert.assertEquals("`c2` > 0", sqlCheck.getExpr().toString());
Assert.assertEquals("(`c2` > 0)", sqlCheck.getExpr().toString());
}
{
SQLTableElement element = statement.getTableElementList().get(4);
Assert.assertTrue(element instanceof SQLCheck);
SQLCheck sqlCheck = (SQLCheck) element;
Assert.assertNull(sqlCheck.getEnforced());
Assert.assertEquals("`c21_nonzero`", sqlCheck.getName().getSimpleName());
Assert.assertEquals("`c1` <> 0", sqlCheck.getExpr().toString());
Assert.assertEquals("(`c1` <> 0)", sqlCheck.getExpr().toString());
}
{
SQLTableElement element = statement.getTableElementList().get(5);
Assert.assertTrue(element instanceof SQLCheck);
SQLCheck sqlCheck = (SQLCheck) element;
Assert.assertNull(sqlCheck.getEnforced());
Assert.assertEquals("`t12_chk_1`", sqlCheck.getName().getSimpleName());
Assert.assertEquals("`c1` <> `c2`", sqlCheck.getExpr().toString());
Assert.assertEquals("(`c1` <> `c2`)", sqlCheck.getExpr().toString());
}
{
SQLTableElement element = statement.getTableElementList().get(6);
Assert.assertTrue(element instanceof SQLCheck);
SQLCheck sqlCheck = (SQLCheck) element;
Assert.assertNull(sqlCheck.getEnforced());
Assert.assertEquals("`t12_chk_2`", sqlCheck.getName().getSimpleName());
Assert.assertEquals("`c1` > 10", sqlCheck.getExpr().toString());
Assert.assertEquals("(`c1` > 10)", sqlCheck.getExpr().toString());
}
{
SQLTableElement element = statement.getTableElementList().get(7);
Expand All @@ -128,16 +128,16 @@ public void test_create1() {
Assert.assertEquals("`t12_chk_3`", sqlCheck.getName().getSimpleName());
Assert.assertTrue(sqlCheck.getExpr() instanceof SQLBinaryOpExpr);
Assert.assertEquals(SQLBinaryOperator.BooleanAnd, ((SQLBinaryOpExpr) sqlCheck.getExpr()).getOperator());
Assert.assertEquals("`c3` < 100", ((SQLBinaryOpExpr) sqlCheck.getExpr()).getLeft().toString());
Assert.assertEquals("`c3` > 0", ((SQLBinaryOpExpr) sqlCheck.getExpr()).getRight().toString());
Assert.assertEquals("(`c3` < 100)", ((SQLBinaryOpExpr) sqlCheck.getExpr()).getLeft().toString());
Assert.assertEquals("(`c3` > 0)", ((SQLBinaryOpExpr) sqlCheck.getExpr()).getRight().toString());
}
{
SQLTableElement element = statement.getTableElementList().get(8);
Assert.assertTrue(element instanceof SQLCheck);
SQLCheck sqlCheck = (SQLCheck) element;
Assert.assertNull(sqlCheck.getEnforced());
Assert.assertEquals("`t12_chk_4`", sqlCheck.getName().getSimpleName());
Assert.assertEquals("`c1` > `c3`", sqlCheck.getExpr().toString());
Assert.assertEquals("(`c1` > `c3`)", sqlCheck.getExpr().toString());
}
}

Expand Down Expand Up @@ -240,7 +240,7 @@ public void test_alter_add1() {
SQLCheck sqlCheck = (SQLCheck) constraint.getConstraint();
Assert.assertNull(sqlCheck.getEnforced());
Assert.assertEquals("chk1", sqlCheck.getName().getSimpleName());
Assert.assertEquals("a > 1", sqlCheck.getExpr().toString());
Assert.assertEquals("(a > 1)", sqlCheck.getExpr().toString());
}

public void test_alter_add2() {
Expand All @@ -265,7 +265,7 @@ public void test_alter_add2() {
SQLCheck sqlCheck = (SQLCheck) constraint.getConstraint();
Assert.assertEquals(false, sqlCheck.getEnforced());
Assert.assertEquals("chk1", sqlCheck.getName().getSimpleName());
Assert.assertEquals("a > 1", sqlCheck.getExpr().toString());
Assert.assertEquals("(a > 1)", sqlCheck.getExpr().toString());
}

public void test_alter_drop() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public void test_format_2() throws Exception {
String sql = "begin\n"//
+ " if (a=10) then\n" + " null;\n" + " else\n" + " null;\n" + " end if;\n" + "end;";
Assert.assertEquals("BEGIN"
+ "\n\tIF a = 10 THEN"
+ "\n\tIF (a = 10) THEN"
+ "\n\t\tNULL;"
+ "\n\tELSE"
+ "\n\t\tNULL;"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,8 +161,8 @@ public void test5() throws Exception {
"AS\n" +
"SELECT *\n" +
"FROM `base0`, `base1`\n" +
"WHERE `a` = `d`\n" +
"\tAND `c` <> `F`");
"WHERE ((`a` = `d`)\n" +
"\tAND (`c` <> `F`))");
}

public void test6() throws Exception {
Expand Down Expand Up @@ -222,8 +222,8 @@ public void test6() throws Exception {
"AS\n" +
"SELECT *\n" +
"FROM `base0`, `base1`\n" +
"WHERE `a` = `d`\n" +
"\tAND `c` <> `F`", unifySQL);
"WHERE ((`a` = `d`)\n" +
"\tAND (`c` <> `F`))", unifySQL);
}

public void ok(String sql, String expectedSql) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,32 +49,32 @@ public void test_0() throws Exception {
"AS\n" +
"SELECT a.enroll_id AS \"enrollId\"\n" +
"\t, CASE \n" +
"\t\tWHEN (\n" +
"\t\tWHEN ((\n" +
"\t\t\t\tSELECT audit\n" +
"\t\t\t\tFROM actvty_audit\n" +
"\t\t\t\tWHERE enroll_id = a.enroll_id\n" +
"\t\t\t\t\tAND rankjurisdiction = 1\n" +
"\t\t\t) > 0\n" +
"\t\t\t) > 0)\n" +
"\t\tTHEN '县站已审核'\n" +
"\t\tELSE NULL\n" +
"\tEND AS \"countyAudit\"\n" +
"\t, CASE \n" +
"\t\tWHEN (\n" +
"\t\tWHEN ((\n" +
"\t\t\t\tSELECT audit\n" +
"\t\t\t\tFROM actvty_audit\n" +
"\t\t\t\tWHERE enroll_id = a.enroll_id\n" +
"\t\t\t\t\tAND rankjurisdiction = 2\n" +
"\t\t\t) > 0\n" +
"\t\t\t) > 0)\n" +
"\t\tTHEN '市馆已审核'\n" +
"\t\tELSE NULL\n" +
"\tEND AS \"cityAudit\"\n" +
"\t, CASE \n" +
"\t\tWHEN (\n" +
"\t\tWHEN ((\n" +
"\t\t\t\tSELECT audit\n" +
"\t\t\t\tFROM actvty_audit\n" +
"\t\t\t\tWHERE enroll_id = a.enroll_id\n" +
"\t\t\t\t\tAND rankjurisdiction = 3\n" +
"\t\t\t) > 0\n" +
"\t\t\t) > 0)\n" +
"\t\tTHEN '省馆已审核'\n" +
"\t\tELSE NULL\n" +
"\tEND AS \"provinceAudit\"\n" +
Expand All @@ -89,32 +89,32 @@ public void test_0() throws Exception {
"as\n" +
"select a.enroll_id as \"enrollId\"\n" +
"\t, case \n" +
"\t\twhen (\n" +
"\t\twhen ((\n" +
"\t\t\t\tselect audit\n" +
"\t\t\t\tfrom actvty_audit\n" +
"\t\t\t\twhere enroll_id = a.enroll_id\n" +
"\t\t\t\t\tand rankjurisdiction = 1\n" +
"\t\t\t) > 0\n" +
"\t\t\t) > 0)\n" +
"\t\tthen '县站已审核'\n" +
"\t\telse null\n" +
"\tend as \"countyAudit\"\n" +
"\t, case \n" +
"\t\twhen (\n" +
"\t\twhen ((\n" +
"\t\t\t\tselect audit\n" +
"\t\t\t\tfrom actvty_audit\n" +
"\t\t\t\twhere enroll_id = a.enroll_id\n" +
"\t\t\t\t\tand rankjurisdiction = 2\n" +
"\t\t\t) > 0\n" +
"\t\t\t) > 0)\n" +
"\t\tthen '市馆已审核'\n" +
"\t\telse null\n" +
"\tend as \"cityAudit\"\n" +
"\t, case \n" +
"\t\twhen (\n" +
"\t\twhen ((\n" +
"\t\t\t\tselect audit\n" +
"\t\t\t\tfrom actvty_audit\n" +
"\t\t\t\twhere enroll_id = a.enroll_id\n" +
"\t\t\t\t\tand rankjurisdiction = 3\n" +
"\t\t\t) > 0\n" +
"\t\t\t) > 0)\n" +
"\t\tthen '省馆已审核'\n" +
"\t\telse null\n" +
"\tend as \"provinceAudit\"\n" +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,19 @@ public class MySqlParameterizedOutputVisitorTest_22 extends TestCase {
public void test_for_parameterize() throws Exception {
final DbType dbType = JdbcConstants.MYSQL;

String sql = "/* 0bba613214845441110397435e/0.4.6.25// */select `f`.`id`,`f`.`biz_id`,`f`.`user_id`,`f`.`file_name`,`f`.`parent_id`,`f`.`length`,`f`.`type`,`f`.`stream_key`,`f`.`biz_status`,`f`.`mark`,`f`.`content_modified`,`f`.`status`,`f`.`gmt_create`,`f`.`gmt_modified`,`f`.`md5`,`f`.`extra_str1`,`f`.`extra_str2`,`f`.`extra_str3`,`f`.`extra_num1`,`f`.`extra_num2`,`f`.`extra_num3`,`f`.`safe`,`f`.`open_status`,`f`.`inner_mark`,`f`.`sys_extra`,`f`.`feature`,`f`.`domain_option`,`f`.`version`,`f`.`reference_type`,`f`.`dentry_type`,`f`.`space_id`,`f`.`extension`,`f`.`creator_id`,`f`.`modifier_id`,`f`.`store_type`,`f`.`link_mark`,`f`.`content_type` from ( select `vfs_dentry_2664`.`id` from `vfs_dentry_2664` FORCE INDEX (idx_gmt) where ((`vfs_dentry_2664`.`extra_str1` = '97d45a25df387b4460e5b4151daeb452') AND (`vfs_dentry_2664`.`biz_id` = 62) AND (`vfs_dentry_2664`.`status` = 0) AND (`vfs_dentry_2664`.`user_id` = '11168360') AND (`vfs_dentry_2664`.`dentry_type` = 1)) limit 0,50 ) `t` join `vfs_dentry_2664` `f` on `t`.`id` = `f`.`id` where ((`t`.`id` = `f`.`id`) AND (`f`.`user_id` = 11168360))";
String sql = "/* 0bba613214845441110397435e/0.4.6.25// */select `f`.`id`,`f`.`biz_id`,`f`.`user_id`,`f`.`file_name`,`f`.`parent_id`,`f`.`length`,`f`.`type`,`f`.`stream_key`,`f`.`biz_status`,`f`.`mark`,`f`.`content_modified`,`f`.`status`,`f`.`gmt_create`,`f`.`gmt_modified`,`f`.`md5`,`f`.`extra_str1`,`f`.`extra_str2`,`f`.`extra_str3`,`f`.`extra_num1`,`f`.`extra_num2`,`f`.`extra_num3`,`f`.`safe`,`f`.`open_status`,`f`.`inner_mark`,`f`.`sys_extra`,`f`.`feature`,`f`.`domain_option`,`f`.`version`,`f`.`reference_type`,`f`.`dentry_type`,`f`.`space_id`,`f`.`extension`,`f`.`creator_id`,`f`.`modifier_id`,`f`.`store_type`,`f`.`link_mark`,`f`.`content_type` from ( select `vfs_dentry_2664`.`id` "
+ "from `vfs_dentry_2664` FORCE INDEX (idx_gmt) "
+ "where ((`vfs_dentry_2664`.`extra_str1` = '97d45a25df387b4460e5b4151daeb452') "
+ "AND (`vfs_dentry_2664`.`biz_id` = 62) "
+ "AND (`vfs_dentry_2664`.`status` = 0) "
+ "AND (`vfs_dentry_2664`.`user_id` = '11168360') "
+ "AND (`vfs_dentry_2664`.`dentry_type` = 1)) limit 0,50 )"
+ " `t` join `vfs_dentry_2664` `f` on `t`.`id` = `f`.`id` "
+ "where ((`t`.`id` = `f`.`id`) "
+ "AND (`f`.`user_id` = 11168360))";

SQLStatementParser parseraaa = SQLParserUtils.createSQLStatementParser(sql, dbType);
List<SQLStatement> stmtListaaa = parseraaa.parseStatementList();

String psql = ParameterizedOutputVisitorUtils.parameterize(sql, dbType);
assertEquals("SELECT `f`.`id`, `f`.`biz_id`, `f`.`user_id`, `f`.`file_name`, `f`.`parent_id`\n" +
Expand All @@ -34,16 +46,16 @@ public void test_for_parameterize() throws Exception {
"FROM (\n" +
"\tSELECT vfs_dentry.`id`\n" +
"\tFROM vfs_dentry FORCE INDEX (idx_gmt)\n" +
"\tWHERE vfs_dentry.`extra_str1` = ?\n" +
"\t\tAND vfs_dentry.`biz_id` = ?\n" +
"\t\tAND vfs_dentry.`status` = ?\n" +
"\t\tAND vfs_dentry.`user_id` = ?\n" +
"\t\tAND vfs_dentry.`dentry_type` = ?\n" +
"\tWHERE (vfs_dentry.`extra_str1` = ?)\n" +
"\t\tAND (vfs_dentry.`biz_id` = ?)\n" +
"\t\tAND (vfs_dentry.`status` = ?)\n" +
"\t\tAND (vfs_dentry.`user_id` = ?)\n" +
"\t\tAND (vfs_dentry.`dentry_type` = ?)\n" +
"\tLIMIT ?, ?\n" +
") `t`\n" +
"\tJOIN vfs_dentry `f` ON `t`.`id` = `f`.`id`\n" +
"WHERE `t`.`id` = `f`.`id`\n" +
"\tAND `f`.`user_id` = ?", psql);
"WHERE ((`t`.`id` = `f`.`id`)\n" +
"\tAND (`f`.`user_id` = ?))", psql);

SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(psql, dbType);
List<SQLStatement> stmtList = parser.parseStatementList();
Expand Down Expand Up @@ -80,15 +92,15 @@ public void test_for_parameterize() throws Exception {
"FROM (\n" +
"\tSELECT vfs_dentry_001.`id`\n" +
"\tFROM vfs_dentry_001 FORCE INDEX (idx_gmt)\n" +
"\tWHERE vfs_dentry_001.`extra_str1` = ?\n" +
"\t\tAND vfs_dentry_001.`biz_id` = ?\n" +
"\t\tAND vfs_dentry_001.`status` = ?\n" +
"\t\tAND vfs_dentry_001.`user_id` = ?\n" +
"\t\tAND vfs_dentry_001.`dentry_type` = ?\n" +
"\tWHERE (vfs_dentry_001.`extra_str1` = ?)\n" +
"\t\tAND (vfs_dentry_001.`biz_id` = ?)\n" +
"\t\tAND (vfs_dentry_001.`status` = ?)\n" +
"\t\tAND (vfs_dentry_001.`user_id` = ?)\n" +
"\t\tAND (vfs_dentry_001.`dentry_type` = ?)\n" +
"\tLIMIT ?, ?\n" +
") `t`\n" +
"\tJOIN vfs_dentry_001 `f` ON `t`.`id` = `f`.`id`\n" +
"WHERE `t`.`id` = `f`.`id`\n" +
"\tAND `f`.`user_id` = ?", buf.toString());
"WHERE ((`t`.`id` = `f`.`id`)\n" +
"\tAND (`f`.`user_id` = ?))", buf.toString());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@ public void test_for_parameterize() throws Exception {
"\t, `a1`.`airline`, `a1`.`params_stat_id`, `a1`.`total_num`, `a1`.`finish_num`, `a1`.`type_idx_key`\n" +
"\t, `a1`.`seqno`, `a1`.`task_flag`, `a1`.`tariff`\n" +
"FROM xx_abcde_ta `a1`\n" +
"WHERE `a1`.`push_date` = ?\n" +
"\tAND `a1`.`schedule_no` <= ?\n" +
"WHERE (`a1`.`push_date` = ?)\n" +
"\tAND (`a1`.`schedule_no` <= ?)\n" +
"\tAND `a1`.`type` IN (?)\n" +
"\tAND `a1`.`retry_count` < ?\n" +
"\tAND (`a1`.`retry_count` < ?)\n" +
"\tAND `a1`.`status` IN (?)\n" +
"\tAND `a1`.`gmt_modified` <= DATE_ADD(NOW(), INTERVAL -? MINUTE)\n" +
"\tAND (`a1`.`gmt_modified` <= DATE_ADD(NOW(), INTERVAL -? MINUTE))\n" +
"LIMIT ?, ?", psql);

SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, dbType);
Expand Down Expand Up @@ -80,12 +80,12 @@ public void test_for_parameterize() throws Exception {
"\t, `a1`.`airline`, `a1`.`params_stat_id`, `a1`.`total_num`, `a1`.`finish_num`, `a1`.`type_idx_key`\n" +
"\t, `a1`.`seqno`, `a1`.`task_flag`, `a1`.`tariff`\n" +
"FROM xx_abcde_ta_0018 `a1`\n" +
"WHERE `a1`.`push_date` = '2017-01-19 00:00:00'\n" +
"\tAND `a1`.`schedule_no` <= '201701181201'\n" +
"WHERE (`a1`.`push_date` = '2017-01-19 00:00:00')\n" +
"\tAND (`a1`.`schedule_no` <= '201701181201')\n" +
"\tAND `a1`.`type` IN (1, 4, 2, 3, 7, 8, 11, 12, 13, 14, 15, 16)\n" +
"\tAND `a1`.`retry_count` < 3\n" +
"\tAND (`a1`.`retry_count` < 3)\n" +
"\tAND `a1`.`status` IN (3, 6)\n" +
"\tAND `a1`.`gmt_modified` <= DATE_ADD(NOW(), INTERVAL -5 MINUTE)\n" +
"\tAND (`a1`.`gmt_modified` <= DATE_ADD(NOW(), INTERVAL -5 MINUTE))\n" +
"LIMIT 0, 2000", buf.toString());
}
}

0 comments on commit 4f3591d

Please sign in to comment.