mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge zippy.(none):/home/cmiller/work/mysql/merge/mysql-5.0
into zippy.(none):/home/cmiller/work/mysql/merge/mysql-5.1 BitKeeper/etc/ignore: auto-union client/mysqldump.c: Auto merged mysql-test/r/bdb.result: Auto merged mysql-test/r/type_timestamp.result: Auto merged mysql-test/r/udf.result: Auto merged mysql-test/t/bdb.test: Auto merged mysql-test/t/type_timestamp.test: Auto merged mysys/my_lib.c: Auto merged sql/log_event.cc: Auto merged sql/log_event.h: Auto merged sql/table.cc: Auto merged mysql-test/r/func_time.result: manual merge mysql-test/r/mysqldump.result: manual merge mysql-test/t/func_time.test: manual merge mysql-test/t/mysqldump.test: manual merge sql/log.cc: manual merge sql/sp_head.cc: manual merge sql/sql_table.cc: manual merge
This commit is contained in:
@@ -1120,6 +1120,7 @@ server-tools/instance-manager/messages.cpp
|
|||||||
server-tools/instance-manager/mysql_connection.cpp
|
server-tools/instance-manager/mysql_connection.cpp
|
||||||
server-tools/instance-manager/mysqlmanager
|
server-tools/instance-manager/mysqlmanager
|
||||||
server-tools/instance-manager/mysqlmanager.cpp
|
server-tools/instance-manager/mysqlmanager.cpp
|
||||||
|
server-tools/instance-manager/net_serv.cc
|
||||||
server-tools/instance-manager/options.cpp
|
server-tools/instance-manager/options.cpp
|
||||||
server-tools/instance-manager/parse.cpp
|
server-tools/instance-manager/parse.cpp
|
||||||
server-tools/instance-manager/parse_output.cpp
|
server-tools/instance-manager/parse_output.cpp
|
||||||
@@ -1780,4 +1781,3 @@ vio/viotest-sslconnect.cpp
|
|||||||
vio/viotest.cpp
|
vio/viotest.cpp
|
||||||
zlib/*.ds?
|
zlib/*.ds?
|
||||||
zlib/*.vcproj
|
zlib/*.vcproj
|
||||||
server-tools/instance-manager/net_serv.cc
|
|
||||||
|
@@ -1643,9 +1643,15 @@ static uint get_table_structure(char *table, char *db, char *table_type,
|
|||||||
field= mysql_fetch_field_direct(result, 0);
|
field= mysql_fetch_field_direct(result, 0);
|
||||||
if (strcmp(field->name, "View") == 0)
|
if (strcmp(field->name, "View") == 0)
|
||||||
{
|
{
|
||||||
|
char *scv_buff = NULL;
|
||||||
|
|
||||||
if (verbose)
|
if (verbose)
|
||||||
fprintf(stderr, "-- It's a view, create dummy table for view\n");
|
fprintf(stderr, "-- It's a view, create dummy table for view\n");
|
||||||
|
|
||||||
|
/* save "show create" statement for later */
|
||||||
|
if ((row= mysql_fetch_row(result)) && (scv_buff=row[1]))
|
||||||
|
scv_buff= my_strdup(scv_buff, MYF(0));
|
||||||
|
|
||||||
mysql_free_result(result);
|
mysql_free_result(result);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1663,9 +1669,22 @@ static uint get_table_structure(char *table, char *db, char *table_type,
|
|||||||
"SHOW FIELDS FROM %s", result_table);
|
"SHOW FIELDS FROM %s", result_table);
|
||||||
if (mysql_query_with_error_report(sock, 0, query_buff))
|
if (mysql_query_with_error_report(sock, 0, query_buff))
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
View references invalid or privileged table/col/fun (err 1356),
|
||||||
|
so we cannot create a stand-in table. Be defensive and dump
|
||||||
|
a comment with the view's 'show create' statement. (Bug #17371)
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (mysql_errno(sock) == ER_VIEW_INVALID)
|
||||||
|
fprintf(sql_file, "\n-- failed on view %s: %s\n\n", result_table, scv_buff ? scv_buff : "");
|
||||||
|
|
||||||
|
my_free(scv_buff, MYF(MY_ALLOW_ZERO_PTR));
|
||||||
|
|
||||||
safe_exit(EX_MYSQLERR);
|
safe_exit(EX_MYSQLERR);
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
my_free(scv_buff, MYF(MY_ALLOW_ZERO_PTR));
|
||||||
|
|
||||||
if ((result= mysql_store_result(sock)))
|
if ((result= mysql_store_result(sock)))
|
||||||
{
|
{
|
||||||
@@ -1706,6 +1725,9 @@ static uint get_table_structure(char *table, char *db, char *table_type,
|
|||||||
}
|
}
|
||||||
mysql_free_result(result);
|
mysql_free_result(result);
|
||||||
|
|
||||||
|
if (path)
|
||||||
|
my_fclose(sql_file, MYF(MY_WME));
|
||||||
|
|
||||||
seen_views= 1;
|
seen_views= 1;
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
@@ -1962,6 +1962,40 @@ create table t1 (a int) engine=bdb;
|
|||||||
commit;
|
commit;
|
||||||
alter table t1 add primary key(a);
|
alter table t1 add primary key(a);
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
set autocommit=1;
|
||||||
|
reset master;
|
||||||
|
create table bug16206 (a int) engine= blackhole;
|
||||||
|
insert into bug16206 values(1);
|
||||||
|
start transaction;
|
||||||
|
insert into bug16206 values(2);
|
||||||
|
commit;
|
||||||
|
show binlog events;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4
|
||||||
|
f n Query 1 n use `test`; create table bug16206 (a int) engine= blackhole
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(1)
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(2)
|
||||||
|
drop table bug16206;
|
||||||
|
reset master;
|
||||||
|
create table bug16206 (a int) engine= bdb;
|
||||||
|
insert into bug16206 values(0);
|
||||||
|
insert into bug16206 values(1);
|
||||||
|
start transaction;
|
||||||
|
insert into bug16206 values(2);
|
||||||
|
commit;
|
||||||
|
insert into bug16206 values(3);
|
||||||
|
show binlog events;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4
|
||||||
|
f n Query 1 n use `test`; create table bug16206 (a int) engine= bdb
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(0)
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(1)
|
||||||
|
f n Query 1 n use `test`; BEGIN
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(2)
|
||||||
|
f n Query 1 n use `test`; COMMIT
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(3)
|
||||||
|
drop table bug16206;
|
||||||
|
set autocommit=0;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
create table t1 (a int) engine=bdb;
|
create table t1 (a int) engine=bdb;
|
||||||
set session transaction isolation level repeatable read;
|
set session transaction isolation level repeatable read;
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
drop table if exists t1,t2,t3;
|
drop table if exists t1,t2,t3;
|
||||||
|
set time_zone="+03:00";
|
||||||
select from_days(to_days("960101")),to_days(960201)-to_days("19960101"),to_days(date_add(curdate(), interval 1 day))-to_days(curdate()),weekday("1997-11-29");
|
select from_days(to_days("960101")),to_days(960201)-to_days("19960101"),to_days(date_add(curdate(), interval 1 day))-to_days(curdate()),weekday("1997-11-29");
|
||||||
from_days(to_days("960101")) to_days(960201)-to_days("19960101") to_days(date_add(curdate(), interval 1 day))-to_days(curdate()) weekday("1997-11-29")
|
from_days(to_days("960101")) to_days(960201)-to_days("19960101") to_days(date_add(curdate(), interval 1 day))-to_days(curdate()) weekday("1997-11-29")
|
||||||
1996-01-01 31 1 5
|
1996-01-01 31 1 5
|
||||||
@@ -932,6 +933,7 @@ id day id day
|
|||||||
1 2005-06-01 3 2005-07-15
|
1 2005-06-01 3 2005-07-15
|
||||||
3 2005-07-01 3 2005-07-15
|
3 2005-07-01 3 2005-07-15
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
set time_zone= @@global.time_zone;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
select date_sub("0050-01-01 00:00:01",INTERVAL 2 SECOND);
|
select date_sub("0050-01-01 00:00:01",INTERVAL 2 SECOND);
|
||||||
date_sub("0050-01-01 00:00:01",INTERVAL 2 SECOND)
|
date_sub("0050-01-01 00:00:01",INTERVAL 2 SECOND)
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
|
set time_zone="+03:00";
|
||||||
create table t1 (Zeit time, Tag tinyint not null, Monat tinyint not null,
|
create table t1 (Zeit time, Tag tinyint not null, Monat tinyint not null,
|
||||||
Jahr smallint not null, index(Tag), index(Monat), index(Jahr) );
|
Jahr smallint not null, index(Tag), index(Monat), index(Jahr) );
|
||||||
insert into t1 values ("09:26:00",16,9,1998),("09:26:00",16,9,1998);
|
insert into t1 values ("09:26:00",16,9,1998),("09:26:00",16,9,1998);
|
||||||
@@ -9,3 +10,4 @@ Date Unix
|
|||||||
1998-9-16 09:26:00 905927160
|
1998-9-16 09:26:00 905927160
|
||||||
1998-9-16 09:26:00 905927160
|
1998-9-16 09:26:00 905927160
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
set time_zone= @@global.time_zone;
|
||||||
|
@@ -2782,6 +2782,25 @@ end AFTER # root@localhost
|
|||||||
drop trigger tr1;
|
drop trigger tr1;
|
||||||
drop trigger tr2;
|
drop trigger tr2;
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
create table t (qty int, price int);
|
||||||
|
insert into t values(3, 50);
|
||||||
|
insert into t values(5, 51);
|
||||||
|
create view v1 as select qty, price, qty*price as value from t;
|
||||||
|
create view v2 as select qty from v1;
|
||||||
|
mysqldump {
|
||||||
|
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||||
|
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||||
|
/*!50001 VIEW `v1` AS select `t`.`qty` AS `qty`,`t`.`price` AS `price`,(`t`.`qty` * `t`.`price`) AS `value` from `t` */;
|
||||||
|
|
||||||
|
} mysqldump {
|
||||||
|
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||||
|
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||||
|
/*!50001 VIEW `v2` AS select `v1`.`qty` AS `qty` from `v1` */;
|
||||||
|
|
||||||
|
} mysqldump
|
||||||
|
drop view v1;
|
||||||
|
drop view v2;
|
||||||
|
drop table t;
|
||||||
/*!50003 CREATE FUNCTION `f`() RETURNS bigint(20)
|
/*!50003 CREATE FUNCTION `f`() RETURNS bigint(20)
|
||||||
return 42 */|
|
return 42 */|
|
||||||
/*!50003 CREATE PROCEDURE `p`()
|
/*!50003 CREATE PROCEDURE `p`()
|
||||||
@@ -2796,6 +2815,43 @@ p CREATE DEFINER=`root`@`localhost` PROCEDURE `p`()
|
|||||||
select 42
|
select 42
|
||||||
drop function f;
|
drop function f;
|
||||||
drop procedure p;
|
drop procedure p;
|
||||||
|
create table t1 ( id serial );
|
||||||
|
create view v1 as select * from t1;
|
||||||
|
drop table t1;
|
||||||
|
mysqldump {
|
||||||
|
|
||||||
|
-- failed on view `v1`: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `test`.`t1`.`id` AS `id` from `t1`
|
||||||
|
|
||||||
|
} mysqldump
|
||||||
|
drop view v1;
|
||||||
|
create database mysqldump_test_db;
|
||||||
|
use mysqldump_test_db;
|
||||||
|
create table t1 (id int);
|
||||||
|
create view v1 as select * from t1;
|
||||||
|
insert into t1 values (1232131);
|
||||||
|
insert into t1 values (4711);
|
||||||
|
insert into t1 values (3231);
|
||||||
|
insert into t1 values (0815);
|
||||||
|
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||||
|
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||||
|
/*!40101 SET NAMES utf8 */;
|
||||||
|
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||||
|
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||||
|
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||||
|
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||||
|
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||||
|
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||||
|
|
||||||
|
/*!40000 DROP DATABASE IF EXISTS `mysqldump_test_db`*/;
|
||||||
|
|
||||||
|
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqldump_test_db` /*!40100 DEFAULT CHARACTER SET latin1 */;
|
||||||
|
|
||||||
|
USE `mysqldump_test_db`;
|
||||||
|
DROP TABLE IF EXISTS `t1`;
|
||||||
|
CREATE TABLE `t1` (
|
||||||
|
`id` int(11) default NULL
|
||||||
create table t1 (a text , b text);
|
create table t1 (a text , b text);
|
||||||
create table t2 (a text , b text);
|
create table t2 (a text , b text);
|
||||||
insert t1 values ("Duck, Duck", "goose");
|
insert t1 values ("Duck, Duck", "goose");
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
drop table if exists t1,t2;
|
drop table if exists t1,t2;
|
||||||
|
set time_zone="+03:00";
|
||||||
CREATE TABLE t1 (a int, t timestamp);
|
CREATE TABLE t1 (a int, t timestamp);
|
||||||
CREATE TABLE t2 (a int, t datetime);
|
CREATE TABLE t2 (a int, t datetime);
|
||||||
SET TIMESTAMP=1234;
|
SET TIMESTAMP=1234;
|
||||||
@@ -491,3 +492,4 @@ a b c
|
|||||||
5 NULL 2001-09-09 04:46:59
|
5 NULL 2001-09-09 04:46:59
|
||||||
6 NULL 2006-06-06 06:06:06
|
6 NULL 2006-06-06 06:06:06
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
set time_zone= @@global.time_zone;
|
||||||
|
@@ -76,6 +76,24 @@ call XXX2();
|
|||||||
metaphon(testval)
|
metaphon(testval)
|
||||||
HL
|
HL
|
||||||
drop procedure xxx2;
|
drop procedure xxx2;
|
||||||
|
CREATE TABLE bug19904(n INT, v varchar(10));
|
||||||
|
INSERT INTO bug19904 VALUES (1,'one'),(2,'two'),(NULL,NULL),(3,'three'),(4,'four');
|
||||||
|
SELECT myfunc_double(n) AS f FROM bug19904;
|
||||||
|
f
|
||||||
|
49.00
|
||||||
|
50.00
|
||||||
|
NULL
|
||||||
|
51.00
|
||||||
|
52.00
|
||||||
|
SELECT metaphon(v) AS f FROM bug19904;
|
||||||
|
f
|
||||||
|
ON
|
||||||
|
TW
|
||||||
|
NULL
|
||||||
|
0R
|
||||||
|
FR
|
||||||
|
DROP TABLE bug19904;
|
||||||
|
End of 5.0 tests.
|
||||||
DROP FUNCTION metaphon;
|
DROP FUNCTION metaphon;
|
||||||
DROP FUNCTION myfunc_double;
|
DROP FUNCTION myfunc_double;
|
||||||
DROP FUNCTION myfunc_nonexist;
|
DROP FUNCTION myfunc_nonexist;
|
||||||
|
@@ -1045,6 +1045,41 @@ commit;
|
|||||||
alter table t1 add primary key(a);
|
alter table t1 add primary key(a);
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #16206: Superfluous COMMIT event in binlog when updating BDB in autocommit mode
|
||||||
|
#
|
||||||
|
set autocommit=1;
|
||||||
|
|
||||||
|
let $VERSION=`select version()`;
|
||||||
|
|
||||||
|
reset master;
|
||||||
|
create table bug16206 (a int) engine= blackhole;
|
||||||
|
insert into bug16206 values(1);
|
||||||
|
start transaction;
|
||||||
|
insert into bug16206 values(2);
|
||||||
|
commit;
|
||||||
|
--replace_result $VERSION VERSION
|
||||||
|
--replace_column 1 f 2 n 5 n
|
||||||
|
show binlog events;
|
||||||
|
drop table bug16206;
|
||||||
|
|
||||||
|
reset master;
|
||||||
|
create table bug16206 (a int) engine= bdb;
|
||||||
|
insert into bug16206 values(0);
|
||||||
|
insert into bug16206 values(1);
|
||||||
|
start transaction;
|
||||||
|
insert into bug16206 values(2);
|
||||||
|
commit;
|
||||||
|
insert into bug16206 values(3);
|
||||||
|
--replace_result $VERSION VERSION
|
||||||
|
--replace_column 1 f 2 n 5 n
|
||||||
|
show binlog events;
|
||||||
|
drop table bug16206;
|
||||||
|
|
||||||
|
set autocommit=0;
|
||||||
|
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@@ -5,6 +5,9 @@
|
|||||||
drop table if exists t1,t2,t3;
|
drop table if exists t1,t2,t3;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
|
# Set timezone to GMT-3, to make it possible to use "interval 3 hour"
|
||||||
|
set time_zone="+03:00";
|
||||||
|
|
||||||
select from_days(to_days("960101")),to_days(960201)-to_days("19960101"),to_days(date_add(curdate(), interval 1 day))-to_days(curdate()),weekday("1997-11-29");
|
select from_days(to_days("960101")),to_days(960201)-to_days("19960101"),to_days(date_add(curdate(), interval 1 day))-to_days(curdate()),weekday("1997-11-29");
|
||||||
select period_add("9602",-12),period_diff(199505,"9404") ;
|
select period_add("9602",-12),period_diff(199505,"9404") ;
|
||||||
|
|
||||||
@@ -335,6 +338,7 @@ select last_day("1997-12-1")+0.0;
|
|||||||
|
|
||||||
# Test SAPDB UTC_% functions. This part is TZ dependant (It is supposed that
|
# Test SAPDB UTC_% functions. This part is TZ dependant (It is supposed that
|
||||||
# TZ variable set to GMT-3
|
# TZ variable set to GMT-3
|
||||||
|
|
||||||
select strcmp(date_sub(localtimestamp(), interval 3 hour), utc_timestamp())=0;
|
select strcmp(date_sub(localtimestamp(), interval 3 hour), utc_timestamp())=0;
|
||||||
select strcmp(date_format(date_sub(localtimestamp(), interval 3 hour),"%T"), utc_time())=0;
|
select strcmp(date_format(date_sub(localtimestamp(), interval 3 hour),"%T"), utc_time())=0;
|
||||||
select strcmp(date_format(date_sub(localtimestamp(), interval 3 hour),"%Y-%m-%d"), utc_date())=0;
|
select strcmp(date_format(date_sub(localtimestamp(), interval 3 hour),"%Y-%m-%d"), utc_date())=0;
|
||||||
@@ -505,6 +509,9 @@ SELECT * FROM t1, t2
|
|||||||
|
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
|
||||||
|
# Restore timezone to default
|
||||||
|
set time_zone= @@global.time_zone;
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@@ -6,6 +6,9 @@
|
|||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
|
# Set timezone to GMT-3, to make it possible to use "interval 3 hour"
|
||||||
|
set time_zone="+03:00";
|
||||||
|
|
||||||
create table t1 (Zeit time, Tag tinyint not null, Monat tinyint not null,
|
create table t1 (Zeit time, Tag tinyint not null, Monat tinyint not null,
|
||||||
Jahr smallint not null, index(Tag), index(Monat), index(Jahr) );
|
Jahr smallint not null, index(Tag), index(Monat), index(Jahr) );
|
||||||
insert into t1 values ("09:26:00",16,9,1998),("09:26:00",16,9,1998);
|
insert into t1 values ("09:26:00",16,9,1998),("09:26:00",16,9,1998);
|
||||||
@@ -15,3 +18,6 @@ FROM t1;
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
|
||||||
|
# Restore timezone to default
|
||||||
|
set time_zone= @@global.time_zone;
|
||||||
|
@@ -1158,6 +1158,27 @@ drop trigger tr2;
|
|||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#18462 mysqldump does not dump view structures correctly
|
||||||
|
#
|
||||||
|
#
|
||||||
|
create table t (qty int, price int);
|
||||||
|
insert into t values(3, 50);
|
||||||
|
insert into t values(5, 51);
|
||||||
|
create view v1 as select qty, price, qty*price as value from t;
|
||||||
|
create view v2 as select qty from v1;
|
||||||
|
--echo mysqldump {
|
||||||
|
--exec $MYSQL_DUMP --compact -F --tab . test
|
||||||
|
--exec cat v1.sql
|
||||||
|
--echo } mysqldump {
|
||||||
|
--exec cat v2.sql
|
||||||
|
--echo } mysqldump
|
||||||
|
--rm v.sql t.sql t.txt
|
||||||
|
drop view v1;
|
||||||
|
drop view v2;
|
||||||
|
drop table t;
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug#14857 Reading dump files with single statement stored routines fails.
|
# Bug#14857 Reading dump files with single statement stored routines fails.
|
||||||
# fixed by patch for bug#16878
|
# fixed by patch for bug#16878
|
||||||
@@ -1174,6 +1195,19 @@ show create procedure p;
|
|||||||
drop function f;
|
drop function f;
|
||||||
drop procedure p;
|
drop procedure p;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #17371 Unable to dump a schema with invalid views
|
||||||
|
#
|
||||||
|
#
|
||||||
|
create table t1 ( id serial );
|
||||||
|
create view v1 as select * from t1;
|
||||||
|
drop table t1;
|
||||||
|
# mysqldump gets 1356 from server, but gives us 2
|
||||||
|
--echo mysqldump {
|
||||||
|
--error 2
|
||||||
|
--exec $MYSQL_DUMP --force -N --compact --skip-comments test
|
||||||
|
--echo } mysqldump
|
||||||
|
drop view v1;
|
||||||
# Added for use-thread option
|
# Added for use-thread option
|
||||||
#
|
#
|
||||||
create table t1 (a text , b text);
|
create table t1 (a text , b text);
|
||||||
|
@@ -6,6 +6,9 @@
|
|||||||
drop table if exists t1,t2;
|
drop table if exists t1,t2;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
|
# Set timezone to GMT-3, to make it possible to use "interval 3 hour"
|
||||||
|
set time_zone="+03:00";
|
||||||
|
|
||||||
CREATE TABLE t1 (a int, t timestamp);
|
CREATE TABLE t1 (a int, t timestamp);
|
||||||
CREATE TABLE t2 (a int, t datetime);
|
CREATE TABLE t2 (a int, t datetime);
|
||||||
SET TIMESTAMP=1234;
|
SET TIMESTAMP=1234;
|
||||||
@@ -322,3 +325,6 @@ select * from t1;
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
|
||||||
|
# Restore timezone to default
|
||||||
|
set time_zone= @@global.time_zone;
|
||||||
|
@@ -99,6 +99,17 @@ delimiter ;//
|
|||||||
call XXX2();
|
call XXX2();
|
||||||
drop procedure xxx2;
|
drop procedure xxx2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#19904: UDF: not initialized *is_null per row
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE bug19904(n INT, v varchar(10));
|
||||||
|
INSERT INTO bug19904 VALUES (1,'one'),(2,'two'),(NULL,NULL),(3,'three'),(4,'four');
|
||||||
|
SELECT myfunc_double(n) AS f FROM bug19904;
|
||||||
|
SELECT metaphon(v) AS f FROM bug19904;
|
||||||
|
DROP TABLE bug19904;
|
||||||
|
|
||||||
|
--echo End of 5.0 tests.
|
||||||
|
|
||||||
#
|
#
|
||||||
# Drop the example functions from udf_example
|
# Drop the example functions from udf_example
|
||||||
@@ -114,3 +125,4 @@ DROP FUNCTION lookup;
|
|||||||
DROP FUNCTION reverse_lookup;
|
DROP FUNCTION reverse_lookup;
|
||||||
DROP FUNCTION avgcost;
|
DROP FUNCTION avgcost;
|
||||||
|
|
||||||
|
|
||||||
|
@@ -495,7 +495,7 @@ MY_DIR *my_dir(const char *path, myf MyFlags)
|
|||||||
if (!(MyFlags & MY_DONT_SORT))
|
if (!(MyFlags & MY_DONT_SORT))
|
||||||
qsort((void *) result->dir_entry, result->number_off_files,
|
qsort((void *) result->dir_entry, result->number_off_files,
|
||||||
sizeof(FILEINFO), (qsort_cmp) comp_names);
|
sizeof(FILEINFO), (qsort_cmp) comp_names);
|
||||||
DBUG_PRINT(exit, ("found %d files", result->number_off_files));
|
DBUG_PRINT("exit", ("found %d files", result->number_off_files));
|
||||||
DBUG_RETURN(result);
|
DBUG_RETURN(result);
|
||||||
error:
|
error:
|
||||||
my_errno=errno;
|
my_errno=errno;
|
||||||
|
20
sql/log.cc
20
sql/log.cc
@@ -42,6 +42,8 @@ LOGGER logger;
|
|||||||
MYSQL_BIN_LOG mysql_bin_log;
|
MYSQL_BIN_LOG mysql_bin_log;
|
||||||
ulong sync_binlog_counter= 0;
|
ulong sync_binlog_counter= 0;
|
||||||
|
|
||||||
|
static Muted_query_log_event invisible_commit;
|
||||||
|
|
||||||
static bool test_if_number(const char *str,
|
static bool test_if_number(const char *str,
|
||||||
long *res, bool allow_wildcards);
|
long *res, bool allow_wildcards);
|
||||||
static int binlog_init();
|
static int binlog_init();
|
||||||
@@ -1188,7 +1190,9 @@ binlog_end_trans(THD *thd, binlog_trx_data *trx_data, Log_event *end_ev)
|
|||||||
int error=0;
|
int error=0;
|
||||||
IO_CACHE *trans_log= &trx_data->trans_log;
|
IO_CACHE *trans_log= &trx_data->trans_log;
|
||||||
|
|
||||||
if (end_ev)
|
|
||||||
|
/* NULL denotes ROLLBACK with nothing to replicate */
|
||||||
|
if (end_ev != NULL)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
We can always end the statement when ending a transaction since
|
We can always end the statement when ending a transaction since
|
||||||
@@ -1259,9 +1263,14 @@ static int binlog_commit(THD *thd, bool all)
|
|||||||
// we're here because trans_log was flushed in MYSQL_BIN_LOG::log()
|
// we're here because trans_log was flushed in MYSQL_BIN_LOG::log()
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
Query_log_event qev(thd, STRING_WITH_LEN("COMMIT"), TRUE, FALSE);
|
if (all)
|
||||||
qev.error_code= 0; // see comment in MYSQL_LOG::write(THD, IO_CACHE)
|
{
|
||||||
DBUG_RETURN(binlog_end_trans(thd, trx_data, &qev));
|
Query_log_event qev(thd, STRING_WITH_LEN("COMMIT"), TRUE, FALSE);
|
||||||
|
qev.error_code= 0; // see comment in MYSQL_LOG::write(THD, IO_CACHE)
|
||||||
|
DBUG_RETURN(binlog_end_trans(thd, trx_data, &qev));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
DBUG_RETURN(binlog_end_trans(thd, trx_data, &invisible_commit));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int binlog_rollback(THD *thd, bool all)
|
static int binlog_rollback(THD *thd, bool all)
|
||||||
@@ -3516,6 +3525,9 @@ bool MYSQL_BIN_LOG::write(THD *thd, IO_CACHE *cache, Log_event *commit_event)
|
|||||||
DBUG_ENTER("MYSQL_BIN_LOG::write(THD *, IO_CACHE *, Log_event *)");
|
DBUG_ENTER("MYSQL_BIN_LOG::write(THD *, IO_CACHE *, Log_event *)");
|
||||||
VOID(pthread_mutex_lock(&LOCK_log));
|
VOID(pthread_mutex_lock(&LOCK_log));
|
||||||
|
|
||||||
|
/* NULL would represent nothing to replicate after ROLLBACK */
|
||||||
|
DBUG_ASSERT(commit_event != NULL);
|
||||||
|
|
||||||
if (likely(is_open())) // Should always be true
|
if (likely(is_open())) // Should always be true
|
||||||
{
|
{
|
||||||
uint length;
|
uint length;
|
||||||
|
@@ -1287,6 +1287,18 @@ bool Query_log_event::write(IO_CACHE* file)
|
|||||||
my_b_safe_write(file, (byte*) query, q_len)) ? 1 : 0;
|
my_b_safe_write(file, (byte*) query, q_len)) ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Query_log_event::Query_log_event()
|
||||||
|
|
||||||
|
The simplest constructor that could possibly work. This is used for
|
||||||
|
creating static objects that have a special meaning and are invisible
|
||||||
|
to the log.
|
||||||
|
*/
|
||||||
|
Query_log_event::Query_log_event()
|
||||||
|
:Log_event(), data_buf(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Query_log_event::Query_log_event()
|
Query_log_event::Query_log_event()
|
||||||
@@ -1935,6 +1947,21 @@ end:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
Muted_query_log_event methods
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
#ifndef MYSQL_CLIENT
|
||||||
|
/*
|
||||||
|
Muted_query_log_event::Muted_query_log_event()
|
||||||
|
*/
|
||||||
|
Muted_query_log_event::Muted_query_log_event()
|
||||||
|
:Query_log_event()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
Start_log_event_v3 methods
|
Start_log_event_v3 methods
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
@@ -808,6 +808,7 @@ public:
|
|||||||
void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
|
void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Query_log_event();
|
||||||
Query_log_event(const char* buf, uint event_len,
|
Query_log_event(const char* buf, uint event_len,
|
||||||
const Format_description_log_event *description_event,
|
const Format_description_log_event *description_event,
|
||||||
Log_event_type event_type);
|
Log_event_type event_type);
|
||||||
@@ -831,6 +832,26 @@ public:
|
|||||||
/* Writes derived event-specific part of post header. */
|
/* Writes derived event-specific part of post header. */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
|
||||||
|
Muted Query Log Event class
|
||||||
|
|
||||||
|
Pretends to Log SQL queries, but doesn't actually do so.
|
||||||
|
|
||||||
|
****************************************************************************/
|
||||||
|
class Muted_query_log_event: public Query_log_event
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
#ifndef MYSQL_CLIENT
|
||||||
|
Muted_query_log_event();
|
||||||
|
|
||||||
|
bool write(IO_CACHE* file) { return(false); };
|
||||||
|
virtual bool write_post_header_for_derived(IO_CACHE* file) { return FALSE; }
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
#ifdef HAVE_REPLICATION
|
#ifdef HAVE_REPLICATION
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
@@ -3279,7 +3279,22 @@ bool mysql_create_table_internal(THD *thd,
|
|||||||
create_info->table_options|=HA_CREATE_DELAY_KEY_WRITE;
|
create_info->table_options|=HA_CREATE_DELAY_KEY_WRITE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
#ifdef FN_DEVCHAR
|
||||||
|
/* check if the table name contains FN_DEVCHAR when defined */
|
||||||
|
const char *start= alias;
|
||||||
|
while (*start != '\0')
|
||||||
|
{
|
||||||
|
if (*start == FN_DEVCHAR)
|
||||||
|
{
|
||||||
|
my_error(ER_WRONG_TABLE_NAME, MYF(0), alias);
|
||||||
|
DBUG_RETURN(TRUE);
|
||||||
|
}
|
||||||
|
start++;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
path_length= build_table_filename(path, sizeof(path), db, alias, reg_ext);
|
path_length= build_table_filename(path, sizeof(path), db, alias, reg_ext);
|
||||||
|
}
|
||||||
|
|
||||||
/* Check if table already exists */
|
/* Check if table already exists */
|
||||||
if ((create_info->options & HA_LEX_CREATE_TMP_TABLE) &&
|
if ((create_info->options & HA_LEX_CREATE_TMP_TABLE) &&
|
||||||
|
@@ -70,6 +70,7 @@ class udf_handler :public Sql_alloc
|
|||||||
void cleanup();
|
void cleanup();
|
||||||
double val(my_bool *null_value)
|
double val(my_bool *null_value)
|
||||||
{
|
{
|
||||||
|
is_null= 0;
|
||||||
if (get_arguments())
|
if (get_arguments())
|
||||||
{
|
{
|
||||||
*null_value=1;
|
*null_value=1;
|
||||||
@@ -88,6 +89,7 @@ class udf_handler :public Sql_alloc
|
|||||||
}
|
}
|
||||||
longlong val_int(my_bool *null_value)
|
longlong val_int(my_bool *null_value)
|
||||||
{
|
{
|
||||||
|
is_null= 0;
|
||||||
if (get_arguments())
|
if (get_arguments())
|
||||||
{
|
{
|
||||||
*null_value=1;
|
*null_value=1;
|
||||||
|
Reference in New Issue
Block a user