diff options
author | paul@teton.kitebird.com <> | 2003-10-01 12:24:40 -0500 |
---|---|---|
committer | paul@teton.kitebird.com <> | 2003-10-01 12:24:40 -0500 |
commit | 3bee8b429d82b9c5aa25b6585e249678f0c1b400 (patch) | |
tree | 1d6081604b7e2e4dd94f27b7cba848e4a6d63240 | |
parent | 95dffdb956e57ce3af72f8b7b673e952186a963b (diff) | |
parent | 0c1d64959d193742bdba78975f9d4b256f7d60f1 (diff) | |
download | mariadb-git-3bee8b429d82b9c5aa25b6585e249678f0c1b400.tar.gz |
Merge paul@bk-internal.mysql.com:/home/bk/mysql-4.1
into teton.kitebird.com:/home/paul/mysql-4.1
-rw-r--r-- | libmysqld/lib_sql.cc | 10 | ||||
-rw-r--r-- | sql/ha_berkeley.cc | 4 | ||||
-rw-r--r-- | sql/item.h | 4 | ||||
-rw-r--r-- | sql/sql_prepare.cc | 33 | ||||
-rw-r--r-- | strings/ctype-mb.c | 2 |
5 files changed, 39 insertions, 14 deletions
diff --git a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc index 9b0b32b628e..ddfd05d64b6 100644 --- a/libmysqld/lib_sql.cc +++ b/libmysqld/lib_sql.cc @@ -755,7 +755,10 @@ bool setup_params_data(st_prep_stmt *stmt) { uchar *buff= (uchar*)client_param->buffer; 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++; @@ -796,7 +799,10 @@ bool setup_params_data_withlog(st_prep_stmt *stmt) { uchar *buff= (uchar*)client_param->buffer; 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); } } diff --git a/sql/ha_berkeley.cc b/sql/ha_berkeley.cc index 34915a6020c..1b99efeaa43 100644 --- a/sql/ha_berkeley.cc +++ b/sql/ha_berkeley.cc @@ -304,11 +304,13 @@ void berkeley_cleanup_log_files(void) char **names; int error; +// by HF. Sometimes it crashes. TODO - find out why +#ifndef EMBEDDED_LIBRARY /* XXX: Probably this should be done somewhere else, and * should be tunable by the user. */ if ((error = db_env->txn_checkpoint(db_env, 0, 0, 0))) 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) { DBUG_PRINT("error", ("log_archive failed (error %d)", error)); /* purecov: inspected */ diff --git a/sql/item.h b/sql/item.h index b2d67a661a6..d10df759b28 100644 --- a/sql/item.h +++ b/sql/item.h @@ -346,7 +346,11 @@ public: void set_time(TIME *tm, timestamp_type type); bool get_time(TIME *tm); void reset() {} +#ifndef EMBEDDED_LIBRARY 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 { return item_result_type; } String *query_val_str(String *str); diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index ff7886f87f1..ff1a8f8f8e6 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -76,6 +76,14 @@ Long data handling: #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); /* @@ -189,6 +197,7 @@ static bool send_item_params(PREP_STMT *stmt) caller by positing the pointer to param data */ +#ifndef EMBEDDED_LIBRARY static ulong get_param_length(uchar **packet) { reg1 uchar *pos= *packet; @@ -210,6 +219,10 @@ static ulong get_param_length(uchar **packet) (*packet)+=9; // Must be 254 when here return (ulong) uint4korr(pos+1); } +#else +#define get_param_length(A) data_len +#endif /*!EMBEDDED_LIBRARY*/ + /* Setup param conversion routines @@ -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)); *pos+= 1; } -static void setup_param_short(Item_param *param, uchar **pos) +SETUP_PARAM_FUNCTION(setup_param_short) { param->set_int((longlong)sint2korr(*pos)); *pos+= 2; } -static void setup_param_int32(Item_param *param, uchar **pos) +SETUP_PARAM_FUNCTION(setup_param_int32) { param->set_int((longlong)sint4korr(*pos)); *pos+= 4; } -static void setup_param_int64(Item_param *param, uchar **pos) +SETUP_PARAM_FUNCTION(setup_param_int64) { param->set_int((longlong)sint8korr(*pos)); *pos+= 8; } -static void setup_param_float(Item_param *param, uchar **pos) +SETUP_PARAM_FUNCTION(setup_param_float) { float data; float4get(data,*pos); @@ -261,7 +274,7 @@ static void setup_param_float(Item_param *param, uchar **pos) *pos+= 4; } -static void setup_param_double(Item_param *param, uchar **pos) +SETUP_PARAM_FUNCTION(setup_param_double) { double data; float8get(data,*pos); @@ -269,7 +282,7 @@ static void setup_param_double(Item_param *param, uchar **pos) *pos+= 8; } -static void setup_param_time(Item_param *param, uchar **pos) +SETUP_PARAM_FUNCTION(setup_param_time) { ulong length; @@ -293,7 +306,7 @@ static void setup_param_time(Item_param *param, uchar **pos) *pos+= length; } -static void setup_param_datetime(Item_param *param, uchar **pos) +SETUP_PARAM_FUNCTION(setup_param_datetime) { uint length= get_param_length(pos); @@ -323,7 +336,7 @@ static void setup_param_datetime(Item_param *param, uchar **pos) *pos+= length; } -static void setup_param_date(Item_param *param, uchar **pos) +SETUP_PARAM_FUNCTION(setup_param_date) { ulong length; @@ -345,7 +358,7 @@ static void setup_param_date(Item_param *param, uchar **pos) *pos+= length; } -static void setup_param_str(Item_param *param, uchar **pos) +SETUP_PARAM_FUNCTION(setup_param_str) { ulong len= get_param_length(pos); param->set_value((const char *)*pos, len); diff --git a/strings/ctype-mb.c b/strings/ctype-mb.c index dd6fbee8e17..813a33fd229 100644 --- a/strings/ctype-mb.c +++ b/strings/ctype-mb.c @@ -307,7 +307,7 @@ uint my_instr_mb(CHARSET_INFO *cs, { if (nmatch) { - match[0].beg= big0; + match[0].beg= 0; match[0].end= big-big0; match[0].mblen= res; if (nmatch > 1) |