summaryrefslogtreecommitdiff
path: root/connectivity
diff options
context:
space:
mode:
authorLionel Elie Mamane <lionel@mamane.lu>2018-12-18 22:04:18 +0100
committerCaolán McNamara <caolanm@redhat.com>2018-12-19 22:10:44 +0100
commit2f793336df474740ca5fb0703ae1f7d5febdbff4 (patch)
treef474e4e473c558dca23a9ac5a5858b05dfa6a8f2 /connectivity
parentea21a1d76ee02b29ca9d77cbdb4f5b2b3344ea11 (diff)
postgresql: correctly implement XMultipleResults interface
note that we implement it in a very limited way, since we will always return only a single result. Change-Id: Idc7927d1a6896b78f6de8627ba857982821ac629 Reviewed-on: https://gerrit.libreoffice.org/65381 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'connectivity')
-rw-r--r--connectivity/source/drivers/postgresql/pq_preparedstatement.cxx4
-rw-r--r--connectivity/source/drivers/postgresql/pq_statement.cxx9
2 files changed, 13 insertions, 0 deletions
diff --git a/connectivity/source/drivers/postgresql/pq_preparedstatement.cxx b/connectivity/source/drivers/postgresql/pq_preparedstatement.cxx
index 865222cbcc83..a976d7e3dfc4 100644
--- a/connectivity/source/drivers/postgresql/pq_preparedstatement.cxx
+++ b/connectivity/source/drivers/postgresql/pq_preparedstatement.cxx
@@ -741,6 +741,10 @@ sal_Int32 PreparedStatement::getUpdateCount( )
}
sal_Bool PreparedStatement::getMoreResults( )
{
+ Reference< XCloseable > lastResultSet = m_lastResultset;
+ if( lastResultSet.is() )
+ lastResultSet->close();
+ m_multipleResultUpdateCount = -1;
return false;
}
diff --git a/connectivity/source/drivers/postgresql/pq_statement.cxx b/connectivity/source/drivers/postgresql/pq_statement.cxx
index 17276c94925f..d7357d2fa8fe 100644
--- a/connectivity/source/drivers/postgresql/pq_statement.cxx
+++ b/connectivity/source/drivers/postgresql/pq_statement.cxx
@@ -938,6 +938,15 @@ sal_Int32 Statement::getUpdateCount( )
sal_Bool Statement::getMoreResults( )
{
+ // The PostgreSQL C interface always returns a single result,
+ // so we will never have multiple ones.
+ // Implicitly close the open resultset (if any) as per spec,
+ // and setup to signal "no more result, neither as resultset,
+ // nor as update count".
+ Reference< XCloseable > lastResultSetHolder = m_lastResultset;
+ if( lastResultSetHolder.is() )
+ lastResultSetHolder->close();
+ m_multipleResultUpdateCount = -1;
return false;
}