/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
// the elements of _rxQueryColumns must have the properties PROPERTY_REALNAME and PROPERTY_TABLENAME void getColumnPositions(const css::uno::Reference< css::container::XNameAccess >& _rxQueryColumns, const css::uno::Sequence< OUString >& _rColumnNames,
std::u16string_view _rsUpdateTableName,
SelectColumnsMetaData& o_rColumnNames /* out */, bool i_bAppendTableName = false);
struct OKeySetValue
{
ORowSetRow m_aRowSetRow;
sal_Int32 m_nUpdateInsert;
rtl::Reference<OPrivateRow> m_xRow;
}; typedef std::map<sal_Int32,OKeySetValue > OKeySetMatrix; typedef std::map<sal_Int32, rtl::Reference<ORowSetValueVector> > OUpdatedParameter; // is used when the source supports keys class OKeySet : public OCacheSet
{ protected:
OKeySetMatrix m_aKeyMap;
OKeySetMatrix::iterator m_aKeyIter;
std::vector< OUString > m_aAutoColumns; // contains all columns which are autoincrement ones
OUpdatedParameter m_aUpdatedParameter; // contains all parameter which have been updated and are needed for refetching
rtl::Reference<ORowSetValueVector> m_aParameterValueForCache;
std::unique_ptr<SelectColumnsMetaData> m_pKeyColumnNames; // contains all key column names
std::unique_ptr<SelectColumnsMetaData> m_pColumnNames; // contains all column names
std::unique_ptr<SelectColumnsMetaData> m_pParameterNames; // contains all parameter names
std::unique_ptr<SelectColumnsMetaData> m_pForeignColumnNames; // contains all column names of the rest
connectivity::OSQLTable m_xTable; // reference to our table // we need a different SQL (statement) for each different combination // of NULLness of key & foreign columns; // each subclause is either "colName = ?" or "colName IS NULL" // (we avoid the standard "colName IS NOT DISTINCT FROM ?" because it is not widely supported) typedef std::map< std::vector<bool>,
css::uno::Reference< css::sdbc::XPreparedStatement > >
vStatements_t;
vStatements_t m_vStatements;
css::uno::Reference< css::sdbc::XPreparedStatement> m_xStatement;
css::uno::Reference< css::sdbc::XResultSet> m_xSet;
css::uno::Reference< css::sdbc::XRow> m_xRow;
css::uno::Reference< css::sdb::XSingleSelectQueryAnalyzer > m_xComposer; const OUString m_sUpdateTableName;
std::vector< OUString > m_aFilterColumns;
sal_Int32& m_rRowCount;
bool m_bRowCountFinal;
/** copies the values from the insert row into the key row * * \param _rInsertRow the row which was inserted * \param _rKeyRow The current key row of the row set. + \param i_nBookmark The bookmark is used to update the parameter
*/ void copyRowValue(const ORowSetRow& _rInsertRow, ORowSetRow const & _rKeyRow, sal_Int32 i_nBookmark);
// returns true if it did any work bool fillAllRows(); bool fetchRow(); void invalidateRow();
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.