2020import static org .elasticsearch .xpack .ql .type .DataTypes .KEYWORD ;
2121import static org .elasticsearch .xpack .ql .type .DataTypes .LONG ;
2222import static org .elasticsearch .xpack .sql .expression .literal .interval .Intervals .compatibleInterval ;
23+ import static org .elasticsearch .xpack .sql .type .SqlDataTypes .DATE ;
2324import static org .elasticsearch .xpack .sql .type .SqlDataTypes .INTERVAL_DAY ;
2425import static org .elasticsearch .xpack .sql .type .SqlDataTypes .INTERVAL_DAY_TO_HOUR ;
2526import static org .elasticsearch .xpack .sql .type .SqlDataTypes .INTERVAL_DAY_TO_MINUTE ;
3334import static org .elasticsearch .xpack .sql .type .SqlDataTypes .INTERVAL_SECOND ;
3435import static org .elasticsearch .xpack .sql .type .SqlDataTypes .INTERVAL_YEAR ;
3536import static org .elasticsearch .xpack .sql .type .SqlDataTypes .INTERVAL_YEAR_TO_MONTH ;
37+ import static org .elasticsearch .xpack .sql .type .SqlDataTypes .TIME ;
3638import static org .elasticsearch .xpack .sql .type .SqlDataTypes .defaultPrecision ;
3739import static org .elasticsearch .xpack .sql .type .SqlDataTypes .isInterval ;
3840import static org .elasticsearch .xpack .sql .type .SqlDataTypes .metaSqlDataType ;
4547public class SqlDataTypesTests extends ESTestCase {
4648
4749 public void testMetadataType () {
50+ assertEquals (Integer .valueOf (91 ), metaSqlDataType (DATE ));
51+ assertEquals (Integer .valueOf (92 ), metaSqlDataType (TIME ));
4852 assertEquals (Integer .valueOf (9 ), metaSqlDataType (DATETIME ));
4953 DataType t = randomDataTypeNoDateTime ();
5054 assertEquals (sqlType (t ).getVendorTypeNumber (), metaSqlDataType (t ));
5155 }
5256
5357 public void testMetaDateTypeSub () {
58+ assertEquals (Integer .valueOf (1 ), metaSqlDateTimeSub (DATE ));
59+ assertEquals (Integer .valueOf (2 ), metaSqlDateTimeSub (TIME ));
5460 assertEquals (Integer .valueOf (3 ), metaSqlDateTimeSub (DATETIME ));
5561 assertEquals (Integer .valueOf (0 ), metaSqlDateTimeSub (randomDataTypeNoDateTime ()));
5662 }
5763
5864 public void testMetaMinimumScale () {
65+ assertNull (metaSqlMinimumScale (DATE ));
66+ assertEquals (Short .valueOf ((short ) 3 ), metaSqlMinimumScale (TIME ));
5967 assertEquals (Short .valueOf ((short ) 3 ), metaSqlMinimumScale (DATETIME ));
6068 assertEquals (Short .valueOf ((short ) 0 ), metaSqlMinimumScale (LONG ));
6169 assertEquals (Short .valueOf ((short ) defaultPrecision (FLOAT )), metaSqlMaximumScale (FLOAT ));
6270 assertNull (metaSqlMinimumScale (KEYWORD ));
6371 }
6472
6573 public void testMetaMaximumScale () {
74+ assertNull (metaSqlMinimumScale (DATE ));
75+ assertEquals (Short .valueOf ((short ) 3 ), metaSqlMinimumScale (TIME ));
6676 assertEquals (Short .valueOf ((short ) 3 ), metaSqlMaximumScale (DATETIME ));
6777 assertEquals (Short .valueOf ((short ) 0 ), metaSqlMaximumScale (LONG ));
6878 assertEquals (Short .valueOf ((short ) defaultPrecision (FLOAT )), metaSqlMaximumScale (FLOAT ));
@@ -78,7 +88,7 @@ public void testMetaRadix() {
7888
7989
8090 // type checks
81- public void testIsInterval () throws Exception {
91+ public void testIsInterval () {
8292 for (DataType dataType : asList (INTERVAL_YEAR ,
8393 INTERVAL_MONTH ,
8494 INTERVAL_DAY ,
@@ -96,14 +106,14 @@ public void testIsInterval() throws Exception {
96106 }
97107 }
98108
99- public void testIntervalCompatibilityYearMonth () throws Exception {
109+ public void testIntervalCompatibilityYearMonth () {
100110 assertEquals (INTERVAL_YEAR_TO_MONTH , compatibleInterval (INTERVAL_YEAR , INTERVAL_MONTH ));
101111 assertEquals (INTERVAL_YEAR_TO_MONTH , compatibleInterval (INTERVAL_YEAR , INTERVAL_YEAR_TO_MONTH ));
102112 assertEquals (INTERVAL_YEAR_TO_MONTH , compatibleInterval (INTERVAL_MONTH , INTERVAL_YEAR ));
103113 assertEquals (INTERVAL_YEAR_TO_MONTH , compatibleInterval (INTERVAL_MONTH , INTERVAL_YEAR_TO_MONTH ));
104114 }
105115
106- public void testIntervalCompatibilityDayTime () throws Exception {
116+ public void testIntervalCompatibilityDayTime () {
107117 assertEquals (INTERVAL_DAY_TO_HOUR , compatibleInterval (INTERVAL_DAY , INTERVAL_HOUR ));
108118 assertEquals (INTERVAL_DAY_TO_HOUR , compatibleInterval (INTERVAL_DAY_TO_HOUR , INTERVAL_HOUR ));
109119 assertEquals (INTERVAL_DAY_TO_MINUTE , compatibleInterval (INTERVAL_DAY , INTERVAL_MINUTE ));
@@ -121,14 +131,14 @@ public void testIntervalCompatibilityDayTime() throws Exception {
121131 assertEquals (INTERVAL_MINUTE_TO_SECOND , compatibleInterval (INTERVAL_SECOND , INTERVAL_MINUTE ));
122132 }
123133
124- public void testIncompatibleInterval () throws Exception {
134+ public void testIncompatibleInterval () {
125135 assertNull (compatibleInterval (INTERVAL_YEAR , INTERVAL_SECOND ));
126136 assertNull (compatibleInterval (INTERVAL_YEAR , INTERVAL_DAY_TO_HOUR ));
127137 assertNull (compatibleInterval (INTERVAL_HOUR , INTERVAL_MONTH ));
128138 assertNull (compatibleInterval (INTERVAL_MINUTE_TO_SECOND , INTERVAL_MONTH ));
129139 }
130140
131- public void testEsToDataType () throws Exception {
141+ public void testEsToDataType () {
132142 List <String > types = new ArrayList <>(Arrays .asList ("null" , "boolean" , "bool" ,
133143 "byte" , "tinyint" ,
134144 "short" , "smallint" ,
@@ -157,6 +167,6 @@ public void testEsToDataType() throws Exception {
157167 }
158168
159169 private DataType randomDataTypeNoDateTime () {
160- return randomValueOtherThan ( DATETIME , () -> randomFrom (SqlDataTypes .types ()));
170+ return randomValueOtherThanMany ( SqlDataTypes :: isDateOrTimeBased , () -> randomFrom (SqlDataTypes .types ()));
161171 }
162172}
0 commit comments