mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
After merge fixes
Fixed compiler warnings Fix core dump when sending SIGHUP to mysqld mysql-test/r/drop_temp_table.result: After merge fixes mysql-test/r/grant.result: After merge fixes mysql-test/r/group_min_max.result: After merge fixes mysql-test/r/innodb.result: After merge fixes mysql-test/r/insert_select.result: After merge fixes mysql-test/r/rpl_charset.result: After merge fixes mysql-test/r/rpl_create_database.result: After merge fixes mysql-test/r/rpl_loaddata_rule_m.result: After merge fixes mysql-test/t/rpl_charset.test: After merge fixes mysql-test/t/rpl_create_database.test: After merge fixes sql-common/client.c: After merge fixes sql/item.cc: After merge fixes sql/mysqld.cc: Fix core dump when sending SIGHUP to mysqld sql/sql_acl.cc: Better comment sql/sql_derived.cc: Fixed comment Added missing DBUG_RETURN sql/sql_insert.cc: Fixed compiler warnings After merge fixes sql/sql_lex.cc: After merge fixes Removed compiler warnings sql/sql_parse.cc: After merge fixes sql/sql_select.cc: More debugging sql/sql_table.cc: Added missing DBUG_VOID_RETURN sql/sql_update.cc: Fixed compiler warning sql/sql_view.cc: Added missing DBUG_RETURN Fixed compiler warnings Added flag to signal that the view is a derived table
This commit is contained in:
parent
796bd7de96
commit
a1fba2dacc
22 changed files with 120 additions and 91 deletions
|
@ -11,8 +11,8 @@ get_lock("a",10)
|
||||||
show binlog events;
|
show binlog events;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4
|
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4
|
||||||
master-bin.000001 95 Query 1 190 use `test`; create database `drop-temp+table-test`
|
master-bin.000001 95 Query 1 206 create database `drop-temp+table-test`
|
||||||
master-bin.000001 190 Query 1 306 use `drop-temp+table-test`; create temporary table `table:name` (a int)
|
master-bin.000001 206 Query 1 322 use `drop-temp+table-test`; create temporary table `table:name` (a int)
|
||||||
master-bin.000001 306 Query 1 457 use `drop-temp+table-test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `drop-temp+table-test`.`table:name`
|
master-bin.000001 322 Query 1 473 use `drop-temp+table-test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `drop-temp+table-test`.`table:name`
|
||||||
master-bin.000001 457 Query 1 550 use `drop-temp+table-test`; DO RELEASE_LOCK("a")
|
master-bin.000001 473 Query 1 566 use `drop-temp+table-test`; DO RELEASE_LOCK("a")
|
||||||
drop database `drop-temp+table-test`;
|
drop database `drop-temp+table-test`;
|
||||||
|
|
|
@ -332,10 +332,10 @@ GRANT USAGE ON *.* TO 'grant_user'@'localhost'
|
||||||
GRANT INSERT (a, d, c, b) ON `test`.`t1` TO 'grant_user'@'localhost'
|
GRANT INSERT (a, d, c, b) ON `test`.`t1` TO 'grant_user'@'localhost'
|
||||||
select Host,Db,User,Table_name,Column_name,Column_priv from mysql.columns_priv;
|
select Host,Db,User,Table_name,Column_name,Column_priv from mysql.columns_priv;
|
||||||
Host Db User Table_name Column_name Column_priv
|
Host Db User Table_name Column_name Column_priv
|
||||||
localhost test grant_user t1 c Insert
|
|
||||||
localhost test grant_user t1 b Insert
|
localhost test grant_user t1 b Insert
|
||||||
localhost test grant_user t1 a Insert
|
|
||||||
localhost test grant_user t1 d Insert
|
localhost test grant_user t1 d Insert
|
||||||
|
localhost test grant_user t1 a Insert
|
||||||
|
localhost test grant_user t1 c Insert
|
||||||
revoke ALL PRIVILEGES on t1 from grant_user@localhost;
|
revoke ALL PRIVILEGES on t1 from grant_user@localhost;
|
||||||
show grants for grant_user@localhost;
|
show grants for grant_user@localhost;
|
||||||
Grants for grant_user@localhost
|
Grants for grant_user@localhost
|
||||||
|
|
|
@ -1365,7 +1365,7 @@ where exists ( select * from t2 where t2.c > 'b1' )
|
||||||
group by a1,a2,b;
|
group by a1,a2,b;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 range NULL idx_t1_1 147 NULL 17 Using index for group-by
|
1 PRIMARY t1 range NULL idx_t1_1 147 NULL 17 Using index for group-by
|
||||||
2 SUBQUERY t2 index NULL idx_t2_1 163 NULL 164 Using index
|
2 SUBQUERY t2 index NULL idx_t2_1 163 NULL 164 Using where; Using index
|
||||||
explain select a1,a2,b,min(c),max(c) from t1 where (a1 >= 'c' or a2 < 'b') and (b > 'a') group by a1,a2,b;
|
explain select a1,a2,b,min(c),max(c) from t1 where (a1 >= 'c' or a2 < 'b') and (b > 'a') group by a1,a2,b;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 17 Using where; Using index for group-by
|
1 SIMPLE t1 range idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 147 NULL 17 Using where; Using index for group-by
|
||||||
|
|
|
@ -1696,7 +1696,7 @@ Variable_name Value
|
||||||
Innodb_rows_inserted 31706
|
Innodb_rows_inserted 31706
|
||||||
show status like "Innodb_rows_read";
|
show status like "Innodb_rows_read";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Innodb_rows_read 80178
|
Innodb_rows_read 80161
|
||||||
show status like "Innodb_rows_updated";
|
show status like "Innodb_rows_updated";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Innodb_rows_updated 29530
|
Innodb_rows_updated 29530
|
||||||
|
|
|
@ -87,8 +87,8 @@ reset master;
|
||||||
create table t2(unique(a)) select a from t1;
|
create table t2(unique(a)) select a from t1;
|
||||||
ERROR 23000: Duplicate entry '1' for key 1
|
ERROR 23000: Duplicate entry '1' for key 1
|
||||||
show binlog events;
|
show binlog events;
|
||||||
Log_name Pos Event_type Server_id Orig_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 4 Start 1 4 Server ver: VERSION, Binlog ver: 3
|
master-bin.000001 4 Format_desc 1 95 Server ver: VERSION, Binlog ver: 4
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a int not null);
|
create table t1 (a int not null);
|
||||||
create table t2 (a int not null);
|
create table t2 (a int not null);
|
||||||
|
|
|
@ -105,15 +105,15 @@ drop database mysqltest2;
|
||||||
drop database mysqltest3;
|
drop database mysqltest3;
|
||||||
show binlog events from 95;
|
show binlog events from 95;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query 1 # use `test`; drop database if exists mysqltest2
|
master-bin.000001 # Query 1 # drop database if exists mysqltest2
|
||||||
master-bin.000001 # Query 1 # use `test`; drop database if exists mysqltest3
|
master-bin.000001 # Query 1 # drop database if exists mysqltest3
|
||||||
master-bin.000001 # Query 1 # use `test`; create database mysqltest2 character set latin2
|
master-bin.000001 # Query 1 # create database mysqltest2 character set latin2
|
||||||
master-bin.000001 # Query 1 # use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=30
|
master-bin.000001 # Query 1 # use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=30
|
||||||
master-bin.000001 # Query 1 # use `test`; create database mysqltest3
|
master-bin.000001 # Query 1 # create database mysqltest3
|
||||||
master-bin.000001 # Query 1 # use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=64
|
master-bin.000001 # Query 1 # use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=64
|
||||||
master-bin.000001 # Query 1 # use `test`; drop database mysqltest3
|
master-bin.000001 # Query 1 # drop database mysqltest3
|
||||||
master-bin.000001 # Query 1 # use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=64
|
master-bin.000001 # Query 1 # use `test`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=8,COLLATION_SERVER=64
|
||||||
master-bin.000001 # Query 1 # use `test`; create database mysqltest3
|
master-bin.000001 # Query 1 # create database mysqltest3
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=8,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; create table t1 (a int auto_increment primary key, b varchar(100))
|
master-bin.000001 # Query 1 # use `mysqltest2`; create table t1 (a int auto_increment primary key, b varchar(100))
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=4,COLLATION_CONNECTION=27,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
||||||
|
@ -158,7 +158,7 @@ master-bin.000001 # Intvar 1 # INSERT_ID=1
|
||||||
master-bin.000001 # User var 1 # @`a`=_cp850 0x4DFC6C6C6572 COLLATE cp850_general_ci
|
master-bin.000001 # User var 1 # @`a`=_cp850 0x4DFC6C6C6572 COLLATE cp850_general_ci
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(collation(@a))
|
master-bin.000001 # Query 1 # use `mysqltest2`; insert into t1 (b) values(collation(@a))
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
master-bin.000001 # Query 1 # use `mysqltest2`; SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
||||||
master-bin.000001 # Query 1 # use `mysqltest2`; drop database mysqltest2
|
master-bin.000001 # Query 1 # drop database mysqltest2
|
||||||
master-bin.000001 # Query 1 # SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
master-bin.000001 # Query 1 # SET ONE_SHOT CHARACTER_SET_CLIENT=8,COLLATION_CONNECTION=31,COLLATION_DATABASE=9,COLLATION_SERVER=64
|
||||||
master-bin.000001 # Query 1 # drop database mysqltest3
|
master-bin.000001 # Query 1 # drop database mysqltest3
|
||||||
set global character_set_server=latin2;
|
set global character_set_server=latin2;
|
||||||
|
@ -200,8 +200,8 @@ hex(c1) hex(c2)
|
||||||
CDF32C20E7E020F0FBE1E0EBEAF3 CDF32C20E7E020F0FBE1E0EBEAF3
|
CDF32C20E7E020F0FBE1E0EBEAF3 CDF32C20E7E020F0FBE1E0EBEAF3
|
||||||
stop slave;
|
stop slave;
|
||||||
delete from t1;
|
delete from t1;
|
||||||
change master to master_log_pos=6763;
|
change master to master_log_pos=6809;
|
||||||
start slave until master_log_file='master-bin.000001', master_log_pos=6921;
|
start slave until master_log_file='master-bin.000001', master_log_pos=6967;
|
||||||
start slave;
|
start slave;
|
||||||
select hex(c1), hex(c2) from t1;
|
select hex(c1), hex(c2) from t1;
|
||||||
hex(c1) hex(c2)
|
hex(c1) hex(c2)
|
||||||
|
|
|
@ -41,20 +41,20 @@ CREATE DATABASE mysqltest_sisyfos;
|
||||||
USE mysqltest_sisyfos;
|
USE mysqltest_sisyfos;
|
||||||
CREATE TABLE t2 (a INT);
|
CREATE TABLE t2 (a INT);
|
||||||
SHOW BINLOG EVENTS;
|
SHOW BINLOG EVENTS;
|
||||||
Log_name Pos Event_type Server_id Orig_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 4 Start 1 4 Server ver: VERSION, Binlog ver: 3
|
master-bin.000001 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4
|
||||||
master-bin.000001 79 Query 1 79 DROP DATABASE IF EXISTS mysqltest_prometheus
|
master-bin.000001 # Query 1 # DROP DATABASE IF EXISTS mysqltest_prometheus
|
||||||
master-bin.000001 174 Query 1 174 DROP DATABASE IF EXISTS mysqltest_sisyfos
|
master-bin.000001 # Query 1 # DROP DATABASE IF EXISTS mysqltest_sisyfos
|
||||||
master-bin.000001 263 Query 1 263 CREATE DATABASE mysqltest_prometheus
|
master-bin.000001 # Query 1 # CREATE DATABASE mysqltest_prometheus
|
||||||
master-bin.000001 350 Query 1 350 CREATE DATABASE mysqltest_sisyfos
|
master-bin.000001 # Query 1 # CREATE DATABASE mysqltest_sisyfos
|
||||||
master-bin.000001 431 Query 1 431 use `mysqltest_sisyfos`; CREATE TABLE t1 (b int)
|
master-bin.000001 # Query 1 # use `mysqltest_sisyfos`; CREATE TABLE t1 (b int)
|
||||||
master-bin.000001 502 Query 1 502 use `mysqltest_sisyfos`; INSERT INTO t1 VALUES(1)
|
master-bin.000001 # Query 1 # use `mysqltest_sisyfos`; INSERT INTO t1 VALUES(1)
|
||||||
master-bin.000001 574 Query 1 574 ALTER DATABASE mysqltest_sisyfos CHARACTER SET latin1
|
master-bin.000001 # Query 1 # ALTER DATABASE mysqltest_sisyfos CHARACTER SET latin1
|
||||||
master-bin.000001 675 Query 1 675 DROP DATABASE IF EXISTS mysqltest_sisyfos
|
master-bin.000001 # Query 1 # DROP DATABASE IF EXISTS mysqltest_sisyfos
|
||||||
master-bin.000001 764 Query 1 764 use `mysqltest_prometheus`; CREATE TABLE t1 (a INT)
|
master-bin.000001 # Query 1 # use `mysqltest_prometheus`; CREATE TABLE t1 (a INT)
|
||||||
master-bin.000001 838 Query 1 838 use `mysqltest_prometheus`; INSERT INTO t1 VALUES (1)
|
master-bin.000001 # Query 1 # use `mysqltest_prometheus`; INSERT INTO t1 VALUES (1)
|
||||||
master-bin.000001 914 Query 1 914 CREATE DATABASE mysqltest_sisyfos
|
master-bin.000001 # Query 1 # CREATE DATABASE mysqltest_sisyfos
|
||||||
master-bin.000001 995 Query 1 995 use `mysqltest_sisyfos`; CREATE TABLE t2 (a INT)
|
master-bin.000001 # Query 1 # use `mysqltest_sisyfos`; CREATE TABLE t2 (a INT)
|
||||||
SHOW DATABASES;
|
SHOW DATABASES;
|
||||||
Database
|
Database
|
||||||
mysql
|
mysql
|
||||||
|
|
|
@ -12,6 +12,6 @@ use mysqltest;
|
||||||
load data infile '../../std_data/rpl_loaddata.dat' into table test.t1;
|
load data infile '../../std_data/rpl_loaddata.dat' into table test.t1;
|
||||||
show binlog events from 95;
|
show binlog events from 95;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 79 Query 1 79 drop database if exists mysqltest
|
master-bin.000001 95 Query 1 190 drop database if exists mysqltest
|
||||||
master-bin.000001 152 Query 1 152 create database mysqltest
|
master-bin.000001 190 Query 1 277 create database mysqltest
|
||||||
drop database mysqltest;
|
drop database mysqltest;
|
||||||
|
|
|
@ -129,7 +129,7 @@ select @@character_set_server;
|
||||||
select @@character_set_server;
|
select @@character_set_server;
|
||||||
|
|
||||||
# ONE_SHOT on not charset/collation stuff is not allowed
|
# ONE_SHOT on not charset/collation stuff is not allowed
|
||||||
error 1382;
|
-- error 1382
|
||||||
set one_shot max_join_size=10;
|
set one_shot max_join_size=10;
|
||||||
|
|
||||||
# Test of wrong character set numbers;
|
# Test of wrong character set numbers;
|
||||||
|
@ -155,17 +155,22 @@ select hex(c1), hex(c2) from t1;
|
||||||
|
|
||||||
stop slave;
|
stop slave;
|
||||||
delete from t1;
|
delete from t1;
|
||||||
change master to master_log_pos=5847;
|
# Slave is now supposed to have stopped _after_ the INSERT
|
||||||
start slave until master_log_file='master-bin.000001', master_log_pos=5983;
|
|
||||||
# Slave is supposed to stop _after_ the INSERT, even though 5983 is
|
|
||||||
|
|
||||||
# Note that the following positions may change between MySQL versions!
|
# Note that the following positions may change between MySQL versions!
|
||||||
|
|
||||||
# This position should be position for the SET
|
# This position should be position for the SET ONE SHOT CHARACTER_SET_CLIENT
|
||||||
change master to master_log_pos=6763;
|
# command just before the INSERT.
|
||||||
|
# You can find it by doing:
|
||||||
|
# ../client/mysqlbinlog var/log/master-bin.000001 | grep -3 CHARACTER_SET | tail -7
|
||||||
|
change master to master_log_pos=6809;
|
||||||
|
|
||||||
# This position should be position of the INSERT command
|
# This position should be position of the INSERT command.
|
||||||
start slave until master_log_file='master-bin.000001', master_log_pos=6921;
|
# You can find it by doing:
|
||||||
|
#
|
||||||
|
# ../client/mysqlbinlog var/log/master-bin.000001 | grep -3 INSERT | tail -4
|
||||||
|
|
||||||
|
start slave until master_log_file='master-bin.000001', master_log_pos=6967;
|
||||||
|
|
||||||
# Slave is supposed to stop _after_ the INSERT, even though 'master_log_pos' is
|
# Slave is supposed to stop _after_ the INSERT, even though 'master_log_pos' is
|
||||||
# the position of the beginning of the INSERT; after SET slave is not
|
# the position of the beginning of the INSERT; after SET slave is not
|
||||||
|
|
|
@ -56,6 +56,7 @@ USE mysqltest_sisyfos;
|
||||||
CREATE TABLE t2 (a INT);
|
CREATE TABLE t2 (a INT);
|
||||||
let $VERSION=`select version()`;
|
let $VERSION=`select version()`;
|
||||||
--replace_result $VERSION VERSION
|
--replace_result $VERSION VERSION
|
||||||
|
--replace_column 2 # 5 #
|
||||||
SHOW BINLOG EVENTS;
|
SHOW BINLOG EVENTS;
|
||||||
SHOW DATABASES;
|
SHOW DATABASES;
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
|
|
|
@ -1512,6 +1512,7 @@ static MYSQL_METHODS client_methods=
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
MYSQL *
|
MYSQL *
|
||||||
CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
||||||
const char *passwd, const char *db,
|
const char *passwd, const char *db,
|
||||||
|
@ -1534,7 +1535,6 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
||||||
#ifdef HAVE_SYS_UN_H
|
#ifdef HAVE_SYS_UN_H
|
||||||
struct sockaddr_un UNIXaddr;
|
struct sockaddr_un UNIXaddr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
init_sigpipe_variables
|
init_sigpipe_variables
|
||||||
DBUG_ENTER("mysql_real_connect");
|
DBUG_ENTER("mysql_real_connect");
|
||||||
LINT_INIT(host_info);
|
LINT_INIT(host_info);
|
||||||
|
|
|
@ -187,6 +187,7 @@ Item_ident::Item_ident(THD *thd, Item_ident *item)
|
||||||
void Item_ident::cleanup()
|
void Item_ident::cleanup()
|
||||||
{
|
{
|
||||||
DBUG_ENTER("Item_ident::cleanup");
|
DBUG_ENTER("Item_ident::cleanup");
|
||||||
|
#ifdef CANT_BE_USED_AS_MEMORY_IS_FREED
|
||||||
DBUG_PRINT("enter", ("b:%s(%s), t:%s(%s), f:%s(%s)",
|
DBUG_PRINT("enter", ("b:%s(%s), t:%s(%s), f:%s(%s)",
|
||||||
db_name ? db_name : "(null)",
|
db_name ? db_name : "(null)",
|
||||||
orig_db_name ? orig_db_name : "(null)",
|
orig_db_name ? orig_db_name : "(null)",
|
||||||
|
@ -194,6 +195,7 @@ void Item_ident::cleanup()
|
||||||
orig_table_name ? orig_table_name : "(null)",
|
orig_table_name ? orig_table_name : "(null)",
|
||||||
field_name ? field_name : "(null)",
|
field_name ? field_name : "(null)",
|
||||||
orig_field_name ? orig_field_name : "(null)"));
|
orig_field_name ? orig_field_name : "(null)"));
|
||||||
|
#endif
|
||||||
Item::cleanup();
|
Item::cleanup();
|
||||||
db_name= orig_db_name;
|
db_name= orig_db_name;
|
||||||
table_name= orig_table_name;
|
table_name= orig_table_name;
|
||||||
|
|
|
@ -2128,7 +2128,7 @@ extern "C" void *signal_hand(void *arg __attribute__((unused)))
|
||||||
{
|
{
|
||||||
reload_acl_and_cache((THD*) 0,
|
reload_acl_and_cache((THD*) 0,
|
||||||
(REFRESH_LOG | REFRESH_TABLES | REFRESH_FAST |
|
(REFRESH_LOG | REFRESH_TABLES | REFRESH_FAST |
|
||||||
REFRESH_STATUS | REFRESH_GRANT |
|
REFRESH_GRANT |
|
||||||
REFRESH_THREADS | REFRESH_HOSTS),
|
REFRESH_THREADS | REFRESH_HOSTS),
|
||||||
(TABLE_LIST*) 0, NULL); // Flush logs
|
(TABLE_LIST*) 0, NULL); // Flush logs
|
||||||
mysql_print_status((THD*) 0); // Send debug some info
|
mysql_print_status((THD*) 0); // Send debug some info
|
||||||
|
|
|
@ -446,7 +446,8 @@ void acl_free(bool end)
|
||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
acl_reload()
|
acl_reload()
|
||||||
thd Thread handle
|
thd Thread handle. Note that this may be NULL if we refresh
|
||||||
|
because we got a signal
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void acl_reload(THD *thd)
|
void acl_reload(THD *thd)
|
||||||
|
|
|
@ -77,7 +77,7 @@ mysql_handle_derived(LEX *lex, int (*processor)(THD*, LEX*, TABLE_LIST*))
|
||||||
Create temporary table structure (but do not fill it)
|
Create temporary table structure (but do not fill it)
|
||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
mysql_derived(THD *thd, LEX *lex, SELECT_LEX_UNIT *unit, TABLE_LIST *t)
|
mysql_derived_prepare()
|
||||||
thd Thread handle
|
thd Thread handle
|
||||||
lex LEX for this thread
|
lex LEX for this thread
|
||||||
orig_table_list TABLE_LIST for the upper SELECT
|
orig_table_list TABLE_LIST for the upper SELECT
|
||||||
|
@ -103,6 +103,7 @@ int mysql_derived_prepare(THD *thd, LEX *lex, TABLE_LIST *orig_table_list)
|
||||||
{
|
{
|
||||||
SELECT_LEX_UNIT *unit= orig_table_list->derived;
|
SELECT_LEX_UNIT *unit= orig_table_list->derived;
|
||||||
int res= 0;
|
int res= 0;
|
||||||
|
DBUG_ENTER("mysql_derived_prepare");
|
||||||
if (unit)
|
if (unit)
|
||||||
{
|
{
|
||||||
SELECT_LEX *first_select= unit->first_select();
|
SELECT_LEX *first_select= unit->first_select();
|
||||||
|
@ -110,7 +111,6 @@ int mysql_derived_prepare(THD *thd, LEX *lex, TABLE_LIST *orig_table_list)
|
||||||
select_union *derived_result;
|
select_union *derived_result;
|
||||||
bool is_union= first_select->next_select() &&
|
bool is_union= first_select->next_select() &&
|
||||||
first_select->next_select()->linkage == UNION_TYPE;
|
first_select->next_select()->linkage == UNION_TYPE;
|
||||||
DBUG_ENTER("mysql_derived");
|
|
||||||
|
|
||||||
if (!(derived_result= new select_union(0)))
|
if (!(derived_result= new select_union(0)))
|
||||||
DBUG_RETURN(1); // out of memory
|
DBUG_RETURN(1); // out of memory
|
||||||
|
@ -173,7 +173,7 @@ exit:
|
||||||
}
|
}
|
||||||
else if (orig_table_list->ancestor)
|
else if (orig_table_list->ancestor)
|
||||||
orig_table_list->set_ancestor();
|
orig_table_list->set_ancestor();
|
||||||
return (res);
|
DBUG_RETURN(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -116,7 +116,8 @@ check_insert_fields(THD *thd, TABLE_LIST *table_list, List<Item> &fields,
|
||||||
Item *item;
|
Item *item;
|
||||||
TABLE_LIST *tbl= 0;
|
TABLE_LIST *tbl= 0;
|
||||||
table_map map= 0;
|
table_map map= 0;
|
||||||
while (item= it++)
|
|
||||||
|
while ((item= it++))
|
||||||
map|= item->used_tables();
|
map|= item->used_tables();
|
||||||
if (table_list->check_single_table(&tbl, map) || tbl == 0)
|
if (table_list->check_single_table(&tbl, map) || tbl == 0)
|
||||||
{
|
{
|
||||||
|
@ -1840,19 +1841,23 @@ bool select_insert::send_data(List<Item> &values)
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
thd->count_cuted_fields= CHECK_FIELD_WARN; // calc cuted fields
|
thd->count_cuted_fields= CHECK_FIELD_WARN; // Calculate cuted fields
|
||||||
store_values(values);
|
store_values(values);
|
||||||
thd->count_cuted_fields= CHECK_FIELD_IGNORE;
|
thd->count_cuted_fields= CHECK_FIELD_IGNORE;
|
||||||
if (thd->net.report_error)
|
if (thd->net.report_error)
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
switch (table_list->view_check_option(thd,
|
if (table_list) // Not CREATE ... SELECT
|
||||||
thd->lex->duplicates == DUP_IGNORE)) {
|
{
|
||||||
case VIEW_CHECK_SKIP:
|
switch (table_list->view_check_option(thd,
|
||||||
DBUG_RETURN(0);
|
thd->lex->duplicates ==
|
||||||
case VIEW_CHECK_ERROR:
|
DUP_IGNORE)) {
|
||||||
DBUG_RETURN(1);
|
case VIEW_CHECK_SKIP:
|
||||||
|
DBUG_RETURN(0);
|
||||||
|
case VIEW_CHECK_ERROR:
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!(error= write_record(table,&info)) && table->next_number_field)
|
if (!(error= write_record(thd, table,&info)) && table->next_number_field)
|
||||||
{
|
{
|
||||||
/* Clear for next record */
|
/* Clear for next record */
|
||||||
table->next_number_field->reset();
|
table->next_number_field->reset();
|
||||||
|
@ -1866,9 +1871,9 @@ bool select_insert::send_data(List<Item> &values)
|
||||||
void select_insert::store_values(List<Item> &values)
|
void select_insert::store_values(List<Item> &values)
|
||||||
{
|
{
|
||||||
if (fields->elements)
|
if (fields->elements)
|
||||||
fill_record(*fields, values, 1);
|
fill_record(thd, *fields, values, 1);
|
||||||
else
|
else
|
||||||
fill_record(table->field, values, 1);
|
fill_record(thd, table->field, values, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void select_insert::send_error(uint errcode,const char *err)
|
void select_insert::send_error(uint errcode,const char *err)
|
||||||
|
|
|
@ -144,8 +144,9 @@ void lex_start(THD *thd, uchar *buf,uint length)
|
||||||
lex->select_lex.init_order();
|
lex->select_lex.init_order();
|
||||||
lex->select_lex.group_list.empty();
|
lex->select_lex.group_list.empty();
|
||||||
lex->describe= 0;
|
lex->describe= 0;
|
||||||
lex->subqueries= lex->derived_tables= FALSE;
|
lex->subqueries= FALSE;
|
||||||
lex->view_prepare_mode= FALSE;
|
lex->view_prepare_mode= FALSE;
|
||||||
|
lex->derived_tables= 0;
|
||||||
lex->lock_option= TL_READ;
|
lex->lock_option= TL_READ;
|
||||||
lex->found_colon= 0;
|
lex->found_colon= 0;
|
||||||
lex->safe_to_cache_query= 1;
|
lex->safe_to_cache_query= 1;
|
||||||
|
|
|
@ -615,7 +615,7 @@ end:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void reset_mqh(THD *thd, LEX_USER *lu, bool get_them= 0)
|
static void reset_mqh(LEX_USER *lu, bool get_them= 0)
|
||||||
{
|
{
|
||||||
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
||||||
(void) pthread_mutex_lock(&LOCK_user_conn);
|
(void) pthread_mutex_lock(&LOCK_user_conn);
|
||||||
|
@ -3396,7 +3396,7 @@ create_error:
|
||||||
{
|
{
|
||||||
if (mysql_bin_log.is_open())
|
if (mysql_bin_log.is_open())
|
||||||
{
|
{
|
||||||
Query_log_event qinfo(thd, thd->query, thd->query_length, 0);
|
Query_log_event qinfo(thd, thd->query, thd->query_length, 0, FALSE);
|
||||||
mysql_bin_log.write(&qinfo);
|
mysql_bin_log.write(&qinfo);
|
||||||
}
|
}
|
||||||
send_ok(thd);
|
send_ok(thd);
|
||||||
|
@ -3512,7 +3512,7 @@ create_error:
|
||||||
List_iterator <LEX_USER> str_list(lex->users_list);
|
List_iterator <LEX_USER> str_list(lex->users_list);
|
||||||
LEX_USER *user;
|
LEX_USER *user;
|
||||||
while ((user=str_list++))
|
while ((user=str_list++))
|
||||||
reset_mqh(thd,user);
|
reset_mqh(user);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5637,7 +5637,7 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables,
|
||||||
acl_reload(thd);
|
acl_reload(thd);
|
||||||
grant_reload(thd);
|
grant_reload(thd);
|
||||||
if (mqh_used)
|
if (mqh_used)
|
||||||
reset_mqh(thd,(LEX_USER *) NULL,TRUE);
|
reset_mqh((LEX_USER *) NULL,TRUE);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (options & REFRESH_LOG)
|
if (options & REFRESH_LOG)
|
||||||
|
@ -5713,7 +5713,7 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables,
|
||||||
}
|
}
|
||||||
if (options & REFRESH_HOSTS)
|
if (options & REFRESH_HOSTS)
|
||||||
hostname_cache_refresh();
|
hostname_cache_refresh();
|
||||||
if (options & REFRESH_STATUS)
|
if (thd && (options & REFRESH_STATUS))
|
||||||
refresh_status();
|
refresh_status();
|
||||||
if (options & REFRESH_THREADS)
|
if (options & REFRESH_THREADS)
|
||||||
flush_thread_cache();
|
flush_thread_cache();
|
||||||
|
@ -5743,7 +5743,7 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (options & REFRESH_USER_RESOURCES)
|
if (options & REFRESH_USER_RESOURCES)
|
||||||
reset_mqh(thd,(LEX_USER *) NULL);
|
reset_mqh((LEX_USER *) NULL);
|
||||||
if (write_to_binlog)
|
if (write_to_binlog)
|
||||||
*write_to_binlog= tmp_write_to_binlog;
|
*write_to_binlog= tmp_write_to_binlog;
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -1249,7 +1249,7 @@ JOIN::exec()
|
||||||
|
|
||||||
/* Copy data to the temporary table */
|
/* Copy data to the temporary table */
|
||||||
thd->proc_info= "Copying to tmp table";
|
thd->proc_info= "Copying to tmp table";
|
||||||
|
DBUG_PRINT("info", ("%s", thd->proc_info));
|
||||||
if ((tmp_error= do_select(curr_join, (List<Item> *) 0, curr_tmp_table, 0)))
|
if ((tmp_error= do_select(curr_join, (List<Item> *) 0, curr_tmp_table, 0)))
|
||||||
{
|
{
|
||||||
error= tmp_error;
|
error= tmp_error;
|
||||||
|
@ -1377,6 +1377,7 @@ JOIN::exec()
|
||||||
}
|
}
|
||||||
|
|
||||||
thd->proc_info="Copying to group table";
|
thd->proc_info="Copying to group table";
|
||||||
|
DBUG_PRINT("info", ("%s", thd->proc_info));
|
||||||
tmp_error= -1;
|
tmp_error= -1;
|
||||||
if (curr_join != this)
|
if (curr_join != this)
|
||||||
{
|
{
|
||||||
|
@ -1615,6 +1616,7 @@ JOIN::exec()
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
thd->proc_info="Sending data";
|
thd->proc_info="Sending data";
|
||||||
|
DBUG_PRINT("info", ("%s", thd->proc_info));
|
||||||
error= do_select(curr_join, curr_fields_list, NULL, procedure);
|
error= do_select(curr_join, curr_fields_list, NULL, procedure);
|
||||||
thd->limit_found_rows= curr_join->send_records;
|
thd->limit_found_rows= curr_join->send_records;
|
||||||
thd->examined_row_count= curr_join->examined_rows;
|
thd->examined_row_count= curr_join->examined_rows;
|
||||||
|
@ -1910,6 +1912,8 @@ void
|
||||||
Cursor::close()
|
Cursor::close()
|
||||||
{
|
{
|
||||||
THD *thd= join->thd;
|
THD *thd= join->thd;
|
||||||
|
DBUG_ENTER("Cursor::close");
|
||||||
|
|
||||||
join->join_free(0);
|
join->join_free(0);
|
||||||
if (unit)
|
if (unit)
|
||||||
{
|
{
|
||||||
|
@ -1940,6 +1944,7 @@ Cursor::close()
|
||||||
}
|
}
|
||||||
join= 0;
|
join= 0;
|
||||||
unit= 0;
|
unit= 0;
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -4718,11 +4723,12 @@ get_best_combination(JOIN *join)
|
||||||
KEYUSE *keyuse;
|
KEYUSE *keyuse;
|
||||||
uint table_count;
|
uint table_count;
|
||||||
THD *thd=join->thd;
|
THD *thd=join->thd;
|
||||||
|
DBUG_ENTER("get_best_combination");
|
||||||
|
|
||||||
table_count=join->tables;
|
table_count=join->tables;
|
||||||
if (!(join->join_tab=join_tab=
|
if (!(join->join_tab=join_tab=
|
||||||
(JOIN_TAB*) thd->alloc(sizeof(JOIN_TAB)*table_count)))
|
(JOIN_TAB*) thd->alloc(sizeof(JOIN_TAB)*table_count)))
|
||||||
return TRUE;
|
DBUG_RETURN(TRUE);
|
||||||
|
|
||||||
join->full_join=0;
|
join->full_join=0;
|
||||||
|
|
||||||
|
@ -4736,6 +4742,7 @@ get_best_combination(JOIN *join)
|
||||||
form->reginfo.join_tab=j;
|
form->reginfo.join_tab=j;
|
||||||
if (!*j->on_expr_ref)
|
if (!*j->on_expr_ref)
|
||||||
form->reginfo.not_exists_optimize=0; // Only with LEFT JOIN
|
form->reginfo.not_exists_optimize=0; // Only with LEFT JOIN
|
||||||
|
DBUG_PRINT("info",("type: %d", j->type));
|
||||||
if (j->type == JT_CONST)
|
if (j->type == JT_CONST)
|
||||||
continue; // Handled in make_join_stat..
|
continue; // Handled in make_join_stat..
|
||||||
|
|
||||||
|
@ -4751,13 +4758,13 @@ get_best_combination(JOIN *join)
|
||||||
join->full_join=1;
|
join->full_join=1;
|
||||||
}
|
}
|
||||||
else if (create_ref_for_key(join, j, keyuse, used_tables))
|
else if (create_ref_for_key(join, j, keyuse, used_tables))
|
||||||
return TRUE; // Something went wrong
|
DBUG_RETURN(TRUE); // Something went wrong
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i=0 ; i < table_count ; i++)
|
for (i=0 ; i < table_count ; i++)
|
||||||
join->map2table[join->join_tab[i].table->tablenr]=join->join_tab+i;
|
join->map2table[join->join_tab[i].table->tablenr]=join->join_tab+i;
|
||||||
update_depend_map(join);
|
update_depend_map(join);
|
||||||
return 0;
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -4770,6 +4777,7 @@ static bool create_ref_for_key(JOIN *join, JOIN_TAB *j, KEYUSE *org_keyuse,
|
||||||
uint keyparts,length,key;
|
uint keyparts,length,key;
|
||||||
TABLE *table;
|
TABLE *table;
|
||||||
KEY *keyinfo;
|
KEY *keyinfo;
|
||||||
|
DBUG_ENTER("create_ref_for_key");
|
||||||
|
|
||||||
/* Use best key from find_best */
|
/* Use best key from find_best */
|
||||||
table=j->table;
|
table=j->table;
|
||||||
|
@ -4819,7 +4827,7 @@ static bool create_ref_for_key(JOIN *join, JOIN_TAB *j, KEYUSE *org_keyuse,
|
||||||
(keyparts+1)))) ||
|
(keyparts+1)))) ||
|
||||||
!(j->ref.items= (Item**) thd->alloc(sizeof(Item*)*keyparts)))
|
!(j->ref.items= (Item**) thd->alloc(sizeof(Item*)*keyparts)))
|
||||||
{
|
{
|
||||||
return TRUE;
|
DBUG_RETURN(TRUE);
|
||||||
}
|
}
|
||||||
j->ref.key_buff2=j->ref.key_buff+ALIGN_SIZE(length);
|
j->ref.key_buff2=j->ref.key_buff+ALIGN_SIZE(length);
|
||||||
j->ref.key_err=1;
|
j->ref.key_err=1;
|
||||||
|
@ -4832,7 +4840,7 @@ static bool create_ref_for_key(JOIN *join, JOIN_TAB *j, KEYUSE *org_keyuse,
|
||||||
{
|
{
|
||||||
j->ref.items[0]=((Item_func*)(keyuse->val))->key_item();
|
j->ref.items[0]=((Item_func*)(keyuse->val))->key_item();
|
||||||
if (keyuse->used_tables)
|
if (keyuse->used_tables)
|
||||||
return TRUE; // not supported yet. SerG
|
DBUG_RETURN(TRUE); // not supported yet. SerG
|
||||||
|
|
||||||
j->type=JT_FT;
|
j->type=JT_FT;
|
||||||
}
|
}
|
||||||
|
@ -4856,7 +4864,7 @@ static bool create_ref_for_key(JOIN *join, JOIN_TAB *j, KEYUSE *org_keyuse,
|
||||||
maybe_null ? (char*) key_buff : 0,
|
maybe_null ? (char*) key_buff : 0,
|
||||||
keyinfo->key_part[i].length, keyuse->val);
|
keyinfo->key_part[i].length, keyuse->val);
|
||||||
if (thd->is_fatal_error)
|
if (thd->is_fatal_error)
|
||||||
return TRUE;
|
DBUG_RETURN(TRUE);
|
||||||
tmp.copy();
|
tmp.copy();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -4876,7 +4884,7 @@ static bool create_ref_for_key(JOIN *join, JOIN_TAB *j, KEYUSE *org_keyuse,
|
||||||
} /* not ftkey */
|
} /* not ftkey */
|
||||||
*ref_key=0; // end_marker
|
*ref_key=0; // end_marker
|
||||||
if (j->type == JT_FT)
|
if (j->type == JT_FT)
|
||||||
return 0;
|
DBUG_RETURN(0);
|
||||||
if (j->type == JT_CONST)
|
if (j->type == JT_CONST)
|
||||||
j->table->const_table= 1;
|
j->table->const_table= 1;
|
||||||
else if (((keyinfo->flags & (HA_NOSAME | HA_NULL_PART_KEY |
|
else if (((keyinfo->flags & (HA_NOSAME | HA_NULL_PART_KEY |
|
||||||
|
@ -4900,7 +4908,7 @@ static bool create_ref_for_key(JOIN *join, JOIN_TAB *j, KEYUSE *org_keyuse,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
j->type=JT_EQ_REF;
|
j->type=JT_EQ_REF;
|
||||||
return 0;
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -4963,10 +4971,11 @@ make_simple_join(JOIN *join,TABLE *tmp_table)
|
||||||
{
|
{
|
||||||
TABLE **tableptr;
|
TABLE **tableptr;
|
||||||
JOIN_TAB *join_tab;
|
JOIN_TAB *join_tab;
|
||||||
|
DBUG_ENTER("make_simple_join");
|
||||||
|
|
||||||
if (!(tableptr=(TABLE**) join->thd->alloc(sizeof(TABLE*))) ||
|
if (!(tableptr=(TABLE**) join->thd->alloc(sizeof(TABLE*))) ||
|
||||||
!(join_tab=(JOIN_TAB*) join->thd->alloc(sizeof(JOIN_TAB))))
|
!(join_tab=(JOIN_TAB*) join->thd->alloc(sizeof(JOIN_TAB))))
|
||||||
return TRUE;
|
DBUG_RETURN(TRUE);
|
||||||
join->join_tab=join_tab;
|
join->join_tab=join_tab;
|
||||||
join->table=tableptr; tableptr[0]=tmp_table;
|
join->table=tableptr; tableptr[0]=tmp_table;
|
||||||
join->tables=1;
|
join->tables=1;
|
||||||
|
@ -4996,10 +5005,11 @@ make_simple_join(JOIN *join,TABLE *tmp_table)
|
||||||
join_tab->not_used_in_distinct=0;
|
join_tab->not_used_in_distinct=0;
|
||||||
join_tab->read_first_record= join_init_read_record;
|
join_tab->read_first_record= join_init_read_record;
|
||||||
join_tab->join=join;
|
join_tab->join=join;
|
||||||
|
join_tab->ref.key_parts= 0;
|
||||||
bzero((char*) &join_tab->read_record,sizeof(join_tab->read_record));
|
bzero((char*) &join_tab->read_record,sizeof(join_tab->read_record));
|
||||||
tmp_table->status=0;
|
tmp_table->status=0;
|
||||||
tmp_table->null_row=0;
|
tmp_table->null_row=0;
|
||||||
return FALSE;
|
DBUG_RETURN(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -8122,6 +8132,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
|
||||||
keyinfo->key_length=0;
|
keyinfo->key_length=0;
|
||||||
keyinfo->rec_per_key=0;
|
keyinfo->rec_per_key=0;
|
||||||
keyinfo->algorithm= HA_KEY_ALG_UNDEF;
|
keyinfo->algorithm= HA_KEY_ALG_UNDEF;
|
||||||
|
keyinfo->name= (char*) "group_key";
|
||||||
for (; group ; group=group->next,key_part_info++)
|
for (; group ; group=group->next,key_part_info++)
|
||||||
{
|
{
|
||||||
Field *field=(*group->item)->get_tmp_table_field();
|
Field *field=(*group->item)->get_tmp_table_field();
|
||||||
|
@ -8192,7 +8203,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
|
||||||
keyinfo->key_part=key_part_info;
|
keyinfo->key_part=key_part_info;
|
||||||
keyinfo->flags=HA_NOSAME | HA_NULL_ARE_EQUAL;
|
keyinfo->flags=HA_NOSAME | HA_NULL_ARE_EQUAL;
|
||||||
keyinfo->key_length=(uint16) reclength;
|
keyinfo->key_length=(uint16) reclength;
|
||||||
keyinfo->name=(char*) "tmp";
|
keyinfo->name= (char*) "distinct_key";
|
||||||
keyinfo->algorithm= HA_KEY_ALG_UNDEF;
|
keyinfo->algorithm= HA_KEY_ALG_UNDEF;
|
||||||
if (null_pack_length)
|
if (null_pack_length)
|
||||||
{
|
{
|
||||||
|
@ -11973,6 +11984,8 @@ change_to_use_tmp_fields(THD *thd, Item **ref_pointer_array,
|
||||||
{
|
{
|
||||||
List_iterator_fast<Item> it(all_fields);
|
List_iterator_fast<Item> it(all_fields);
|
||||||
Item *item_field,*item;
|
Item *item_field,*item;
|
||||||
|
DBUG_ENTER("change_to_use_tmp_fields");
|
||||||
|
|
||||||
res_selected_fields.empty();
|
res_selected_fields.empty();
|
||||||
res_all_fields.empty();
|
res_all_fields.empty();
|
||||||
|
|
||||||
|
@ -11996,8 +12009,8 @@ change_to_use_tmp_fields(THD *thd, Item **ref_pointer_array,
|
||||||
else
|
else
|
||||||
item_field= (Item*) new Item_field(field);
|
item_field= (Item*) new Item_field(field);
|
||||||
if (!item_field)
|
if (!item_field)
|
||||||
return TRUE; // Fatal error
|
DBUG_RETURN(TRUE); // Fatal error
|
||||||
item_field->name= item->name; /*lint -e613 */
|
item_field->name= item->name;
|
||||||
#ifndef DBUG_OFF
|
#ifndef DBUG_OFF
|
||||||
if (_db_on_ && !item_field->name)
|
if (_db_on_ && !item_field->name)
|
||||||
{
|
{
|
||||||
|
@ -12021,7 +12034,7 @@ change_to_use_tmp_fields(THD *thd, Item **ref_pointer_array,
|
||||||
for (i= 0; i < border; i++)
|
for (i= 0; i < border; i++)
|
||||||
itr++;
|
itr++;
|
||||||
itr.sublist(res_selected_fields, elements);
|
itr.sublist(res_selected_fields, elements);
|
||||||
return FALSE;
|
DBUG_RETURN(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -12092,10 +12105,11 @@ change_refs_to_tmp_fields(THD *thd, Item **ref_pointer_array,
|
||||||
static bool setup_sum_funcs(THD *thd, Item_sum **func_ptr)
|
static bool setup_sum_funcs(THD *thd, Item_sum **func_ptr)
|
||||||
{
|
{
|
||||||
Item_sum *func;
|
Item_sum *func;
|
||||||
|
DBUG_ENTER("setup_sum_funcs");
|
||||||
while ((func= *(func_ptr++)))
|
while ((func= *(func_ptr++)))
|
||||||
if (func->setup(thd))
|
if (func->setup(thd))
|
||||||
return TRUE;
|
DBUG_RETURN(TRUE);
|
||||||
return FALSE;
|
DBUG_RETURN(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -12617,10 +12631,10 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order,
|
||||||
item_list.push_back(new Item_string(join_type_str[tab->type],
|
item_list.push_back(new Item_string(join_type_str[tab->type],
|
||||||
strlen(join_type_str[tab->type]),
|
strlen(join_type_str[tab->type]),
|
||||||
cs));
|
cs));
|
||||||
uint j;
|
|
||||||
/* Build "possible_keys" value and add it to item_list */
|
/* Build "possible_keys" value and add it to item_list */
|
||||||
if (!tab->keys.is_clear_all())
|
if (!tab->keys.is_clear_all())
|
||||||
{
|
{
|
||||||
|
uint j;
|
||||||
for (j=0 ; j < table->keys ; j++)
|
for (j=0 ; j < table->keys ; j++)
|
||||||
{
|
{
|
||||||
if (tab->keys.is_set(j))
|
if (tab->keys.is_set(j))
|
||||||
|
|
|
@ -1670,6 +1670,7 @@ void close_cached_table(THD *thd, TABLE *table)
|
||||||
|
|
||||||
/* When lock on LOCK_open is freed other threads can continue */
|
/* When lock on LOCK_open is freed other threads can continue */
|
||||||
pthread_cond_broadcast(&COND_refresh);
|
pthread_cond_broadcast(&COND_refresh);
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int send_check_errmsg(THD *thd, TABLE_LIST* table,
|
static int send_check_errmsg(THD *thd, TABLE_LIST* table,
|
||||||
|
|
|
@ -776,12 +776,10 @@ bool mysql_multi_update_prepare(THD *thd)
|
||||||
*/
|
*/
|
||||||
List_iterator_fast<Item> it(*fields);
|
List_iterator_fast<Item> it(*fields);
|
||||||
Item *item;
|
Item *item;
|
||||||
while (item= it++)
|
while ((item= it++))
|
||||||
{
|
|
||||||
item->cleanup();
|
item->cleanup();
|
||||||
}
|
|
||||||
|
|
||||||
/* We have to cleunup translation tables of views. */
|
/* We have to cleanup translation tables of views. */
|
||||||
for (TABLE_LIST *tbl= table_list; tbl; tbl= tbl->next_global)
|
for (TABLE_LIST *tbl= table_list; tbl; tbl= tbl->next_global)
|
||||||
tbl->cleanup_items();
|
tbl->cleanup_items();
|
||||||
|
|
||||||
|
|
|
@ -312,7 +312,7 @@ bool mysql_create_view(THD *thd,
|
||||||
|
|
||||||
send_ok(thd);
|
send_ok(thd);
|
||||||
lex->link_first_table_back(view, link_to_local);
|
lex->link_first_table_back(view, link_to_local);
|
||||||
return 0;
|
DBUG_RETURN(0);
|
||||||
|
|
||||||
err:
|
err:
|
||||||
thd->proc_info= "end";
|
thd->proc_info= "end";
|
||||||
|
@ -793,7 +793,7 @@ mysql_make_view(File_parser *parser, TABLE_LIST *table)
|
||||||
/* re-nest tables of VIEW */
|
/* re-nest tables of VIEW */
|
||||||
{
|
{
|
||||||
List_iterator_fast<TABLE_LIST> ti(nested_join->join_list);
|
List_iterator_fast<TABLE_LIST> ti(nested_join->join_list);
|
||||||
while(tbl= ti++)
|
while ((tbl= ti++))
|
||||||
{
|
{
|
||||||
tbl->join_list= &nested_join->join_list;
|
tbl->join_list= &nested_join->join_list;
|
||||||
tbl->embedding= table;
|
tbl->embedding= table;
|
||||||
|
@ -832,6 +832,7 @@ mysql_make_view(File_parser *parser, TABLE_LIST *table)
|
||||||
view_select->linkage= DERIVED_TABLE_TYPE;
|
view_select->linkage= DERIVED_TABLE_TYPE;
|
||||||
table->updatable= 0;
|
table->updatable= 0;
|
||||||
table->effective_with_check= VIEW_CHECK_NONE;
|
table->effective_with_check= VIEW_CHECK_NONE;
|
||||||
|
old_lex->subqueries= TRUE;
|
||||||
|
|
||||||
/* SELECT tree link */
|
/* SELECT tree link */
|
||||||
lex->unit.include_down(table->select_lex);
|
lex->unit.include_down(table->select_lex);
|
||||||
|
|
Loading…
Reference in a new issue