Skip to content

Commit 42a027e

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 7cdb58c commit 42a027e

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
@@ -38,13 +38,16 @@ public abstract class AbstractJdbcIT {
3838
"CREATE TABLE test(id INT PRIMARY KEY, val VARCHAR(100))",
3939
"INSERT INTO test VALUES (1, 'one'), (2, 'two'), (3, 'three')",
4040
"CREATE TABLE test_compound(id1 INT, id2 INT, val VARCHAR(100), PRIMARY KEY (id2, id1))",
41+
"CREATE TABLE test_nulls(id INT PRIMARY KEY, val VARCHAR(100))",
42+
"INSERT INTO test_nulls VALUES (1, 'a'), (2, 'b'), (3, 'c'), (4, NULL), (5, NULL), (6, NULL)",
4143
getCreateTableSQL("test_types", TntSqlType.values())
4244
};
4345

4446
private static String[] cleanSql = new String[] {
4547
"DROP TABLE IF EXISTS test",
4648
"DROP TABLE IF EXISTS test_types",
47-
"DROP TABLE IF EXISTS test_compound"
49+
"DROP TABLE IF EXISTS test_compound",
50+
"DROP TABLE IF EXISTS test_nulls"
4851
};
4952

5053
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

@@ -255,4 +258,12 @@ public void testSupportsResultSetHoldability() throws SQLException {
255258
assertFalse(meta.supportsResultSetHoldability(42));
256259
}
257260

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

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

+28
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static org.junit.jupiter.api.Assertions.assertEquals;
44
import static org.junit.jupiter.api.Assertions.assertFalse;
55
import static org.junit.jupiter.api.Assertions.assertNotNull;
6+
import static org.junit.jupiter.api.Assertions.assertNull;
67
import static org.junit.jupiter.api.Assertions.assertTrue;
78

89
import org.junit.jupiter.api.AfterEach;
@@ -133,4 +134,31 @@ public void testHoldability() throws SQLException {
133134
assertEquals(metaData.getResultSetHoldability(), resultSet.getHoldability());
134135
}
135136

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

0 commit comments

Comments
 (0)