summaryrefslogtreecommitdiff
path: root/ndb/src/old_files/client/odbc/handles/HandleBase.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ndb/src/old_files/client/odbc/handles/HandleBase.cpp')
-rw-r--r--ndb/src/old_files/client/odbc/handles/HandleBase.cpp162
1 files changed, 0 insertions, 162 deletions
diff --git a/ndb/src/old_files/client/odbc/handles/HandleBase.cpp b/ndb/src/old_files/client/odbc/handles/HandleBase.cpp
deleted file mode 100644
index 27379cdc3f8..00000000000
--- a/ndb/src/old_files/client/odbc/handles/HandleBase.cpp
+++ /dev/null
@@ -1,162 +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 */
-
-#include "HandleBase.hpp"
-
-HandleBase::~HandleBase()
-{
- delete m_ctx;
- m_ctx = 0;
-}
-
-void
-HandleBase::saveCtx(Ctx& ctx)
-{
- delete m_ctx;
- m_ctx = &ctx;
-}
-
-// get diagnostics
-
-void
-HandleBase::sqlGetDiagField(Ctx& ctx, SQLSMALLINT recNumber, SQLSMALLINT diagIdentifier, SQLPOINTER diagInfo, SQLSMALLINT bufferLength, SQLSMALLINT* stringLength)
-{
- const DiagSpec& spec = DiagSpec::find(diagIdentifier);
- if (spec.m_pos == Diag_pos_end) {
- ctx.setCode(SQL_ERROR);
- return;
- }
- const bool header = (spec.m_pos == Diag_pos_header);
- const bool status = (spec.m_pos == Diag_pos_status);
- ctx_assert(header || status);
- if (! (spec.m_handles & odbcHandle())) {
- ctx.setCode(SQL_ERROR);
- return;
- }
- if (header) {
- recNumber = 0; // ignored for header fields, so fix it
- if (m_ctx == 0) {
- if (diagIdentifier == SQL_DIAG_NUMBER) {
- SQLINTEGER n = 0;
- OdbcData data(n);
- data.copyout(ctx, diagInfo, bufferLength, 0, stringLength);
- return;
- }
- if (diagIdentifier == SQL_DIAG_RETURNCODE) {
- SQLSMALLINT n = 0;
- OdbcData data(n);
- data.copyout(ctx, diagInfo, bufferLength, 0, stringLength);
- return;
- }
- return;
- }
- }
- if (status) {
- if (recNumber <= 0) {
- ctx.setCode(SQL_ERROR);
- return;
- }
- if (m_ctx == 0) {
- if ((unsigned)recNumber > 0) {
- ctx.setCode(SQL_NO_DATA);
- return;
- }
- return;
- }
- if ((unsigned)recNumber > m_ctx->diagArea().numStatus()) {
- ctx.setCode(SQL_NO_DATA);
- return;
- }
- }
- OdbcData data;
- ctx_assert(m_ctx != 0);
- m_ctx->diagArea().getRecord(ctx, recNumber, diagIdentifier, data);
- if (data.type() != OdbcData::Undef)
- data.copyout(ctx, diagInfo, bufferLength, 0, stringLength);
-}
-
-void
-HandleBase::sqlGetDiagRec(Ctx& ctx, SQLSMALLINT recNumber, SQLCHAR* sqlstate, SQLINTEGER* nativeError, SQLCHAR* messageText, SQLSMALLINT bufferLength, SQLSMALLINT* textLength)
-{
- sqlGetDiagField(ctx, recNumber, SQL_DIAG_SQLSTATE, static_cast<SQLPOINTER>(sqlstate), 5 + 1, 0);
- sqlGetDiagField(ctx, recNumber, SQL_DIAG_NATIVE, static_cast<SQLPOINTER>(nativeError), -1, 0);
- sqlGetDiagField(ctx, recNumber, SQL_DIAG_MESSAGE_TEXT, static_cast<SQLPOINTER>(messageText), bufferLength, textLength);
-}
-
-void
-HandleBase::sqlError(Ctx& ctx, SQLCHAR* sqlstate, SQLINTEGER* nativeError, SQLCHAR* messageText, SQLSMALLINT bufferLength, SQLSMALLINT* textLength)
-{
- if (m_ctx == 0) {
- ctx.setCode(SQL_NO_DATA);
- return;
- }
- const SQLSMALLINT recNumber = m_ctx->diagArea().nextRecNumber();
- if (recNumber == 0) {
- ctx.setCode(SQL_NO_DATA);
- return;
- }
- sqlGetDiagField(ctx, recNumber, SQL_DIAG_SQLSTATE, static_cast<SQLPOINTER>(sqlstate), 5 + 1, 0);
- sqlGetDiagField(ctx, recNumber, SQL_DIAG_NATIVE, static_cast<SQLPOINTER>(nativeError), -1, 0);
- sqlGetDiagField(ctx, recNumber, SQL_DIAG_MESSAGE_TEXT, static_cast<SQLPOINTER>(messageText), bufferLength, textLength);
-}
-
-// common code for attributes
-
-void
-HandleBase::baseSetHandleAttr(Ctx& ctx, AttrArea& attrArea, SQLINTEGER attribute, SQLPOINTER value, SQLINTEGER stringLength)
-{
- const AttrSpec& spec = attrArea.findSpec(attribute);
- if (spec.m_mode == Attr_mode_undef) { // not found
- ctx.pushStatus(Sqlstate::_HY092, Error::Gen, "undefined attribute id %d", (int)attribute);
- return;
- }
- if (spec.m_mode == Attr_mode_readonly) { // read only
- ctx.pushStatus(Sqlstate::_HY092, Error::Gen, "read-only attribute id %d", (int)attribute);
- return;
- }
- OdbcData data;
- data.copyin(ctx, spec.m_type, value, stringLength);
- if (! ctx.ok())
- return;
- attrArea.setAttr(ctx, attribute, data);
-}
-
-void
-HandleBase::baseGetHandleAttr(Ctx& ctx, AttrArea& attrArea, SQLINTEGER attribute, SQLPOINTER value, SQLINTEGER bufferLength, SQLINTEGER* stringLength)
-{
- const AttrSpec& spec = attrArea.findSpec(attribute);
- if (spec.m_mode == Attr_mode_undef) { // not found
- ctx.pushStatus(Sqlstate::_HY092, Error::Gen, "undefined attribute id %d", (int)attribute);
- return;
- }
- OdbcData data;
- attrArea.getAttr(ctx, attribute, data);
- if (! ctx.ok())
- return;
- data.copyout(ctx, value, bufferLength, stringLength);
-}
-
-void
-HandleBase::baseSetHandleOption(Ctx& ctx, AttrArea& attrArea, SQLUSMALLINT option, SQLUINTEGER value)
-{
- baseSetHandleAttr(ctx, attrArea, static_cast<SQLINTEGER>(option), reinterpret_cast<SQLPOINTER>(value), 0);
-}
-
-void
-HandleBase::baseGetHandleOption(Ctx& ctx, AttrArea& attrArea, SQLUSMALLINT option, SQLPOINTER value)
-{
- baseGetHandleAttr(ctx, attrArea, static_cast<SQLINTEGER>(option), value, SQL_NTS, 0);
-}