1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #include "file/FCatalog.hxx"
21 #include "file/fcomp.hxx"
22 #include "file/fanalyzer.hxx"
23 #include "file/FResultSet.hxx"
24 #include "file/FPreparedStatement.hxx"
25 #include <connectivity/FValue.hxx>
26 #include <tools/debug.hxx>
27 #include "TKeyValue.hxx"
29 using namespace connectivity
;
30 using namespace connectivity::file
;
32 void OFileCatalog::refreshViews()
34 void OFileCatalog::refreshGroups()
36 void OFileCatalog::refreshUsers()
40 OPredicateInterpreter::~OPredicateInterpreter()
42 while(!m_aStack
.empty())
44 delete m_aStack
.top();
50 void OPredicateCompiler::Clean()
52 for(OCodeList::reverse_iterator aIter
= m_aCodeList
.rbegin(); aIter
!= m_aCodeList
.rend();++aIter
)
59 void OSQLAnalyzer::bindParameterRow(OValueRefRow
& _pRow
)
61 OCodeList
& rCodeList
= m_aCompiler
->m_aCodeList
;
62 for(OCodeList::iterator aIter
= rCodeList
.begin(); aIter
!= rCodeList
.end();++aIter
)
64 OOperandParam
* pParam
= PTR_CAST(OOperandParam
,(*aIter
));
66 pParam
->bindValue(_pRow
);
70 void OPreparedStatement::scanParameter(OSQLParseNode
* pParseNode
,::std::vector
< OSQLParseNode
*>& _rParaNodes
)
72 DBG_ASSERT(pParseNode
!= NULL
,"OResultSet: interner Fehler: ungueltiger ParseNode");
74 // found parameter Name-Rule?
75 if (SQL_ISRULE(pParseNode
,parameter
))
77 DBG_ASSERT(pParseNode
->count() >= 1,"OResultSet: Parse Tree fehlerhaft");
78 DBG_ASSERT(pParseNode
->getChild(0)->getNodeType() == SQL_NODE_PUNCTUATION
,"OResultSet: Parse Tree fehlerhaft");
80 _rParaNodes
.push_back(pParseNode
);
81 // Further descend not nessesary
85 // Further descend in Parse Tree
86 for (sal_uInt32 i
= 0; i
< pParseNode
->count(); i
++)
87 scanParameter(pParseNode
->getChild(i
),_rParaNodes
);
90 OKeyValue
* OResultSet::GetOrderbyKeyValue(OValueRefRow
& _rRow
)
92 sal_uInt32 nBookmarkValue
= std::abs((sal_Int32
)(_rRow
->get())[0]->getValue());
94 OKeyValue
* pKeyValue
= OKeyValue::createKeyValue((sal_uInt32
)nBookmarkValue
);
96 ::std::vector
<sal_Int32
>::iterator aIter
= m_aOrderbyColumnNumber
.begin();
97 for (;aIter
!= m_aOrderbyColumnNumber
.end(); ++aIter
)
99 OSL_ENSURE(*aIter
< static_cast<sal_Int32
>(_rRow
->get().size()),"Invalid index for orderkey values!");
100 pKeyValue
->pushKey(new ORowSetValueDecorator((_rRow
->get())[*aIter
]->getValue()));
107 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */