summaryrefslogtreecommitdiff
path: root/sql/sql_prepare.cc
diff options
context:
space:
mode:
authorhf@deer.(none) <>2003-10-01 16:44:57 +0500
committerhf@deer.(none) <>2003-10-01 16:44:57 +0500
commit73f2e739b29e15d1e5c043c5dfc190700f3a0872 (patch)
tree801af6a8599b4055c8948a7f7c06275ba1d543f2 /sql/sql_prepare.cc
parent9dcce9b0f33619d98b12d9e266bee55518edeabe (diff)
downloadmariadb-git-73f2e739b29e15d1e5c043c5dfc190700f3a0872.tar.gz
Fix for #1430
there was an error about sendind prepared parameters to the server
Diffstat (limited to 'sql/sql_prepare.cc')
-rw-r--r--sql/sql_prepare.cc33
1 files changed, 23 insertions, 10 deletions
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);