6
6
import static org .junit .jupiter .api .Assertions .assertThrows ;
7
7
import static org .junit .jupiter .api .Assertions .assertTrue ;
8
8
import static org .tarantool .TestAssumptions .assumeMinimalServerVersion ;
9
+ import static org .tarantool .TestAssumptions .assumeServerVersionLessThan ;
10
+ import static org .tarantool .TestAssumptions .assumeServerVersionOutOfRange ;
9
11
10
12
import org .tarantool .ServerVersion ;
11
13
import org .tarantool .TarantoolTestHelper ;
12
- import org .tarantool .jdbc .type .JdbcType ;
13
- import org .tarantool .jdbc .type .TarantoolSqlType ;
14
14
15
15
import org .junit .jupiter .api .AfterAll ;
16
16
import org .junit .jupiter .api .AfterEach ;
@@ -201,9 +201,12 @@ public void testCaseSensitiveColumns() throws SQLException {
201
201
@ Test
202
202
@ DisplayName ("returned case insensitive columns" )
203
203
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
+ }
207
210
try (
208
211
Statement statement = connection .createStatement ();
209
212
ResultSet resultSet = statement .executeQuery ("SELECT * FROM test" )
@@ -218,9 +221,16 @@ public void testCaseInsensitiveColumns() throws SQLException {
218
221
@ Test
219
222
@ DisplayName ("returned searchable columns" )
220
223
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
+ }
224
234
try (
225
235
Statement statement = connection .createStatement ();
226
236
ResultSet resultSet = statement .executeQuery ("SELECT * FROM test" )
@@ -237,9 +247,16 @@ public void testSearchableColumns() throws SQLException {
237
247
@ Test
238
248
@ DisplayName ("returned no monetary columns" )
239
249
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
+ }
243
260
try (
244
261
Statement statement = connection .createStatement ();
245
262
ResultSet resultSet = statement .executeQuery ("SELECT * FROM test" )
@@ -254,8 +271,9 @@ public void testCurrencyColumns() throws SQLException {
254
271
}
255
272
256
273
@ 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 );
259
277
testHelper .executeSql (
260
278
"CREATE TABLE test(id INT PRIMARY KEY, double_val DOUBLE, real_val REAL, float_val FLOAT)"
261
279
);
@@ -272,6 +290,23 @@ public void testSignedColumns() throws SQLException {
272
290
}
273
291
}
274
292
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
+
275
310
@ Test
276
311
@ DisplayName ("returned not signed columns" )
277
312
public void testNotSignedColumns () throws SQLException {
@@ -292,8 +327,9 @@ public void testNotSignedColumns() throws SQLException {
292
327
}
293
328
294
329
@ 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 );
297
333
testHelper .executeSql (
298
334
"CREATE TABLE test(id INT PRIMARY KEY, f_val FLOAT, d_val DOUBLE, r_val REAL)"
299
335
);
@@ -303,26 +339,45 @@ public void testColumnsNumericTypes() throws SQLException {
303
339
) {
304
340
ResultSetMetaData rsMeta = resultSet .getMetaData ();
305
341
306
- assertEquals (Types .INTEGER , rsMeta .getColumnType (1 ));
342
+ assertEquals (Types .BIGINT , rsMeta .getColumnType (1 ));
307
343
assertEquals ("integer" , rsMeta .getColumnTypeName (1 ));
308
- assertEquals ("java.lang.Integer " , rsMeta .getColumnClassName (1 ));
344
+ assertEquals ("java.lang.Long " , rsMeta .getColumnClassName (1 ));
309
345
310
346
// we cannot distinguish numeric types because Tarantool
311
347
// receives double noSQL type for all the numeric SQL types
312
348
assertEquals (Types .DOUBLE , rsMeta .getColumnType (2 ));
313
- assertEquals ("double " , rsMeta .getColumnTypeName (2 ));
349
+ assertEquals ("number " , rsMeta .getColumnTypeName (2 ));
314
350
assertEquals ("java.lang.Double" , rsMeta .getColumnClassName (2 ));
315
351
316
352
assertEquals (Types .DOUBLE , rsMeta .getColumnType (3 ));
317
- assertEquals ("double " , rsMeta .getColumnTypeName (3 ));
353
+ assertEquals ("number " , rsMeta .getColumnTypeName (3 ));
318
354
assertEquals ("java.lang.Double" , rsMeta .getColumnClassName (3 ));
319
355
320
356
assertEquals (Types .DOUBLE , rsMeta .getColumnType (4 ));
321
- assertEquals ("double " , rsMeta .getColumnTypeName (4 ));
357
+ assertEquals ("number " , rsMeta .getColumnTypeName (4 ));
322
358
assertEquals ("java.lang.Double" , rsMeta .getColumnClassName (4 ));
323
359
}
324
360
}
325
361
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
+
326
381
@ Test
327
382
@ DisplayName ("returned textual column types" )
328
383
public void testColumnsTextualTypes () throws SQLException {
@@ -335,17 +390,17 @@ public void testColumnsTextualTypes() throws SQLException {
335
390
) {
336
391
ResultSetMetaData rsMeta = resultSet .getMetaData ();
337
392
338
- assertEquals (Types .INTEGER , rsMeta .getColumnType (1 ));
393
+ assertEquals (Types .BIGINT , rsMeta .getColumnType (1 ));
339
394
assertEquals ("integer" , rsMeta .getColumnTypeName (1 ));
340
- assertEquals ("java.lang.Integer " , rsMeta .getColumnClassName (1 ));
395
+ assertEquals ("java.lang.Long " , rsMeta .getColumnClassName (1 ));
341
396
342
397
assertEquals (Types .VARCHAR , rsMeta .getColumnType (2 ));
343
- assertEquals ("varchar " , rsMeta .getColumnTypeName (2 ));
398
+ assertEquals ("string " , rsMeta .getColumnTypeName (2 ));
344
399
assertEquals ("java.lang.String" , rsMeta .getColumnClassName (2 ));
345
400
346
401
// TEXT and VARCHAR are not distinguishable
347
402
assertEquals (Types .VARCHAR , rsMeta .getColumnType (3 ));
348
- assertEquals ("varchar " , rsMeta .getColumnTypeName (3 ));
403
+ assertEquals ("string " , rsMeta .getColumnTypeName (3 ));
349
404
assertEquals ("java.lang.String" , rsMeta .getColumnClassName (3 ));
350
405
351
406
assertEquals (Types .BINARY , rsMeta .getColumnType (4 ));
0 commit comments