Skip to content

Commit af74a8c

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 d3eb327 commit af74a8c

File tree

4 files changed

+49
-5
lines changed

4 files changed

+49
-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

@@ -272,4 +275,12 @@ public void testSupportGeneratedKeys() throws SQLException {
272275
assertFalse(meta.supportsGetGeneratedKeys());
273276
}
274277

278+
@Test
279+
public void testNullsAreSortedProperties() throws SQLException {
280+
assertTrue(meta.nullsAreSortedLow());
281+
assertFalse(meta.nullsAreSortedHigh());
282+
283+
assertFalse(meta.nullsAreSortedAtStart());
284+
assertFalse(meta.nullsAreSortedAtEnd());
285+
}
275286
}

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

+30
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.assertThrows;
78
import static org.junit.jupiter.api.Assertions.assertTrue;
89

@@ -17,6 +18,7 @@
1718
import java.sql.Statement;
1819

1920
public class JdbcResultSetIT extends JdbcTypesIT {
21+
2022
private Statement stmt;
2123
private DatabaseMetaData metaData;
2224

@@ -148,4 +150,32 @@ public void testIsWrapperFor() throws SQLException {
148150
assertFalse(resultSet.isWrapperFor(Integer.class));
149151
}
150152

153+
@Test
154+
public void testNullsSortingAsc() throws SQLException {
155+
ResultSet resultSet = stmt.executeQuery("SELECT * FROM test_nulls ORDER BY val ASC");
156+
for (int i = 0; i < 3; i++) {
157+
assertTrue(resultSet.next());
158+
assertNull(resultSet.getString(2));
159+
}
160+
for (int i = 0; i < 3; i++) {
161+
assertTrue(resultSet.next());
162+
assertNotNull(resultSet.getString(2));
163+
}
164+
assertFalse(resultSet.next());
165+
}
166+
167+
@Test
168+
public void testNullsSortingDesc() throws SQLException {
169+
ResultSet resultSet = stmt.executeQuery("SELECT * FROM test_nulls ORDER BY val DESC");
170+
for (int i = 0; i < 3; i++) {
171+
assertTrue(resultSet.next());
172+
assertNotNull(resultSet.getString(2));
173+
}
174+
for (int i = 0; i < 3; i++) {
175+
assertTrue(resultSet.next());
176+
assertNull(resultSet.getString(2));
177+
}
178+
assertFalse(resultSet.next());
179+
}
180+
151181
}

0 commit comments

Comments
 (0)