@@ -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