Skip to content

Commit 56a39a4

Browse files
committed
introducing test for issue #1328
1 parent 1264a20 commit 56a39a4

File tree

1 file changed

+105
-100
lines changed

1 file changed

+105
-100
lines changed

src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java

Lines changed: 105 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -993,10 +993,16 @@ public void testDistinctTop2() {
993993
//expected to fail
994994
}
995995
}
996-
996+
997997
@Test
998998
public void testDistinctWithFollowingBrackets() throws JSQLParserException {
999-
assertSqlCanBeParsedAndDeparsed("SELECT DISTINCT (phone), name FROM admin_user");
999+
Select select = (Select) assertSqlCanBeParsedAndDeparsed("SELECT DISTINCT (phone), name FROM admin_user");
1000+
PlainSelect selectBody = (PlainSelect) select.getSelectBody();
1001+
assertThat(selectBody.getDistinct())
1002+
.isNotNull()
1003+
.hasFieldOrPropertyWithValue("getOnSelectItems", null);
1004+
assertThat(selectBody.getSelectItems().get(0).toString())
1005+
.isEqualTo("(phone)");
10001006
}
10011007

10021008
@Test
@@ -4573,7 +4579,7 @@ public void testWithValueListWithExtraBrackets1135() throws JSQLParserException
45734579

