From 878c36f829fd88cda95ca218a2cf03003f50e53d Mon Sep 17 00:00:00 2001 From: Tamas Bunth Date: Fri, 23 Nov 2018 18:31:37 +0100 Subject: mysqlc: next() should move cursor from Last MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit XResultSet::next() should move cursor when called while cursor is on the last position. It is not documented, but older versions of the mysqlc extension are implemented that way. The cursor goes to the so called afterlast position. Even so, the next() call on the last position should return false. Change-Id: I0fd145c920077151364a6a8c12e05290496b99c8 Reviewed-on: https://gerrit.libreoffice.org/63895 Tested-by: Jenkins Reviewed-by: Tamás Bunth --- connectivity/qa/connectivity/mysql/mysql.cxx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'connectivity/qa') diff --git a/connectivity/qa/connectivity/mysql/mysql.cxx b/connectivity/qa/connectivity/mysql/mysql.cxx index 44488848b5d6..16172439df0f 100644 --- a/connectivity/qa/connectivity/mysql/mysql.cxx +++ b/connectivity/qa/connectivity/mysql/mysql.cxx @@ -173,9 +173,16 @@ void MysqlTestDriver::testIntegerInsertAndQuery() CPPUNIT_ASSERT_MESSAGE("not enough result after query", hasRow); CPPUNIT_ASSERT_EQUAL(i, xRow->getLong(1)); // first and only column } - bool hasRow = xResultSet->next(); - // no more rows + CPPUNIT_ASSERT_MESSAGE("Cursor is not on last position.", + xResultSet->isLast()); // cursor is on last position + CPPUNIT_ASSERT_EQUAL(ROW_COUNT, xResultSet->getRow()); // which is the last position + + bool hasRow = xResultSet->next(); // go to afterlast + // no more rows, next should return false CPPUNIT_ASSERT_MESSAGE("next returns true after last row", !hasRow); + // cursor should be in afterlast position + CPPUNIT_ASSERT_EQUAL(ROW_COUNT + 1, xResultSet->getRow()); + CPPUNIT_ASSERT_MESSAGE("Cursor is not on after-last position.", xResultSet->isAfterLast()); nUpdateCount = xStatement->executeUpdate("DROP TABLE myTestTable"); CPPUNIT_ASSERT_EQUAL(0, nUpdateCount); // it's a DDL statement -- cgit