1818
1919package org .apache .wayang .basic .util ;
2020
21- import org .apache .calcite .sql .SqlDialect ;
2221import org .apache .wayang .basic .data .Record ;
2322import org .junit .jupiter .api .Test ;
2423
25- import java .sql .Date ;
26- import java .sql .Timestamp ;
2724import java .util .List ;
2825
2926import static org .junit .jupiter .api .Assertions .assertEquals ;
@@ -32,60 +29,68 @@ public class SqlTypeUtilsTest {
3229
3330 @ Test
3431 public void testDetectProduct () {
35- assertEquals (SqlDialect . DatabaseProduct .POSTGRESQL ,
32+ assertEquals (DatabaseProduct .POSTGRESQL ,
3633 SqlTypeUtils .detectProduct ("jdbc:postgresql://localhost:5432/db" ));
37- assertEquals (SqlDialect .DatabaseProduct .MYSQL , SqlTypeUtils .detectProduct ("jdbc:mysql://localhost:3306/db" ));
38- assertEquals (SqlDialect .DatabaseProduct .ORACLE ,
34+ assertEquals (DatabaseProduct .MYSQL ,
35+ SqlTypeUtils .detectProduct ("jdbc:mysql://localhost:3306/db" ));
36+ assertEquals (DatabaseProduct .ORACLE ,
3937 SqlTypeUtils .detectProduct ("jdbc:oracle:thin:@localhost:1521:xe" ));
40- assertEquals (SqlDialect .DatabaseProduct .H2 , SqlTypeUtils .detectProduct ("jdbc:h2:mem:test" ));
41- assertEquals (SqlDialect .DatabaseProduct .DERBY ,
38+ assertEquals (DatabaseProduct .SQLITE ,
39+ SqlTypeUtils .detectProduct ("jdbc:sqlite:test.db" ));
40+ assertEquals (DatabaseProduct .H2 ,
41+ SqlTypeUtils .detectProduct ("jdbc:h2:mem:test" ));
42+ assertEquals (DatabaseProduct .DERBY ,
4243 SqlTypeUtils .detectProduct ("jdbc:derby:memory:test;create=true" ));
43- assertEquals (SqlDialect . DatabaseProduct .MSSQL ,
44+ assertEquals (DatabaseProduct .MSSQL ,
4445 SqlTypeUtils .detectProduct ("jdbc:sqlserver://localhost:1433;databaseName=db" ));
45- assertEquals (SqlDialect . DatabaseProduct .UNKNOWN , SqlTypeUtils .detectProduct ("jdbc:unknown:db" ));
46+ assertEquals (DatabaseProduct .UNKNOWN , SqlTypeUtils .detectProduct ("jdbc:unknown:db" ));
4647 }
4748
4849 @ Test
4950 public void testGetSqlTypeDefault () {
50- SqlDialect .DatabaseProduct product = SqlDialect .DatabaseProduct .UNKNOWN ;
51- assertEquals ("INT" , SqlTypeUtils .getSqlType (Integer .class , product ));
52- assertEquals ("INT" , SqlTypeUtils .getSqlType (int .class , product ));
53- assertEquals ("BIGINT" , SqlTypeUtils .getSqlType (Long .class , product ));
54- assertEquals ("DOUBLE" , SqlTypeUtils .getSqlType (Double .class , product ));
55- assertEquals ("VARCHAR(255)" , SqlTypeUtils .getSqlType (String .class , product ));
56- assertEquals ("DATE" , SqlTypeUtils .getSqlType (Date .class , product ));
57- assertEquals ("TIMESTAMP" , SqlTypeUtils .getSqlType (Timestamp .class , product ));
51+ assertEquals ("INT" , SqlTypeUtils .getSqlType (Integer .class , DatabaseProduct .UNKNOWN ));
52+ assertEquals ("INT" , SqlTypeUtils .getSqlType (int .class , DatabaseProduct .UNKNOWN ));
53+ assertEquals ("BIGINT" , SqlTypeUtils .getSqlType (Long .class , DatabaseProduct .UNKNOWN ));
54+ assertEquals ("DOUBLE" , SqlTypeUtils .getSqlType (Double .class , DatabaseProduct .UNKNOWN ));
55+ assertEquals ("VARCHAR(255)" , SqlTypeUtils .getSqlType (String .class , DatabaseProduct .UNKNOWN ));
56+ assertEquals ("DATE" , SqlTypeUtils .getSqlType (java .sql .Date .class , DatabaseProduct .UNKNOWN ));
57+ assertEquals ("TIMESTAMP" , SqlTypeUtils .getSqlType (java .sql .Timestamp .class , DatabaseProduct .UNKNOWN ));
5858 }
5959
6060 @ Test
61- public void testGetSqlTypePostgres () {
62- SqlDialect .DatabaseProduct product = SqlDialect .DatabaseProduct .POSTGRESQL ;
63- assertEquals ("INT" , SqlTypeUtils .getSqlType (Integer .class , product ));
64- assertEquals ("DOUBLE PRECISION" , SqlTypeUtils .getSqlType (Double .class , product ));
65- assertEquals ("DOUBLE PRECISION" , SqlTypeUtils .getSqlType (double .class , product ));
66- assertEquals ("VARCHAR(255)" , SqlTypeUtils .getSqlType (String .class , product ));
61+ public void testPostgresqlOverrides () {
62+ assertEquals ("INT" , SqlTypeUtils .getSqlType (Integer .class , DatabaseProduct .POSTGRESQL ));
63+ assertEquals ("DOUBLE PRECISION" , SqlTypeUtils .getSqlType (Double .class , DatabaseProduct .POSTGRESQL ));
64+ assertEquals ("DOUBLE PRECISION" , SqlTypeUtils .getSqlType (double .class , DatabaseProduct .POSTGRESQL ));
65+ assertEquals ("VARCHAR(255)" , SqlTypeUtils .getSqlType (String .class , DatabaseProduct .POSTGRESQL ));
6766 }
6867
6968 @ Test
7069 public void testGetSchema () {
7170 List <SqlTypeUtils .SchemaField > schema = SqlTypeUtils .getSchema (TestPojo .class ,
72- SqlDialect .DatabaseProduct .POSTGRESQL );
73- assertEquals (3 , schema .size ());
71+ DatabaseProduct .POSTGRESQL );
72+ // id, name, value, active (from getter/is)
73+ assertEquals (4 , schema .size ());
7474
75- assertEquals ("id" , schema .get (0 ).getName ());
76- assertEquals ("INT" , schema .get (0 ).getSqlType ());
75+ schema .sort ((f1 , f2 ) -> f1 .getName ().compareTo (f2 .getName ()));
7776
78- assertEquals ("name " , schema .get (1 ).getName ());
79- assertEquals ("VARCHAR(255) " , schema .get (1 ).getSqlType ());
77+ assertEquals ("active " , schema .get (0 ).getName ());
78+ assertEquals ("BOOLEAN " , schema .get (0 ).getSqlType ());
8079
81- assertEquals ("value" , schema .get (2 ).getName ());
82- assertEquals ("DOUBLE PRECISION" , schema .get (2 ).getSqlType ());
80+ assertEquals ("id" , schema .get (1 ).getName ());
81+ assertEquals ("INT" , schema .get (1 ).getSqlType ());
82+
83+ assertEquals ("name" , schema .get (2 ).getName ());
84+ assertEquals ("VARCHAR(255)" , schema .get (2 ).getSqlType ());
85+
86+ assertEquals ("value" , schema .get (3 ).getName ());
87+ assertEquals ("DOUBLE PRECISION" , schema .get (3 ).getSqlType ());
8388 }
8489
8590 @ Test
8691 public void testGetSchemaRecord () {
8792 Record record = new Record (1 , "test" , 1.5 );
88- List <SqlTypeUtils .SchemaField > schema = SqlTypeUtils .getSchema (record , SqlDialect . DatabaseProduct .POSTGRESQL ,
93+ List <SqlTypeUtils .SchemaField > schema = SqlTypeUtils .getSchema (record , DatabaseProduct .POSTGRESQL ,
8994 null );
9095
9196 assertEquals (3 , schema .size ());
@@ -106,7 +111,7 @@ public void testGetSchemaRecord() {
106111 public void testGetSchemaRecordWithNames () {
107112 Record record = new Record (1 , "test" );
108113 String [] names = { "id" , "description" };
109- List <SqlTypeUtils .SchemaField > schema = SqlTypeUtils .getSchema (record , SqlDialect . DatabaseProduct .POSTGRESQL ,
114+ List <SqlTypeUtils .SchemaField > schema = SqlTypeUtils .getSchema (record , DatabaseProduct .POSTGRESQL ,
110115 names );
111116
112117 assertEquals (2 , schema .size ());
@@ -115,8 +120,26 @@ public void testGetSchemaRecordWithNames() {
115120 }
116121
117122 public static class TestPojo {
118- public int id ;
119- public String name ;
120- public Double value ;
123+ private int id ;
124+ private String name ;
125+ private Double value ;
126+ private boolean active ;
127+ private String hidden ;
128+
129+ public int getId () {
130+ return id ;
131+ }
132+
133+ public String getName () {
134+ return name ;
135+ }
136+
137+ public Double getValue () {
138+ return value ;
139+ }
140+
141+ public boolean isActive () {
142+ return active ;
143+ }
121144 }
122145}
0 commit comments