33import com .clickhouse .client .api .data_formats .internal .BinaryStreamReader ;
44import com .clickhouse .data .ClickHouseDataType ;
55import com .clickhouse .jdbc .types .Array ;
6+ import com .google .common .collect .ImmutableMap ;
67
78import java .net .Inet4Address ;
89import java .net .Inet6Address ;
2728
2829public class JdbcUtils {
2930 //Define a map to store the mapping between ClickHouse data types and SQL data types
30- private static final Map <ClickHouseDataType , SQLType > CLICKHOUSE_TO_SQL_TYPE_MAP = generateTypeMap ();
31+ public static final Map <ClickHouseDataType , SQLType > CLICKHOUSE_TO_SQL_TYPE_MAP = generateTypeMap ();
3132
3233 public static final Map <String , SQLType > CLICKHOUSE_TYPE_NAME_TO_SQL_TYPE_MAP = Collections .unmodifiableMap (generateTypeMap ().entrySet ()
3334 .stream ().collect (
@@ -72,10 +73,10 @@ private static Map<ClickHouseDataType, SQLType> generateTypeMap() {
7273 map .put (ClickHouseDataType .LineString , JDBCType .OTHER );
7374 map .put (ClickHouseDataType .MultiPolygon , JDBCType .OTHER );
7475 map .put (ClickHouseDataType .MultiLineString , JDBCType .OTHER );
75- return map ;
76+ return ImmutableMap . copyOf ( map ) ;
7677 }
7778
78- private static final Map <SQLType , Class <?>> SQL_TYPE_TO_CLASS_MAP = generateClassMap ();
79+ public static final Map <SQLType , Class <?>> SQL_TYPE_TO_CLASS_MAP = generateClassMap ();
7980 private static Map <SQLType , Class <?>> generateClassMap () {
8081 Map <SQLType , Class <?>> map = new HashMap <>();
8182 map .put (JDBCType .CHAR , String .class );
@@ -112,6 +113,16 @@ private static Map<SQLType, Class<?>> generateClassMap() {
112113 map .put (JDBCType .LONGNVARCHAR , String .class );
113114 map .put (JDBCType .NCLOB , java .sql .NClob .class );
114115 map .put (JDBCType .SQLXML , java .sql .SQLXML .class );
116+ return ImmutableMap .copyOf (map );
117+ }
118+
119+ public static final Map <ClickHouseDataType , Class <?>> DATA_TYPE_CLASS_MAP = getDataTypeClassMap ();
120+ private static Map <ClickHouseDataType , Class <?>> getDataTypeClassMap () {
121+ Map <ClickHouseDataType , Class <?>> map = new HashMap <>();
122+ for (Map .Entry <ClickHouseDataType , SQLType > e : CLICKHOUSE_TO_SQL_TYPE_MAP .entrySet ()) {
123+ map .put (e .getKey (), SQL_TYPE_TO_CLASS_MAP .get (e .getValue ()));
124+ }
125+
115126 return map ;
116127 }
117128
@@ -124,7 +135,7 @@ public static SQLType convertToSqlType(ClickHouseDataType clickhouseType) {
124135 }
125136
126137 public static Class <?> convertToJavaClass (ClickHouseDataType clickhouseType ) {
127- return SQL_TYPE_TO_CLASS_MAP .get (convertToSqlType ( clickhouseType ) );
138+ return DATA_TYPE_CLASS_MAP .get (clickhouseType );
128139 }
129140
130141 public static List <String > tokenizeSQL (String sql ) {
0 commit comments