diff options
Diffstat (limited to 'ndb/src/old_files/client/odbc/common/DataField.hpp')
-rw-r--r-- | ndb/src/old_files/client/odbc/common/DataField.hpp | 446 |
1 files changed, 0 insertions, 446 deletions
diff --git a/ndb/src/old_files/client/odbc/common/DataField.hpp b/ndb/src/old_files/client/odbc/common/DataField.hpp deleted file mode 100644 index 65138df25f1..00000000000 --- a/ndb/src/old_files/client/odbc/common/DataField.hpp +++ /dev/null @@ -1,446 +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_DataField_hpp -#define ODBC_COMMON_DataField_hpp - -#include <NdbApi.hpp> -#include <common/common.hpp> -#include "DataType.hpp" - -/** - * @class SqlSpec - * @brief Specification of data in SQL format - */ -class SqlSpec { -public: - enum Store { - Undef = 0, - Reference = 1, // reference to read-only SqlField of same type - Physical = 2 // stored within or in allocated storage - }; - SqlSpec(); - SqlSpec(const SqlType& sqlType, Store store); - SqlSpec(const SqlSpec& sqlSpec); - SqlSpec(const SqlSpec& sqlSpec, Store store); - const SqlType& sqlType() const; - const Store store() const; - unsigned size() const; -private: - //SqlSpec& operator=(const SqlSpec& sqlSpec); // disallowed - SqlType m_sqlType; - Store m_store; -}; - -/** - * @class ExtSpec - * @brief Specification of data in external format - */ -class ExtSpec { -public: - ExtSpec(); - ExtSpec(const ExtType& extType); - ExtSpec(const ExtSpec& extSpec); - const ExtType& extType() const; - unsigned size() const; - void setValue(const ExtType& extType); -private: - ExtType m_extType; -}; - -/** - * @class LexSpec - * @brief Specification of lexical data - * - * Used only for converting lexical data to SQL data. - */ -class LexSpec { -public: - LexSpec(); - LexSpec(const LexType& lexType); - /** - * Lexical data is represented as string. Following - * converts it to SQL data. - */ - void convert(Ctx& ctx, const BaseString& value, class SqlField& out); -private: - LexType m_lexType; -}; - -// SqlSpec - -inline -SqlSpec::SqlSpec() : - m_store(Undef) -{ -} - -inline -SqlSpec::SqlSpec(const SqlType& sqlType, Store store) : - m_sqlType(sqlType), - m_store(store) -{ -} - -inline -SqlSpec::SqlSpec(const SqlSpec& sqlSpec) : - m_sqlType(sqlSpec.m_sqlType), - m_store(sqlSpec.m_store) -{ -} - -inline -SqlSpec::SqlSpec(const SqlSpec& sqlSpec, Store store) : - m_sqlType(sqlSpec.m_sqlType), - m_store(store) -{ -} - -inline const SqlType& -SqlSpec::sqlType() const -{ - return m_sqlType; -} - -inline const SqlSpec::Store -SqlSpec::store() const -{ - return m_store; -} - -inline unsigned -SqlSpec::size() const -{ - return sqlType().size(); -} - -// ExtSpec - -inline -ExtSpec::ExtSpec() -{ -} - -inline -ExtSpec::ExtSpec(const ExtType& extType) : - m_extType(extType) -{ -} - -inline -ExtSpec::ExtSpec(const ExtSpec& extSpec) : - m_extType(extSpec.m_extType) -{ -} - -inline const ExtType& -ExtSpec::extType() const -{ - return m_extType; -} - -inline unsigned -ExtSpec::size() const -{ - return m_extType.size(); -} - -inline void -ExtSpec::setValue(const ExtType& extType) -{ - m_extType = extType; -} - -// LexSpec - -inline -LexSpec::LexSpec(const LexType& lexType) : - m_lexType(lexType) -{ -} - -/** - * @class SqlField - * @brief Sql data field accessor - */ -class SqlField { -public: - SqlField(); - SqlField(const SqlSpec& sqlSpec); - SqlField(const SqlSpec& sqlSpec, const SqlField* sqlField); - SqlField(const SqlField& sqlField); - ~SqlField(); - const SqlSpec& sqlSpec() const; - const void* addr() const; // address of data - void* addr(); - unsigned allocSize() const; - const SqlChar* sqlChar() const; // get - const SqlChar* sqlVarchar(unsigned* length) const; - const SqlChar* sqlBinary() const; - const SqlChar* sqlVarbinary(unsigned* length) const; - SqlSmallint sqlSmallint() const; - SqlInteger sqlInteger() const; - SqlBigint sqlBigint() const; - SqlReal sqlReal() const; - SqlDouble sqlDouble() const; - SqlDatetime sqlDatetime() const; - void sqlChar(const char* value, int length); // set - void sqlChar(const SqlChar* value, int length); - void sqlVarchar(const char* value, int length); - void sqlVarchar(const SqlChar* value, int length); - void sqlBinary(const char* value, int length); - void sqlBinary(const SqlChar* value, int length); - void sqlVarbinary(const char* value, int length); - void sqlVarbinary(const SqlChar* value, int length); - void sqlSmallint(SqlSmallint value); - void sqlInteger(SqlInteger value); - void sqlBigint(SqlBigint value); - void sqlReal(SqlReal value); - void sqlDouble(SqlDouble value); - void sqlDatetime(SqlDatetime value); - bool sqlNull() const; // get and set null - void sqlNull(bool value); - unsigned trim() const; // right trimmed length - void copy(Ctx& ctx, SqlField& out) const; - bool cast(Ctx& ctx, SqlField& out) const; - bool less(const SqlField& sqlField) const; - // application input and output - void copyin(Ctx& ctx, class ExtField& extField); - void copyout(Ctx& ctx, class ExtField& extField) const; - // print for debugging - void print(char* buf, unsigned size) const; - // public for forte6 - //enum { CharSmall = 20 }; -#define SqlField_CharSmall 20 // redhat-6.2 (egcs-2.91.66) -private: - friend class LexSpec; - friend class SqlRow; - void alloc(); // allocate Physical - void alloc(const SqlField& sqlField); - void free(); // free Physical - SqlSpec m_sqlSpec; - union Data { - Data(); - Data(const SqlField* sqlField); - const SqlField* m_sqlField; - // Physical - SqlChar* m_sqlChar; // all char types - SqlChar m_sqlCharSmall[SqlField_CharSmall]; - SqlSmallint m_sqlSmallint; - SqlInteger m_sqlInteger; - SqlBigint m_sqlBigint; - SqlReal m_sqlReal; - SqlDouble m_sqlDouble; - SqlDatetime m_sqlDatetime; - } u_data; - union Null { - Null(); - bool m_nullFlag; - } u_null; -}; - -/** - * @class ExtField - * @brief External data field accessor - */ -class ExtField { -public: - ExtField(); - ExtField(const ExtSpec& extSpec, int fieldId = 0); - ExtField(const ExtSpec& extSpec, SQLPOINTER dataPtr, SQLINTEGER dataLen, SQLINTEGER* indPtr, int fieldId = 0); - ~ExtField(); - const ExtSpec& extSpec() const; - void setValue(SQLPOINTER dataPtr, SQLINTEGER dataLen); - void setValue(const ExtSpec& extSpec, SQLPOINTER dataPtr, SQLINTEGER dataLen, SQLINTEGER* indPtr); - int fieldId() const; - void setPos(int pos); - int getPos() const; -private: - friend class SqlField; - friend class Exec_root; - ExtSpec m_extSpec; - SQLPOINTER m_dataPtr; // data buffer - SQLINTEGER m_dataLen; // data buffer length - SQLINTEGER* m_indPtr; // null indicator or length - int m_fieldId; // field id > 0 for error messages - int m_pos; // output position for SQLGetData (if != -1) -}; - -inline int -ExtField::fieldId() const -{ - return m_fieldId; -} - -inline void -ExtField::setPos(int pos) -{ - m_pos = pos; -} - -inline int -ExtField::getPos() const -{ - return m_pos; -} - -// SqlField - -inline -SqlField::SqlField() -{ -} - -inline -SqlField::SqlField(const SqlSpec& sqlSpec) : - m_sqlSpec(sqlSpec) -{ - if (m_sqlSpec.store() == SqlSpec::Physical) - alloc(); -} - -inline -SqlField::SqlField(const SqlSpec& sqlSpec, const SqlField* sqlField) : - m_sqlSpec(sqlSpec), - u_data(sqlField) -{ - ctx_assert(m_sqlSpec.store() == SqlSpec::Reference); -} - -inline -SqlField::SqlField(const SqlField& sqlField) : - m_sqlSpec(sqlField.m_sqlSpec), - u_data(sqlField.u_data), - u_null(sqlField.u_null) -{ - if (m_sqlSpec.store() == SqlSpec::Physical) - alloc(sqlField); -} - -inline -SqlField::Data::Data() -{ -} - -inline -SqlField::Data::Data(const SqlField* sqlField) -{ - m_sqlField = sqlField; -} - -inline -SqlField::Null::Null() -{ -} - -inline -SqlField::~SqlField() -{ - if (m_sqlSpec.store() == SqlSpec::Physical) - free(); -} - -inline const SqlSpec& -SqlField::sqlSpec() const -{ - return m_sqlSpec; -} - -inline void -SqlField::sqlChar(const char* value, int length) -{ - sqlChar(reinterpret_cast<const SqlChar*>(value), length); -} - -inline void -SqlField::sqlVarchar(const char* value, int length) -{ - sqlVarchar(reinterpret_cast<const SqlChar*>(value), length); -} - -inline void -SqlField::sqlBinary(const char* value, int length) -{ - sqlBinary(reinterpret_cast<const SqlChar*>(value), length); -} - -inline void -SqlField::sqlVarbinary(const char* value, int length) -{ - sqlVarbinary(reinterpret_cast<const SqlChar*>(value), length); -} - -// ExtField - -inline -ExtField::ExtField() : - m_dataPtr(0), - m_dataLen(0), - m_indPtr(0), - m_pos(-1) -{ -} - -inline -ExtField::ExtField(const ExtSpec& extSpec, int fieldId) : - m_extSpec(extSpec), - m_dataPtr(0), - m_dataLen(0), - m_indPtr(0), - m_fieldId(fieldId), - m_pos(-1) -{ -} - -inline -ExtField::ExtField(const ExtSpec& extSpec, SQLPOINTER dataPtr, SQLINTEGER dataLen, SQLINTEGER* indPtr, int fieldId) : - m_extSpec(extSpec), - m_dataPtr(dataPtr), - m_dataLen(dataLen), - m_indPtr(indPtr), - m_fieldId(fieldId), - m_pos(-1) -{ -} - -inline -ExtField::~ExtField() -{ -} - -inline const ExtSpec& -ExtField::extSpec() const -{ - return m_extSpec; -} - -inline void -ExtField::setValue(SQLPOINTER dataPtr, SQLINTEGER dataLen) -{ - m_dataPtr = dataPtr; - m_dataLen = dataLen; -} - -inline void -ExtField::setValue(const ExtSpec& extSpec, SQLPOINTER dataPtr, SQLINTEGER dataLen, SQLINTEGER* indPtr) -{ - m_extSpec.setValue(extSpec.extType()); - m_dataPtr = dataPtr; - m_dataLen = dataLen; - m_indPtr = indPtr; -} - -#endif |