66import static org .junit .jupiter .api .Assertions .assertThrows ;
77import static org .junit .jupiter .api .Assertions .assertTrue ;
88import static org .tarantool .TestAssumptions .assumeMinimalServerVersion ;
9+ import static org .tarantool .TestAssumptions .assumeServerVersionLessThan ;
10+ import static org .tarantool .TestAssumptions .assumeServerVersionOutOfRange ;
911
1012import org .tarantool .ServerVersion ;
1113import org .tarantool .TarantoolTestHelper ;
12- import org .tarantool .jdbc .type .JdbcType ;
13- import org .tarantool .jdbc .type .TarantoolSqlType ;
1414
1515import org .junit .jupiter .api .AfterAll ;
1616import org .junit .jupiter .api .AfterEach ;
@@ -201,9 +201,12 @@ public void testCaseSensitiveColumns() throws SQLException {
201201 @ Test
202202 @ DisplayName ("returned case insensitive columns" )
203203 public void testCaseInsensitiveColumns () throws SQLException {
204- testHelper .executeSql (
205- "CREATE TABLE test(id INT PRIMARY KEY, num_val DOUBLE)"
206- );
204+ assumeServerVersionOutOfRange (testHelper .getInstanceVersion (), ServerVersion .V_2_2 , ServerVersion .V_2_2_1 );
205+ if (ServerVersion .V_2_2 .isGreaterThan (testHelper .getInstanceVersion ())) {
206+ testHelper .executeSql ("CREATE TABLE test(id INT PRIMARY KEY, num_val DOUBLE)" );
207+ } else {
208+ testHelper .executeSql ("CREATE TABLE test(id INT PRIMARY KEY, num_val NUMBER)" );
209+ }
207210 try (
208211 Statement statement = connection .createStatement ();
209212 ResultSet resultSet = statement .executeQuery ("SELECT * FROM test" )
@@ -218,9 +221,16 @@ public void testCaseInsensitiveColumns() throws SQLException {
218221 @ Test
219222 @ DisplayName ("returned searchable columns" )
220223 public void testSearchableColumns () throws SQLException {
221- testHelper .executeSql (
222- "CREATE TABLE test(id INT PRIMARY KEY, num_val DOUBLE, text_val TEXT, bin_val SCALAR)"
223- );
224+ assumeServerVersionOutOfRange (testHelper .getInstanceVersion (), ServerVersion .V_2_2 , ServerVersion .V_2_2_1 );
225+ if (ServerVersion .V_2_2 .isGreaterThan (testHelper .getInstanceVersion ())) {
226+ testHelper .executeSql (
227+ "CREATE TABLE test(id INT PRIMARY KEY, num_val DOUBLE, text_val TEXT, bin_val SCALAR)"
228+ );
229+ } else {
230+ testHelper .executeSql (
231+ "CREATE TABLE test(id INT PRIMARY KEY, num_val NUMBER, text_val TEXT, bin_val SCALAR)"
232+ );
233+ }
224234 try (
225235 Statement statement = connection .createStatement ();
226236 ResultSet resultSet = statement .executeQuery ("SELECT * FROM test" )
@@ -237,9 +247,16 @@ public void testSearchableColumns() throws SQLException {
237247 @ Test
238248 @ DisplayName ("returned no monetary columns" )
239249 public void testCurrencyColumns () throws SQLException {
240- testHelper .executeSql (
241- "CREATE TABLE test(id INT PRIMARY KEY, num_val DOUBLE, text_val TEXT, bin_val SCALAR)"
242- );
250+ assumeServerVersionOutOfRange (testHelper .getInstanceVersion (), ServerVersion .V_2_2 , ServerVersion .V_2_2_1 );
251+ if (ServerVersion .V_2_2 .isGreaterThan (testHelper .getInstanceVersion ())) {
252+ testHelper .executeSql (
253+ "CREATE TABLE test(id INT PRIMARY KEY, num_val DOUBLE, text_val TEXT, bin_val SCALAR)"
254+ );
255+ } else {
256+ testHelper .executeSql (
257+ "CREATE TABLE test(id INT PRIMARY KEY, num_val NUMBER, text_val TEXT, bin_val SCALAR)"
258+ );
259+ }
243260 try (
244261 Statement statement = connection .createStatement ();
245262 ResultSet resultSet = statement .executeQuery ("SELECT * FROM test" )
@@ -254,8 +271,9 @@ public void testCurrencyColumns() throws SQLException {
254271 }
255272
256273 @ Test
257- @ DisplayName ("returned signed columns" )
258- public void testSignedColumns () throws SQLException {
274+ @ DisplayName ("returned signed decimal columns" )
275+ public void testSignedDecimalColumns () throws SQLException {
276+ assumeServerVersionLessThan (testHelper .getInstanceVersion (), ServerVersion .V_2_2 );
259277 testHelper .executeSql (
260278 "CREATE TABLE test(id INT PRIMARY KEY, double_val DOUBLE, real_val REAL, float_val FLOAT)"
261279 );
@@ -272,6 +290,23 @@ public void testSignedColumns() throws SQLException {
272290 }
273291 }
274292
293+ @ Test
294+ @ DisplayName ("returned signed number column" )
295+ public void testSignedNumberColumn () throws SQLException {
296+ assumeMinimalServerVersion (testHelper .getInstanceVersion (), ServerVersion .V_2_2_1 );
297+ testHelper .executeSql (
298+ "CREATE TABLE test(id INT PRIMARY KEY, num_val NUMBER)"
299+ );
300+ try (
301+ Statement statement = connection .createStatement ();
302+ ResultSet resultSet = statement .executeQuery ("SELECT * FROM test" )
303+ ) {
304+ ResultSetMetaData rsMeta = resultSet .getMetaData ();
305+ assertTrue (rsMeta .isSigned (1 ));
306+ assertTrue (rsMeta .isSigned (2 ));
307+ }
308+ }
309+
275310 @ Test
276311 @ DisplayName ("returned not signed columns" )
277312 public void testNotSignedColumns () throws SQLException {
@@ -292,8 +327,9 @@ public void testNotSignedColumns() throws SQLException {
292327 }
293328
294329 @ Test
295- @ DisplayName ("returned numeric column types" )
296- public void testColumnsNumericTypes () throws SQLException {
330+ @ DisplayName ("returned number type aliases" )
331+ public void testColumnsNumberTypeAliases () throws SQLException {
332+ assumeServerVersionLessThan (testHelper .getInstanceVersion (), ServerVersion .V_2_2 );
297333 testHelper .executeSql (
298334 "CREATE TABLE test(id INT PRIMARY KEY, f_val FLOAT, d_val DOUBLE, r_val REAL)"
299335 );
@@ -303,26 +339,45 @@ public void testColumnsNumericTypes() throws SQLException {
303339 ) {
304340 ResultSetMetaData rsMeta = resultSet .getMetaData ();
305341
306- assertEquals (Types .INTEGER , rsMeta .getColumnType (1 ));
342+ assertEquals (Types .BIGINT , rsMeta .getColumnType (1 ));
307343 assertEquals ("integer" , rsMeta .getColumnTypeName (1 ));
308- assertEquals ("java.lang.Integer " , rsMeta .getColumnClassName (1 ));
344+ assertEquals ("java.lang.Long " , rsMeta .getColumnClassName (1 ));
309345
310346 // we cannot distinguish numeric types because Tarantool
311347 // receives double noSQL type for all the numeric SQL types
312348 assertEquals (Types .DOUBLE , rsMeta .getColumnType (2 ));
313- assertEquals ("double " , rsMeta .getColumnTypeName (2 ));
349+ assertEquals ("number " , rsMeta .getColumnTypeName (2 ));
314350 assertEquals ("java.lang.Double" , rsMeta .getColumnClassName (2 ));
315351
316352 assertEquals (Types .DOUBLE , rsMeta .getColumnType (3 ));
317- assertEquals ("double " , rsMeta .getColumnTypeName (3 ));
353+ assertEquals ("number " , rsMeta .getColumnTypeName (3 ));
318354 assertEquals ("java.lang.Double" , rsMeta .getColumnClassName (3 ));
319355
320356 assertEquals (Types .DOUBLE , rsMeta .getColumnType (4 ));
321- assertEquals ("double " , rsMeta .getColumnTypeName (4 ));
357+ assertEquals ("number " , rsMeta .getColumnTypeName (4 ));
322358 assertEquals ("java.lang.Double" , rsMeta .getColumnClassName (4 ));
323359 }
324360 }
325361
362+ @ Test
363+ @ DisplayName ("returned number column type" )
364+ public void testColumnsNumericTypes () throws SQLException {
365+ assumeMinimalServerVersion (testHelper .getInstanceVersion (), ServerVersion .V_2_2_1 );
366+ testHelper .executeSql (
367+ "CREATE TABLE test(id INT PRIMARY KEY, num_val NUMBER)"
368+ );
369+ try (
370+ Statement statement = connection .createStatement ();
371+ ResultSet resultSet = statement .executeQuery ("SELECT * FROM test" )
372+ ) {
373+ ResultSetMetaData rsMeta = resultSet .getMetaData ();
374+
375+ assertEquals (Types .DOUBLE , rsMeta .getColumnType (2 ));
376+ assertEquals ("number" , rsMeta .getColumnTypeName (2 ));
377+ assertEquals ("java.lang.Double" , rsMeta .getColumnClassName (2 ));
378+ }
379+ }
380+
326381 @ Test
327382 @ DisplayName ("returned textual column types" )
328383 public void testColumnsTextualTypes () throws SQLException {
@@ -335,17 +390,17 @@ public void testColumnsTextualTypes() throws SQLException {
335390 ) {
336391 ResultSetMetaData rsMeta = resultSet .getMetaData ();
337392
338- assertEquals (Types .INTEGER , rsMeta .getColumnType (1 ));
393+ assertEquals (Types .BIGINT , rsMeta .getColumnType (1 ));
339394 assertEquals ("integer" , rsMeta .getColumnTypeName (1 ));
340- assertEquals ("java.lang.Integer " , rsMeta .getColumnClassName (1 ));
395+ assertEquals ("java.lang.Long " , rsMeta .getColumnClassName (1 ));
341396
342397 assertEquals (Types .VARCHAR , rsMeta .getColumnType (2 ));
343- assertEquals ("varchar " , rsMeta .getColumnTypeName (2 ));
398+ assertEquals ("string " , rsMeta .getColumnTypeName (2 ));
344399 assertEquals ("java.lang.String" , rsMeta .getColumnClassName (2 ));
345400
346401 // TEXT and VARCHAR are not distinguishable
347402 assertEquals (Types .VARCHAR , rsMeta .getColumnType (3 ));
348- assertEquals ("varchar " , rsMeta .getColumnTypeName (3 ));
403+ assertEquals ("string " , rsMeta .getColumnTypeName (3 ));
349404 assertEquals ("java.lang.String" , rsMeta .getColumnClassName (3 ));
350405
351406 assertEquals (Types .BINARY , rsMeta .getColumnType (4 ));
0 commit comments