@@ -111,44 +111,55 @@ public void testMaps() throws Exception {
111111 return ;
112112 }
113113
114- // skip 21.4
115- String serverVersion = conn .getServerVersion ();
116- if (ClickHouseVersionNumberUtil .getMajorVersion (serverVersion ) == 21
117- && ClickHouseVersionNumberUtil .getMinorVersion (serverVersion ) == 4 ) {
114+ String columns = ", ma Map(Integer, Array(String)), mi Map(Integer, Integer)" ;
115+ String values = ",1:['11','12'],2:['22','23']},{1:11,2:22}" ;
116+ String version = ((ClickHouseConnection ) conn ).getServerVersion ();
117+ int majorVersion = ClickHouseVersionNumberUtil .getMajorVersion (version );
118+ int minorVersion = ClickHouseVersionNumberUtil .getMinorVersion (version );
119+ if (majorVersion > 21 || (majorVersion == 21 && minorVersion >= 3 )) {
120+ // https://github.com/ClickHouse/ClickHouse/issues/25026
121+ columns = "" ;
122+ values = "" ;
123+
118124 return ;
119125 }
120126
121127 try (Statement s = conn .createStatement ()) {
122128 s .execute ("DROP TABLE IF EXISTS test_maps" );
123- s .execute (
124- "CREATE TABLE IF NOT EXISTS test_maps(ma Map(Integer, Array(String)), mi Map(Integer, Integer), ms Map(String, String)) ENGINE = Memory" );
125- s .execute ("insert into test_maps values ({1:['11','12'],2:['22','23']},{1:11,2:22},{'k1':'v1','k2':'v2'})" );
129+ s .execute ("CREATE TABLE IF NOT EXISTS test_maps(ms Map(String, String)" + columns + ") ENGINE = Memory" );
130+ s .execute ("insert into test_maps values ({{'k1':'v1','k2':'v2'}" + values + ")" );
126131
127132 try (ResultSet rs = s .executeQuery ("select * from test_maps" )) {
128133 assertTrue (rs .next ());
129- assertMap (rs .getObject ("ma" ),
130- Utils .mapOf (1 , new String [] { "11" , "12" }, 2 , new String [] { "22" , "23" }));
131- assertMap (rs .getObject ("mi" ), Utils .mapOf (1 , 11 , 2 , 22 ));
132134 assertMap (rs .getObject ("ms" ), Utils .mapOf ("k1" , "v1" , "k2" , "v2" ));
135+ if (!columns .isEmpty ()) {
136+ assertMap (rs .getObject ("ma" ),
137+ Utils .mapOf (1 , new String [] { "11" , "12" }, 2 , new String [] { "22" , "23" }));
138+ assertMap (rs .getObject ("mi" ), Utils .mapOf (1 , 11 , 2 , 22 ));
139+ }
133140 }
134141
135142 s .execute ("truncate table test_maps" );
136143 }
137144
138145 try (PreparedStatement s = conn .prepareStatement ("insert into test_maps values(?,?,?)" )) {
139- s .setObject (1 , Utils .mapOf (1 , new String [] { "11" , "12" }, 2 , new String [] { "22" , "23" }));
140- s .setObject (2 , Utils .mapOf (1 , 11 , 2 , 22 ));
141- s .setObject (3 , Utils .mapOf ("k1" , "v1" , "k2" , "v2" ));
146+ s .setObject (1 , Utils .mapOf ("k1" , "v1" , "k2" , "v2" ));
147+ if (!columns .isEmpty ()) {
148+ s .setObject (2 , Utils .mapOf (1 , new String [] { "11" , "12" }, 2 , new String [] { "22" , "23" }));
149+ s .setObject (3 , Utils .mapOf (1 , 11 , 2 , 22 ));
150+ }
142151 s .execute ();
143152 }
144153
145154 try (Statement s = conn .createStatement ()) {
146155 try (ResultSet rs = s .executeQuery ("select * from test_maps" )) {
147156 assertTrue (rs .next ());
148- assertMap (rs .getObject ("ma" ),
149- Utils .mapOf (1 , new String [] { "11" , "12" }, 2 , new String [] { "22" , "23" }));
150- assertMap (rs .getObject ("mi" ), Utils .mapOf (1 , 11 , 2 , 22 ));
151157 assertMap (rs .getObject ("ms" ), Utils .mapOf ("k1" , "v1" , "k2" , "v2" ));
158+ if (!columns .isEmpty ()) {
159+ assertMap (rs .getObject ("ma" ),
160+ Utils .mapOf (1 , new String [] { "11" , "12" }, 2 , new String [] { "22" , "23" }));
161+ assertMap (rs .getObject ("mi" ), Utils .mapOf (1 , 11 , 2 , 22 ));
162+ }
152163 }
153164 }
154165 }
0 commit comments