mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-4.1
into rurik.mysql.com:/home/igor/mysql-4.1
This commit is contained in:
@ -124,7 +124,7 @@ const char *compatible_mode_names[]=
|
|||||||
(1<<10) /* ANSI */\
|
(1<<10) /* ANSI */\
|
||||||
)
|
)
|
||||||
TYPELIB compatible_mode_typelib= {array_elements(compatible_mode_names) - 1,
|
TYPELIB compatible_mode_typelib= {array_elements(compatible_mode_names) - 1,
|
||||||
"", compatible_mode_names};
|
"", compatible_mode_names, NULL};
|
||||||
|
|
||||||
|
|
||||||
static struct my_option my_long_options[] =
|
static struct my_option my_long_options[] =
|
||||||
@ -317,7 +317,7 @@ static struct my_option my_long_options[] =
|
|||||||
{"comments", 'i', "Write additional information.",
|
{"comments", 'i', "Write additional information.",
|
||||||
(gptr*) &opt_comments, (gptr*) &opt_comments, 0, GET_BOOL, NO_ARG,
|
(gptr*) &opt_comments, (gptr*) &opt_comments, 0, GET_BOOL, NO_ARG,
|
||||||
1, 0, 0, 0, 0, 0},
|
1, 0, 0, 0, 0, 0},
|
||||||
{"hex-blob", OPT_HEXBLOB, "Dump BLOBs in HEX. this mode does not work with extended-insert",
|
{"hex-blob", OPT_HEXBLOB, "Dump BLOBs in HEX.",
|
||||||
(gptr*) &opt_hex_blob, (gptr*) &opt_hex_blob, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
(gptr*) &opt_hex_blob, (gptr*) &opt_hex_blob, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
|
{0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
@ -1523,10 +1523,11 @@ static void dumpTable(uint numFields, char *table)
|
|||||||
/*
|
/*
|
||||||
63 is my_charset_bin. If charsetnr is not 63,
|
63 is my_charset_bin. If charsetnr is not 63,
|
||||||
we have not a BLOB but a TEXT column.
|
we have not a BLOB but a TEXT column.
|
||||||
we'll dump it in hex only BLOB columns.
|
we'll dump in hex only BLOB columns.
|
||||||
*/
|
*/
|
||||||
is_blob= (opt_hex_blob && field->charsetnr == 63 &&
|
is_blob= (opt_hex_blob && field->charsetnr == 63 &&
|
||||||
(field->type == FIELD_TYPE_BLOB ||
|
(field->type == FIELD_TYPE_STRING ||
|
||||||
|
field->type == FIELD_TYPE_BLOB ||
|
||||||
field->type == FIELD_TYPE_LONG_BLOB ||
|
field->type == FIELD_TYPE_LONG_BLOB ||
|
||||||
field->type == FIELD_TYPE_MEDIUM_BLOB ||
|
field->type == FIELD_TYPE_MEDIUM_BLOB ||
|
||||||
field->type == FIELD_TYPE_TINY_BLOB)) ? 1 : 0;
|
field->type == FIELD_TYPE_TINY_BLOB)) ? 1 : 0;
|
||||||
@ -1544,6 +1545,13 @@ static void dumpTable(uint numFields, char *table)
|
|||||||
{
|
{
|
||||||
if (!IS_NUM_FIELD(field))
|
if (!IS_NUM_FIELD(field))
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
"length * 2 + 2" is OK for both HEX and non-HEX modes:
|
||||||
|
- In HEX mode we need exactly 2 bytes per character
|
||||||
|
plus 2 bytes for '0x' prefix.
|
||||||
|
- In non-HEX mode we need up to 2 bytes per character,
|
||||||
|
plus 2 bytes for leading and trailing '\'' characters.
|
||||||
|
*/
|
||||||
if (dynstr_realloc(&extended_row,length * 2+2))
|
if (dynstr_realloc(&extended_row,length * 2+2))
|
||||||
{
|
{
|
||||||
fputs("Aborting dump (out of memory)",stderr);
|
fputs("Aborting dump (out of memory)",stderr);
|
||||||
@ -1552,15 +1560,11 @@ static void dumpTable(uint numFields, char *table)
|
|||||||
}
|
}
|
||||||
if (opt_hex_blob && is_blob)
|
if (opt_hex_blob && is_blob)
|
||||||
{
|
{
|
||||||
ulong counter;
|
|
||||||
unsigned char *ptr= row[i];
|
|
||||||
dynstr_append(&extended_row, "0x");
|
dynstr_append(&extended_row, "0x");
|
||||||
for (counter = 0; counter < lengths[i]; counter++)
|
extended_row.length+= mysql_hex_string(extended_row.str +
|
||||||
{
|
extended_row.length,
|
||||||
char xx[3];
|
row[i], length);
|
||||||
sprintf(xx, "%02X", ptr[counter]);
|
extended_row.str[extended_row.length]= '\0';
|
||||||
dynstr_append(&extended_row, xx);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1563,7 +1563,8 @@ void my_net_local_init(NET *net)
|
|||||||
trailing '. The caller must supply whichever of those is desired.
|
trailing '. The caller must supply whichever of those is desired.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ulong mysql_hex_string(char *to, const char *from, ulong length)
|
ulong STDCALL
|
||||||
|
mysql_hex_string(char *to, const char *from, ulong length)
|
||||||
{
|
{
|
||||||
char *to0= to;
|
char *to0= to;
|
||||||
const char *end;
|
const char *end;
|
||||||
|
@ -47,6 +47,7 @@ EXPORTS
|
|||||||
mysql_errno
|
mysql_errno
|
||||||
mysql_error
|
mysql_error
|
||||||
mysql_escape_string
|
mysql_escape_string
|
||||||
|
mysql_hex_string
|
||||||
mysql_stmt_execute
|
mysql_stmt_execute
|
||||||
mysql_stmt_fetch
|
mysql_stmt_fetch
|
||||||
mysql_stmt_fetch_column
|
mysql_stmt_fetch_column
|
||||||
|
@ -480,3 +480,10 @@ a 0061
|
|||||||
b 0062
|
b 0062
|
||||||
c 0063
|
c 0063
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
set @ivar= 1234;
|
||||||
|
set @str1 = 'select ?';
|
||||||
|
set @str2 = convert(@str1 using ucs2);
|
||||||
|
prepare stmt1 from @str2;
|
||||||
|
execute stmt1 using @ivar;
|
||||||
|
?
|
||||||
|
1234
|
||||||
|
@ -106,12 +106,6 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp
|
|||||||
set @fvar= 123.4567;
|
set @fvar= 123.4567;
|
||||||
prepare stmt1 from @fvar;
|
prepare stmt1 from @fvar;
|
||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '123.4567' at line 1
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '123.4567' at line 1
|
||||||
set @str1 = 'select ?';
|
|
||||||
set @str2 = convert(@str1 using ucs2);
|
|
||||||
prepare stmt1 from @str2;
|
|
||||||
execute stmt1 using @ivar;
|
|
||||||
?
|
|
||||||
1234
|
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
PREPARE stmt1 FROM "select _utf8 'A' collate utf8_bin = ?";
|
PREPARE stmt1 FROM "select _utf8 'A' collate utf8_bin = ?";
|
||||||
set @var='A';
|
set @var='A';
|
||||||
|
@ -315,3 +315,11 @@ alter table t1 modify a char(5);
|
|||||||
select a, hex(a) from t1;
|
select a, hex(a) from t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Check prepare statement from an UCS2 string
|
||||||
|
#
|
||||||
|
set @ivar= 1234;
|
||||||
|
set @str1 = 'select ?';
|
||||||
|
set @str2 = convert(@str1 using ucs2);
|
||||||
|
prepare stmt1 from @str2;
|
||||||
|
execute stmt1 using @ivar;
|
||||||
|
@ -110,10 +110,6 @@ set @fvar= 123.4567;
|
|||||||
--error 1064
|
--error 1064
|
||||||
prepare stmt1 from @fvar;
|
prepare stmt1 from @fvar;
|
||||||
|
|
||||||
set @str1 = 'select ?';
|
|
||||||
set @str2 = convert(@str1 using ucs2);
|
|
||||||
prepare stmt1 from @str2;
|
|
||||||
execute stmt1 using @ivar;
|
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
|
||||||
#
|
#
|
||||||
|
Reference in New Issue
Block a user