mirror of
https://github.com/MariaDB/server.git
synced 2026-04-25 09:45:31 +02:00
Merge bk-internal:/home/bk/mysql-5.0-maint
into shellback.(none):/home/msvensson/mysql/mysql-5.0-maint
This commit is contained in:
commit
39d888ccd1
19 changed files with 233 additions and 40 deletions
17
.bzrignore
17
.bzrignore
|
|
@ -4,6 +4,7 @@
|
|||
*.bb
|
||||
*.bbg
|
||||
*.bin
|
||||
*.cmake
|
||||
*.core
|
||||
*.d
|
||||
*.da
|
||||
|
|
@ -17,6 +18,7 @@
|
|||
*.map
|
||||
*.o
|
||||
*.obj
|
||||
*.old
|
||||
*.pch
|
||||
*.pdb
|
||||
*.reject
|
||||
|
|
@ -25,11 +27,21 @@
|
|||
*.so
|
||||
*.so.*
|
||||
*.spec
|
||||
*.user
|
||||
*.vcproj
|
||||
*/*.dir/*
|
||||
*/*_pure_*warnings
|
||||
*/.pure
|
||||
*/debug/*
|
||||
*/release/*
|
||||
*~
|
||||
.*.swp
|
||||
./CMakeCache.txt
|
||||
./MySql.ncb
|
||||
./MySql.sln
|
||||
./MySql.suo
|
||||
./README.build-files
|
||||
./cmakecache.txt
|
||||
./config.h
|
||||
./copy_mysql_files.bat
|
||||
./fix-project-files
|
||||
|
|
@ -65,6 +77,7 @@ BitKeeper/post-commit-manual
|
|||
BitKeeper/tmp/*
|
||||
BitKeeper/tmp/bkr3sAHD
|
||||
BitKeeper/tmp/gone
|
||||
CMakeFiles/*
|
||||
COPYING
|
||||
COPYING.LIB
|
||||
Docs/#manual.texi#
|
||||
|
|
@ -1195,6 +1208,7 @@ strings/ctype_autoconf.c
|
|||
strings/ctype_extra_sources.c
|
||||
strings/str_test
|
||||
strings/test_decimal
|
||||
support-files/*.ini
|
||||
support-files/MacOSX/Description.plist
|
||||
support-files/MacOSX/Info.plist
|
||||
support-files/MacOSX/ReadMe.txt
|
||||
|
|
@ -1297,5 +1311,8 @@ vio/test-sslserver
|
|||
vio/viotest-ssl
|
||||
vio/viotest-sslconnect.cpp
|
||||
vio/viotest.cpp
|
||||
win/configure.data
|
||||
win/vs71cache.txt
|
||||
win/vs8cache.txt
|
||||
zlib/*.ds?
|
||||
zlib/*.vcproj
|
||||
|
|
|
|||
|
|
@ -6,6 +6,13 @@ COMMITS=commits@lists.mysql.com
|
|||
DOCS=docs-commit@mysql.com
|
||||
LIMIT=10000
|
||||
VERSION="5.0"
|
||||
BKROOT=`bk root`
|
||||
|
||||
if [ -x /usr/sbin/sendmail ]; then
|
||||
SENDMAIL=/usr/sbin/sendmail
|
||||
else
|
||||
SENDMAIL=sendmail
|
||||
fi
|
||||
|
||||
if [ "$REAL_EMAIL" = "" ]
|
||||
then
|
||||
|
|
@ -58,7 +65,9 @@ $BH
|
|||
EOF
|
||||
bk changes -v -r+
|
||||
bk cset -r+ -d
|
||||
) | /usr/sbin/sendmail -t
|
||||
) > $BKROOT/BitKeeper/tmp/dev_public.txt
|
||||
|
||||
$SENDMAIL -t < $BKROOT/BitKeeper/tmp/dev_public.txt
|
||||
|
||||
#++
|
||||
# commits@ mail
|
||||
|
|
@ -82,7 +91,9 @@ see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
|
|||
EOF
|
||||
bk changes -v -r+
|
||||
bk cset -r+ -d
|
||||
) | head -n $LIMIT | /usr/sbin/sendmail -t
|
||||
) | bk sed -e ${LIMIT}q > $BKROOT/BitKeeper/tmp/commits.txt
|
||||
|
||||
$SENDMAIL -t < $BKROOT/BitKeeper/tmp/commits.txt
|
||||
|
||||
#++
|
||||
# docs-commit@ mail
|
||||
|
|
@ -102,7 +113,8 @@ Subject: bk commit - $VERSION tree (Manual) ($CHANGESET)$BS
|
|||
EOF
|
||||
bk changes -v -r+
|
||||
bk cset -r+ -d
|
||||
) | /usr/sbin/sendmail -t
|
||||
) > $BKROOT/BitKeeper/tmp/docs.txt
|
||||
$SENDMAIL -t < $BKROOT/BitKeeper/tmp/docs.txt
|
||||
fi
|
||||
|
||||
else
|
||||
|
|
|
|||
|
|
@ -2321,10 +2321,8 @@ print_table_data(MYSQL_RES *result)
|
|||
MYSQL_ROW cur;
|
||||
MYSQL_FIELD *field;
|
||||
bool *num_flag;
|
||||
bool *not_null_flag;
|
||||
|
||||
num_flag=(bool*) my_alloca(sizeof(bool)*mysql_num_fields(result));
|
||||
not_null_flag=(bool*) my_alloca(sizeof(bool)*mysql_num_fields(result));
|
||||
if (info_flag)
|
||||
{
|
||||
print_field_types(result);
|
||||
|
|
@ -2363,7 +2361,6 @@ print_table_data(MYSQL_RES *result)
|
|||
MAX_COLUMN_LENGTH),
|
||||
field->name);
|
||||
num_flag[off]= IS_NUM(field->type);
|
||||
not_null_flag[off]= IS_NOT_NULL(field->flags);
|
||||
}
|
||||
(void) tee_fputs("\n", PAGER);
|
||||
tee_puts((char*) separator.ptr(), PAGER);
|
||||
|
|
@ -2384,7 +2381,7 @@ print_table_data(MYSQL_RES *result)
|
|||
uint extra_padding;
|
||||
|
||||
/* If this column may have a null value, use "NULL" for empty. */
|
||||
if (! not_null_flag[off] && (cur[off] == NULL))
|
||||
if (cur[off] == NULL)
|
||||
{
|
||||
buffer= "NULL";
|
||||
data_length= 4;
|
||||
|
|
@ -2424,7 +2421,6 @@ print_table_data(MYSQL_RES *result)
|
|||
}
|
||||
tee_puts((char*) separator.ptr(), PAGER);
|
||||
my_afree((gptr) num_flag);
|
||||
my_afree((gptr) not_null_flag);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -200,7 +200,7 @@ retry_open:
|
|||
}
|
||||
buffer_end= strnmov(buffer, "\n[client]", sizeof(buffer));
|
||||
if (opt_password)
|
||||
buffer_end= strxnmov(buffer, sizeof(buffer),
|
||||
buffer_end= strxnmov(buffer_end, sizeof(buffer),
|
||||
"\npassword=", opt_password, NullS);
|
||||
error= my_write(defaults_file, buffer, (int) (buffer_end - buffer),
|
||||
MYF(MY_WME | MY_FNABP));
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ static char *alloc_query_str(ulong size);
|
|||
static char *field_escape(char *to,const char *from,uint length);
|
||||
static my_bool verbose= 0, opt_no_create_info= 0, opt_no_data= 0,
|
||||
quick= 1, extended_insert= 1,
|
||||
lock_tables=1,ignore_errors=0,flush_logs=0,
|
||||
lock_tables=1,ignore_errors=0,flush_logs=0,flush_privileges=0,
|
||||
opt_drop=1,opt_keywords=0,opt_lock=1,opt_compress=0,
|
||||
opt_delayed=0,create_options=1,opt_quoted=0,opt_databases=0,
|
||||
opt_alldbs=0,opt_create_db=0,opt_lock_all_tables=0,
|
||||
|
|
@ -256,6 +256,12 @@ static struct my_option my_long_options[] =
|
|||
"--lock-all-tables or --master-data with --flush-logs",
|
||||
(gptr*) &flush_logs, (gptr*) &flush_logs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
|
||||
0, 0},
|
||||
{"flush-privileges", OPT_ESC, "Emit a FLUSH PRIVILEGES statement "
|
||||
"after dumping the mysql database. This option should be used any "
|
||||
"time the dump contains the mysql database and any other database "
|
||||
"that depends on the data in the mysql database for proper restore. ",
|
||||
(gptr*) &flush_privileges, (gptr*) &flush_privileges, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
|
||||
0, 0},
|
||||
{"force", 'f', "Continue even if we get an sql-error.",
|
||||
(gptr*) &ignore_errors, (gptr*) &ignore_errors, 0, GET_BOOL, NO_ARG,
|
||||
0, 0, 0, 0, 0, 0},
|
||||
|
|
@ -2767,6 +2773,7 @@ static int dump_all_tables_in_db(char *database)
|
|||
|
||||
char hash_key[2*NAME_LEN+2]; /* "db.tablename" */
|
||||
char *afterdot;
|
||||
int using_mysql_db= my_strcasecmp(&my_charset_latin1, database, "mysql");
|
||||
|
||||
afterdot= strmov(hash_key, database);
|
||||
*afterdot++= '.';
|
||||
|
|
@ -2821,6 +2828,11 @@ static int dump_all_tables_in_db(char *database)
|
|||
}
|
||||
if (lock_tables)
|
||||
VOID(mysql_query_with_error_report(mysql, 0, "UNLOCK TABLES"));
|
||||
if (flush_privileges && using_mysql_db == 0)
|
||||
{
|
||||
fprintf(md_result_file,"\n--\n-- Flush Grant Tables \n--\n");
|
||||
fprintf(md_result_file,"\n/*! FLUSH PRIVILEGES */;\n");
|
||||
}
|
||||
return 0;
|
||||
} /* dump_all_tables_in_db */
|
||||
|
||||
|
|
|
|||
|
|
@ -85,6 +85,12 @@ c_cp932
|
|||
| NULL | NULL | Τη γλώσσα |
|
||||
| NULL | NULL | ᛖᚴ ᚷᛖᛏ |
|
||||
+------+------+---------------------------+
|
||||
i j k
|
||||
NULL 1 NULL
|
||||
Field Type Null Key Default Extra
|
||||
i int(11) YES NULL
|
||||
j int(11) NO
|
||||
k int(11) YES NULL
|
||||
+------+---+------+
|
||||
| i | j | k |
|
||||
+------+---+------+
|
||||
|
|
@ -97,6 +103,10 @@ c_cp932
|
|||
| j | int(11) | NO | | | |
|
||||
| k | int(11) | YES | | NULL | |
|
||||
+-------+---------+------+-----+---------+-------+
|
||||
i s1
|
||||
1 x
|
||||
2 NULL
|
||||
3
|
||||
+------+------+
|
||||
| i | s1 |
|
||||
+------+------+
|
||||
|
|
@ -104,6 +114,13 @@ c_cp932
|
|||
| 2 | NULL |
|
||||
| 3 | |
|
||||
+------+------+
|
||||
unhex('zz')
|
||||
NULL
|
||||
+-------------+
|
||||
| unhex('zz') |
|
||||
+-------------+
|
||||
| NULL |
|
||||
+-------------+
|
||||
create table t1(a int, b varchar(255), c int);
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) YES NULL
|
||||
|
|
|
|||
|
|
@ -2927,14 +2927,32 @@ drop user mysqltest_1@localhost;
|
|||
create database mysqldump_myDB;
|
||||
use mysqldump_myDB;
|
||||
create user myDB_User;
|
||||
grant create view, select on mysqldump_myDB.* to myDB_User@localhost;
|
||||
grant create, create view, select, insert on mysqldump_myDB.* to myDB_User@localhost;
|
||||
create table t1 (c1 int);
|
||||
insert into t1 values (3);
|
||||
use mysqldump_myDB;
|
||||
create table u1 (f1 int);
|
||||
insert into u1 values (4);
|
||||
create view v1 (c1) as select * from t1;
|
||||
use mysqldump_myDB;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
drop table u1;
|
||||
revoke all privileges on mysqldump_myDB.* from myDB_User@localhost;
|
||||
drop user myDB_User;
|
||||
drop database mysqldump_myDB;
|
||||
flush privileges;
|
||||
use mysqldump_myDB;
|
||||
select * from mysqldump_myDB.v1;
|
||||
c1
|
||||
3
|
||||
select * from mysqldump_myDB.u1;
|
||||
f1
|
||||
4
|
||||
use mysqldump_myDB;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
drop table u1;
|
||||
revoke all privileges on mysqldump_myDB.* from myDB_User@localhost;
|
||||
drop user myDB_User;
|
||||
drop database mysqldump_myDB;
|
||||
|
|
|
|||
|
|
@ -572,4 +572,34 @@ def test t1 t1 a a 16 7 1 Y 0 0 63
|
|||
a
|
||||
`
|
||||
drop table t1;
|
||||
create table bug15583(b BIT(8), n INT);
|
||||
insert into bug15583 values(128, 128);
|
||||
insert into bug15583 values(null, null);
|
||||
insert into bug15583 values(0, 0);
|
||||
insert into bug15583 values(255, 255);
|
||||
select hex(b), bin(b), oct(b), hex(n), bin(n), oct(n) from bug15583;
|
||||
hex(b) bin(b) oct(b) hex(n) bin(n) oct(n)
|
||||
80 10000000 200 80 10000000 200
|
||||
NULL NULL NULL NULL NULL NULL
|
||||
0 0 0 0 0 0
|
||||
FF 11111111 377 FF 11111111 377
|
||||
select hex(b)=hex(n) as should_be_onetrue, bin(b)=bin(n) as should_be_onetrue, oct(b)=oct(n) as should_be_onetrue from bug15583;
|
||||
should_be_onetrue should_be_onetrue should_be_onetrue
|
||||
1 1 1
|
||||
NULL NULL NULL
|
||||
1 1 1
|
||||
1 1 1
|
||||
select hex(b + 0), bin(b + 0), oct(b + 0), hex(n), bin(n), oct(n) from bug15583;
|
||||
hex(b + 0) bin(b + 0) oct(b + 0) hex(n) bin(n) oct(n)
|
||||
80 10000000 200 80 10000000 200
|
||||
NULL NULL NULL NULL NULL NULL
|
||||
0 0 0 0 0 0
|
||||
FF 11111111 377 FF 11111111 377
|
||||
select conv(b, 10, 2), conv(b + 0, 10, 2) from bug15583;
|
||||
conv(b, 10, 2) conv(b + 0, 10, 2)
|
||||
10000000 10000000
|
||||
NULL NULL
|
||||
0 0
|
||||
11111111 11111111
|
||||
drop table bug15583;
|
||||
End of 5.0 tests
|
||||
|
|
|
|||
|
|
@ -133,8 +133,6 @@ select min(a), min(case when 1=1 then a else NULL end),
|
|||
from t1 where b=3 group by b;
|
||||
drop table t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
|
||||
#
|
||||
# Tests for bug #9939: conversion of the arguments for COALESCE and IFNULL
|
||||
|
|
@ -154,3 +152,4 @@ SELECT IFNULL(t2.EMPNUM,t1.EMPNUM) AS CEMPNUM,
|
|||
FROM t1 LEFT JOIN t2 ON t1.EMPNUM=t2.EMPNUM;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
# End of 4.1 tests
|
||||
|
|
|
|||
|
|
@ -108,9 +108,6 @@ select 5.1 mod 3, 5.1 mod -3, -5.1 mod 3, -5.1 mod -3;
|
|||
|
||||
select 5 mod 3, 5 mod -3, -5 mod 3, -5 mod -3;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
# Bug#6726: NOT BETWEEN parse failure
|
||||
#
|
||||
create table t1 (a int, b int);
|
||||
|
|
@ -127,3 +124,5 @@ SELECT GREATEST(1,NULL) FROM DUAL;
|
|||
SELECT LEAST('xxx','aaa',NULL,'yyy') FROM DUAL;
|
||||
SELECT LEAST(1.1,1.2,NULL,1.0) FROM DUAL;
|
||||
SELECT GREATEST(1.5E+2,1.3E+2,NULL) FROM DUAL;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
|
|
|||
|
|
@ -70,14 +70,21 @@ drop table t1;
|
|||
#
|
||||
# "DESCRIBE" commands may return strange NULLness flags.
|
||||
#
|
||||
--exec $MYSQL --default-character-set utf8 test -e "create table t1 (i int, j int not null, k int); insert into t1 values (null, 1, null); select * from t1; describe t1; drop table t1;"
|
||||
--exec $MYSQL -t --default-character-set utf8 test -e "create table t1 (i int, j int not null, k int); insert into t1 values (null, 1, null); select * from t1; describe t1; drop table t1;"
|
||||
|
||||
#
|
||||
# Bug#19564: mysql displays NULL instead of space
|
||||
#
|
||||
--exec $MYSQL test -e "create table b19564 (i int, s1 char(1)); insert into b19564 values (1, 'x'); insert into b19564 values (2, NULL); insert into b19564 values (3, ' '); select * from b19564 order by i; drop table b19564;"
|
||||
--exec $MYSQL -t test -e "create table b19564 (i int, s1 char(1)); insert into b19564 values (1, 'x'); insert into b19564 values (2, NULL); insert into b19564 values (3, ' '); select * from b19564 order by i; drop table b19564;"
|
||||
|
||||
#
|
||||
# Bug#21618: NULL shown as empty string in client
|
||||
#
|
||||
--exec $MYSQL test -e "select unhex('zz');"
|
||||
--exec $MYSQL -t test -e "select unhex('zz');"
|
||||
|
||||
# Bug#19265 describe command does not work from mysql prompt
|
||||
#
|
||||
|
||||
|
|
|
|||
|
|
@ -1322,28 +1322,59 @@ drop user mysqltest_1@localhost;
|
|||
# Bug #21527 mysqldump incorrectly tries to LOCK TABLES on the
|
||||
# information_schema database.
|
||||
#
|
||||
# Bug #21424 mysqldump failing to export/import views
|
||||
#
|
||||
|
||||
# Do as root
|
||||
connect (root,localhost,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||
connection root;
|
||||
create database mysqldump_myDB;
|
||||
use mysqldump_myDB;
|
||||
create user myDB_User;
|
||||
grant create view, select on mysqldump_myDB.* to myDB_User@localhost;
|
||||
grant create, create view, select, insert on mysqldump_myDB.* to myDB_User@localhost;
|
||||
create table t1 (c1 int);
|
||||
insert into t1 values (3);
|
||||
|
||||
# Do as a user
|
||||
connect (user1,localhost,myDB_User,,mysqldump_myDB,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||
connection user1;
|
||||
use mysqldump_myDB;
|
||||
create table u1 (f1 int);
|
||||
insert into u1 values (4);
|
||||
create view v1 (c1) as select * from t1;
|
||||
|
||||
# Backup should not fail.
|
||||
--exec $MYSQL_DUMP --all-databases --add-drop-table > $MYSQLTEST_VARDIR/tmp/bug21527.sql
|
||||
# Backup should not fail for Bug #21527. Flush priviliges test begins.
|
||||
--exec $MYSQL_DUMP --skip-comments --add-drop-table --flush-privileges --ignore-table=mysql.general_log --ignore-table=mysql.slow_log --databases mysqldump_myDB mysql > $MYSQLTEST_VARDIR/tmp/bug21527.sql
|
||||
|
||||
# Clean up
|
||||
connection root;
|
||||
use mysqldump_myDB;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
drop table u1;
|
||||
revoke all privileges on mysqldump_myDB.* from myDB_User@localhost;
|
||||
drop user myDB_User;
|
||||
drop database mysqldump_myDB;
|
||||
flush privileges;
|
||||
|
||||
# Bug #21424 continues from here.
|
||||
# Restore. Flush Privileges test ends.
|
||||
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug21527.sql;
|
||||
|
||||
# Do as a user
|
||||
connection user1;
|
||||
use mysqldump_myDB;
|
||||
|
||||
# Ultimate test for correct data.
|
||||
select * from mysqldump_myDB.v1;
|
||||
select * from mysqldump_myDB.u1;
|
||||
|
||||
#Final cleanup.
|
||||
connection root;
|
||||
use mysqldump_myDB;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
drop table u1;
|
||||
revoke all privileges on mysqldump_myDB.* from myDB_User@localhost;
|
||||
drop user myDB_User;
|
||||
drop database mysqldump_myDB;
|
||||
|
|
|
|||
|
|
@ -238,4 +238,19 @@ select * from t1;
|
|||
--disable_metadata
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#15583: BIN()/OCT()/CONV() do not work with BIT values
|
||||
#
|
||||
create table bug15583(b BIT(8), n INT);
|
||||
insert into bug15583 values(128, 128);
|
||||
insert into bug15583 values(null, null);
|
||||
insert into bug15583 values(0, 0);
|
||||
insert into bug15583 values(255, 255);
|
||||
select hex(b), bin(b), oct(b), hex(n), bin(n), oct(n) from bug15583;
|
||||
select hex(b)=hex(n) as should_be_onetrue, bin(b)=bin(n) as should_be_onetrue, oct(b)=oct(n) as should_be_onetrue from bug15583;
|
||||
select hex(b + 0), bin(b + 0), oct(b + 0), hex(n), bin(n), oct(n) from bug15583;
|
||||
select conv(b, 10, 2), conv(b + 0, 10, 2) from bug15583;
|
||||
drop table bug15583;
|
||||
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
|
|
|||
|
|
@ -144,9 +144,6 @@ select @@version;
|
|||
--replace_column 1 #
|
||||
select @@global.version;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
# Bug #6598: problem with cast(NULL as signed integer);
|
||||
#
|
||||
|
||||
|
|
@ -212,3 +209,5 @@ insert into t1 values (1,2),(2,3),(3,1);
|
|||
select @var:=f2 from t1 group by f1 order by f2 desc limit 1;
|
||||
select @var;
|
||||
drop table t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
|
|
|||
|
|
@ -3799,13 +3799,13 @@ Item_func_set_user_var::update()
|
|||
case REAL_RESULT:
|
||||
{
|
||||
res= update_hash((void*) &save_result.vreal,sizeof(save_result.vreal),
|
||||
REAL_RESULT, &my_charset_bin, DERIVATION_IMPLICIT);
|
||||
REAL_RESULT, &my_charset_bin, DERIVATION_IMPLICIT, 0);
|
||||
break;
|
||||
}
|
||||
case INT_RESULT:
|
||||
{
|
||||
res= update_hash((void*) &save_result.vint, sizeof(save_result.vint),
|
||||
INT_RESULT, &my_charset_bin, DERIVATION_IMPLICIT,
|
||||
INT_RESULT, &my_charset_bin, DERIVATION_IMPLICIT,
|
||||
unsigned_flag);
|
||||
break;
|
||||
}
|
||||
|
|
@ -3813,23 +3813,23 @@ Item_func_set_user_var::update()
|
|||
{
|
||||
if (!save_result.vstr) // Null value
|
||||
res= update_hash((void*) 0, 0, STRING_RESULT, &my_charset_bin,
|
||||
DERIVATION_IMPLICIT);
|
||||
DERIVATION_IMPLICIT, 0);
|
||||
else
|
||||
res= update_hash((void*) save_result.vstr->ptr(),
|
||||
save_result.vstr->length(), STRING_RESULT,
|
||||
save_result.vstr->charset(),
|
||||
DERIVATION_IMPLICIT);
|
||||
DERIVATION_IMPLICIT, 0);
|
||||
break;
|
||||
}
|
||||
case DECIMAL_RESULT:
|
||||
{
|
||||
if (!save_result.vdec) // Null value
|
||||
res= update_hash((void*) 0, 0, DECIMAL_RESULT, &my_charset_bin,
|
||||
DERIVATION_IMPLICIT);
|
||||
DERIVATION_IMPLICIT, 0);
|
||||
else
|
||||
res= update_hash((void*) save_result.vdec,
|
||||
sizeof(my_decimal), DECIMAL_RESULT,
|
||||
&my_charset_bin, DERIVATION_IMPLICIT);
|
||||
&my_charset_bin, DERIVATION_IMPLICIT, 0);
|
||||
break;
|
||||
}
|
||||
case ROW_RESULT:
|
||||
|
|
|
|||
|
|
@ -1173,7 +1173,7 @@ public:
|
|||
String *val_str(String *str);
|
||||
my_decimal *val_decimal(my_decimal *);
|
||||
bool update_hash(void *ptr, uint length, enum Item_result type,
|
||||
CHARSET_INFO *cs, Derivation dv, bool unsigned_arg= 0);
|
||||
CHARSET_INFO *cs, Derivation dv, bool unsigned_arg);
|
||||
bool send(Protocol *protocol, String *str_arg);
|
||||
void make_field(Send_field *tmp_field);
|
||||
bool check(bool use_result_field);
|
||||
|
|
|
|||
|
|
@ -2381,17 +2381,33 @@ String *Item_func_conv::val_str(String *str)
|
|||
abs(to_base) > 36 || abs(to_base) < 2 ||
|
||||
abs(from_base) > 36 || abs(from_base) < 2 || !(res->length()))
|
||||
{
|
||||
null_value=1;
|
||||
return 0;
|
||||
null_value= 1;
|
||||
return NULL;
|
||||
}
|
||||
null_value=0;
|
||||
null_value= 0;
|
||||
unsigned_flag= !(from_base < 0);
|
||||
if (from_base < 0)
|
||||
dec= my_strntoll(res->charset(),res->ptr(),res->length(),-from_base,&endptr,&err);
|
||||
|
||||
if (args[0]->field_type() == MYSQL_TYPE_BIT)
|
||||
{
|
||||
/*
|
||||
Special case: The string representation of BIT doesn't resemble the
|
||||
decimal representation, so we shouldn't change it to string and then to
|
||||
decimal.
|
||||
*/
|
||||
dec= args[0]->val_int();
|
||||
}
|
||||
else
|
||||
dec= (longlong) my_strntoull(res->charset(),res->ptr(),res->length(),from_base,&endptr,&err);
|
||||
ptr= longlong2str(dec,ans,to_base);
|
||||
if (str->copy(ans,(uint32) (ptr-ans), default_charset()))
|
||||
{
|
||||
if (from_base < 0)
|
||||
dec= my_strntoll(res->charset(), res->ptr(), res->length(),
|
||||
-from_base, &endptr, &err);
|
||||
else
|
||||
dec= (longlong) my_strntoull(res->charset(), res->ptr(), res->length(),
|
||||
from_base, &endptr, &err);
|
||||
}
|
||||
|
||||
ptr= longlong2str(dec, ans, to_base);
|
||||
if (str->copy(ans, (uint32) (ptr-ans), default_charset()))
|
||||
return &my_empty_string;
|
||||
return str;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3846,7 +3846,7 @@ int User_var_log_event::exec_event(struct st_relay_log_info* rli)
|
|||
a single record and with a single column. Thus, like
|
||||
a column value, it could always have IMPLICIT derivation.
|
||||
*/
|
||||
e.update_hash(val, val_len, type, charset, DERIVATION_IMPLICIT);
|
||||
e.update_hash(val, val_len, type, charset, DERIVATION_IMPLICIT, 0);
|
||||
free_root(thd->mem_root,0);
|
||||
|
||||
rli->inc_event_relay_log_pos();
|
||||
|
|
|
|||
|
|
@ -559,9 +559,13 @@ int vio_write_shared_memory(Vio * vio, const gptr buf, int size)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
Close shared memory and DBUG_PRINT any errors that happen on closing.
|
||||
@return Zero if all closing functions succeed, and nonzero otherwise.
|
||||
*/
|
||||
int vio_close_shared_memory(Vio * vio)
|
||||
{
|
||||
int r;
|
||||
int error_count= 0;
|
||||
DBUG_ENTER("vio_close_shared_memory");
|
||||
if (vio->type != VIO_CLOSED)
|
||||
{
|
||||
|
|
@ -575,23 +579,44 @@ int vio_close_shared_memory(Vio * vio)
|
|||
result if they are success.
|
||||
*/
|
||||
if (UnmapViewOfFile(vio->handle_map) == 0)
|
||||
{
|
||||
error_count++;
|
||||
DBUG_PRINT("vio_error", ("UnmapViewOfFile() failed"));
|
||||
}
|
||||
if (CloseHandle(vio->event_server_wrote) == 0)
|
||||
{
|
||||
error_count++;
|
||||
DBUG_PRINT("vio_error", ("CloseHandle(vio->esw) failed"));
|
||||
}
|
||||
if (CloseHandle(vio->event_server_read) == 0)
|
||||
{
|
||||
error_count++;
|
||||
DBUG_PRINT("vio_error", ("CloseHandle(vio->esr) failed"));
|
||||
}
|
||||
if (CloseHandle(vio->event_client_wrote) == 0)
|
||||
{
|
||||
error_count++;
|
||||
DBUG_PRINT("vio_error", ("CloseHandle(vio->ecw) failed"));
|
||||
}
|
||||
if (CloseHandle(vio->event_client_read) == 0)
|
||||
{
|
||||
error_count++;
|
||||
DBUG_PRINT("vio_error", ("CloseHandle(vio->ecr) failed"));
|
||||
}
|
||||
if (CloseHandle(vio->handle_file_map) == 0)
|
||||
{
|
||||
error_count++;
|
||||
DBUG_PRINT("vio_error", ("CloseHandle(vio->hfm) failed"));
|
||||
}
|
||||
if (CloseHandle(vio->event_conn_closed) == 0)
|
||||
{
|
||||
error_count++;
|
||||
DBUG_PRINT("vio_error", ("CloseHandle(vio->ecc) failed"));
|
||||
}
|
||||
}
|
||||
vio->type= VIO_CLOSED;
|
||||
vio->sd= -1;
|
||||
DBUG_RETURN(!r);
|
||||
DBUG_RETURN(error_count);
|
||||
}
|
||||
#endif /* HAVE_SMEM */
|
||||
#endif /* __WIN__ */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue