Skip to content

Commit e688761

Browse files
committed
Add support for nullsAreSorted* methods group
Add support for nullsAreSortedLow as a default sorting which is provided by Tarantool DB. Fixes: #120
1 parent 06755d5 commit e688761

File tree

4 files changed

+47
-5
lines changed

4 files changed

+47
-5
lines changed

src/main/java/org/tarantool/jdbc/SQLDatabaseMetadata.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -80,22 +80,22 @@ public boolean isReadOnly() throws SQLException {
8080

8181
@Override
8282
public boolean nullsAreSortedHigh() throws SQLException {
83-
return true;
83+
return false;
8484
}
8585

8686
@Override
8787
public boolean nullsAreSortedLow() throws SQLException {
88-
return !nullsAreSortedHigh();
88+
return true;
8989
}
9090

9191
@Override
9292
public boolean nullsAreSortedAtStart() throws SQLException {
93-
return true;
93+
return false;
9494
}
9595

9696
@Override
9797
public boolean nullsAreSortedAtEnd() throws SQLException {
98-
return !nullsAreSortedAtStart();
98+
return false;
9999
}
100100

101101
@Override

src/test/java/org/tarantool/jdbc/AbstractJdbcIT.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,16 @@ public abstract class AbstractJdbcIT {
3737
"CREATE TABLE test(id INT PRIMARY KEY, val VARCHAR(100))",
3838
"INSERT INTO test VALUES (1, 'one'), (2, 'two'), (3, 'three')",
3939
"CREATE TABLE test_compound(id1 INT, id2 INT, val VARCHAR(100), PRIMARY KEY (id2, id1))",
40+
"CREATE TABLE test_nulls(id INT PRIMARY KEY, val VARCHAR(100))",
41+
"INSERT INTO test_nulls VALUES (1, 'a'), (2, 'b'), (3, 'c'), (4, NULL), (5, NULL), (6, NULL)",
4042
getCreateTableSQL("test_types", TntSqlType.values())
4143
};
4244

4345
private static String[] cleanSql = new String[] {
4446
"DROP TABLE IF EXISTS test",
4547
"DROP TABLE IF EXISTS test_types",
46-
"DROP TABLE IF EXISTS test_compound"
48+
"DROP TABLE IF EXISTS test_compound",
49+
"DROP TABLE IF EXISTS test_nulls"
4750
};
4851

4952
protected static TarantoolControl control;

src/test/java/org/tarantool/jdbc/JdbcDatabaseMetaDataIT.java

+11
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ public void testGetAllTables() throws SQLException {
5050
assertTrue(rs.next());
5151
assertEquals("TEST_COMPOUND", rs.getString("TABLE_NAME"));
5252

53+
assertTrue(rs.next());
54+
assertEquals("TEST_NULLS", rs.getString("TABLE_NAME"));
55+
5356
assertTrue(rs.next());
5457
assertEquals("TEST_TYPES", rs.getString("TABLE_NAME"));
5558

@@ -254,4 +257,12 @@ public void testSupportsResultSetHoldability() throws SQLException {
254257
assertFalse(meta.supportsResultSetHoldability(42));
255258
}
256259

260+
@Test
261+
public void testNullsAreSortedProperties() throws SQLException {
262+
assertTrue(meta.nullsAreSortedLow());
263+
assertFalse(meta.nullsAreSortedHigh());
264+
265+
assertFalse(meta.nullsAreSortedAtStart());
266+
assertFalse(meta.nullsAreSortedAtEnd());
267+
}
257268
}

src/test/java/org/tarantool/jdbc/JdbcResultSetIT.java

+28
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import static org.junit.jupiter.api.Assertions.assertEquals;
1414
import static org.junit.jupiter.api.Assertions.assertFalse;
1515
import static org.junit.jupiter.api.Assertions.assertNotNull;
16+
import static org.junit.jupiter.api.Assertions.assertNull;
1617
import static org.junit.jupiter.api.Assertions.assertTrue;
1718

1819
public class JdbcResultSetIT extends JdbcTypesIT {
@@ -132,4 +133,31 @@ public void testHoldability() throws SQLException {
132133
assertEquals(metaData.getResultSetHoldability(), resultSet.getHoldability());
133134
}
134135

136+
@Test
137+
public void testNullsSortingAsc() throws SQLException {
138+
ResultSet resultSet = stmt.executeQuery("SELECT * FROM test_nulls ORDER BY val ASC");
139+
for (int i = 0; i < 3; i++) {
140+
assertTrue(resultSet.next());
141+
assertNull(resultSet.getString(2));
142+
}
143+
for (int i = 0; i < 3; i++) {
144+
assertTrue(resultSet.next());
145+
assertNotNull(resultSet.getString(2));
146+
}
147+
assertFalse(resultSet.next());
148+
}
149+
150+
@Test
151+
public void testNullsSortingDesc() throws SQLException {
152+
ResultSet resultSet = stmt.executeQuery("SELECT * FROM test_nulls ORDER BY val DESC");
153+
for (int i = 0; i < 3; i++) {
154+
assertTrue(resultSet.next());
155+
assertNotNull(resultSet.getString(2));
156+
}
157+
for (int i = 0; i < 3; i++) {
158+
assertTrue(resultSet.next());
159+
assertNull(resultSet.getString(2));
160+
}
161+
assertFalse(resultSet.next());
162+
}
135163
}

0 commit comments

Comments
 (0)