summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Nabet <serval2412@yahoo.fr>2018-04-10 07:30:38 +0200
committerJulien Nabet <serval2412@yahoo.fr>2018-04-10 23:55:59 +0200
commitdc823f5fa4a5d2eca56297b9045e5962536c00f9 (patch)
treeb187ec65f6d0b65fadb00be2137cc110ac7ba2a3
parent508013d799358bb1c92b5cfea5257fe53c695cee (diff)
tdf#116890: make unique column names in prepared statement
...like we do resultset. Thanks to Lionel for this solution Change-Id: I44f307cd6bddf76716d7c73b8783070abe43bdf3 Reviewed-on: https://gerrit.libreoffice.org/52662 Reviewed-by: Lionel Elie Mamane <lionel@mamane.lu> Tested-by: Jenkins <ci@libreoffice.org>
-rw-r--r--dbaccess/source/core/api/preparedstatement.cxx7
1 files changed, 7 insertions, 0 deletions
diff --git a/dbaccess/source/core/api/preparedstatement.cxx b/dbaccess/source/core/api/preparedstatement.cxx
index 7080fe32b087..69e5138d689a 100644
--- a/dbaccess/source/core/api/preparedstatement.cxx
+++ b/dbaccess/source/core/api/preparedstatement.cxx
@@ -26,6 +26,7 @@
#include <comphelper/property.hxx>
#include <comphelper/sequence.hxx>
+#include <connectivity/dbtools.hxx>
#include <cppuhelper/supportsservice.hxx>
#include <cppuhelper/queryinterface.hxx>
#include <cppuhelper/typeprovider.hxx>
@@ -158,6 +159,12 @@ Reference< css::container::XNameAccess > OPreparedStatement::getColumns()
// retrieve the name of the column
OUString aName = xMetaData->getColumnName(i + 1);
OResultColumn* pColumn = new OResultColumn(xMetaData, i + 1, xDBMeta);
+ // don't silently assume that the name is unique - preparedStatement implementations
+ // are allowed to return duplicate names, but we are required to have
+ // unique column names
+ if ( m_pColumns->hasByName( aName ) )
+ aName = ::dbtools::createUniqueName( m_pColumns.get(), aName );
+
m_pColumns->append(aName, pColumn);
}
}