summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <ndbdev@eel.hemma.oreland.se>2004-08-05 22:32:25 +0200
committerunknown <ndbdev@eel.hemma.oreland.se>2004-08-05 22:32:25 +0200
commit432e4697467499ff336fe0945e68bdfbe62b45db (patch)
tree4d729d126adc44dbd32d9289bc4c90363b9b1784
parente223c07eb18147b809cb885ca267ca43f4870701 (diff)
parentcdca651f6dd2c5628bb4470b3b13368a2c8db8e1 (diff)
downloadmariadb-git-432e4697467499ff336fe0945e68bdfbe62b45db.tar.gz
Merge
BitKeeper/etc/logging_ok: auto-union configure.in: SCCS merged
-rwxr-xr-xBUILD/compile-hpux11-parisc2-aCC2
-rw-r--r--BitKeeper/etc/logging_ok2
-rw-r--r--configure.in4
-rw-r--r--libmysql/libmysql.c439
-rw-r--r--ndb/include/kernel/kernel_config_parameters.h5
-rw-r--r--ndb/src/kernel/vm/Configuration.cpp25
-rw-r--r--netware/mysql_test_run.c2
-rw-r--r--sql/mysqld.cc2
-rw-r--r--tests/client_test.c6
9 files changed, 266 insertions, 221 deletions
diff --git a/BUILD/compile-hpux11-parisc2-aCC b/BUILD/compile-hpux11-parisc2-aCC
index 09bb5821b6d..1bdef94e080 100755
--- a/BUILD/compile-hpux11-parisc2-aCC
+++ b/BUILD/compile-hpux11-parisc2-aCC
@@ -13,7 +13,7 @@ fi
# Also sends +Oprocelim and +Ofastaccess to the linker
# (see ld(1)).
-release_flags="-fast +O4"
+release_flags="-fast +O3"
# -z Do not bind anything to address zero. This option
# allows runtime detection of null pointers. See the
diff --git a/BitKeeper/etc/logging_ok b/BitKeeper/etc/logging_ok
index f45647f87c6..e4648f7d849 100644
--- a/BitKeeper/etc/logging_ok
+++ b/BitKeeper/etc/logging_ok
@@ -84,6 +84,7 @@ joreland@mysql.com
jorge@linux.jorge.mysql.com
jplindst@t41.(none)
kaj@work.mysql.com
+kent@mysql.com
konstantin@mysql.com
kostja@oak.local
lenz@kallisto.mysql.com
@@ -97,6 +98,7 @@ miguel@hegel.txg
miguel@light.
miguel@light.local
miguel@sartre.local
+mikron@c-fb0ae253.1238-1-64736c10.cust.bredbandsbolaget.se
mikron@mikael-ronstr-ms-dator.local
mmatthew@markslaptop.
monty@bitch.mysql.fi
diff --git a/configure.in b/configure.in
index 6fe3a29ca99..0fb0ccb9b9b 100644
--- a/configure.in
+++ b/configure.in
@@ -2961,10 +2961,10 @@ then
if test "$with_debug" = "yes"
then
# Medium debug.
- NDB_DEFS="-DVM_TRACE -DERROR_INSERT -DARRAY_GUARD"
+ NDB_DEFS="-DNDB_DEBUG -DVM_TRACE -DERROR_INSERT -DARRAY_GUARD"
elif test "$with_debug" = "full"
then
- NDB_DEFS="-DVM_TRACE -DERROR_INSERT -DARRAY_GUARD"
+ NDB_DEFS="-DNDB_DEBUG_FULL -DVM_TRACE -DERROR_INSERT -DARRAY_GUARD"
else
NDB_DEFS="-DNDEBUG"
fi
diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c
index fc7728c98e0..b9c8201ed56 100644
--- a/libmysql/libmysql.c
+++ b/libmysql/libmysql.c
@@ -3018,6 +3018,7 @@ mysql_stmt_send_long_data(MYSQL_STMT *stmt, uint param_number,
static void set_zero_time(MYSQL_TIME *tm)
{
bzero((void *)tm, sizeof(*tm));
+ tm->time_type= MYSQL_TIMESTAMP_NONE;
}
@@ -3041,337 +3042,397 @@ static void set_zero_time(MYSQL_TIME *tm)
static uint read_binary_time(MYSQL_TIME *tm, uchar **pos)
{
- uchar *to;
uint length;
/* net_field_length will set pos to the first byte of data */
if (!(length= net_field_length(pos)))
- {
set_zero_time(tm);
- return 0;
- }
-
- to= *pos;
- tm->neg= (bool) to[0];
+ else
+ {
+ uchar *to= *pos;
+ tm->neg= (bool) to[0];
- tm->day= (ulong) sint4korr(to+1);
- tm->hour= (uint) to[5];
- tm->minute= (uint) to[6];
- tm->second= (uint) to[7];
- tm->second_part= (length > 8) ? (ulong) sint4korr(to+8) : 0;
+ tm->day= (ulong) sint4korr(to+1);
+ tm->hour= (uint) to[5];
+ tm->minute= (uint) to[6];
+ tm->second= (uint) to[7];
+ tm->second_part= (length > 8) ? (ulong) sint4korr(to+8) : 0;
- tm->year= tm->month= 0;
+ tm->year= tm->month= 0;
+ tm->time_type= MYSQL_TIMESTAMP_TIME;
+ }
return length;
}
static uint read_binary_datetime(MYSQL_TIME *tm, uchar **pos)
{
- uchar *to;
uint length;
if (!(length= net_field_length(pos)))
- {
set_zero_time(tm);
- return 0;
- }
-
- to= *pos;
+ else
+ {
+ uchar *to= *pos;
- tm->neg= 0;
- tm->year= (uint) sint2korr(to);
- tm->month= (uint) to[2];
- tm->day= (uint) to[3];
+ tm->neg= 0;
+ tm->year= (uint) sint2korr(to);
+ tm->month= (uint) to[2];
+ tm->day= (uint) to[3];
- if (length > 4)
- {
- tm->hour= (uint) to[4];
- tm->minute= (uint) to[5];
- tm->second= (uint) to[6];
+ if (length > 4)
+ {
+ tm->hour= (uint) to[4];
+ tm->minute= (uint) to[5];
+ tm->second= (uint) to[6];
+ }
+ else
+ tm->hour= tm->minute= tm->second= 0;
+ tm->second_part= (length > 7) ? (ulong) sint4korr(to+7) : 0;
+ tm->time_type= MYSQL_TIMESTAMP_DATETIME;
}
- else
- tm->hour= tm->minute= tm->second= 0;
- tm->second_part= (length > 7) ? (ulong) sint4korr(to+7) : 0;
return length;
}
static uint read_binary_date(MYSQL_TIME *tm, uchar **pos)
{
- uchar *to;
uint length;
if (!(length= net_field_length(pos)))
- {
set_zero_time(tm);
- return 0;
- }
-
- to= *pos;
- tm->year = (uint) sint2korr(to);
- tm->month= (uint) to[2];
- tm->day= (uint) to[3];
+ else
+ {
+ uchar *to= *pos;
+ tm->year = (uint) sint2korr(to);
+ tm->month= (uint) to[2];
+ tm->day= (uint) to[3];
- tm->hour= tm->minute= tm->second= 0;
- tm->second_part= 0;
- tm->neg= 0;
+ tm->hour= tm->minute= tm->second= 0;
+ tm->second_part= 0;
+ tm->neg= 0;
+ tm->time_type= MYSQL_TIMESTAMP_DATE;
+ }
return length;
}
-/* Convert integer value to client buffer type. */
+/*
+ Convert string to supplied buffer of any type.
+
+ SYNOPSIS
+ fetch_string_with_conversion()
+ param output buffer descriptor
+ value column data
+ length data length
+*/
-static void send_data_long(MYSQL_BIND *param, MYSQL_FIELD *field,
- longlong value)
+static void fetch_string_with_conversion(MYSQL_BIND *param, char *value,
+ uint length)
{
char *buffer= (char *)param->buffer;
- uint field_is_unsigned= (field->flags & UNSIGNED_FLAG);
+ int err= 0;
- switch (param->buffer_type) {
+ /*
+ This function should support all target buffer types: the rest
+ of conversion functions can delegate conversion to it.
+ */
+ switch(param->buffer_type) {
case MYSQL_TYPE_NULL: /* do nothing */
break;
case MYSQL_TYPE_TINY:
- *(uchar *)param->buffer= (uchar) value;
+ {
+ uchar data= (uchar) my_strntol(&my_charset_latin1, value, length, 10,
+ NULL, &err);
+ *buffer= data;
break;
+ }
case MYSQL_TYPE_SHORT:
- shortstore(buffer, value);
+ {
+ short data= (short) my_strntol(&my_charset_latin1, value, length, 10,
+ NULL, &err);
+ shortstore(buffer, data);
break;
+ }
case MYSQL_TYPE_LONG:
- longstore(buffer, value);
+ {
+ int32 data= (int32)my_strntol(&my_charset_latin1, value, length, 10,
+ NULL, &err);
+ longstore(buffer, data);
break;
+ }
case MYSQL_TYPE_LONGLONG:
- longlongstore(buffer, value);
+ {
+ longlong data= my_strntoll(&my_charset_latin1, value, length, 10,
+ NULL, &err);
+ longlongstore(buffer, data);
break;
+ }
case MYSQL_TYPE_FLOAT:
{
- float data= (field_is_unsigned ? (float) ulonglong2double(value) :
- (float) value);
+ float data = (float) my_strntod(&my_charset_latin1, value, length,
+ NULL, &err);
floatstore(buffer, data);
break;
}
case MYSQL_TYPE_DOUBLE:
{
- double data= (field_is_unsigned ? ulonglong2double(value) :
- (double) value);
+ double data= my_strntod(&my_charset_latin1, value, length, NULL, &err);
doublestore(buffer, data);
break;
}
+ case MYSQL_TYPE_TIME:
+ {
+ MYSQL_TIME *tm= (MYSQL_TIME *)buffer;
+ str_to_time(value, length, tm, &err);
+ break;
+ }
+ case MYSQL_TYPE_DATE:
+ case MYSQL_TYPE_DATETIME:
+ {
+ MYSQL_TIME *tm= (MYSQL_TIME *)buffer;
+ str_to_datetime(value, length, tm, 0, &err);
+ break;
+ }
+ case MYSQL_TYPE_TINY_BLOB:
+ case MYSQL_TYPE_MEDIUM_BLOB:
+ case MYSQL_TYPE_LONG_BLOB:
+ case MYSQL_TYPE_BLOB:
default:
{
- char tmp[22]; /* Enough for longlong */
- uint length= (uint)(longlong10_to_str(value,(char *)tmp,
- field_is_unsigned ? 10: -10) -
- tmp);
- ulong copy_length= min((ulong)length-param->offset, param->buffer_length);
- if ((long) copy_length < 0)
- copy_length=0;
+ /*
+ Copy column data to the buffer taking into account offset,
+ data length and buffer length.
+ */
+ char *start= value + param->offset;
+ char *end= value + length;
+ ulong copy_length;
+ if (start < end)
+ {
+ copy_length= end - start;
+ /* We've got some data beyond offset: copy up to buffer_length bytes */
+ if (param->buffer_length)
+ memcpy(buffer, start, min(copy_length, param->buffer_length));
+ }
else
- memcpy(buffer, (char *)tmp+param->offset, copy_length);
+ copy_length= 0;
+ if (copy_length < param->buffer_length)
+ buffer[copy_length]= '\0';
+ /*
+ param->length will always contain length of entire column;
+ number of copied bytes may be way different:
+ */
*param->length= length;
-
- if (copy_length != param->buffer_length)
- *(buffer+copy_length)= '\0';
+ break;
}
}
}
-/* Convert Double to buffer types */
+/*
+ Convert integer value to client buffer of any type.
+
+ SYNOPSIS
+ fetch_long_with_conversion()
+ param output buffer descriptor
+ field column metadata
+ value column data
+*/
-static void send_data_double(MYSQL_BIND *param, double value)
+static void fetch_long_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field,
+ longlong value)
{
char *buffer= (char *)param->buffer;
+ uint field_is_unsigned= (field->flags & UNSIGNED_FLAG);
- switch(param->buffer_type) {
+ switch (param->buffer_type) {
case MYSQL_TYPE_NULL: /* do nothing */
break;
case MYSQL_TYPE_TINY:
- *buffer= (uchar)value;
+ *(uchar *)param->buffer= (uchar) value;
break;
case MYSQL_TYPE_SHORT:
- shortstore(buffer, (short)value);
+ shortstore(buffer, value);
break;
case MYSQL_TYPE_LONG:
- longstore(buffer, (long)value);
+ longstore(buffer, value);
break;
case MYSQL_TYPE_LONGLONG:
- {
- longlong val= (longlong) value;
- longlongstore(buffer, val);
+ longlongstore(buffer, value);
break;
- }
case MYSQL_TYPE_FLOAT:
{
- float data= (float) value;
+ float data= field_is_unsigned ? (float) ulonglong2double(value) :
+ (float) value;
floatstore(buffer, data);
break;
}
case MYSQL_TYPE_DOUBLE:
{
- doublestore(buffer, value);
+ double data= field_is_unsigned ? ulonglong2double(value) :
+ (double) value;
+ doublestore(buffer, data);
break;
}
default:
{
- char tmp[128];
- uint length= my_sprintf(tmp,(tmp,"%g",value));
- ulong copy_length= min((ulong)length-param->offset, param->buffer_length);
- if ((long) copy_length < 0)
- copy_length=0;
- else
- memcpy(buffer, (char *)tmp+param->offset, copy_length);
- *param->length= length;
-
- if (copy_length != param->buffer_length)
- *(buffer+copy_length)= '\0';
+ char buff[22]; /* Enough for longlong */
+ char *end= longlong10_to_str(value, buff, field_is_unsigned ? 10: -10);
+ /* Resort to string conversion which supports all typecodes */
+ return fetch_string_with_conversion(param, buff, end - buff);
}
}
}
-/* Convert string to buffer types */
+/*
+ Convert double/float column to supplied buffer of any type.
+
+ SYNOPSIS
+ fetch_float_with_conversion()
+ param output buffer descriptor
+ field column metadata
+ value column data
+ width default number of significant digits used when converting
+ float/double to string
+*/
-static void send_data_str(MYSQL_BIND *param, char *value, uint length)
+static void fetch_float_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field,
+ double value, int width)
{
char *buffer= (char *)param->buffer;
- int err=0;
- switch(param->buffer_type) {
+ switch (param->buffer_type) {
case MYSQL_TYPE_NULL: /* do nothing */
break;
case MYSQL_TYPE_TINY:
- {
- uchar data= (uchar)my_strntol(&my_charset_latin1,value,length,10,NULL,
- &err);
- *buffer= data;
+ *buffer= (uchar)value;
break;
- }
case MYSQL_TYPE_SHORT:
- {
- short data= (short)my_strntol(&my_charset_latin1,value,length,10,NULL,
- &err);
- shortstore(buffer, data);
+ shortstore(buffer, (short)value);
break;
- }
case MYSQL_TYPE_LONG:
- {
- int32 data= (int32)my_strntol(&my_charset_latin1,value,length,10,NULL,
- &err);
- longstore(buffer, data);
+ longstore(buffer, (long)value);
break;
- }
case MYSQL_TYPE_LONGLONG:
{
- longlong data= my_strntoll(&my_charset_latin1,value,length,10,NULL,&err);
- longlongstore(buffer, data);
+ longlong val= (longlong) value;
+ longlongstore(buffer, val);
break;
}
case MYSQL_TYPE_FLOAT:
{
- float data = (float)my_strntod(&my_charset_latin1,value,length,NULL,&err);
+ float data= (float) value;
floatstore(buffer, data);
break;
}
case MYSQL_TYPE_DOUBLE:
{
- double data= my_strntod(&my_charset_latin1,value,length,NULL,&err);
- doublestore(buffer, data);
- break;
- }
- case MYSQL_TYPE_TIME:
- {
- int dummy;
- MYSQL_TIME *tm= (MYSQL_TIME *)buffer;
- str_to_time(value, length, tm, &dummy);
- break;
- }
- case MYSQL_TYPE_DATE:
- case MYSQL_TYPE_DATETIME:
- {
- int dummy;
- MYSQL_TIME *tm= (MYSQL_TIME *)buffer;
- str_to_datetime(value, length, tm, 0, &dummy);
+ doublestore(buffer, value);
break;
}
- case MYSQL_TYPE_TINY_BLOB:
- case MYSQL_TYPE_MEDIUM_BLOB:
- case MYSQL_TYPE_LONG_BLOB:
- case MYSQL_TYPE_BLOB:
- *param->length= length;
- length= min(length-param->offset, param->buffer_length);
- if ((long) length > 0)
- memcpy(buffer, value+param->offset, length);
- break;
default:
- *param->length= length;
- length= min(length-param->offset, param->buffer_length);
- if ((long) length < 0)
- length= 0;
+ {
+ /*
+ Resort to fetch_string_with_conversion: this should handle
+ floating point -> string conversion nicely, honor all typecodes
+ and param->offset possibly set in mysql_stmt_fetch_column
+ */
+ char buff[331];
+ char *end;
+ /* TODO: move this to a header shared between client and server. */
+#define NOT_FIXED_DEC 31
+ if (field->decimals >= 31)
+#undef NOT_FIXED_DEC
+ {
+ sprintf(buff, "%-*.*g", (int) param->buffer_length, width, value);
+ end= strcend(buff, ' ');
+ *end= 0;
+ }
else
- memcpy(buffer, value+param->offset, length);
- if (length != param->buffer_length)
- buffer[length]= '\0';
+ {
+ sprintf(buff, "%.*f", field->decimals, value);
+ end= strend(buff);
+ }
+ return fetch_string_with_conversion(param, buff, end - buff);
+ }
}
}
-static void send_data_time(MYSQL_BIND *param, MYSQL_TIME ltime,
- uint length)
+/*
+ Fetch time/date/datetime to supplied buffer of any type
+
+ SYNOPSIS
+ param output buffer descriptor
+ time column data
+*/
+
+static void fetch_datetime_with_conversion(MYSQL_BIND *param,
+ MYSQL_TIME *time)
{
switch (param->buffer_type) {
case MYSQL_TYPE_NULL: /* do nothing */
break;
-
case MYSQL_TYPE_DATE:
case MYSQL_TYPE_TIME:
case MYSQL_TYPE_DATETIME:
case MYSQL_TYPE_TIMESTAMP:
- {
- MYSQL_TIME *tm= (MYSQL_TIME *)param->buffer;
-
- tm->year= ltime.year;
- tm->month= ltime.month;
- tm->day= ltime.day;
-
- tm->hour= ltime.hour;
- tm->minute= ltime.minute;
- tm->second= ltime.second;
-
- tm->second_part= ltime.second_part;
- tm->neg= ltime.neg;
+ /* XXX: should we copy only relevant members here? */
+ *(MYSQL_TIME *)(param->buffer)= *time;
break;
- }
default:
{
+ /*
+ Convert time value to string and delegate the rest to
+ fetch_string_with_conversion:
+ */
char buff[25];
+ uint length;
- if (!length)
- ltime.time_type= MYSQL_TIMESTAMP_NONE;
- switch (ltime.time_type) {
+ switch (time->time_type) {
case MYSQL_TIMESTAMP_DATE:
- length= my_sprintf(buff,(buff, "%04d-%02d-%02d", ltime.year,
- ltime.month,ltime.day));
+ length= my_sprintf(buff,(buff, "%04d-%02d-%02d",
+ time->year, time->month, time->day));
break;
case MYSQL_TIMESTAMP_DATETIME:
length= my_sprintf(buff,(buff, "%04d-%02d-%02d %02d:%02d:%02d",
- ltime.year,ltime.month,ltime.day,
- ltime.hour,ltime.minute,ltime.second));
+ time->year, time->month, time->day,
+ time->hour, time->minute, time->second));
break;
case MYSQL_TIMESTAMP_TIME:
length= my_sprintf(buff, (buff, "%02d:%02d:%02d",
- ltime.hour,ltime.minute,ltime.second));
+ time->hour, time->minute, time->second));
break;
default:
length= 0;
buff[0]='\0';
+ break;
}
- send_data_str(param, (char *)buff, length);
+ /* Resort to string conversion */
+ fetch_string_with_conversion(param, (char *)buff, length);
+ break;
}
}
}
-/* Fetch data to client buffers with conversion. */
+/*
+ Fetch and convert result set column to output buffer.
+
+ SYNOPSIS
+ fetch_result_with_conversion()
+ param output buffer descriptor
+ field column metadata
+ row points to a column of result set tuple in binary format
+
+ DESCRIPTION
+ This is a fallback implementation of column fetch used
+ if column and output buffer types do not match.
+ Increases tuple pointer to point at the next column within the
+ tuple.
+*/
-static void fetch_results(MYSQL_BIND *param, MYSQL_FIELD *field, uchar **row)
+static void fetch_result_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field,
+ uchar **row)
{
ulong length;
enum enum_field_types field_type= field->type;
@@ -3381,9 +3442,9 @@ static void fetch_results(MYSQL_BIND *param, MYSQL_FIELD *field, uchar **row)
{
char value= (char) **row;
uint field_is_unsigned= (field->flags & UNSIGNED_FLAG);
- longlong data= ((field_is_unsigned) ? (longlong) (unsigned char) value:
- (longlong) value);
- send_data_long(param, field, data);
+ longlong data= (field_is_unsigned) ? (longlong) (unsigned char) value:
+ (longlong) value;
+ fetch_long_with_conversion(param, field, data);
length= 1;
break;
}
@@ -3394,7 +3455,7 @@ static void fetch_results(MYSQL_BIND *param, MYSQL_FIELD *field, uchar **row)
uint field_is_unsigned= (field->flags & UNSIGNED_FLAG);
longlong data= ((field_is_unsigned) ? (longlong) (unsigned short) value:
(longlong) value);
- send_data_long(param, field, data);
+ fetch_long_with_conversion(param, field, data);
length= 2;
break;
}
@@ -3404,14 +3465,14 @@ static void fetch_results(MYSQL_BIND *param, MYSQL_FIELD *field, uchar **row)
uint field_is_unsigned= (field->flags & UNSIGNED_FLAG);
longlong data= ((field_is_unsigned) ? (longlong) (unsigned long) value:
(longlong) value);
- send_data_long(param, field, data);
+ fetch_long_with_conversion(param, field, data);
length= 4;
break;
}
case MYSQL_TYPE_LONGLONG:
{
longlong value= (longlong)sint8korr(*row);
- send_data_long(param, field, value);
+ fetch_long_with_conversion(param, field, value);
length= 8;
break;
}
@@ -3419,7 +3480,7 @@ static void fetch_results(MYSQL_BIND *param, MYSQL_FIELD *field, uchar **row)
{
float value;
float4get(value,*row);
- send_data_double(param,value);
+ fetch_float_with_conversion(param, field, value, FLT_DIG);
length= 4;
break;
}
@@ -3427,7 +3488,7 @@ static void fetch_results(MYSQL_BIND *param, MYSQL_FIELD *field, uchar **row)
{
double value;
float8get(value,*row);
- send_data_double(param,value);
+ fetch_float_with_conversion(param, field, value, DBL_DIG);
length= 8;
break;
}
@@ -3436,8 +3497,7 @@ static void fetch_results(MYSQL_BIND *param, MYSQL_FIELD *field, uchar **row)
MYSQL_TIME tm;
length= read_binary_date(&tm, row);
- tm.time_type= MYSQL_TIMESTAMP_DATE;
- send_data_time(param, tm, length);
+ fetch_datetime_with_conversion(param, &tm);
break;
}
case MYSQL_TYPE_TIME:
@@ -3445,8 +3505,7 @@ static void fetch_results(MYSQL_BIND *param, MYSQL_FIELD *field, uchar **row)
MYSQL_TIME tm;
length= read_binary_time(&tm, row);
- tm.time_type= MYSQL_TIMESTAMP_TIME;
- send_data_time(param, tm, length);
+ fetch_datetime_with_conversion(param, &tm);
break;
}
case MYSQL_TYPE_DATETIME:
@@ -3455,13 +3514,12 @@ static void fetch_results(MYSQL_BIND *param, MYSQL_FIELD *field, uchar **row)
MYSQL_TIME tm;
length= read_binary_datetime(&tm, row);
- tm.time_type= MYSQL_TIMESTAMP_DATETIME;
- send_data_time(param, tm, length);
+ fetch_datetime_with_conversion(param, &tm);
break;
}
default:
length= net_field_length(row);
- send_data_str(param,(char*) *row,length);
+ fetch_string_with_conversion(param, (char*) *row, length);
break;
}
*row+= length;
@@ -3606,7 +3664,6 @@ static void skip_result_string(MYSQL_BIND *param __attribute__((unused)),
}
-
/*
Setup the bind buffers for resultset processing
*/
@@ -3825,7 +3882,7 @@ static int stmt_fetch_row(MYSQL_STMT *stmt, uchar *row)
if (field->type == bind->buffer_type)
(*bind->fetch_result)(bind, &row);
else
- fetch_results(bind, field, &row);
+ fetch_result_with_conversion(bind, field, &row);
}
if (!((bit<<=1) & 255))
{
@@ -3917,7 +3974,7 @@ int STDCALL mysql_stmt_fetch_column(MYSQL_STMT *stmt, MYSQL_BIND *bind,
*bind->length= *param->length;
else
bind->length= &param->internal_length; /* Needed for fetch_result() */
- fetch_results(bind, field, &row);
+ fetch_result_with_conversion(bind, field, &row);
}
else
{
diff --git a/ndb/include/kernel/kernel_config_parameters.h b/ndb/include/kernel/kernel_config_parameters.h
index 2f63efa4b6c..bb7c6ebd42c 100644
--- a/ndb/include/kernel/kernel_config_parameters.h
+++ b/ndb/include/kernel/kernel_config_parameters.h
@@ -14,10 +14,7 @@
#define CFG_ACC_SCAN (PRIVATE_BASE + 9)
#define CFG_DICT_ATTRIBUTE (PRIVATE_BASE + 10)
-#define CFG_DICT_CONNECT (PRIVATE_BASE + 11)
-#define CFG_DICT_FRAG_CONNECT (PRIVATE_BASE + 12)
#define CFG_DICT_TABLE (PRIVATE_BASE + 13)
-#define CFG_DICT_TC_CONNECT (PRIVATE_BASE + 14)
#define CFG_DIH_API_CONNECT (PRIVATE_BASE + 15)
#define CFG_DIH_CONNECT (PRIVATE_BASE + 16)
@@ -27,10 +24,8 @@
#define CFG_DIH_TABLE (PRIVATE_BASE + 20)
#define CFG_LQH_FRAG (PRIVATE_BASE + 21)
-#define CFG_LQH_CONNECT (PRIVATE_BASE + 22)
#define CFG_LQH_TABLE (PRIVATE_BASE + 23)
#define CFG_LQH_TC_CONNECT (PRIVATE_BASE + 24)
-#define CFG_LQH_REPLICAS (PRIVATE_BASE + 25)
#define CFG_LQH_LOG_FILES (PRIVATE_BASE + 26)
#define CFG_LQH_SCAN (PRIVATE_BASE + 27)
diff --git a/ndb/src/kernel/vm/Configuration.cpp b/ndb/src/kernel/vm/Configuration.cpp
index c438c48f450..550c6313058 100644
--- a/ndb/src/kernel/vm/Configuration.cpp
+++ b/ndb/src/kernel/vm/Configuration.cpp
@@ -510,7 +510,7 @@ Configuration::calcSizeAlt(ConfigValues * ownConfig){
// The remainder are allowed for use by the scan processes.
/*-----------------------------------------------------------------------*/
cfg.put(CFG_ACC_OP_RECS,
- noOfReplicas*((16 * noOfOperations) / 10 + 50) +
+ ((11 * noOfOperations) / 10 + 50) +
(noOfLocalScanRecords * MAX_PARALLEL_SCANS_PER_FRAG) +
NODE_RECOVERY_SCAN_OP_RECORDS);
@@ -535,18 +535,9 @@ Configuration::calcSizeAlt(ConfigValues * ownConfig){
*/
cfg.put(CFG_DICT_ATTRIBUTE,
noOfAttributes);
-
- cfg.put(CFG_DICT_CONNECT,
- noOfOperations + 32);
-
- cfg.put(CFG_DICT_FRAG_CONNECT,
- NO_OF_FRAG_PER_NODE * noOfDBNodes * noOfReplicas);
cfg.put(CFG_DICT_TABLE,
noOfTables);
-
- cfg.put(CFG_DICT_TC_CONNECT,
- 2* noOfOperations);
}
{
@@ -557,7 +548,7 @@ Configuration::calcSizeAlt(ConfigValues * ownConfig){
2 * noOfTransactions);
cfg.put(CFG_DIH_CONNECT,
- noOfOperations + 46);
+ noOfOperations + noOfTransactions + 46);
cfg.put(CFG_DIH_FRAG_CONNECT,
NO_OF_FRAG_PER_NODE * noOfTables * noOfDBNodes);
@@ -587,18 +578,12 @@ Configuration::calcSizeAlt(ConfigValues * ownConfig){
cfg.put(CFG_LQH_FRAG,
NO_OF_FRAG_PER_NODE * noOfTables * noOfReplicas);
- cfg.put(CFG_LQH_CONNECT,
- noOfReplicas*((11 * noOfOperations) / 10 + 50));
-
cfg.put(CFG_LQH_TABLE,
noOfTables);
cfg.put(CFG_LQH_TC_CONNECT,
- noOfReplicas*((16 * noOfOperations) / 10 + 50));
+ (11 * noOfOperations) / 10 + 50);
- cfg.put(CFG_LQH_REPLICAS,
- noOfReplicas);
-
cfg.put(CFG_LQH_SCAN,
noOfLocalScanRecords);
}
@@ -611,7 +596,7 @@ Configuration::calcSizeAlt(ConfigValues * ownConfig){
3 * noOfTransactions);
cfg.put(CFG_TC_TC_CONNECT,
- noOfOperations + 16 + noOfTransactions);
+ (2 * noOfOperations) + 16 + noOfTransactions);
cfg.put(CFG_TC_TABLE,
noOfTables);
@@ -631,7 +616,7 @@ Configuration::calcSizeAlt(ConfigValues * ownConfig){
2 * NO_OF_FRAG_PER_NODE * noOfTables* noOfReplicas);
cfg.put(CFG_TUP_OP_RECS,
- noOfReplicas*((16 * noOfOperations) / 10 + 50));
+ (11 * noOfOperations) / 10 + 50);
cfg.put(CFG_TUP_PAGE,
noOfDataPages);
diff --git a/netware/mysql_test_run.c b/netware/mysql_test_run.c
index a69c5015968..fd5725a6414 100644
--- a/netware/mysql_test_run.c
+++ b/netware/mysql_test_run.c
@@ -170,7 +170,7 @@ void report_stats()
log_msg("\nThe .out and .err files in %s may give you some\n", result_dir);
log_msg("hint of what when wrong.\n");
log_msg("\nIf you want to report this error, please first read the documentation\n");
- log_msg("at: http://www.mysql.com/doc/M/y/MySQL_test_suite.html\n");
+ log_msg("at: http://www.mysql.com/doc/en/MySQL_test_suite.html\n");
}
log_msg("\n%.02f total minutes elapsed in the test cases\n\n", total_time / 60);
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 78e1268f363..998b5501724 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -1788,7 +1788,7 @@ bytes of memory\n", ((ulong) sql_key_cache->key_cache_mem_size +
You seem to be running 32-bit Linux and have %d concurrent connections.\n\
If you have not changed STACK_SIZE in LinuxThreads and built the binary \n\
yourself, LinuxThreads is quite likely to steal a part of the global heap for\n\
-the thread stack. Please read http://www.mysql.com/doc/L/i/Linux.html\n\n",
+the thread stack. Please read http://www.mysql.com/doc/en/Linux.html\n\n",
thread_count);
}
#endif /* HAVE_LINUXTHREADS */
diff --git a/tests/client_test.c b/tests/client_test.c
index 3652c0f7c8e..de77d4517dd 100644
--- a/tests/client_test.c
+++ b/tests/client_test.c
@@ -9862,11 +9862,17 @@ static void test_bug4026()
time_in.minute= 59;
time_in.second= 59;
time_in.second_part= 123456;
+ /*
+ This is not necessary, just to make assert below work: this field
+ is filled in when time is received from server
+ */
+ time_in.time_type= MYSQL_TIMESTAMP_TIME;
datetime_in= time_in;
datetime_in.year= 2003;
datetime_in.month= 12;
datetime_in.day= 31;
+ datetime_in.time_type= MYSQL_TIMESTAMP_DATETIME;
mysql_stmt_bind_param(stmt, bind);