45744580
@Test
45754581
public void testWithValueListWithOutExtraBrackets1135() throws JSQLParserException {
4576-
assertSqlCanBeParsedAndDeparsed("with sample_data(\"DAY\") as (values 0, 1, 2)\n"
4582+
assertSqlCanBeParsedAndDeparsed("with sample_data(\"DAY\") as (values 0, 1, 2)\n"
45774583
+ " select \"DAY\" from sample_data", true);
45784584
assertSqlCanBeParsedAndDeparsed("with sample_data(day, value) as (values (0, 13), (1, 12), (2, 15), (3, 4), (4, 8), (5, 16)) select day, value from sample_data", true);
45794585
}
@@ -4598,18 +4604,17 @@ public void testGroupedByIssue1176() throws JSQLParserException {
45984604
assertSqlCanBeParsedAndDeparsed("select count(*)\n" + "from cfe.instrument\n" + "group by ()",
45994605
true);
46004606
}
4601-
4607+
46024608
@Test
46034609
public void testGroupedByWithExtraBracketsIssue1210() throws JSQLParserException {
46044610
assertSqlCanBeParsedAndDeparsed(
46054611
"select a,b,c from table group by rollup(a,b,c)",
46064612
true);
46074613
assertSqlCanBeParsedAndDeparsed("select a,b,c from table group by rollup((a,b,c))",
46084614
true);
4609-
4610-
4615+
46114616
}
4612-
4617+
46134618
@Test
46144619
public void testGroupedByWithExtraBracketsIssue1168() throws JSQLParserException {
46154620
assertSqlCanBeParsedAndDeparsed(
@@ -4621,12 +4626,12 @@ public void testGroupedByWithExtraBracketsIssue1168() throws JSQLParserException
46214626
public void testSelectRowElement() throws JSQLParserException {
46224627
assertSqlCanBeParsedAndDeparsed("SELECT (t.tup).id, (tup).name FROM t WHERE (t.tup).id IN (1, 2, 3)");
46234628
}
4624-
4629+
46254630
@Test
46264631
public void testSelectCastProblemIssue1248() throws JSQLParserException {
46274632
assertSqlCanBeParsedAndDeparsed("SELECT CAST(t1.sign2 AS Nullable (char))");
46284633
}
4629-
4634+
46304635
// @Test
46314636
// public void testSelectCastProblemIssue1248_2() throws JSQLParserException {
46324637
// assertSqlCanBeParsedAndDeparsed("SELECT CAST(t1.sign2 AS Nullable(decimal(30, 10)))");
@@ -4640,7 +4645,7 @@ public void testAnyComparisionExpressionValuesList1232() throws JSQLParserExcept
46404645
assertSqlCanBeParsedAndDeparsed(
46414646
"select * from foo where id != ALL(VALUES 1,2,3)",
46424647
true);
4643-
4648+
46444649
assertSqlCanBeParsedAndDeparsed(
46454650
"select * from foo where id != ALL(?::uid[])",
46464651
true);
@@ -4649,12 +4654,12 @@ public void testAnyComparisionExpressionValuesList1232() throws JSQLParserExcept
46494654
public void testSelectAllOperatorIssue1140() throws JSQLParserException {
46504655
assertSqlCanBeParsedAndDeparsed("SELECT * FROM table t0 WHERE t0.id != all(5)");
46514656
}
4652-
4657+
46534658
@Test
46544659
public void testSelectAllOperatorIssue1140_2() throws JSQLParserException {
46554660
assertSqlCanBeParsedAndDeparsed("SELECT * FROM table t0 WHERE t0.id != all(?::uuid[])");
46564661
}
4657-
4662+
46584663
@Test
46594664
public void testDB2SpecialRegisterDateTimeIssue1249() throws JSQLParserException {
46604665
assertSqlCanBeParsedAndDeparsed("SELECT * FROM test.abc WHERE col > CURRENT_TIME", true);
@@ -4664,151 +4669,151 @@ public void testDB2SpecialRegisterDateTimeIssue1249() throws JSQLParserException
46644669
assertSqlCanBeParsedAndDeparsed("SELECT * FROM test.abc WHERE col > CURRENT_DATE", true);
46654670
assertSqlCanBeParsedAndDeparsed("SELECT * FROM test.abc WHERE col > CURRENT DATE", true);
46664671
}
4667-
4672+
46684673
@Test
46694674
public void testKeywordFilterIssue1255() throws JSQLParserException {
46704675
assertSqlCanBeParsedAndDeparsed("SELECT col1 AS filter FROM table");
46714676
}
4672-
4677+
46734678
@Test
46744679
public void testConnectByRootIssue1255() throws JSQLParserException {
46754680
assertSqlCanBeParsedAndDeparsed(
4676-
"SELECT last_name \"Employee\", CONNECT_BY_ROOT last_name \"Manager\",\n" +
4677-
" LEVEL-1 \"Pathlen\", SYS_CONNECT_BY_PATH(last_name, '/') \"Path\"\n" +
4678-
" FROM employees\n" +
4679-
" WHERE LEVEL > 1 and department_id = 110\n" +
4680-
" CONNECT BY PRIOR employee_id = manager_id", true);
4681+
"SELECT last_name \"Employee\", CONNECT_BY_ROOT last_name \"Manager\",\n"
4682+
+ " LEVEL-1 \"Pathlen\", SYS_CONNECT_BY_PATH(last_name, '/') \"Path\"\n"
4683+
+ " FROM employees\n"
4684+
+ " WHERE LEVEL > 1 and department_id = 110\n"
4685+
+ " CONNECT BY PRIOR employee_id = manager_id", true);
46814686

46824687
assertSqlCanBeParsedAndDeparsed(
4683-
"SELECT name, SUM(salary) \"Total_Salary\" FROM (\n" +
4684-
" SELECT CONNECT_BY_ROOT last_name as name, Salary\n" +
4685-
" FROM employees\n" +
4686-
" WHERE department_id = 110\n" +
4687-
" CONNECT BY PRIOR employee_id = manager_id)\n" +
4688-
" GROUP BY name", true);
4689-
4688+
"SELECT name, SUM(salary) \"Total_Salary\" FROM (\n"
4689+
+ " SELECT CONNECT_BY_ROOT last_name as name, Salary\n"
4690+
+ " FROM employees\n"
4691+
+ " WHERE department_id = 110\n"
4692+
+ " CONNECT BY PRIOR employee_id = manager_id)\n"
4693+
+ " GROUP BY name", true);
4694+
46904695
assertSqlCanBeParsedAndDeparsed(
4691-
"SELECT CONNECT_BY_ROOT last_name as name"
4692-
+ ", salary "
4693-
+ "FROM employees "
4694-
+ "WHERE department_id = 110 "
4695-
+ "CONNECT BY PRIOR employee_id = manager_id", true);
4696+
"SELECT CONNECT_BY_ROOT last_name as name"
4697+
+ ", salary "
4698+
+ "FROM employees "
4699+
+ "WHERE department_id = 110 "
4700+
+ "CONNECT BY PRIOR employee_id = manager_id", true);
46964701
}
4697-
4702+
46984703
public void testUnionLimitOrderByIssue1268() throws JSQLParserException {
46994704
String sqlStr = "(SELECT __time FROM traffic_protocol_stat_log LIMIT 1) UNION ALL (SELECT __time FROM traffic_protocol_stat_log ORDER BY __time LIMIT 1)";
47004705
assertSqlCanBeParsedAndDeparsed(sqlStr, true);
47014706
}
4702-
4707+
47034708
@Test
47044709
public void testCastToRowConstructorIssue1267() throws JSQLParserException {
47054710
String sqlStr = "SELECT CAST(ROW(dataid, value, calcMark) AS ROW(datapointid CHAR, value CHAR, calcMark CHAR)) AS datapoints";
47064711
assertSqlCanBeParsedAndDeparsed(sqlStr, true);
47074712
}
4708-
4713+
47094714
@Test
47104715
public void testCollisionWithSpecialStringFunctionsIssue1284() throws JSQLParserException {
47114716
assertSqlCanBeParsedAndDeparsed(
4712-
"SELECT test( a in (1) AND 2=2) ", true);
4713-
4717+
"SELECT test( a in (1) AND 2=2) ", true);
4718+
47144719
assertSqlCanBeParsedAndDeparsed(
4715-
"select\n" +
4716-
"sum(if(column1 in('value1', 'value2'), 1, 0)) as tcp_logs,\n" +
4717-
"sum(if(column1 in ('value1', 'value2') and column2 = 'value3', 1, 0)) as base_tcp_logs\n" +
4718-
"from\n" +
4719-
"table1\n" +
4720-
"where\n" +
4721-
"recv_time >= toDateTime('2021-07-20 00:00:00')\n" +
4722-
"and recv_time < toDateTime('2021-07-21 00:00:00')", true);
4720+
"select\n"
4721+
+ "sum(if(column1 in('value1', 'value2'), 1, 0)) as tcp_logs,\n"
4722+
+ "sum(if(column1 in ('value1', 'value2') and column2 = 'value3', 1, 0)) as base_tcp_logs\n"
4723+
+ "from\n"
4724+
+ "table1\n"
4725+
+ "where\n"
4726+
+ "recv_time >= toDateTime('2021-07-20 00:00:00')\n"
4727+
+ "and recv_time < toDateTime('2021-07-21 00:00:00')", true);
47234728
}
47244729

