diff options
Diffstat (limited to 'storage/ndb/src/old_files/client/odbc/common/DiagArea.hpp')
-rw-r--r-- | storage/ndb/src/old_files/client/odbc/common/DiagArea.hpp | 196 |
1 files changed, 0 insertions, 196 deletions
diff --git a/storage/ndb/src/old_files/client/odbc/common/DiagArea.hpp b/storage/ndb/src/old_files/client/odbc/common/DiagArea.hpp deleted file mode 100644 index 79c03de6623..00000000000 --- a/storage/ndb/src/old_files/client/odbc/common/DiagArea.hpp +++ /dev/null @@ -1,196 +0,0 @@ -/* Copyright (C) 2003 MySQL AB - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - -#ifndef ODBC_COMMON_DiagArea_hpp -#define ODBC_COMMON_DiagArea_hpp - -#include <map> -#include <vector> -#include <common/common.hpp> -#include "OdbcData.hpp" - -enum DiagPos { - Diag_pos_undef = 0, - Diag_pos_header, - Diag_pos_status, - Diag_pos_end -}; - -/** - * @class DiagSpec - * @brief Field specification - */ -struct DiagSpec { - DiagPos m_pos; // header or status - int m_id; // SQL_DIAG_ identifier - OdbcData::Type m_type; // data type - unsigned m_handles; // defined for these handle types - // find the spec - static const DiagSpec& find(int id); -}; - -/** - * @class DiagField - * @brief Field identified by an SQL_DIAG_* constant - */ -class DiagField { -public: - DiagField(const DiagSpec& spec, const OdbcData& data); - DiagField(const DiagField& field); - ~DiagField(); - void setData(const OdbcData& data); - const OdbcData& getData(); -private: - const DiagSpec& m_spec; - OdbcData m_data; -}; - -inline -DiagField::DiagField(const DiagSpec& spec, const OdbcData& data) : - m_spec(spec), - m_data(data) -{ -} - -inline -DiagField::DiagField(const DiagField& field) : - m_spec(field.m_spec), - m_data(field.m_data) -{ -} - -inline -DiagField::~DiagField() -{ -} - -inline void -DiagField::setData(const OdbcData& data) -{ - ctx_assert(m_spec.m_type == data.type()); - m_data.setValue(data); -} - -inline const OdbcData& -DiagField::getData() -{ - ctx_assert(m_data.type() != OdbcData::Undef); - return m_data; -} - -/** - * @class DiagRec - * @brief One diagnostic record, a list of fields - */ -class DiagRec { -public: - DiagRec(); - ~DiagRec(); - void setField(int id, const OdbcData& data); - void getField(Ctx& ctx, int id, OdbcData& data); -private: - typedef std::map<int, DiagField> Fields; - Fields m_fields; -}; - -inline -DiagRec::DiagRec() -{ -} - -inline -DiagRec::~DiagRec() -{ -} - -/** - * @class DiagArea - * @brief All records, including header (record 0) - * - * Diagnostic area includes a header (record 0) and zero or more - * status records at positions >= 1. - */ -class DiagArea { -public: - DiagArea(); - ~DiagArea(); - /** - * Get number of status records. - */ - unsigned numStatus(); - /** - * Push new status record. - */ - void pushStatus(); - /** - * Set field in header. - */ - void setHeader(int id, const OdbcData& data); - /** - * Set field in latest status record. The arguments can - * also be plain int, char*, Sqlstate. The NDB and other - * native errors set Sqlstate _IM000 automatically. - */ - void setStatus(int id, const OdbcData& data); - void setStatus(const Sqlstate& state); - void setStatus(const Error& error); - /** - * Convenience methods to push new status record and set - * some common fields in it. Sqlstate is set always. - */ - void pushStatus(const Error& error); - /** - * Get refs to various records. - */ - DiagRec& getHeader(); - DiagRec& getStatus(); - DiagRec& getRecord(unsigned num); - /** - * Get diag values. - */ - void getRecord(Ctx& ctx, unsigned num, int id, OdbcData& data); - /** - * Get or set return code. - */ - SQLRETURN getCode() const; - void setCode(SQLRETURN ret); - /** - * Get "next" record number (0 when no more). - * Used only by the deprecated SQLError function. - */ - unsigned nextRecNumber(); -private: - typedef std::vector<DiagRec> Recs; - Recs m_recs; - SQLRETURN m_code; - unsigned m_recNumber; // for SQLError -}; - -inline SQLRETURN -DiagArea::getCode() const -{ - return m_code; -} - -inline unsigned -DiagArea::nextRecNumber() -{ - if (m_recNumber >= numStatus()) - return 0; - return ++m_recNumber; -} - -#endif |