blob: f22c9c1e02cc8df03f68fb71e77342799ef6909e [file] [log] [blame]
// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (c) 2012-2014 Monty Program Ab
// Copyright (c) 2015-2021 MariaDB Corporation Ab
package org.mariadb.jdbc.integration.resultset;
import static org.junit.jupiter.api.Assertions.*;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.mariadb.jdbc.Statement;
import org.mariadb.jdbc.integration.Common;
public class RowChangeTest extends Common {
@AfterAll
public static void after2() throws SQLException {
sharedConn.createStatement().execute("DROP TABLE ResultSetTest");
}
@BeforeAll
public static void beforeAll2() throws SQLException {
Statement stmt = sharedConn.createStatement();
stmt.execute("DROP TABLE IF EXISTS ResultSetTest");
stmt.execute("CREATE TABLE ResultSetTest (t1 int not null primary key auto_increment, t2 int)");
stmt.execute("INSERT INTO ResultSetTest(t2) values (1),(2),(3),(4),(5),(6),(7),(8)");
}
@Test
public void next() throws SQLException {
Statement stmt = sharedConn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM ResultSetTest");
for (int i = 1; i < 9; i++) {
assertTrue(rs.next());
assertEquals(i, rs.getInt(1));
}
assertFalse(rs.next());
}
@Test
public void isAfterLast() throws SQLException {
Statement stmt = sharedConn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM ResultSetTest");
for (int i = 1; i < 9; i++) {
assertTrue(rs.next());
assertFalse(rs.isAfterLast());
assertEquals(i, rs.getInt(1));
}
assertFalse(rs.isAfterLast());
assertFalse(rs.next());
assertTrue(rs.isAfterLast());
}
@Test
public void isFirst() throws SQLException {
Statement stmt = sharedConn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM ResultSetTest");
assertFalse(rs.isFirst());
assertTrue(rs.next());
assertTrue(rs.isFirst());
while (rs.next()) {
assertFalse(rs.isFirst());
}
assertFalse(rs.isFirst());
rs = stmt.executeQuery("SELECT * FROM ResultSetTest where t1 = -1");
assertFalse(rs.isFirst());
assertFalse(rs.next());
assertFalse(rs.isFirst());
}
@Test
public void isLast() throws SQLException {
Statement stmt = sharedConn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM ResultSetTest");
assertFalse(rs.isLast());
for (int i = 1; i < 8; i++) {
assertTrue(rs.next());
assertFalse(rs.isLast());
assertEquals(i, rs.getInt(1));
}
assertTrue(rs.next());
assertEquals(8, rs.getInt(1));
assertTrue(rs.isLast());
assertFalse(rs.next());
assertFalse(rs.isLast());
rs = stmt.executeQuery("SELECT * FROM ResultSetTest where t1 = -1");
assertFalse(rs.isLast());
assertFalse(rs.next());
assertFalse(rs.isLast());
}
@Test
public void isBeforeFirst() throws SQLException {
Statement stmt = sharedConn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM ResultSetTest");
assertTrue(rs.isBeforeFirst());
while (rs.next()) {
assertFalse(rs.isBeforeFirst());
}
assertFalse(rs.isBeforeFirst());
}
@Test
public void beforeFirst() throws SQLException {
Statement stmt =
sharedConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery("SELECT * FROM ResultSetTest");
assertTrue(rs.isBeforeFirst());
for (int i = 1; i < 9; i++) {
assertTrue(rs.next());
assertEquals(i, rs.getInt(1));
}
assertFalse(rs.next());
assertFalse(rs.isBeforeFirst());
rs.beforeFirst();
assertTrue(rs.isBeforeFirst());
assertTrue(rs.next());
assertEquals(1, rs.getInt(1));
rs = stmt.executeQuery("SELECT * FROM ResultSetTest where t1 = -1");
assertFalse(rs.isBeforeFirst());
}
@Test
public void afterLast() throws SQLException {
Statement stmt =
sharedConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery("SELECT * FROM ResultSetTest");
rs.afterLast();
assertFalse(rs.next());
assertTrue(rs.previous());
assertEquals(8, rs.getInt(1));
}
@Test
public void first() throws SQLException {
Statement stmt =
sharedConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery("SELECT * FROM ResultSetTest");
rs.afterLast();
assertTrue(rs.first());
assertEquals(1, rs.getInt(1));
rs = stmt.executeQuery("SELECT * FROM ResultSetTest WHERE t1 = -1");
assertFalse(rs.first());
}
@Test
public void last() throws SQLException {
Statement stmt =
sharedConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery("SELECT * FROM ResultSetTest");
assertTrue(rs.last());
assertEquals(8, rs.getInt(1));
rs = stmt.executeQuery("SELECT * FROM ResultSetTest WHERE t1 = -1");
assertFalse(rs.last());
}
@Test
public void getRow() throws SQLException {
Statement stmt = sharedConn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM ResultSetTest");
assertEquals(0, rs.getRow());
for (int i = 1; i < 9; i++) {
assertTrue(rs.next());
assertEquals(i, rs.getRow());
}
assertFalse(rs.next());
assertEquals(0, rs.getRow());
rs = stmt.executeQuery("SELECT * FROM ResultSetTest WHERE t1 = -1");
assertEquals(0, rs.getRow());
assertFalse(rs.next());
assertEquals(0, rs.getRow());
}
@Test
public void absolute() throws SQLException {
Statement stmt =
sharedConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery("SELECT * FROM ResultSetTest");
assertFalse(rs.absolute(0));
assertFalse(rs.absolute(9));
assertTrue(rs.absolute(4));
assertEquals(4, rs.getRow());
assertTrue(rs.absolute(5));
assertEquals(5, rs.getRow());
assertFalse(rs.absolute(9));
assertTrue(rs.isAfterLast());
assertTrue(rs.absolute(1));
assertTrue(rs.isFirst());
assertFalse(rs.absolute(-9));
assertFalse(rs.isAfterLast());
assertTrue(rs.isBeforeFirst());
assertTrue(rs.absolute(-8));
assertTrue(rs.isFirst());
assertTrue(rs.absolute(-3));
assertEquals(6, rs.getInt(1));
}
@Test
public void relative() throws SQLException {
Statement stmt =
sharedConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery("SELECT * FROM ResultSetTest");
rs.relative(2);
assertEquals(2, rs.getInt(1));
rs.relative(2);
assertEquals(4, rs.getInt(1));
rs.relative(10);
assertTrue(rs.isAfterLast());
rs.relative(-20);
assertTrue(rs.isBeforeFirst());
rs.relative(5);
assertEquals(5, rs.getInt(1));
}
@Test
public void previous() throws SQLException {
Statement stmt =
sharedConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery("SELECT * FROM ResultSetTest");
rs.afterLast();
for (int i = 8; i > 0; i--) {
assertTrue(rs.previous());
assertEquals(i, rs.getInt(1));
}
assertFalse(rs.previous());
assertFalse(rs.previous());
}
@Test
public void getFetchSize() throws SQLException {
Statement stmt = sharedConn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM ResultSetTest");
assertEquals(0, rs.getFetchSize());
rs.setFetchSize(0);
assertEquals(0, rs.getFetchSize());
}
}