47254730
@Test
47264731
public void testJoinWithTrailingOnExpressionIssue1302() throws JSQLParserException {
47274732
assertSqlCanBeParsedAndDeparsed(
4728-
"SELECT * FROM TABLE1 tb1\n" +
4729-
"INNER JOIN TABLE2 tb2\n" +
4730-
"INNER JOIN TABLE3 tb3\n" +
4731-
"INNER JOIN TABLE4 tb4\n" +
4732-
"ON (tb3.aaa = tb4.aaa)\n" +
4733-
"ON (tb2.aaa = tb3.aaa)\n" +
4734-
"ON (tb1.aaa = tb2.aaa)", true);
4733+
"SELECT * FROM TABLE1 tb1\n"
4734+
+ "INNER JOIN TABLE2 tb2\n"
4735+
+ "INNER JOIN TABLE3 tb3\n"
4736+
+ "INNER JOIN TABLE4 tb4\n"
4737+
+ "ON (tb3.aaa = tb4.aaa)\n"
4738+
+ "ON (tb2.aaa = tb3.aaa)\n"
4739+
+ "ON (tb1.aaa = tb2.aaa)", true);
47354740

47364741
assertSqlCanBeParsedAndDeparsed(
4737-
"SELECT *\n" +
4738-
"FROM\n" +
4739-
"TABLE1 tbl1\n" +
4740-
" INNER JOIN TABLE2 tbl2\n" +
4741-
" INNER JOIN TABLE3 tbl3\n" +
4742-
" ON (tbl2.column1 = tbl3.column1)\n" +
4743-
" ON (tbl1.column2 = tbl2.column2)\n" +
4744-
"WHERE\n" +
4745-
"tbl1.column1 = 123", true);
4742+
"SELECT *\n"
4743+
+ "FROM\n"
4744+
+ "TABLE1 tbl1\n"
4745+
+ " INNER JOIN TABLE2 tbl2\n"
4746+
+ " INNER JOIN TABLE3 tbl3\n"
4747+
+ " ON (tbl2.column1 = tbl3.column1)\n"
4748+
+ " ON (tbl1.column2 = tbl2.column2)\n"
4749+
+ "WHERE\n"
4750+
+ "tbl1.column1 = 123", true);
47464751
}
47474752

47484753
@Test
47494754
public void testSimpleJoinOnExpressionIssue1229() throws JSQLParserException {
47504755
assertSqlCanBeParsedAndDeparsed(
47514756
"select t1.column1,t1.column2,t2.field1,t2.field2 from T_DT_ytb_01 t1 , T_DT_ytb_02 t2 on t1.column1 = t2.field1", true);
4752-
}
4757+
}
47534758

