connectivity/inc/connectivity/sqliterator.hxx | 14 +++++++------- connectivity/source/parse/sqliterator.cxx | 15 +++++++++------ 2 files changed, 16 insertions(+), 13 deletions(-)
New commits: commit c9a40d21fa4f657ae52d2765d284d12ccbe51c4f Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Tue Dec 11 11:04:22 2012 +0100 When parsing does not give a table name, take it from the column Change-Id: Ie8a2c7e473d717cc22c51205dd8cdc59934de8b1 diff --git a/connectivity/inc/connectivity/sqliterator.hxx b/connectivity/inc/connectivity/sqliterator.hxx index 82f8505..5da60c2 100644 --- a/connectivity/inc/connectivity/sqliterator.hxx +++ b/connectivity/inc/connectivity/sqliterator.hxx @@ -69,7 +69,7 @@ namespace connectivity ::std::auto_ptr< OSQLParseTreeIteratorImpl > m_pImpl; - void traverseParameter(const OSQLParseNode* _pParseNode,const OSQLParseNode* _pColumnRef,const ::rtl::OUString& _aColumnName,const ::rtl::OUString& _aTableRange, const ::rtl::OUString& _rColumnAlias); + void traverseParameter(const OSQLParseNode* _pParseNode,const OSQLParseNode* _pColumnRef,const ::rtl::OUString& _aColumnName, ::rtl::OUString& _aTableRange, const ::rtl::OUString& _rColumnAlias); // inserts a table into the map void traverseOneTableName( OSQLTables& _rTables,const OSQLParseNode * pTableName, const ::rtl::OUString & rTableRange ); void traverseORCriteria(OSQLParseNode * pSearchCondition); @@ -92,25 +92,25 @@ namespace connectivity @param rColumnName the column name to look for @param rTableRange - the table alias name + the table alias name; if empty, look in all tables @return the desired column object, or <NULL/> if no such column could be found */ static ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > findColumn( - const OSQLTables& _rTables, const ::rtl::OUString & rColumnName, const ::rtl::OUString & rTableRange ); + const OSQLTables& _rTables, const ::rtl::OUString & rColumnName, ::rtl::OUString & rTableRange ); /** finds a column with a given name, belonging to a given table @param rColumnName the column name to look for @param rTableRange - the table alias name + the table alias name; if empty, look in all tables @param _bLookInSubTables <TRUE/> if and only if not only our direct tables, but also our sub tables (from sub selects) should be searched @return */ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > findColumn( - const ::rtl::OUString & rColumnName, const ::rtl::OUString & rTableRange, bool _bLookInSubTables ); + const ::rtl::OUString & rColumnName, ::rtl::OUString & rTableRange, bool _bLookInSubTables ); protected: void setSelectColumnName(::rtl::Reference<OSQLColumns>& _rColumns,const ::rtl::OUString & rColumnName,const ::rtl::OUString & rColumnAlias, const ::rtl::OUString & rTableRange,sal_Bool bFkt=sal_False,sal_Int32 _nType = com::sun::star::sdbc::DataType::VARCHAR,sal_Bool bAggFkt=sal_False); @@ -320,8 +320,8 @@ namespace connectivity */ void impl_getQueryParameterColumns( const OSQLTable& _rQuery ); - void setOrderByColumnName(const ::rtl::OUString & rColumnName, const ::rtl::OUString & rTableRange, sal_Bool bAscending); - void setGroupByColumnName(const ::rtl::OUString & rColumnName, const ::rtl::OUString & rTableRange); + void setOrderByColumnName(const ::rtl::OUString & rColumnName, ::rtl::OUString & rTableRange, sal_Bool bAscending); + void setGroupByColumnName(const ::rtl::OUString & rColumnName, ::rtl::OUString & rTableRange); private: /** appends an SQLException corresponding to the given error code to our error collection diff --git a/connectivity/source/parse/sqliterator.cxx b/connectivity/source/parse/sqliterator.cxx index 7d91655..d2a63e2 100644 --- a/connectivity/source/parse/sqliterator.cxx +++ b/connectivity/source/parse/sqliterator.cxx @@ -1441,7 +1441,7 @@ void OSQLParseTreeIterator::traverseANDCriteria(OSQLParseNode * pSearchCondition void OSQLParseTreeIterator::traverseParameter(const OSQLParseNode* _pParseNode ,const OSQLParseNode* _pParentNode ,const ::rtl::OUString& _aColumnName - ,const ::rtl::OUString& _aTableRange + ,::rtl::OUString& _aTableRange ,const ::rtl::OUString& _rColumnAlias) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "parse", "ocke.jans...@sun.com", "OSQLParseTreeIterator::traverseParameter" ); @@ -1908,7 +1908,7 @@ void OSQLParseTreeIterator::setSelectColumnName(::rtl::Reference<OSQLColumns>& _ return aAlias; } //----------------------------------------------------------------------------- -void OSQLParseTreeIterator::setOrderByColumnName(const ::rtl::OUString & rColumnName, const ::rtl::OUString & rTableRange,sal_Bool bAscending) +void OSQLParseTreeIterator::setOrderByColumnName(const ::rtl::OUString & rColumnName, ::rtl::OUString & rTableRange, sal_Bool bAscending) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "parse", "ocke.jans...@sun.com", "OSQLParseTreeIterator::setOrderByColumnName" ); Reference<XPropertySet> xColumn = findColumn( rColumnName, rTableRange, false ); @@ -1930,7 +1930,7 @@ void OSQLParseTreeIterator::setOrderByColumnName(const ::rtl::OUString & rColumn #endif } //----------------------------------------------------------------------------- -void OSQLParseTreeIterator::setGroupByColumnName(const ::rtl::OUString & rColumnName, const ::rtl::OUString & rTableRange) +void OSQLParseTreeIterator::setGroupByColumnName(const ::rtl::OUString & rColumnName, ::rtl::OUString & rTableRange) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "parse", "ocke.jans...@sun.com", "OSQLParseTreeIterator::setGroupByColumnName" ); Reference<XPropertySet> xColumn = findColumn( rColumnName, rTableRange, false ); @@ -2089,7 +2089,7 @@ const OSQLParseNode* OSQLParseTreeIterator::getSimpleHavingTree() const } // ----------------------------------------------------------------------------- -Reference< XPropertySet > OSQLParseTreeIterator::findColumn( const ::rtl::OUString & rColumnName, const ::rtl::OUString & rTableRange, bool _bLookInSubTables ) +Reference< XPropertySet > OSQLParseTreeIterator::findColumn( const ::rtl::OUString & rColumnName, ::rtl::OUString & rTableRange, bool _bLookInSubTables ) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "parse", "ocke.jans...@sun.com", "OSQLParseTreeIterator::findColumn" ); Reference< XPropertySet > xColumn = findColumn( *m_pImpl->m_pTables, rColumnName, rTableRange ); @@ -2099,7 +2099,7 @@ Reference< XPropertySet > OSQLParseTreeIterator::findColumn( const ::rtl::OUStri } // ----------------------------------------------------------------------------- -Reference< XPropertySet > OSQLParseTreeIterator::findColumn(const OSQLTables& _rTables,const ::rtl::OUString & rColumnName, const ::rtl::OUString & rTableRange) +Reference< XPropertySet > OSQLParseTreeIterator::findColumn(const OSQLTables& _rTables, const ::rtl::OUString & rColumnName, ::rtl::OUString & rTableRange) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "parse", "ocke.jans...@sun.com", "OSQLParseTreeIterator::findColumn" ); Reference< XPropertySet > xColumn; @@ -2115,7 +2115,7 @@ Reference< XPropertySet > OSQLParseTreeIterator::findColumn(const OSQLTables& _r } if ( !xColumn.is() ) { - OSQLTables::const_iterator aEnd = _rTables.end(); + const OSQLTables::const_iterator aEnd = _rTables.end(); for(OSQLTables::const_iterator aIter = _rTables.begin(); aIter != aEnd; ++aIter) { if ( aIter->second.is() ) @@ -2124,6 +2124,9 @@ Reference< XPropertySet > OSQLParseTreeIterator::findColumn(const OSQLTables& _r if( xColumns.is() && xColumns->hasByName(rColumnName) && (xColumns->getByName(rColumnName) >>= xColumn) ) { OSL_ENSURE(xColumn.is(),"Column isn't a propertyset!"); + // Cannot take "rTableRange = aIter->first" because that is the fully composed name + // that is, catalogName.schemaName.tableName + rTableRange = getString(xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TABLENAME))); break; // This column must only exits once } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits