connectivity/qa/connectivity/mysql/mysql.cxx            |    6 ++++++
 connectivity/source/drivers/mysqlc/mysqlc_resultset.cxx |    9 ++++++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

New commits:
commit fca928b481e6410967df914ce6dd120edee61805
Author:     Tamas Bunth <tamas.bu...@collabora.co.uk>
AuthorDate: Tue Jan 22 13:06:45 2019 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Tue Jan 22 16:37:56 2019 +0100

    mysqlc: resultset's previous() on first position..
    
    .. should move the cursor backwards to beforeFirst position and return
    false.
    
    Change-Id: Icbb4bed0ea39ea3a0bf375d5616e3ef768fc69d9
    Reviewed-on: https://gerrit.libreoffice.org/66730
    Reviewed-by: Andras Timar <andras.ti...@collabora.com>
    Tested-by: Andras Timar <andras.ti...@collabora.com>

diff --git a/connectivity/qa/connectivity/mysql/mysql.cxx 
b/connectivity/qa/connectivity/mysql/mysql.cxx
index 758f7eb123ff..6c9fb45b7c30 100644
--- a/connectivity/qa/connectivity/mysql/mysql.cxx
+++ b/connectivity/qa/connectivity/mysql/mysql.cxx
@@ -241,6 +241,12 @@ void MysqlTestDriver::testDBPositionChange()
     xResultSet->first();
     CPPUNIT_ASSERT_EQUAL(1, xResultSet->getRow());
 
+    // Now previous should put the cursor to before-first position, but it
+    // should return with false.
+    successPrevious = xResultSet->previous();
+    CPPUNIT_ASSERT(!successPrevious);
+    CPPUNIT_ASSERT_EQUAL(0, xResultSet->getRow());
+
     nUpdateCount = xStatement->executeUpdate("DROP TABLE myTestTable");
     CPPUNIT_ASSERT_EQUAL(0, nUpdateCount); // it's a DDL statement
 }
diff --git a/connectivity/source/drivers/mysqlc/mysqlc_resultset.cxx 
b/connectivity/source/drivers/mysqlc/mysqlc_resultset.cxx
index 079fea40daf7..4633d064ce9a 100644
--- a/connectivity/source/drivers/mysqlc/mysqlc_resultset.cxx
+++ b/connectivity/source/drivers/mysqlc/mysqlc_resultset.cxx
@@ -654,8 +654,15 @@ sal_Bool SAL_CALL OResultSet::previous()
     MutexGuard aGuard(m_aMutex);
     checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
 
-    if (m_nRowPosition <= 0)
+    if (m_nRowPosition == 0)
+    {
+        m_nRowPosition--;
         return false;
+    }
+    else if (m_nRowPosition < 0)
+    {
+        return false;
+    }
 
     m_nRowPosition--;
     return true;
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to