summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpaul@teton.kitebird.com <>2003-10-01 12:24:40 -0500
committerpaul@teton.kitebird.com <>2003-10-01 12:24:40 -0500
commit3bee8b429d82b9c5aa25b6585e249678f0c1b400 (patch)
tree1d6081604b7e2e4dd94f27b7cba848e4a6d63240
parent95dffdb956e57ce3af72f8b7b673e952186a963b (diff)
parent0c1d64959d193742bdba78975f9d4b256f7d60f1 (diff)
downloadmariadb-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.cc10
-rw-r--r--sql/ha_berkeley.cc4
-rw-r--r--sql/item.h4
-rw-r--r--sql/sql_prepare.cc33
-rw-r--r--strings/ctype-mb.c2
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)