Date: Tuesday, January 31, 2006 @ 16:31:52
Author: csaba
Path: /cvsroot/carob/libmysequoia
Modified: config/logger.cfg (1.1 -> 1.2) include/CarobStmt.hpp (1.7 ->
1.8) src/CarobCommon.cpp (1.4 -> 1.5) src/CarobMySQL.cpp (1.42
-> 1.43) src/CarobStmt.cpp (1.19 -> 1.20) src/MySQLAPI.cpp (1.40
-> 1.41) src/Utils.cpp (1.32 -> 1.33)
Removed: test/logger.cfg (1.1)
Detailed debugging information.
-----------------------+
config/logger.cfg | 4 -
include/CarobStmt.hpp | 3 -
src/CarobCommon.cpp | 6 +-
src/CarobMySQL.cpp | 132 ++++++++++++++++++++++++++----------------------
src/CarobStmt.cpp | 105 ++++++++++++++++++++++++++------------
src/MySQLAPI.cpp | 57 +++++++++-----------
src/Utils.cpp | 20 +++----
test/logger.cfg | 11 ----
8 files changed, 189 insertions(+), 149 deletions(-)
Index: libmysequoia/config/logger.cfg
diff -u libmysequoia/config/logger.cfg:1.1 libmysequoia/config/logger.cfg:1.2
--- libmysequoia/config/logger.cfg:1.1 Tue Jan 31 11:25:47 2006
+++ libmysequoia/config/logger.cfg Tue Jan 31 16:31:52 2006
@@ -7,5 +7,5 @@
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %p %t %c (%F:%L) - %m%n
-# Print only messages of level ERROR or above in the namespace MySQLAPI.
-log4j.logger.MySQLAPI=ERROR
+# Print only messages of level DEBUG or above in the namespace MySQLAPI.
+log4j.logger.MySQLAPI=DEBUG
Index: libmysequoia/include/CarobStmt.hpp
diff -u libmysequoia/include/CarobStmt.hpp:1.7
libmysequoia/include/CarobStmt.hpp:1.8
--- libmysequoia/include/CarobStmt.hpp:1.7 Mon Jan 30 12:16:05 2006
+++ libmysequoia/include/CarobStmt.hpp Tue Jan 31 16:31:52 2006
@@ -225,8 +225,9 @@
/**
* Free the long data created with send_long_data().
+ * @param stmt points to the statement which long data buffer should be
released
*/
- static void free_long_data(MYSQL_STMT *m_stmt);
+ static void free_long_data(MYSQL_STMT *stmt);
/**
* Set the current mysql error to the specified one. The mysql error message
will be filled from the error list.
Index: libmysequoia/src/CarobCommon.cpp
diff -u libmysequoia/src/CarobCommon.cpp:1.4
libmysequoia/src/CarobCommon.cpp:1.5
--- libmysequoia/src/CarobCommon.cpp:1.4 Mon Jan 30 13:45:56 2006
+++ libmysequoia/src/CarobCommon.cpp Tue Jan 31 16:31:52 2006
@@ -30,7 +30,7 @@
int
CarobCommon::get_query_fields (MYSQL_FIELD * &result, ResultSetMetaData
*rsmPtr)
{
- LOG4CXX_DEBUG(logger, "Entering get_query_fields.");
+ LOG4CXX_DEBUG(logger, "Entering get_query_fields: result=" << result <<
"rsmPtr=" << rsmPtr);
int colNum = (int)rsmPtr->getColumnCount(), colNo;
@@ -68,14 +68,14 @@
;
}
- LOG4CXX_DEBUG(logger, "Leaving get_query_fields.");
+ LOG4CXX_DEBUG(logger, "Leaving get_query_fields: result=" << colNum);
return colNum;
}
void
CarobCommon::delete_query_fields(MYSQL_FIELD * &fields, unsigned int
field_count)
{
- LOG4CXX_DEBUG(logger, "Entering delete_query_fields.");
+ LOG4CXX_DEBUG(logger, "Entering delete_query_fields: fields=" << fields << "
field_count=" << field_count);
if (fields)
{
Index: libmysequoia/src/CarobMySQL.cpp
diff -u libmysequoia/src/CarobMySQL.cpp:1.42
libmysequoia/src/CarobMySQL.cpp:1.43
--- libmysequoia/src/CarobMySQL.cpp:1.42 Tue Jan 31 16:11:42 2006
+++ libmysequoia/src/CarobMySQL.cpp Tue Jan 31 16:31:52 2006
@@ -40,7 +40,7 @@
CarobMYSQL::CarobMYSQL (MYSQL *mysql, my_bool free_me) :
connectionPtr(0), stmtPtr(0), drsPtr(0), liveResultPtr(0)
{
- LOG4CXX_DEBUG(logger, "Entering constructor.");
+ LOG4CXX_DEBUG(logger, "Entering constructor; mysql=" << mysql << " free_me="
<< (bool) free_me);
static char version[6];
/* initialize the mysql structure */
@@ -96,7 +96,7 @@
const char *passwd, const char *db, unsigned int port,
const char *unix_socket, unsigned long clientflag)
{
- LOG4CXX_DEBUG(logger, "Entering connect.");
+ LOG4CXX_DEBUG(logger, "Entering connect: host=" << host << " user=" << user
<< " passwd=" << passwd << " db=" << db << " port=" << port);
if (mysqlPtr->status != MYSQL_STATUS_READY)
{
@@ -206,44 +206,43 @@
bool
CarobMYSQL::select_db (const char *db)
{
+ LOG4CXX_DEBUG(logger, "Entering select_db: db=" << db);
+
bool result;
- LOG4CXX_DEBUG(logger, "Entering select_db.");
/* Connect only if a user, password and host was already specified,
otherwise raise an error */
if (mysqlPtr->user && mysqlPtr->passwd && mysqlPtr->host)
- result = connect(mysqlPtr->host, mysqlPtr->user, mysqlPtr->passwd, db,
mysqlPtr->port,
- 0, mysqlPtr->client_flag);
+ result = connect(mysqlPtr->host, mysqlPtr->user, mysqlPtr->passwd, db,
mysqlPtr->port, 0, mysqlPtr->client_flag);
else
{
set_error(CR_NULL_POINTER, SQLT_UNKNOWN);
result = false;
}
- LOG4CXX_DEBUG(logger, "Leaving select_db.");
-
+
+ LOG4CXX_DEBUG(logger, "Leaving select_db: result=" << result);
return result;
}
bool
CarobMYSQL::change_user (const char *user, const char *passwd, const char *db)
{
- bool result;
+ LOG4CXX_DEBUG(logger, "Entering change_user: user=" << user << " passwd=" <<
" db=" << db);
- LOG4CXX_DEBUG(logger, "Entering change_user.");
- result = connect(mysqlPtr->host, user, passwd, db ? db : mysqlPtr->db,
mysqlPtr->port, 0, mysqlPtr->client_flag);
- LOG4CXX_DEBUG(logger, "Leaving change_user.");
-
+ bool result = connect(mysqlPtr->host, user, passwd, db ? db : mysqlPtr->db,
mysqlPtr->port, 0, mysqlPtr->client_flag);
+
+ LOG4CXX_DEBUG(logger, "Leaving change_user: result=" << result);
return result;
}
bool
CarobMYSQL::real_query (const char *query, ulong length)
{
- LOG4CXX_DEBUG(logger, "Entering real_query.");
+ LOG4CXX_DEBUG(logger, "Entering real_query: query=" << query << " length="
<< length);
if (mysqlPtr->status != MYSQL_STATUS_READY || !connectionPtr)
{
set_error(CR_COMMANDS_OUT_OF_SYNC, SQLT_UNKNOWN);
- LOG4CXX_DEBUG(logger, "Leaving real_query.");
+ LOG4CXX_DEBUG(logger, "Leaving real_query: result=0");
return false;
}
@@ -277,15 +276,13 @@
mysqlPtr->info = cstrdup(info);
}
- LOG4CXX_DEBUG(logger, "Leaving real_query.");
+ LOG4CXX_DEBUG(logger, "Leaving real_query: result=1");
return true;
}
catch (CarobException &e)
{
set_error(e.getErrorCode(), toString(e.description()).c_str(),
toString(e.getSQLState()).c_str());
- //TODO error handling
-
- LOG4CXX_DEBUG(logger, "Leaving real_query.");
+ LOG4CXX_DEBUG(logger, "Leaving real_query: result=0");
return false;
}
}
@@ -293,11 +290,12 @@
MYSQL_RES *
CarobMYSQL::get_results (my_bool fetch_all)
{
- LOG4CXX_DEBUG(logger, "Entering get_results.");
+ LOG4CXX_DEBUG(logger, "Entering get_results: fetch_all=" << (bool)
fetch_all);
+
if (mysqlPtr->status != MYSQL_STATUS_GET_RESULT)
{
set_error(CR_COMMANDS_OUT_OF_SYNC, SQLT_UNKNOWN);
- LOG4CXX_DEBUG(logger, "Leaving get_results.");
+ LOG4CXX_DEBUG(logger, "Leaving get_results: result=0");
return 0;
}
@@ -363,17 +361,16 @@
set_error(CR_NO_RESULT_SET, SQLT_UNKNOWN);
#endif
- LOG4CXX_DEBUG(logger, "Leaving get_results.");
+ LOG4CXX_DEBUG(logger, "Leaving get_results: result=" << result);
return result;
}
- LOG4CXX_DEBUG(logger, "Leaving get_results.");
+ LOG4CXX_DEBUG(logger, "Leaving get_results: result=0");
return 0;
}
catch (CarobException &e)
{
set_error(e.getErrorCode(), toString(e.description()).c_str(),
toString(e.getSQLState()).c_str());
- //TODO error handling
- LOG4CXX_DEBUG(logger, "Leaving get_results.");
+ LOG4CXX_DEBUG(logger, "Leaving get_results: result=0");
return 0;
}
}
@@ -386,7 +383,7 @@
if (mysqlPtr->status != MYSQL_STATUS_USE_RESULT || !drsPtr)
{
set_error(CR_COMMANDS_OUT_OF_SYNC, SQLT_UNKNOWN);
- LOG4CXX_DEBUG(logger, "Leaving fetch_row.");
+ LOG4CXX_DEBUG(logger, "Leaving fetch_row: result=0");
return 0;
}
@@ -395,14 +392,14 @@
{
unsigned long len;
alloc_row_data(liveResultPtr->row, liveResultPtr->fields,
liveResultPtr->field_count, len, liveResultPtr->lengths);
- LOG4CXX_DEBUG(logger, "Leaving fetch_row.");
+ LOG4CXX_DEBUG(logger, "Leaving fetch_row: result=" << liveResultPtr->row);
return (liveResultPtr->current_row = liveResultPtr->row);
}
else
{
liveResultPtr->eof = 1;
liveResultPtr->current_row = 0;
- LOG4CXX_DEBUG(logger, "Leaving fetch_row.");
+ LOG4CXX_DEBUG(logger, "Leaving fetch_row: result=0");
return 0;
}
}
@@ -410,20 +407,20 @@
bool
CarobMYSQL::more_results ()
{
- bool result;
-
LOG4CXX_DEBUG(logger, "Entering more_results.");
- result = stmtPtr ? stmtPtr->moreResults() : 0;
- LOG4CXX_DEBUG(logger, "Leaving more_results.");
+ bool result = stmtPtr ? stmtPtr->moreResults() : 0;
+
+ LOG4CXX_DEBUG(logger, "Leaving more_results: result=" << result);
return result;
}
int
CarobMYSQL::next_result ()
{
- int result = -1;
LOG4CXX_DEBUG(logger, "Entering next_results.");
+
+ int result = -1;
if (stmtPtr)
{
@@ -446,14 +443,15 @@
}
}
- LOG4CXX_DEBUG(logger, "Leaving next_results.");
+ LOG4CXX_DEBUG(logger, "Leaving next_results: result=" << result);
return result;
}
void
CarobMYSQL::free_results (MYSQL_RES * res)
{
- LOG4CXX_DEBUG(logger, "Entering free_results.");
+ LOG4CXX_DEBUG(logger, "Entering free_results: res=" << res);
+
if (res)
{
MYSQL *mysqlPtr = 0;
@@ -522,24 +520,25 @@
bool
CarobMYSQL::set_autocommit (const my_bool mode)
{
- LOG4CXX_DEBUG(logger, "Entering set_autocommit.");
+ LOG4CXX_DEBUG(logger, "Entering set_autocommit: mode=" << (bool) mode);
+
if (mysqlPtr->status != MYSQL_STATUS_READY || !connectionPtr)
{
set_error(CR_COMMANDS_OUT_OF_SYNC, SQLT_UNKNOWN);
- LOG4CXX_DEBUG(logger, "Leaving set_autocommit.");
+ LOG4CXX_DEBUG(logger, "Leaving set_autocommit: result=0");
return 0;
}
try
{
connectionPtr->setAutoCommit(mode);
- LOG4CXX_DEBUG(logger, "Leaving set_autocommit.");
+ LOG4CXX_DEBUG(logger, "Leaving set_autocommit: result=1");
return true;
}
catch (CarobException &e)
{
set_error(e.getErrorCode(), toString(e.description()).c_str(),
toString(e.getSQLState()).c_str());
- LOG4CXX_DEBUG(logger, "Leaving set_autocommit.");
+ LOG4CXX_DEBUG(logger, "Leaving set_autocommit: result=0");
return 0;
}
}
@@ -548,23 +547,24 @@
CarobMYSQL::commit ()
{
LOG4CXX_DEBUG(logger, "Entering commit.");
+
if (mysqlPtr->status != MYSQL_STATUS_READY || !connectionPtr)
{
set_error(CR_COMMANDS_OUT_OF_SYNC, SQLT_UNKNOWN);
- LOG4CXX_DEBUG(logger, "Leaving commit.");
+ LOG4CXX_DEBUG(logger, "Leaving commit: result=0");
return 0;
}
try
{
connectionPtr->commit();
- LOG4CXX_DEBUG(logger, "Leaving commit.");
+ LOG4CXX_DEBUG(logger, "Leaving commit: result=1");
return true;
}
catch (CarobException &e)
{
set_error(e.getErrorCode(), toString(e.description()).c_str(),
toString(e.getSQLState()).c_str());
- LOG4CXX_DEBUG(logger, "Leaving commit.");
+ LOG4CXX_DEBUG(logger, "Leaving commit: result=0");
return 0;
}
}
@@ -573,23 +573,24 @@
CarobMYSQL::rollback ()
{
LOG4CXX_DEBUG(logger, "Entering rollback.");
+
if (mysqlPtr->status != MYSQL_STATUS_READY || !connectionPtr)
{
set_error(CR_COMMANDS_OUT_OF_SYNC, SQLT_UNKNOWN);
- LOG4CXX_DEBUG(logger, "Leaving rollback.");
+ LOG4CXX_DEBUG(logger, "Leaving rollback: result=0");
return false;
}
try
{
connectionPtr->rollback();
- LOG4CXX_DEBUG(logger, "Leaving rollback.");
+ LOG4CXX_DEBUG(logger, "Leaving rollback: result=1");
return true;
}
catch (CarobException &e)
{
set_error(e.getErrorCode(), toString(e.description()).c_str(),
toString(e.getSQLState()).c_str());
- LOG4CXX_DEBUG(logger, "Leaving rollback.");
+ LOG4CXX_DEBUG(logger, "Leaving rollback: result=0");
return false;
}
}
@@ -597,10 +598,10 @@
MYSQL_RES *
CarobMYSQL::list_table_fields (const char *table, const char *wild)
{
+ LOG4CXX_DEBUG(logger, "Entering list_table_fields: table=" << table << "
wild=" << wild);
+
MYSQL_RES *result;
- LOG4CXX_DEBUG(logger, "Entering list_table_fields.");
-
std::string query=std::string("SHOW FIELDS FROM ")+table;
if (wild)
@@ -610,16 +611,16 @@
else
result = 0;
- LOG4CXX_DEBUG(logger, "Leaving list_table_fields.");
+ LOG4CXX_DEBUG(logger, "Leaving list_table_fields: result=" << result);
return result;
}
MYSQL_RES *
CarobMYSQL::list_databases (const char *wild)
{
- MYSQL_RES *result;
+ LOG4CXX_DEBUG(logger, "Entering list_databases: wild=" << wild);
- LOG4CXX_DEBUG(logger, "Entering list_databases.");
+ MYSQL_RES *result;
std::string query="SHOW DATABASES";
if (wild)
@@ -629,16 +630,16 @@
else
result = 0;
- LOG4CXX_DEBUG(logger, "Leaving list_databases.");
+ LOG4CXX_DEBUG(logger, "Leaving list_databases: result=" << result);
return result;
}
MYSQL_RES *
CarobMYSQL::list_tables (const char *wild)
{
- MYSQL_RES *result;
+ LOG4CXX_DEBUG(logger, "Entering list_tables: wild=" << wild);
- LOG4CXX_DEBUG(logger, "Entering list_tables.");
+ MYSQL_RES *result;
std::string query="SHOW TABLES";
if (wild)
@@ -648,7 +649,7 @@
else
result = 0;
- LOG4CXX_DEBUG(logger, "Leaving list_tables.");
+ LOG4CXX_DEBUG(logger, "Leaving list_tables: result=" << result);
return result;
}
@@ -673,7 +674,7 @@
CarobMYSQL::set_connect_info(const char *host, const char *user,
const char *passwd, const char *db, unsigned int port)
{
- LOG4CXX_DEBUG(logger, "Entering set_connect_info.");
+ LOG4CXX_DEBUG(logger, "Entering set_connect_info: host=" << host << " user="
<< user << " passwd=" << passwd << " db=" << db << " port=" << port);
cstrdupcond(mysqlPtr->host, host);
cstrdupcond(mysqlPtr->user, user);
@@ -692,6 +693,7 @@
CarobMYSQL::delete_connection()
{
LOG4CXX_DEBUG(logger, "Entering delete_connection.");
+
if (liveResultPtr)
{
free_results(liveResultPtr);
@@ -700,13 +702,14 @@
//stmtPtr is freed by connection. just set our pointer to NULL
stmtPtr = NULL;
FREE_AND_NULL(connectionPtr);
+
LOG4CXX_DEBUG(logger, "Leaving delete_connection.");
}
void
CarobMYSQL::set_error(int errcode, int sqlstate)
{
- LOG4CXX_DEBUG(logger, "Entering set_error.");
+ LOG4CXX_DEBUG(logger, "Entering set_error: errcode=" << errcode << "
sqlstate=" << sqlstate);
set_error(errcode, client_errors[errcode-CR_MIN_ERROR],
error_sqlstate[sqlstate]);
LOG4CXX_DEBUG(logger, "Leaving set_error.");
}
@@ -714,23 +717,30 @@
void
CarobMYSQL::set_error(int errcode, const char *errmsg, const char *sqlstate)
{
- LOG4CXX_DEBUG(logger, "Entering set_error.");
+ LOG4CXX_DEBUG(logger, "Entering set_error: errcode=" << errcode << "
errmsg=" << errmsg << " sqlstate=" << sqlstate);
+
+ LOG4CXX_ERROR(logger, "errcode=" << errcode << " errmsg=" << errmsg << "
sqlstate=" << sqlstate);
+
mysqlPtr->net.last_errno = convert_errcode(errcode);
+
if (errmsg)
strcpy(mysqlPtr->net.last_error, errmsg);
else
*mysqlPtr->net.last_error = 0;
+
if (sqlstate)
strcpy(mysqlPtr->net.sqlstate, sqlstate);
else
*mysqlPtr->net.sqlstate = 0;
+
LOG4CXX_DEBUG(logger, "Leaving set_error.");
}
void
CarobMYSQL::alloc_row_data(MYSQL_ROW &row, MYSQL_FIELD *fields, const unsigned
int field_count, unsigned long &length, unsigned long *lengths)
{
- LOG4CXX_DEBUG(logger, "Entering alloc_row_data.");
+ LOG4CXX_DEBUG(logger, "Entering alloc_row_data: fields=" << fields << "
field_count=" << field_count << " length=" << length << " lengths=" << lengths);
+
/* TODO implement better
* The main idea is to allocate a big enough row to hold all data as strings
* separated by \0, and allocate an array of field_count+1 pointers, which
@@ -752,6 +762,7 @@
//Set up a conversion buffer for time, date, datetime conversion
char buffer[20];
MYSQL_BIND b;
+
memset(&b, 0, sizeof(b));
b.buffer = &buffer;
b.buffer_length = sizeof(buffer);
@@ -820,13 +831,14 @@
row[i] = presult + ((unsigned long) row[i] - 1);
row[field_count] = presult + result.size();
}
+
LOG4CXX_DEBUG(logger, "Leaving alloc_row_data.");
}
void
CarobMYSQL::delete_row_data(MYSQL_ROW &row, const unsigned int field_count)
{
- LOG4CXX_DEBUG(logger, "Entering delete_row_data.");
+ LOG4CXX_DEBUG(logger, "Entering delete_row_data: field_count=" <<
field_count);
if (row)
{
@@ -847,6 +859,8 @@
void
CarobMYSQL::read_ini_file()
{
+ LOG4CXX_DEBUG(logger, "Entering read_ini_file.");
+
char *group;
char *def_home_env = getenv("DEFAULT_HOME_ENV");
char *home_dir = getenv("HOME");
@@ -897,4 +911,6 @@
/* read the init_command from the config file */
push_init_command(ini.get(group, "init_command").c_str());
+
+ LOG4CXX_DEBUG(logger, "Leaving read_ini_file.");
}
Index: libmysequoia/src/CarobStmt.cpp
diff -u libmysequoia/src/CarobStmt.cpp:1.19 libmysequoia/src/CarobStmt.cpp:1.20
--- libmysequoia/src/CarobStmt.cpp:1.19 Tue Jan 31 13:14:45 2006
+++ libmysequoia/src/CarobStmt.cpp Tue Jan 31 16:31:52 2006
@@ -42,7 +42,7 @@
CarobStmt::CarobStmt(MYSQL *mysql): c_stmt(0), liveResultSet(0)
{
- LOG4CXX_DEBUG(logger, "Entering constructor.");
+ LOG4CXX_DEBUG(logger, "Entering constructor: mysql=" << mysql);
m_stmt = new MYSQL_STMT();
memset(m_stmt, 0, sizeof(MYSQL_STMT));
@@ -75,7 +75,7 @@
int
CarobStmt::prepare(const char *query, unsigned long length)
{
- LOG4CXX_DEBUG(logger, "Entering prepare.");
+ LOG4CXX_DEBUG(logger, "Entering prepare: query=" << query << " length=" <<
length);
int result = 0;
@@ -107,7 +107,7 @@
result = 1;
}
- LOG4CXX_DEBUG(logger, "Leaving prepare.");
+ LOG4CXX_DEBUG(logger, "Leaving prepare: result=" << result);
return result;
}
@@ -115,7 +115,7 @@
bool
CarobStmt::bind_param(const MYSQL_BIND *bind)
{
- LOG4CXX_DEBUG(logger, "Entering bind_param.");
+ LOG4CXX_DEBUG(logger, "Entering bind_param: bind=" << bind);
bool result = false;
@@ -186,14 +186,15 @@
m_stmt->bind_param_done= true;
}
- LOG4CXX_DEBUG(logger, "Leaving bind_param.");
+ LOG4CXX_DEBUG(logger, "Leaving bind_param: result=" << result);
return result;
}
bool
CarobStmt::send_long_data (unsigned int parameter_number, const char *data,
unsigned long length)
{
- LOG4CXX_DEBUG(logger, "Entering send_long_data.");
+ LOG4CXX_DEBUG(logger, "Entering send_long_data: parameter_number=" <<
parameter_number << " data=" << data << " length=" << length);
+
bool result = true;
//Because Carob doesn't support this feature it must be emulated. All data
is collected in a string type
//contained by the pointer row_ptr.
@@ -228,7 +229,7 @@
set_error(CR_INVALID_BUFFER_USE, SQLT_UNKNOWN);
}
- LOG4CXX_DEBUG(logger, "Leaving send_long_data.");
+ LOG4CXX_DEBUG(logger, "Leaving send_long_data: result=" << result);
return result;
}
@@ -236,7 +237,9 @@
CarobStmt::execute()
{
LOG4CXX_DEBUG(logger, "Entering execute.");
+
int result = 1;
+
if (m_stmt->state < MYSQL_STMT_PREPARE_DONE)
set_error(CR_NO_PREPARE_STMT, SQLT_UNKNOWN);
else
@@ -310,9 +313,8 @@
case MYSQL_TYPE_NULL:
break;
default:
- LOG4CXX_DEBUG(logger, "This should never happen!!");
-/* TODO support other types
-*/
+ LOG4CXX_FATAL(logger, "This should never happen!!");
+/* TODO support other types */
}
}
if (!c_stmt->execute())
@@ -329,14 +331,14 @@
}
}
- LOG4CXX_DEBUG(logger, "Leaving execute.");
+ LOG4CXX_DEBUG(logger, "Leaving execute: result=" << result);
return result;
}
bool
CarobStmt::bind_result(const MYSQL_BIND *bind)
{
- LOG4CXX_DEBUG(logger, "Entering bind_result.");
+ LOG4CXX_DEBUG(logger, "Entering bind_result: bind=" << bind);
bool result = false;
@@ -411,7 +413,7 @@
m_stmt->bind_result_done = DATA_NORMAL;
}
- LOG4CXX_DEBUG(logger, "Leaving bind_result.");
+ LOG4CXX_DEBUG(logger, "Leaving bind_result: result=" << result);
return result;
}
@@ -419,6 +421,7 @@
CarobStmt::fetch()
{
LOG4CXX_DEBUG(logger, "Entering fetch.");
+
int result = 0;
#ifdef MYSQL5
bool truncation = false;
@@ -464,14 +467,15 @@
result = MYSQL_NO_DATA;
}
- LOG4CXX_DEBUG(logger, "Leaving fetch.");
+ LOG4CXX_DEBUG(logger, "Leaving fetch: result=" << result);
return result;
}
int
CarobStmt::fetch_column (MYSQL_BIND * bind, unsigned int column, unsigned long
offset)
{
- LOG4CXX_DEBUG(logger, "Entering fetch_column.");
+ LOG4CXX_DEBUG(logger, "Entering fetch_column: bind=" << bind << " column="
<< column << " offset=" << offset);
+
int result = 1;
if (m_stmt->state != MYSQL_STMT_FETCH_DONE)
set_error(CR_NO_DATA, SQLT_UNKNOWN);
@@ -491,7 +495,7 @@
result = 0;
}
- LOG4CXX_DEBUG(logger, "Leaving fetch_column.");
+ LOG4CXX_DEBUG(logger, "Leaving fetch_column: result=" << result);
return result;
}
@@ -499,6 +503,7 @@
CarobStmt::reset()
{
LOG4CXX_DEBUG(logger, "Entering reset.");
+
if (m_stmt->state >= MYSQL_STMT_PREPARE_DONE)
{
free_catched_result(m_stmt);
@@ -511,7 +516,8 @@
}
m_stmt->state = MYSQL_STMT_PREPARE_DONE;
}
- LOG4CXX_DEBUG(logger, "Leaving reset.");
+
+ LOG4CXX_DEBUG(logger, "Leaving reset: result=0");
return false;
}
@@ -519,6 +525,7 @@
CarobStmt::result_metadata()
{
LOG4CXX_DEBUG(logger, "Entering result_metadata.");
+
MYSQL_RES *result = 0;
if (m_stmt->field_count)
{
@@ -532,7 +539,8 @@
result->data->fields = result->field_count = m_stmt->field_count;
result->eof = true;
}
- LOG4CXX_DEBUG(logger, "Leaving result_metadata.");
+
+ LOG4CXX_DEBUG(logger, "Leaving result_metadata: result=" << result);
return result;
}
@@ -585,21 +593,26 @@
liveResultSet = 0;
}
- LOG4CXX_DEBUG(logger, "Leaving store_result.");
-
+ LOG4CXX_DEBUG(logger, "Leaving store_result: result=" << result);
return result;
}
bool
CarobStmt::free_result(MYSQL_STMT *stmt)
{
+ LOG4CXX_DEBUG(logger, "Entering free_result: stmt=" << stmt);
+
free_catched_result(stmt);
+
+ LOG4CXX_DEBUG(logger, "Leaving free_result: result=0");
return false;
}
void
CarobStmt::link_bind(MYSQL_BIND *bind)
{
+ LOG4CXX_DEBUG(logger, "Entering link_bind: bind=" << bind);
+
#ifdef MYSQL5
if (!bind->error)
bind->error = &bind->error_value;
@@ -618,14 +631,17 @@
#else
bind->length = &bind->internal_length;
#endif
+
+ LOG4CXX_DEBUG(logger, "Leaving link_bind");
}
void
CarobStmt::fetch_field(MYSQL_FIELD *fPtr, MYSQL_BIND *bPtr, unsigned colNo)
{
- LOG4CXX_DEBUG(logger, "Entering fetch_field.");
+ LOG4CXX_DEBUG(logger, "Entering fetch_field: fPtr=" << fPtr << " bPtr=" <<
bPtr << " colNo=" << colNo);
void *buffer = 0;
+
//if there are cached results ...
if (m_stmt->result.data)
buffer = m_stmt->data_cursor->data[colNo];
@@ -686,18 +702,20 @@
case MYSQL_TYPE_NULL:
break;
default:
- LOG4CXX_DEBUG(logger, "This should never happen!!");
+ LOG4CXX_FATAL(logger, "This should never happen!!");
}
}
+
if (!m_stmt->result.data)
delete_fetch_field(fPtr, buffer);
+
LOG4CXX_DEBUG(logger, "Leaving fetch_field.");
}
void *
CarobStmt::alloc_fetch_field(MYSQL_FIELD *fPtr, unsigned colNo)
{
- LOG4CXX_DEBUG(logger, "Entering alloc_fetch_field.");
+ LOG4CXX_DEBUG(logger, "Entering alloc_fetch_field: fPtr=" << fPtr << "
colNo=" << colNo);
void *result = 0;
@@ -750,21 +768,22 @@
case MYSQL_TYPE_NULL:
break;
default:
- LOG4CXX_DEBUG(logger, "This should never happen!!");
+ LOG4CXX_FATAL(logger, "This should never happen!!");
}
}
catch (NullValueException)
{
}
- LOG4CXX_DEBUG(logger, "Leaving alloc_fetch_field.");
-
+ LOG4CXX_DEBUG(logger, "Leaving alloc_fetch_field: result=" << result);
return result;
}
void
CarobStmt::delete_fetch_field(MYSQL_FIELD *fPtr, void *buffer)
{
+ LOG4CXX_DEBUG(logger, "Entering delete_fetch_field.");
+
switch (fPtr->type)
{
case MYSQL_TYPE_TINY:
@@ -806,13 +825,17 @@
case MYSQL_TYPE_NULL:
break;
default:
- LOG4CXX_DEBUG(logger, "This should never happen!!");
+ LOG4CXX_FATAL(logger, "This should never happen!!");
}
+
+ LOG4CXX_DEBUG(logger, "Leaving delete_fetch_field.");
}
void
CarobStmt::free_catched_result(MYSQL_STMT *stmt)
{
+ LOG4CXX_DEBUG(logger, "Entering free_catched_result: stmt=" << stmt);
+
if (stmt->result.data)
{
MYSQL_ROWS *tmp;
@@ -829,15 +852,19 @@
stmt->result.rows= 0;
stmt->data_cursor= NULL;
}
+
+ LOG4CXX_DEBUG(logger, "Leaving free_catched_result.");
}
void
-CarobStmt::free_long_data(MYSQL_STMT *m_stmt)
+CarobStmt::free_long_data(MYSQL_STMT *stmt)
{
- if (m_stmt)
+ LOG4CXX_DEBUG(logger, "Entering free_long_data: stmt=" << stmt);
+
+ if (stmt)
{
- MYSQL_BIND *params=m_stmt->params;
- for (unsigned colNo=0; colNo < m_stmt->param_count && params; colNo++,
params++)
+ MYSQL_BIND *params=stmt->params;
+ for (unsigned colNo=0; colNo < stmt->param_count && params; colNo++,
params++)
if (params->long_data_used)
{
params->long_data_used = 0;
@@ -848,12 +875,14 @@
#endif
}
}
+
+ LOG4CXX_DEBUG(logger, "Leaving free_long_data.");
}
void
CarobStmt::set_error(int errcode, int sqlstate)
{
- LOG4CXX_DEBUG(logger, "Entering set_error.");
+ LOG4CXX_DEBUG(logger, "Entering set_error: errcode=" << errcode << "
sqlstate=" << sqlstate);
set_error(errcode, client_errors[errcode-CR_MIN_ERROR],
error_sqlstate[sqlstate]);
LOG4CXX_DEBUG(logger, "Leaving set_error.");
}
@@ -861,22 +890,30 @@
void
CarobStmt::set_error(int errcode, const char *errmsg, const char *sqlstate)
{
- LOG4CXX_DEBUG(logger, "Entering set_error.");
+ LOG4CXX_DEBUG(logger, "Entering set_error: errcode=" << errcode << "
errmsg=" << errmsg << " sqlstate" << sqlstate);
+
+ LOG4CXX_ERROR(logger, "Entering set_error: errcode=" << errcode << "
errmsg=" << errmsg << " sqlstate" << sqlstate);
+
m_stmt->last_errno = convert_errcode(errcode);
+
if (errmsg)
strcpy(m_stmt->last_error, errmsg);
else
*m_stmt->last_error = 0;
+
if (sqlstate)
strcpy(m_stmt->sqlstate, sqlstate);
else
*m_stmt->sqlstate = 0;
+
LOG4CXX_DEBUG(logger, "Leaving set_error.");
}
void
CarobStmt::clear()
{
+ LOG4CXX_DEBUG(logger, "Entering clear.");
+
if (c_stmt)
{
cmysql->connectionPtr->deleteStatement(c_stmt);
@@ -901,4 +938,6 @@
*m_stmt->last_error = 0;
*m_stmt->sqlstate = 0;
m_stmt->affected_rows = 0;
+
+ LOG4CXX_DEBUG(logger, "Leaving clear.");
}
Index: libmysequoia/src/MySQLAPI.cpp
diff -u libmysequoia/src/MySQLAPI.cpp:1.40 libmysequoia/src/MySQLAPI.cpp:1.41
--- libmysequoia/src/MySQLAPI.cpp:1.40 Tue Jan 31 14:06:26 2006
+++ libmysequoia/src/MySQLAPI.cpp Tue Jan 31 16:31:52 2006
@@ -117,7 +117,7 @@
}
catch (...)
{
- LOG4CXX_DEBUG(logger, "Creation of the Carob object failed.");
+ LOG4CXX_FATAL(logger, "Creation of the Carob object failed.");
if (free_in_close)
delete mysql;
@@ -151,7 +151,7 @@
// initialize logging
PropertyConfigurator::configure(LOGGER_CONFIG_FILE);
- LOG4CXX_DEBUG(logger, "Entering mysql_server_init.");
+ LOG4CXX_DEBUG(logger, "Entering mysql_server_init: argc=" << argc << "
argv=" << argv << " groups=" << groups);
tzset();
@@ -266,7 +266,7 @@
int STDCALL
mysql_options (MYSQL * mysql, enum mysql_option option, const char *arg)
{
- LOG4CXX_DEBUG(logger, "Entering mysql_options: mysql=" << mysql << "
option=" << option);
+ LOG4CXX_DEBUG(logger, "Entering mysql_options: mysql=" << mysql << "
option=" << option << " arg=" << (void *)arg);
int result = 0;
@@ -332,7 +332,7 @@
result = 1;
}
- LOG4CXX_DEBUG(logger, "Leaving mysql_options.");
+ LOG4CXX_DEBUG(logger, "Leaving mysql_options: result=" << result);
return result;
}
@@ -901,7 +901,7 @@
my_bool STDCALL
mysql_autocommit (MYSQL * mysql, my_bool auto_mode)
{
- LOG4CXX_DEBUG(logger, "Entering mysql_autocommit: mysql=" << mysql << "
auto_mode=" << auto_mode);
+ LOG4CXX_DEBUG(logger, "Entering mysql_autocommit: mysql=" << mysql << "
auto_mode=" << (bool) auto_mode);
my_bool result = mysql ? getCarob(mysql)->set_autocommit(auto_mode) : 0;
@@ -1173,7 +1173,7 @@
unsigned long STDCALL
mysql_thread_id (MYSQL * mysql)
{
- LOG4CXX_DEBUG(logger, "Entering mysql_thread_id.");
+ LOG4CXX_DEBUG(logger, "Entering mysql_thread_id: mysql=" << mysql);
LOG4CXX_DEBUG(logger, "Leaving mysql_thread_id.");
return 0;
}
@@ -1181,7 +1181,7 @@
int STDCALL
mysql_kill(MYSQL *mysql,unsigned long pid)
{
- LOG4CXX_DEBUG(logger, "Entering mysql_kill.");
+ LOG4CXX_DEBUG(logger, "Entering mysql_kill: mysql=" << mysql << " pid=" <<
pid);
LOG4CXX_DEBUG(logger, "Leaving mysql_kill.");
return 0;
}
@@ -1211,7 +1211,7 @@
result = stmt->getMYSQL_STMT();
}
else
- LOG4CXX_ERROR(logger, "The given mysql pointer was not initialized with
mysql_init.");
+ LOG4CXX_FATAL(logger, "The given mysql pointer was not initialized with
mysql_init.");
LOG4CXX_DEBUG(logger, "Leaving mysql_stmt_init: result=" << result);
return result;
@@ -1232,8 +1232,7 @@
/* Get value of an attribute for a prepared statement. */
my_bool
-mysql_stmt_attr_get (MYSQL_STMT * stmt, enum enum_stmt_attr_type option,
- void *arg)
+mysql_stmt_attr_get (MYSQL_STMT * stmt, enum enum_stmt_attr_type option, void
*arg)
{
LOG4CXX_DEBUG(logger, "Entering mysql_stmt_attr_get: stmt=" << stmt << "
option=" << option << " arg=" << arg);
@@ -1263,7 +1262,7 @@
}
else
{
- LOG4CXX_ERROR(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
+ LOG4CXX_FATAL(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
//Todo maybe better errorhandling?
result = true;
}
@@ -1274,8 +1273,7 @@
/* Sets an attribute for a prepared statement. */
my_bool
-mysql_stmt_attr_set (MYSQL_STMT * stmt, enum enum_stmt_attr_type option,
- const void *arg)
+mysql_stmt_attr_set (MYSQL_STMT * stmt, enum enum_stmt_attr_type option, const
void *arg)
{
LOG4CXX_DEBUG(logger, "Entering mysql_stmt_attr_set: stmt=" << stmt << "
option=" << option << " arg=" << arg);
@@ -1318,7 +1316,7 @@
}
else
{
- LOG4CXX_ERROR(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
+ LOG4CXX_FATAL(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
//Todo maybe better errorhandling?
result = true;
}
@@ -1329,8 +1327,7 @@
/* Prepares an SQL string for execution. */
int
-mysql_stmt_prepare (MYSQL_STMT * stmt, const char *query,
- unsigned long length)
+mysql_stmt_prepare (MYSQL_STMT * stmt, const char *query, unsigned long length)
{
LOG4CXX_DEBUG(logger, "Entering mysql_stmt_prepare: stmt=" << stmt << "
query=" << query << " length=" << length);
@@ -1340,7 +1337,7 @@
result = getCarobStmt(stmt)->prepare(query, length);
else
{
- LOG4CXX_ERROR(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
+ LOG4CXX_FATAL(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
//Todo maybe better errorhandling?
}
@@ -1360,7 +1357,7 @@
result = getCarobStmt(stmt)->bind_param(bind);
else
{
- LOG4CXX_ERROR(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
+ LOG4CXX_FATAL(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
//Todo maybe better errorhandling?
result = true;
}
@@ -1381,7 +1378,7 @@
result = getCarobStmt(stmt)->execute();
else
{
- LOG4CXX_ERROR(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
+ LOG4CXX_FATAL(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
//Todo maybe better errorhandling?
result = 1;
}
@@ -1402,7 +1399,7 @@
result = getCarobStmt(stmt)->bind_result(bind);
else
{
- LOG4CXX_ERROR(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
+ LOG4CXX_FATAL(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
//Todo maybe better errorhandling?
result = true;
}
@@ -1487,7 +1484,7 @@
result = getCarobStmt(stmt)->fetch();
else
{
- LOG4CXX_ERROR(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
+ LOG4CXX_FATAL(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
//Todo maybe better errorhandling?
result = 1;
}
@@ -1498,8 +1495,7 @@
/* Fetch data for one column of the current row of the result set. */
int
-mysql_stmt_fetch_column (MYSQL_STMT * stmt, MYSQL_BIND * bind,
- unsigned int column, unsigned long offset)
+mysql_stmt_fetch_column (MYSQL_STMT * stmt, MYSQL_BIND * bind, unsigned int
column, unsigned long offset)
{
LOG4CXX_DEBUG(logger, "Entering mysql_stmt_fetch_column: stmt=" << stmt << "
bind=" << bind << " column=" << column << " offset=" << offset);
@@ -1509,7 +1505,7 @@
result = getCarobStmt(stmt)->fetch_column(bind, column, offset);
else
{
- LOG4CXX_ERROR(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
+ LOG4CXX_FATAL(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
//Todo maybe better errorhandling?
}
@@ -1540,7 +1536,7 @@
if (isCarobObject(stmt))
result = CarobStmt::free_result(stmt);
else
- LOG4CXX_ERROR(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
+ LOG4CXX_FATAL(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
LOG4CXX_DEBUG(logger, "Leaving mysql_stmt_free_result: result=" << (bool)
result);
return result;
@@ -1607,7 +1603,7 @@
if (isCarobObject(stmt))
result = getCarobStmt(stmt)->reset();
else
- LOG4CXX_ERROR(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
+ LOG4CXX_FATAL(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
LOG4CXX_DEBUG(logger, "Leaving mysql_stmt_reset: result=" << (bool) result);
return result;
@@ -1659,8 +1655,7 @@
/* Sends long data in chunks to server. */
my_bool
-mysql_stmt_send_long_data (MYSQL_STMT * stmt, unsigned int parameter_number,
- const char *data, unsigned long length)
+mysql_stmt_send_long_data (MYSQL_STMT * stmt, unsigned int parameter_number,
const char *data, unsigned long length)
{
LOG4CXX_DEBUG(logger, "Entering mysql_stmt_send_long_data: stmt=" << stmt <<
" parameter_number=" << parameter_number << " data=" << data << " length=" <<
length);
@@ -1669,7 +1664,7 @@
if (isCarobObject(stmt))
result = getCarobStmt(stmt)->send_long_data(parameter_number, data,
length);
else
- LOG4CXX_ERROR(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
+ LOG4CXX_FATAL(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
LOG4CXX_DEBUG(logger, "Leaving mysql_stmt_send_long_data: result=" <<
(bool)result);
return result;
@@ -1687,7 +1682,7 @@
result = getCarobStmt(stmt)->store_result();
else
{
- LOG4CXX_ERROR(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
+ LOG4CXX_FATAL(logger, "The given mysql stmt pointer was not initialized
with mysql_stmt_init.");
//Todo maybe better errorhandling?
result = 1;
}
@@ -1730,7 +1725,7 @@
{
LOG4CXX_DEBUG(logger, "Entering mysql_master_query: mysql=" << mysql << "
query=" << q << " length=" << length);
my_bool result = mysql_real_query(mysql, q, length);
- LOG4CXX_DEBUG(logger, "Leaving mysql_master_query");
+ LOG4CXX_DEBUG(logger, "Leaving mysql_master_query: result=" << (bool)
result);
return result;
}
Index: libmysequoia/src/Utils.cpp
diff -u libmysequoia/src/Utils.cpp:1.32 libmysequoia/src/Utils.cpp:1.33
--- libmysequoia/src/Utils.cpp:1.32 Tue Jan 31 12:50:11 2006
+++ libmysequoia/src/Utils.cpp Tue Jan 31 16:31:52 2006
@@ -363,7 +363,7 @@
break;
default:
- LOG4CXX_ERROR(logger, "Not implemented yet!");
+ LOG4CXX_FATAL(logger, "Not implemented yet! buffer_type=" <<
bind->buffer_type);
break;
}
@@ -434,7 +434,7 @@
break;
default:
- LOG4CXX_ERROR(logger, "Not implemented yet!");
+ LOG4CXX_FATAL(logger, "Not implemented yet! buffer_type=" <<
bind->buffer_type);
break;
}
@@ -507,7 +507,7 @@
break;
default:
- LOG4CXX_ERROR(logger, "Not implemented yet!");
+ LOG4CXX_FATAL(logger, "Not implemented yet! buffer_type=" <<
bind->buffer_type);
break;
}
@@ -582,7 +582,7 @@
break;
default:
- LOG4CXX_ERROR(logger, "Not implemented yet!");
+ LOG4CXX_FATAL(logger, "Not implemented yet! buffer_type=" <<
bind->buffer_type);
break;
}
@@ -658,7 +658,7 @@
break;
default:
- LOG4CXX_ERROR(logger, "Not implemented yet!");
+ LOG4CXX_FATAL(logger, "Not implemented yet! buffer_type=" <<
bind->buffer_type);
break;
}
@@ -734,7 +734,7 @@
break;
default:
- LOG4CXX_ERROR(logger, "Not implemented yet!");
+ LOG4CXX_FATAL(logger, "Not implemented yet! buffer_type=" <<
bind->buffer_type);
break;
}
@@ -862,7 +862,7 @@
break;
default:
- LOG4CXX_ERROR(logger, "Not implemented yet!");
+ LOG4CXX_FATAL(logger, "Not implemented yet! buffer_type=" <<
bind->buffer_type);
break;
}
@@ -937,7 +937,7 @@
break;
default:
- LOG4CXX_ERROR(logger, "Not implemented yet!");
+ LOG4CXX_FATAL(logger, "Not implemented yet! buffer_type=" <<
bind->buffer_type);
break;
}
@@ -1014,7 +1014,7 @@
break;
default:
- LOG4CXX_ERROR(logger, "Not implemented yet!");
+ LOG4CXX_FATAL(logger, "Not implemented yet! buffer_type=" <<
bind->buffer_type);
break;
}
@@ -1092,7 +1092,7 @@
break;
default:
- LOG4CXX_ERROR(logger, "Not implemented yet!");
+ LOG4CXX_FATAL(logger, "Not implemented yet! buffer_type=" <<
bind->buffer_type);
break;
}
Index: libmysequoia/test/logger.cfg
diff -u libmysequoia/test/logger.cfg:1.1 libmysequoia/test/logger.cfg:removed
--- libmysequoia/test/logger.cfg:1.1 Sat Dec 17 15:03:46 2005
+++ libmysequoia/test/logger.cfg Tue Jan 31 16:31:52 2006
@@ -1,11 +0,0 @@
-log4j.rootLogger=debug, file
-
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=/tmp/mysequoia.log
-log4j.appender.file.MaxFileSize=100KB
-log4j.appender.file.MaxBackupIndex=3
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d %p %t %c (%F:%L) - %m%n
-
-# Print only messages of level DEBUG or above in the namespace MySQLAPI.
-log4j.logger.MySQLAPI=DEBUG
_______________________________________________
Carob-commits mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/carob-commits