@@ -993,10 +993,16 @@ public void testDistinctTop2() {
993
993
//expected to fail
994
994
}
995
995
}
996
-
996
+
997
997
@ Test
998
998
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)" );
1000
1006
}
1001
1007
1002
1008
@ Test
@@ -4573,7 +4579,7 @@ public void testWithValueListWithExtraBrackets1135() throws JSQLParserException
4573
4579
4574
4580
@ Test
4575
4581
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 "
4577
4583
+ " select \" DAY\" from sample_data" , true );
4578
4584
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 );
4579
4585
}
@@ -4598,18 +4604,17 @@ public void testGroupedByIssue1176() throws JSQLParserException {
4598
4604
assertSqlCanBeParsedAndDeparsed ("select count(*)\n " + "from cfe.instrument\n " + "group by ()" ,
4599
4605
true );
4600
4606
}
4601
-
4607
+
4602
4608
@ Test
4603
4609
public void testGroupedByWithExtraBracketsIssue1210 () throws JSQLParserException {
4604
4610
assertSqlCanBeParsedAndDeparsed (
4605
4611
"select a,b,c from table group by rollup(a,b,c)" ,
4606
4612
true );
4607
4613
assertSqlCanBeParsedAndDeparsed ("select a,b,c from table group by rollup((a,b,c))" ,
4608
4614
true );
4609
-
4610
-
4615
+
4611
4616
}
4612
-
4617
+
4613
4618
@ Test
4614
4619
public void testGroupedByWithExtraBracketsIssue1168 () throws JSQLParserException {
4615
4620
assertSqlCanBeParsedAndDeparsed (
@@ -4621,12 +4626,12 @@ public void testGroupedByWithExtraBracketsIssue1168() throws JSQLParserException
4621
4626
public void testSelectRowElement () throws JSQLParserException {
4622
4627
assertSqlCanBeParsedAndDeparsed ("SELECT (t.tup).id, (tup).name FROM t WHERE (t.tup).id IN (1, 2, 3)" );
4623
4628
}
4624
-
4629
+
4625
4630
@ Test
4626
4631
public void testSelectCastProblemIssue1248 () throws JSQLParserException {
4627
4632
assertSqlCanBeParsedAndDeparsed ("SELECT CAST(t1.sign2 AS Nullable (char))" );
4628
4633
}
4629
-
4634
+
4630
4635
// @Test
4631
4636
// public void testSelectCastProblemIssue1248_2() throws JSQLParserException {
4632
4637
// assertSqlCanBeParsedAndDeparsed("SELECT CAST(t1.sign2 AS Nullable(decimal(30, 10)))");
@@ -4640,7 +4645,7 @@ public void testAnyComparisionExpressionValuesList1232() throws JSQLParserExcept
4640
4645
assertSqlCanBeParsedAndDeparsed (
4641
4646
"select * from foo where id != ALL(VALUES 1,2,3)" ,
4642
4647
true );
4643
-
4648
+
4644
4649
assertSqlCanBeParsedAndDeparsed (
4645
4650
"select * from foo where id != ALL(?::uid[])" ,
4646
4651
true );
@@ -4649,12 +4654,12 @@ public void testAnyComparisionExpressionValuesList1232() throws JSQLParserExcept
4649
4654
public void testSelectAllOperatorIssue1140 () throws JSQLParserException {
4650
4655
assertSqlCanBeParsedAndDeparsed ("SELECT * FROM table t0 WHERE t0.id != all(5)" );
4651
4656
}
4652
-
4657
+
4653
4658
@ Test
4654
4659
public void testSelectAllOperatorIssue1140_2 () throws JSQLParserException {
4655
4660
assertSqlCanBeParsedAndDeparsed ("SELECT * FROM table t0 WHERE t0.id != all(?::uuid[])" );
4656
4661
}
4657
-
4662
+
4658
4663
@ Test
4659
4664
public void testDB2SpecialRegisterDateTimeIssue1249 () throws JSQLParserException {
4660
4665
assertSqlCanBeParsedAndDeparsed ("SELECT * FROM test.abc WHERE col > CURRENT_TIME" , true );
@@ -4664,151 +4669,151 @@ public void testDB2SpecialRegisterDateTimeIssue1249() throws JSQLParserException
4664
4669
assertSqlCanBeParsedAndDeparsed ("SELECT * FROM test.abc WHERE col > CURRENT_DATE" , true );
4665
4670
assertSqlCanBeParsedAndDeparsed ("SELECT * FROM test.abc WHERE col > CURRENT DATE" , true );
4666
4671
}
4667
-
4672
+
4668
4673
@ Test
4669
4674
public void testKeywordFilterIssue1255 () throws JSQLParserException {
4670
4675
assertSqlCanBeParsedAndDeparsed ("SELECT col1 AS filter FROM table" );
4671
4676
}
4672
-
4677
+
4673
4678
@ Test
4674
4679
public void testConnectByRootIssue1255 () throws JSQLParserException {
4675
4680
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 );
4681
4686
4682
4687
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
+
4690
4695
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 );
4696
4701
}
4697
-
4702
+
4698
4703
public void testUnionLimitOrderByIssue1268 () throws JSQLParserException {
4699
4704
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)" ;
4700
4705
assertSqlCanBeParsedAndDeparsed (sqlStr , true );
4701
4706
}
4702
-
4707
+
4703
4708
@ Test
4704
4709
public void testCastToRowConstructorIssue1267 () throws JSQLParserException {
4705
4710
String sqlStr = "SELECT CAST(ROW(dataid, value, calcMark) AS ROW(datapointid CHAR, value CHAR, calcMark CHAR)) AS datapoints" ;
4706
4711
assertSqlCanBeParsedAndDeparsed (sqlStr , true );
4707
4712
}
4708
-
4713
+
4709
4714
@ Test
4710
4715
public void testCollisionWithSpecialStringFunctionsIssue1284 () throws JSQLParserException {
4711
4716
assertSqlCanBeParsedAndDeparsed (
4712
- "SELECT test( a in (1) AND 2=2) " , true );
4713
-
4717
+ "SELECT test( a in (1) AND 2=2) " , true );
4718
+
4714
4719
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 );
4723
4728
}
4724
4729
4725
4730
@ Test
4726
4731
public void testJoinWithTrailingOnExpressionIssue1302 () throws JSQLParserException {
4727
4732
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 );
4735
4740
4736
4741
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 );
4746
4751
}
4747
4752
4748
4753
@ Test
4749
4754
public void testSimpleJoinOnExpressionIssue1229 () throws JSQLParserException {
4750
4755
assertSqlCanBeParsedAndDeparsed (
4751
4756
"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
+ }
4753
4758
4754
4759
@ Test
4755
4760
public void testNestedCaseComplexExpressionIssue1306 () throws JSQLParserException {
4756
4761
// with extra brackets
4757
4762
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 );
4773
4778
4774
4779
// without brackets
4775
4780
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 );
4791
4796
}
4792
4797
4793
4798
@ Test
4794
4799
public void testGroupByComplexExpressionIssue1308 () throws JSQLParserException {
4795
4800
// without extra brackets
4796
4801
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 );
4800
4805
4801
4806
// with extra brackets for List
4802
4807
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 );
4806
4811
4807
4812
// with extra brackets for Expression
4808
4813
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 );
4812
4817
}
4813
4818
4814
4819
@ Test
0 commit comments