Commit 0c1d6495 authored by hf@deer.(none)'s avatar hf@deer.(none)

Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-4.1

into deer.(none):/home/hf/work/mysql-4.1.stmt
parents d1ae1a1f 73f2e739
...@@ -755,7 +755,10 @@ bool setup_params_data(st_prep_stmt *stmt) ...@@ -755,7 +755,10 @@ bool setup_params_data(st_prep_stmt *stmt)
{ {
uchar *buff= (uchar*)client_param->buffer; uchar *buff= (uchar*)client_param->buffer;
param->maybe_null= param->null_value= 0; param->maybe_null= param->null_value= 0;
param->setup_param_func(param,&buff); param->setup_param_func(param,&buff,
client_param->length ?
*client_param->length :
client_param->buffer_length);
} }
} }
param_no++; param_no++;
...@@ -796,7 +799,10 @@ bool setup_params_data_withlog(st_prep_stmt *stmt) ...@@ -796,7 +799,10 @@ bool setup_params_data_withlog(st_prep_stmt *stmt)
{ {
uchar *buff= (uchar*)client_param->buffer; uchar *buff= (uchar*)client_param->buffer;
param->maybe_null= param->null_value= 0; param->maybe_null= param->null_value= 0;
param->setup_param_func(param,&buff); param->setup_param_func(param,&buff,
client_param->length ?
*client_param->length :
client_param->buffer_length);
res= param->query_val_str(&str); res= param->query_val_str(&str);
} }
} }
......
...@@ -304,11 +304,13 @@ void berkeley_cleanup_log_files(void) ...@@ -304,11 +304,13 @@ void berkeley_cleanup_log_files(void)
char **names; char **names;
int error; int error;
// by HF. Sometimes it crashes. TODO - find out why
#ifndef EMBEDDED_LIBRARY
/* XXX: Probably this should be done somewhere else, and /* XXX: Probably this should be done somewhere else, and
* should be tunable by the user. */ * should be tunable by the user. */
if ((error = db_env->txn_checkpoint(db_env, 0, 0, 0))) if ((error = db_env->txn_checkpoint(db_env, 0, 0, 0)))
my_error(ER_ERROR_DURING_CHECKPOINT, MYF(0), error); /* purecov: inspected */ my_error(ER_ERROR_DURING_CHECKPOINT, MYF(0), error); /* purecov: inspected */
#endif
if ((error = db_env->log_archive(db_env, &names, DB_ARCH_ABS)) != 0) if ((error = db_env->log_archive(db_env, &names, DB_ARCH_ABS)) != 0)
{ {
DBUG_PRINT("error", ("log_archive failed (error %d)", error)); /* purecov: inspected */ DBUG_PRINT("error", ("log_archive failed (error %d)", error)); /* purecov: inspected */
......
...@@ -346,7 +346,11 @@ class Item_param :public Item ...@@ -346,7 +346,11 @@ class Item_param :public Item
void set_time(TIME *tm, timestamp_type type); void set_time(TIME *tm, timestamp_type type);
bool get_time(TIME *tm); bool get_time(TIME *tm);
void reset() {} void reset() {}
#ifndef EMBEDDED_LIBRARY
void (*setup_param_func)(Item_param *param, uchar **pos); void (*setup_param_func)(Item_param *param, uchar **pos);
#else
void (*setup_param_func)(Item_param *param, uchar **pos, ulong data_len);
#endif
enum Item_result result_type () const enum Item_result result_type () const
{ return item_result_type; } { return item_result_type; }
String *query_val_str(String *str); String *query_val_str(String *str);
......
...@@ -76,6 +76,14 @@ Long data handling: ...@@ -76,6 +76,14 @@ Long data handling:
#define STMT_QUERY_LOG_LENGTH 8192 #define STMT_QUERY_LOG_LENGTH 8192
#ifdef EMBEDDED_LIBRARY
#define SETUP_PARAM_FUNCTION(fn_name) \
static void fn_name(Item_param *param, uchar **pos, ulong data_len)
#else
#define SETUP_PARAM_FUNCTION(fn_name) \
static void fn_name(Item_param *param, uchar **pos)
#endif
String my_null_string("NULL", 4, default_charset_info); String my_null_string("NULL", 4, default_charset_info);
/* /*
...@@ -189,6 +197,7 @@ static bool send_item_params(PREP_STMT *stmt) ...@@ -189,6 +197,7 @@ static bool send_item_params(PREP_STMT *stmt)
caller by positing the pointer to param data caller by positing the pointer to param data
*/ */
#ifndef EMBEDDED_LIBRARY
static ulong get_param_length(uchar **packet) static ulong get_param_length(uchar **packet)
{ {
reg1 uchar *pos= *packet; reg1 uchar *pos= *packet;
...@@ -210,6 +219,10 @@ static ulong get_param_length(uchar **packet) ...@@ -210,6 +219,10 @@ static ulong get_param_length(uchar **packet)
(*packet)+=9; // Must be 254 when here (*packet)+=9; // Must be 254 when here
return (ulong) uint4korr(pos+1); return (ulong) uint4korr(pos+1);
} }
#else
#define get_param_length(A) data_len
#endif /*!EMBEDDED_LIBRARY*/
/* /*
Setup param conversion routines Setup param conversion routines
...@@ -229,31 +242,31 @@ static ulong get_param_length(uchar **packet) ...@@ -229,31 +242,31 @@ static ulong get_param_length(uchar **packet)
*/ */
static void setup_param_tiny(Item_param *param, uchar **pos) SETUP_PARAM_FUNCTION(setup_param_tiny)
{ {
param->set_int((longlong)(**pos)); param->set_int((longlong)(**pos));
*pos+= 1; *pos+= 1;
} }
static void setup_param_short(Item_param *param, uchar **pos) SETUP_PARAM_FUNCTION(setup_param_short)
{ {
param->set_int((longlong)sint2korr(*pos)); param->set_int((longlong)sint2korr(*pos));
*pos+= 2; *pos+= 2;
} }
static void setup_param_int32(Item_param *param, uchar **pos) SETUP_PARAM_FUNCTION(setup_param_int32)
{ {
param->set_int((longlong)sint4korr(*pos)); param->set_int((longlong)sint4korr(*pos));
*pos+= 4; *pos+= 4;
} }
static void setup_param_int64(Item_param *param, uchar **pos) SETUP_PARAM_FUNCTION(setup_param_int64)
{ {
param->set_int((longlong)sint8korr(*pos)); param->set_int((longlong)sint8korr(*pos));
*pos+= 8; *pos+= 8;
} }
static void setup_param_float(Item_param *param, uchar **pos) SETUP_PARAM_FUNCTION(setup_param_float)
{ {
float data; float data;
float4get(data,*pos); float4get(data,*pos);
...@@ -261,7 +274,7 @@ static void setup_param_float(Item_param *param, uchar **pos) ...@@ -261,7 +274,7 @@ static void setup_param_float(Item_param *param, uchar **pos)
*pos+= 4; *pos+= 4;
} }
static void setup_param_double(Item_param *param, uchar **pos) SETUP_PARAM_FUNCTION(setup_param_double)
{ {
double data; double data;
float8get(data,*pos); float8get(data,*pos);
...@@ -269,7 +282,7 @@ static void setup_param_double(Item_param *param, uchar **pos) ...@@ -269,7 +282,7 @@ static void setup_param_double(Item_param *param, uchar **pos)
*pos+= 8; *pos+= 8;
} }
static void setup_param_time(Item_param *param, uchar **pos) SETUP_PARAM_FUNCTION(setup_param_time)
{ {
ulong length; ulong length;
...@@ -293,7 +306,7 @@ static void setup_param_time(Item_param *param, uchar **pos) ...@@ -293,7 +306,7 @@ static void setup_param_time(Item_param *param, uchar **pos)
*pos+= length; *pos+= length;
} }
static void setup_param_datetime(Item_param *param, uchar **pos) SETUP_PARAM_FUNCTION(setup_param_datetime)
{ {
uint length= get_param_length(pos); uint length= get_param_length(pos);
...@@ -323,7 +336,7 @@ static void setup_param_datetime(Item_param *param, uchar **pos) ...@@ -323,7 +336,7 @@ static void setup_param_datetime(Item_param *param, uchar **pos)
*pos+= length; *pos+= length;
} }
static void setup_param_date(Item_param *param, uchar **pos) SETUP_PARAM_FUNCTION(setup_param_date)
{ {
ulong length; ulong length;
...@@ -345,7 +358,7 @@ static void setup_param_date(Item_param *param, uchar **pos) ...@@ -345,7 +358,7 @@ static void setup_param_date(Item_param *param, uchar **pos)
*pos+= length; *pos+= length;
} }
static void setup_param_str(Item_param *param, uchar **pos) SETUP_PARAM_FUNCTION(setup_param_str)
{ {
ulong len= get_param_length(pos); ulong len= get_param_length(pos);
param->set_value((const char *)*pos, len); param->set_value((const char *)*pos, len);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment