35 :m_pConnection(_pConnection)
36 ,m_bHasSelectionCode(false)
37 ,m_bSelectionFirstTime(true)
51 if (
SQL_ISRULE(pSQLParseNode,select_statement))
53 DBG_ASSERT(pSQLParseNode->
count() >= 4,
"OFILECursor: Error in Parse Tree");
57 if (
SQL_ISRULE(pSelection,scalar_exp_commalist) )
59 for (
size_t i = 0;
i < pSelection->
count();
i++)
62 if ( (
SQL_ISRULE(pColumnRef,set_fct_spec) && pColumnRef->
count() == 4 )
74 pCompiler->setOrigColumns(
m_aCompiler->getOrigColumns());
76 pCompiler->execute( pColumnRef );
79 else if (
SQL_ISRULE(pColumnRef,general_set_fct) && pColumnRef->
count() != 4 )
87 && ( pColumnRef->
count() == 3 )
98 for ( sal_Int32 j=0; j<aColumnNames.getLength(); ++j )
114 for (
auto const&
code : rCodeList)
129 if ( selectionEval.first.is() )
130 bindRow(selectionEval.first->m_aCodeList,_pRow);
157 if ( selectionEval.first.is() )
173 if ( selectionEval.second.is() )
177 if (
nPos <
static_cast< sal_Int32
>( _rColumnMapping.size() ) )
180 selectionEval.second->startSelection( (*_pRow)[
map] );
191 if ( selectionEval.first.is() )
192 selectionEval.first->dispose();
201 if ( selectionEval.first.is() )
202 selectionEval.first->setOrigColumns(rCols);
OSQLParseNode * getChild(sal_uInt32 nPos) const
SQLNodeType getNodeType() const
void bindValue(const OValueRefRow &_pRow)
::rtl::Reference< OPredicateCompiler > m_aCompiler
void setSelectionEvaluationResult(OValueRefRow const &_pRow, const std::vector< sal_Int32 > &_rColumnMapping)
OConnection * m_pConnection
std::vector< TPredicates > m_aSelectionEvaluations
void bindSelectRow(const OValueRefRow &_pRow)
bind the select columns if they contain a function which needs a row value
bool hasRestriction() const
::rtl::Reference< OPredicateInterpreter > m_aInterpreter
std::pair< ::rtl::Reference< OPredicateCompiler >,::rtl::Reference< OPredicateInterpreter > > TPredicates
bool m_bSelectionFirstTime
static void bindRow(OCodeList &rCodeList, const OValueRefRow &_pRow)
static OOperandAttr * createOperandAttr(sal_Int32 _nPos, const css::uno::Reference< css::beans::XPropertySet > &_xCol)
void setOrigColumns(const css::uno::Reference< css::container::XNameAccess > &rCols)
void start(OSQLParseNode const *pSQLParseNode)
bool hasFunctions() const
void bindEvaluationRow(OValueRefRow const &_pRow)
#define DBG_ASSERT(sCon, aError)
std::vector< std::unique_ptr< OCode > > OCodeList
std::map< OUString, rtl::Reference< Entity > > map
#define SQL_ISRULE(pParseNode, eRule)
#define SQL_ISPUNCTUATION(pParseNode, aString)