47544759
@Test
47554760
public void testNestedCaseComplexExpressionIssue1306() throws JSQLParserException {
47564761
// with extra brackets
47574762
assertSqlCanBeParsedAndDeparsed(
4758-
"SELECT CASE\n" +
4759-
"WHEN 'USD' = 'USD'\n" +
4760-
"THEN 0\n" +
4761-
"ELSE CASE\n" +
4762-
"WHEN 'USD' = 'EURO'\n" +
4763-
"THEN ( CASE\n" +
4764-
"WHEN 'A' = 'B'\n" +
4765-
"THEN 0\n" +
4766-
"ELSE 1\n" +
4767-
"END * 100 )\n" +
4768-
"ELSE 2\n" +
4769-
"END\n" +
4770-
"END AS \"column1\"\n" +
4771-
"FROM test_schema.table_name\n" +
4772-
"", true);
4763+
"SELECT CASE\n"
4764+
+ "WHEN 'USD' = 'USD'\n"
4765+
+ "THEN 0\n"
4766+
+ "ELSE CASE\n"
4767+
+ "WHEN 'USD' = 'EURO'\n"
4768+
+ "THEN ( CASE\n"
4769+
+ "WHEN 'A' = 'B'\n"
4770+
+ "THEN 0\n"
4771+
+ "ELSE 1\n"
4772+
+ "END * 100 )\n"
4773+
+ "ELSE 2\n"
4774+
+ "END\n"
4775+
+ "END AS \"column1\"\n"
4776+
+ "FROM test_schema.table_name\n"
4777+
+ "", true);
47734778

47744779
// without brackets
47754780
assertSqlCanBeParsedAndDeparsed(
4776-
"SELECT CASE\n" +
4777-
"WHEN 'USD' = 'USD'\n" +
4778-
"THEN 0\n" +
4779-
"ELSE CASE\n" +
4780-
"WHEN 'USD' = 'EURO'\n" +
4781-
"THEN CASE\n" +
4782-
"WHEN 'A' = 'B'\n" +
4783-
"THEN 0\n" +
4784-
"ELSE 1\n" +
4785-
"END * 100 \n" +
4786-
"ELSE 2\n" +
4787-
"END\n" +
4788-
"END AS \"column1\"\n" +
4789-
"FROM test_schema.table_name\n" +
4790-
"", true);
4781+
"SELECT CASE\n"
4782+
+ "WHEN 'USD' = 'USD'\n"
4783+
+ "THEN 0\n"
4784+
+ "ELSE CASE\n"
4785+
+ "WHEN 'USD' = 'EURO'\n"
4786+
+ "THEN CASE\n"
4787+
+ "WHEN 'A' = 'B'\n"
4788+
+ "THEN 0\n"
4789+
+ "ELSE 1\n"
4790+
+ "END * 100 \n"
4791+
+ "ELSE 2\n"
4792+
+ "END\n"
4793+
+ "END AS \"column1\"\n"
4794+
+ "FROM test_schema.table_name\n"
4795+
+ "", true);
47914796
}
47924797

47934798
@Test
47944799
public void testGroupByComplexExpressionIssue1308() throws JSQLParserException {
47954800
// without extra brackets
47964801
assertSqlCanBeParsedAndDeparsed(
4797-
"select * \n" +
4798-
"from dual \n" +
4799-
"group by case when 1=1 then 'X' else 'Y' end, column1", true);
4802+
"select * \n"
4803+
+ "from dual \n"
4804+
+ "group by case when 1=1 then 'X' else 'Y' end, column1", true);
48004805

48014806
// with extra brackets for List
48024807
assertSqlCanBeParsedAndDeparsed(
4803-
"select * \n" +
4804-
"from dual \n" +
4805-
"group by (case when 1=1 then 'X' else 'Y' end, column1)", true);
4808+
"select * \n"
4809+
+ "from dual \n"
4810+
+ "group by (case when 1=1 then 'X' else 'Y' end, column1)", true);
48064811

48074812
// with extra brackets for Expression
48084813
assertSqlCanBeParsedAndDeparsed(
4809-
"select * \n" +
4810-
"from dual \n" +
4811-
"group by (case when 1=1 then 'X' else 'Y' end), column1", true);
4814+
"select * \n"
4815+
+ "from dual \n"
4816+
+ "group by (case when 1=1 then 'X' else 'Y' end), column1", true);
48124817
}
48134818

48144819
@Test

0 commit comments

Comments
 (0)