summaryrefslogtreecommitdiff
path: root/connectivity/source/drivers/file/fanalyzer.cxx
diff options
context:
space:
mode:
authorFrank Schoenheit [fs] <frank.schoenheit@sun.com>2010-09-27 14:18:19 +0200
committerFrank Schoenheit [fs] <frank.schoenheit@sun.com>2010-09-27 14:18:19 +0200
commitd764a2871b7042f8cd2eeb7f07b087f5c55efd5b (patch)
tree1bb477ce000cea8f1784c3af19dc1ce0277f18ce /connectivity/source/drivers/file/fanalyzer.cxx
parent12db5269581cb3728c9dd1edfe5fb58f7e696daa (diff)
dba34a: #i105989# proper number of elements in m_aSelectionEvaluation
Diffstat (limited to 'connectivity/source/drivers/file/fanalyzer.cxx')
-rw-r--r--connectivity/source/drivers/file/fanalyzer.cxx21
1 files changed, 20 insertions, 1 deletions
diff --git a/connectivity/source/drivers/file/fanalyzer.cxx b/connectivity/source/drivers/file/fanalyzer.cxx
index d6c5def9c1f8..0885ad0eef4c 100644
--- a/connectivity/source/drivers/file/fanalyzer.cxx
+++ b/connectivity/source/drivers/file/fanalyzer.cxx
@@ -103,7 +103,26 @@ void OSQLAnalyzer::start(OSQLParseNode* pSQLParseNode)
m_pConnection->throwGenericSQLException(STR_QUERY_COMPLEX_COUNT,NULL);
}
else
- m_aSelectionEvaluations.push_back( TPredicates() );
+ {
+ if ( SQL_ISPUNCTUATION( pColumnRef, "*" )
+ || ( SQL_ISRULE( pColumnRef, column_ref )
+ && ( pColumnRef->count() == 3 )
+ && ( pColumnRef->getChild(0)->getNodeType() == SQL_NODE_NAME )
+ && SQL_ISPUNCTUATION( pColumnRef->getChild(1), "." )
+ && SQL_ISRULE( pColumnRef->getChild(2), column_val )
+ && SQL_ISPUNCTUATION( pColumnRef->getChild(2)->getChild(0), "*" )
+ )
+ )
+ {
+ // push one element for each column of our table
+ const Reference< XNameAccess > xColumnNames( m_aCompiler->getOrigColumns() );
+ const Sequence< ::rtl::OUString > aColumnNames( xColumnNames->getElementNames() );
+ for ( sal_Int32 i=0; i<aColumnNames.getLength(); ++i )
+ m_aSelectionEvaluations.push_back( TPredicates() );
+ }
+ else
+ m_aSelectionEvaluations.push_back( TPredicates() );
+ }
}
}
}