ORDER BY columns are prioritarily *SELECT* columns
as opposed to *table* columns, and notwithstanding HSQLDB 1.8 (our embedded database) bugs. Actually, supporting ORDER BY on non-select (but table) columns is OPTIONAL for DBMSs (but quite common) Change-Id: I6725dfda36b09429a78262bff6f3d3e3dd9032b6
This commit is contained in:
@@ -1868,7 +1868,9 @@ OUString OSQLParseTreeIterator::getUniqueColumnName(const OUString & rColumnName
|
||||
void OSQLParseTreeIterator::setOrderByColumnName(const OUString & rColumnName, OUString & rTableRange, sal_Bool bAscending)
|
||||
{
|
||||
SAL_INFO( "connectivity.parse", "parse Ocke.Janssen@sun.com OSQLParseTreeIterator::setOrderByColumnName" );
|
||||
Reference<XPropertySet> xColumn = findColumn( rColumnName, rTableRange, false );
|
||||
Reference<XPropertySet> xColumn = findSelectColumn( rColumnName );
|
||||
if ( !xColumn.is() )
|
||||
xColumn = findColumn ( rColumnName, rTableRange, false );
|
||||
if ( xColumn.is() )
|
||||
m_aOrderColumns->get().push_back(new OOrderColumn( xColumn, rTableRange, isCaseSensitive(), bAscending ) );
|
||||
else
|
||||
@@ -2045,6 +2047,30 @@ const OSQLParseNode* OSQLParseTreeIterator::getSimpleHavingTree() const
|
||||
return pNode ? pNode->getChild(1) : NULL;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
Reference< XPropertySet > OSQLParseTreeIterator::findSelectColumn( const OUString & rColumnName )
|
||||
{
|
||||
SAL_INFO( "connectivity.parse", "parse lionel@mamane.lu OSQLParseTreeIterator::findSelectColumn" );
|
||||
for ( OSQLColumns::Vector::const_iterator lookupColumn = m_aSelectColumns->get().begin();
|
||||
lookupColumn != m_aSelectColumns->get().end();
|
||||
++lookupColumn )
|
||||
{
|
||||
Reference< XPropertySet > xColumn( *lookupColumn );
|
||||
try
|
||||
{
|
||||
OUString sName, sTableName;
|
||||
xColumn->getPropertyValue( OMetaConnection::getPropMap().getNameByIndex( PROPERTY_ID_NAME ) ) >>= sName;
|
||||
if ( sName == rColumnName )
|
||||
return xColumn;
|
||||
}
|
||||
catch( const Exception& )
|
||||
{
|
||||
DBG_UNHANDLED_EXCEPTION();
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
Reference< XPropertySet > OSQLParseTreeIterator::findColumn( const OUString & rColumnName, OUString & rTableRange, bool _bLookInSubTables )
|
||||
{
|
||||
|
Reference in New Issue
Block a user