diff options
author | unknown <pem@mysql.com> | 2004-05-07 18:52:06 +0200 |
---|---|---|
committer | unknown <pem@mysql.com> | 2004-05-07 18:52:06 +0200 |
commit | e9c1e75b48e5d2c0047a3e88b35667a33d6395e4 (patch) | |
tree | 2f7b236a8721d14f1b398964b898d922fd133131 /ndb/test/odbc/client/SQLDisconnectTest.cpp | |
parent | f3d691a970627f34ed825a9cf7b84520dcdd43b3 (diff) | |
parent | e3211fbd6a59c3dc6a97066c97ab86bfc67d382f (diff) | |
download | mariadb-git-e9c1e75b48e5d2c0047a3e88b35667a33d6395e4.tar.gz |
Merge 4.1 -> 5.0
BitKeeper/etc/ignore:
auto-union
BitKeeper/etc/logging_ok:
auto-union
VC++Files/sql/mysqld.dsp:
Auto merged
configure.in:
Auto merged
include/my_global.h:
Auto merged
include/mysql_com.h:
Auto merged
libmysql/libmysql.c:
Auto merged
libmysqld/Makefile.am:
Auto merged
myisam/myisamchk.c:
Auto merged
myisam/myisamdef.h:
Auto merged
mysql-test/install_test_db.sh:
Auto merged
mysql-test/r/func_time.result:
Auto merged
mysql-test/r/mysqldump.result:
Auto merged
mysql-test/r/show_check.result:
Auto merged
mysql-test/r/subselect.result:
Auto merged
mysql-test/r/union.result:
Auto merged
mysql-test/t/func_time.test:
Auto merged
mysql-test/t/subselect.test:
Auto merged
scripts/make_binary_distribution.sh:
Auto merged
scripts/mysql_install_db.sh:
Auto merged
sql/ha_berkeley.cc:
Auto merged
mysql-test/t/rpl_error_ignored_table.test:
Auto merged
sql/ha_berkeley.h:
Auto merged
sql/ha_innodb.cc:
Auto merged
sql/ha_innodb.h:
Auto merged
sql/ha_myisam.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/handler.h:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/item_subselect.cc:
Auto merged
sql/item_sum.cc:
Auto merged
sql/item_sum.h:
Auto merged
sql/lex.h:
Auto merged
sql/log.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/protocol.cc:
Auto merged
sql/records.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_acl.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_cache.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_db.cc:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_load.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_select.h:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_string.cc:
Auto merged
sql/sql_test.cc:
Auto merged
sql/sql_update.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.h:
Auto merged
tests/client_test.c:
Auto merged
Diffstat (limited to 'ndb/test/odbc/client/SQLDisconnectTest.cpp')
-rw-r--r-- | ndb/test/odbc/client/SQLDisconnectTest.cpp | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/ndb/test/odbc/client/SQLDisconnectTest.cpp b/ndb/test/odbc/client/SQLDisconnectTest.cpp new file mode 100644 index 00000000000..823b446ab84 --- /dev/null +++ b/ndb/test/odbc/client/SQLDisconnectTest.cpp @@ -0,0 +1,155 @@ +/* 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 */ + + /** + * @file SQLDisconnectTest.cpp + */ + +#include <common.hpp> +#define disc_SQL_MAXIMUM_MESSAGE_LENGTH 200 + +using namespace std; + +SQLHDBC disc_hdbc; +SQLHSTMT disc_hstmt; +SQLHENV disc_henv; +SQLHDESC disc_hdesc; + +void Disconnect_DisplayError_HDBC(SQLSMALLINT disc_HandleType, + SQLHDBC disc_InputHandle); +/** + * Test to close the data source connection associated with + * a specific connection handle + * + * -# Normal case testing + * @return Zero, if test succeeded + */ + +int SQLDisconnectTest() +{ + SQLRETURN disc_retcode; + ndbout << endl << "Start SQLDisconnect Testing" << endl; + + // ************************************ + // ** Allocate an environment handle ** + // ************************************ + disc_retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &disc_henv); + + if(disc_retcode == SQL_SUCCESS || disc_retcode == SQL_SUCCESS_WITH_INFO) { + ndbout << "Allocated an environment handle!" << endl; + } else { + ndbout << "Failed to allocate environment handle!" << endl; + return NDBT_FAILED; + } + + // ********************************************* + // ** Set the ODBC application Version to 3.x ** + // ********************************************* + disc_retcode = SQLSetEnvAttr(disc_henv, + SQL_ATTR_ODBC_VERSION, + (SQLPOINTER) SQL_OV_ODBC3, + SQL_IS_UINTEGER); + if (disc_retcode == SQL_SUCCESS || disc_retcode == SQL_SUCCESS_WITH_INFO) { + ndbout << "Set ODBC application version to 3.x" << endl; + } else { + ndbout << "Failed to set application version!" << endl; + return NDBT_FAILED; + } + + // ********************************** + // ** Allocate a connection handle ** + // ********************************** + disc_retcode = SQLAllocHandle(SQL_HANDLE_DBC, disc_henv, &disc_hdbc); + + if (disc_retcode == SQL_SUCCESS || disc_retcode == SQL_SUCCESS_WITH_INFO) { + ndbout << "Allocated a connection handle!" << endl; + } else { + ndbout << "Failed to allocate connection handle!" << endl; + return NDBT_FAILED; + } + + // ******************* + // ** connect to DB ** + // ******************* + disc_retcode = SQLConnect(disc_hdbc, + (SQLCHAR *) connectString(), + SQL_NTS, + (SQLCHAR *) "", + SQL_NTS, + (SQLCHAR *) "", + SQL_NTS); + + // ********************** + // ** Disconnect to DB ** + // ********************** + disc_retcode = SQLDisconnect(disc_hdbc); + + if (disc_retcode == SQL_INVALID_HANDLE) +{ + ndbout << "Handle Type is SQL_HANDLE_DBC, but string SQL_INVALID_HANDLE" + << " still appeared. Please check program" << endl; + Disconnect_DisplayError_HDBC(SQL_HANDLE_DBC, disc_hdbc); +} + + if (disc_retcode == SQL_ERROR || disc_retcode == SQL_SUCCESS_WITH_INFO) +{ + ndbout << "disconnect retcode = " << disc_retcode << endl; + Disconnect_DisplayError_HDBC(SQL_HANDLE_DBC, disc_hdbc); +} + // ****************** + // ** Free Handles ** + // ****************** + SQLFreeHandle(SQL_HANDLE_STMT, disc_hstmt); + SQLFreeHandle(SQL_HANDLE_DBC, disc_hdbc); + SQLFreeHandle(SQL_HANDLE_ENV, disc_henv); + + return NDBT_OK; + + } + +void Disconnect_DisplayError_HDBC(SQLSMALLINT disc_HandleType, + SQLHDBC disc_InputHandle) +{ + SQLCHAR disc_Msg[disc_SQL_MAXIMUM_MESSAGE_LENGTH]; + SQLSMALLINT disc_i, disc_MsgLen; + SQLINTEGER disc_NativeError; + SQLRETURN disc_SQLSTATEs; + disc_i = 1; + SQLCHAR disc_Sqlstate[5]; + + while ((disc_SQLSTATEs = SQLGetDiagRec(disc_HandleType, + disc_InputHandle, + disc_i, + disc_Sqlstate, + &disc_NativeError, + disc_Msg, + sizeof(disc_Msg), + &disc_MsgLen)) + != SQL_NO_DATA) + { + + ndbout << "the HandleType is:" << disc_HandleType << endl; + ndbout << "the InputHandle is :" <<(long)disc_InputHandle << endl; + ndbout << "the output state is:" << (char *)disc_Sqlstate << endl; + + disc_i ++; + break; + } + +} + + + |