mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
Merge remote-tracking branch 'origin/10.2' into bb-10.2-ext
Conflicts: sql/sp_rcontext.cc
This commit is contained in:
commit
27a5d96bcb
18 changed files with 381 additions and 66 deletions
|
@ -307,3 +307,4 @@ gprof_compile_flags="-O2 -pg -g"
|
|||
|
||||
gprof_link_flags="--disable-shared $static_link"
|
||||
|
||||
disable_gprof_plugins="--with-zlib-dir=bundled --without-plugin-oqgraph --without-plugin-mroonga"
|
||||
|
|
|
@ -19,6 +19,6 @@ path=`dirname $0`
|
|||
. "$path/SETUP.sh"
|
||||
|
||||
extra_flags="$pentium_cflags $gprof_compile_flags"
|
||||
extra_configs="$pentium_configs $debug_configs $gprof_link_flags $disable_64_bit_plugins"
|
||||
extra_configs="$pentium_configs $debug_configs $gprof_link_flags $disable_64_bit_plugins $disable_gprof_plugins"
|
||||
|
||||
. "$path/FINISH.sh"
|
||||
|
|
|
@ -28,6 +28,6 @@ export LDFLAGS="$gcov_link_flags"
|
|||
extra_flags="$pentium64_cflags $max_cflags $gcov_compile_flags"
|
||||
c_warnings="$c_warnings $debug_extra_warnings"
|
||||
cxx_warnings="$cxx_warnings $debug_extra_warnings"
|
||||
extra_configs="$pentium_configs $debug_configs $gcov_configs $max_configs"
|
||||
extra_configs="$pentium_configs $debug_configs $gcov_configs $max_configs --without-oqgraph"
|
||||
|
||||
. "$path/FINISH.sh"
|
||||
|
|
|
@ -20,6 +20,6 @@ path=`dirname $0`
|
|||
. "$path/SETUP.sh"
|
||||
|
||||
extra_flags="$pentium64_cflags $gprof_compile_flags"
|
||||
extra_configs="$pentium_configs $max_configs $gprof_link_flags --with-zlib-dir=bundled"
|
||||
extra_configs="$pentium_configs $max_configs $gprof_link_flags $disable_gprof_plugins"
|
||||
|
||||
. "$path/FINISH.sh"
|
||||
|
|
|
@ -1295,3 +1295,77 @@ TERM03 TERM03
|
|||
TERM01 NULL
|
||||
NULL TERM04
|
||||
drop table t1,t2;
|
||||
#
|
||||
# MDEV-14969: view using subquery with attached CTE
|
||||
#
|
||||
create table region (
|
||||
r_regionkey int,
|
||||
r_name char(25),
|
||||
primary key (r_regionkey)
|
||||
);
|
||||
insert into region values
|
||||
(0,'AFRICA'), (1,'AMERICA'), (2,'ASIA'), (3,'EUROPE'), (4,'MIDDLE EAST');
|
||||
create table nation (
|
||||
n_nationkey int,
|
||||
n_name char(25),
|
||||
n_regionkey int,
|
||||
primary key (n_nationkey),
|
||||
key i_n_regionkey (n_regionkey)
|
||||
);
|
||||
insert into nation values
|
||||
(0,'ALGERIA',0), (1,'ARGENTINA',1), (2,'BRAZIL',1), (3,'CANADA',1),
|
||||
(4,'EGYPT',4), (5,'ETHIOPIA',0), (6,'FRANCE',3), (7,'GERMANY',3),
|
||||
(8,'INDIA',2), (9,'INDONESIA',2), (10,'IRAN',4), (11,'IRAQ',4),
|
||||
(12,'JAPAN',2), (13,'JORDAN',4), (14,'KENYA',0), (15,'MOROCCO',0),
|
||||
(16,'MOZAMBIQUE',0), (17,'PERU',1), (18,'CHINA',2), (19,'ROMANIA',3),
|
||||
(20,'SAUDI ARABIA',4), (21,'VIETNAM',2), (22,'RUSSIA',3),
|
||||
(23,'UNITED KINGDOM',3), (24,'UNITED STATES',1);
|
||||
select * from nation n ,region r
|
||||
where n.n_regionkey = r.r_regionkey and
|
||||
r.r_regionkey in
|
||||
(with t as (select * from region where r_regionkey <= 3 )
|
||||
select r_regionkey from t where r_name <> "ASIA");
|
||||
n_nationkey n_name n_regionkey r_regionkey r_name
|
||||
0 ALGERIA 0 0 AFRICA
|
||||
5 ETHIOPIA 0 0 AFRICA
|
||||
14 KENYA 0 0 AFRICA
|
||||
15 MOROCCO 0 0 AFRICA
|
||||
16 MOZAMBIQUE 0 0 AFRICA
|
||||
1 ARGENTINA 1 1 AMERICA
|
||||
2 BRAZIL 1 1 AMERICA
|
||||
3 CANADA 1 1 AMERICA
|
||||
17 PERU 1 1 AMERICA
|
||||
24 UNITED STATES 1 1 AMERICA
|
||||
6 FRANCE 3 3 EUROPE
|
||||
7 GERMANY 3 3 EUROPE
|
||||
19 ROMANIA 3 3 EUROPE
|
||||
22 RUSSIA 3 3 EUROPE
|
||||
23 UNITED KINGDOM 3 3 EUROPE
|
||||
create view v as
|
||||
select * from nation n ,region r
|
||||
where n.n_regionkey = r.r_regionkey and
|
||||
r.r_regionkey in
|
||||
(with t as (select * from region where r_regionkey <= 3)
|
||||
select r_regionkey from t where r_name <> "ASIA");
|
||||
show create view v;
|
||||
View Create View character_set_client collation_connection
|
||||
v CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS select `n`.`n_nationkey` AS `n_nationkey`,`n`.`n_name` AS `n_name`,`n`.`n_regionkey` AS `n_regionkey`,`r`.`r_regionkey` AS `r_regionkey`,`r`.`r_name` AS `r_name` from (`nation` `n` join `region` `r`) where `n`.`n_regionkey` = `r`.`r_regionkey` and `r`.`r_regionkey` in (with t as (select `region`.`r_regionkey` AS `r_regionkey`,`region`.`r_name` AS `r_name` from `region` where `region`.`r_regionkey` <= 3)select `t`.`r_regionkey` from `t` where `t`.`r_name` <> 'ASIA') latin1 latin1_swedish_ci
|
||||
select * from v;
|
||||
n_nationkey n_name n_regionkey r_regionkey r_name
|
||||
0 ALGERIA 0 0 AFRICA
|
||||
5 ETHIOPIA 0 0 AFRICA
|
||||
14 KENYA 0 0 AFRICA
|
||||
15 MOROCCO 0 0 AFRICA
|
||||
16 MOZAMBIQUE 0 0 AFRICA
|
||||
1 ARGENTINA 1 1 AMERICA
|
||||
2 BRAZIL 1 1 AMERICA
|
||||
3 CANADA 1 1 AMERICA
|
||||
17 PERU 1 1 AMERICA
|
||||
24 UNITED STATES 1 1 AMERICA
|
||||
6 FRANCE 3 3 EUROPE
|
||||
7 GERMANY 3 3 EUROPE
|
||||
19 ROMANIA 3 3 EUROPE
|
||||
22 RUSSIA 3 3 EUROPE
|
||||
23 UNITED KINGDOM 3 3 EUROPE
|
||||
drop view v;
|
||||
drop table region, nation;
|
||||
|
|
|
@ -54,3 +54,108 @@ Table Op Msg_type Msg_text
|
|||
test.t1 check warning Datafile is almost full, 268230656 of 268320768 used
|
||||
test.t1 check status OK
|
||||
drop table t1,t2;
|
||||
create table t1 (
|
||||
c1 int unsigned,
|
||||
c2 char(80)
|
||||
) Engine=ARIA ROW_FORMAT=FIXED min_rows=1000000;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` int(10) unsigned DEFAULT NULL,
|
||||
`c2` char(80) DEFAULT NULL
|
||||
) ENGINE=Aria DEFAULT CHARSET=latin1 MIN_ROWS=1000000 PAGE_CHECKSUM=1 ROW_FORMAT=FIXED
|
||||
insert into t1 select seq,seq from seq_1_to_100000;
|
||||
create or replace table t1 (
|
||||
c1 int unsigned,
|
||||
c2 char(80)
|
||||
) Engine=ARIA ROW_FORMAT=FIXED;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` int(10) unsigned DEFAULT NULL,
|
||||
`c2` char(80) DEFAULT NULL
|
||||
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 ROW_FORMAT=FIXED
|
||||
insert into t1 select seq,seq from seq_1_to_100000;
|
||||
create or replace table t1 (
|
||||
c1 int unsigned,
|
||||
c2 char(80)
|
||||
) Engine=ARIA ROW_FORMAT=PAGE TRANSACTIONAL=0;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` int(10) unsigned DEFAULT NULL,
|
||||
`c2` char(80) DEFAULT NULL
|
||||
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1 ROW_FORMAT=PAGE TRANSACTIONAL=0
|
||||
insert into t1 select seq,seq from seq_1_to_100000;
|
||||
create or replace table t1 (
|
||||
c1 int unsigned,
|
||||
c2 char(80)
|
||||
) Engine=ARIA ROW_FORMAT=FIXED MAX_ROWS=10;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` int(10) unsigned DEFAULT NULL,
|
||||
`c2` char(80) DEFAULT NULL
|
||||
) ENGINE=Aria DEFAULT CHARSET=latin1 MAX_ROWS=10 PAGE_CHECKSUM=1 ROW_FORMAT=FIXED
|
||||
insert into t1 select seq,seq from seq_1_to_100000;
|
||||
ERROR HY000: The table 't1' is full
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
65535
|
||||
create or replace table t1 (
|
||||
c1 int unsigned,
|
||||
c2 char(80)
|
||||
) Engine=ARIA ROW_FORMAT=DYNAMIC MAX_ROWS=10;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` int(10) unsigned DEFAULT NULL,
|
||||
`c2` char(80) DEFAULT NULL
|
||||
) ENGINE=Aria DEFAULT CHARSET=latin1 MAX_ROWS=10 PAGE_CHECKSUM=1 ROW_FORMAT=DYNAMIC
|
||||
insert into t1 select seq,seq from seq_1_to_100000;
|
||||
ERROR HY000: The table 't1' is full
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
3276
|
||||
check table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check warning Datafile is almost full, 65520 of 65535 used
|
||||
test.t1 check status OK
|
||||
create or replace table t1 (
|
||||
c1 int unsigned,
|
||||
c2 char(80)
|
||||
) Engine=ARIA ROW_FORMAT=PAGE MAX_ROWS=10;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` int(10) unsigned DEFAULT NULL,
|
||||
`c2` char(80) DEFAULT NULL
|
||||
) ENGINE=Aria DEFAULT CHARSET=latin1 MAX_ROWS=10 PAGE_CHECKSUM=1 ROW_FORMAT=PAGE
|
||||
insert into t1 select seq,seq from seq_1_to_100000;
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
100000
|
||||
check table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
drop table t1;
|
||||
create or replace table t1 (
|
||||
c1 int unsigned,
|
||||
c2 char(80)
|
||||
) Engine=ARIA ROW_FORMAT=PAGE MAX_ROWS=10;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` int(10) unsigned DEFAULT NULL,
|
||||
`c2` char(80) DEFAULT NULL
|
||||
) ENGINE=Aria DEFAULT CHARSET=latin1 MAX_ROWS=10 PAGE_CHECKSUM=1 ROW_FORMAT=PAGE
|
||||
insert into t1 select seq,seq from seq_1_to_10000000;
|
||||
ERROR HY000: The table 't1' is full
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
6189940
|
||||
check table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check warning Datafile is almost full, 268320768 of 268320768 used
|
||||
test.t1 check status OK
|
||||
drop table t1;
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
# This test will use around 1.3G of disk space!
|
||||
|
||||
--source include/have_maria.inc
|
||||
--source include/have_sequence.inc
|
||||
--source include/big_test.inc
|
||||
|
||||
drop table if exists t1,t2;
|
||||
|
@ -50,3 +51,74 @@ insert into t1 (v,b) select v,b from t2;
|
|||
check table t1;
|
||||
|
||||
drop table t1,t2;
|
||||
|
||||
#
|
||||
# Check that we don't get table-is-full
|
||||
#
|
||||
|
||||
create table t1 (
|
||||
c1 int unsigned,
|
||||
c2 char(80)
|
||||
) Engine=ARIA ROW_FORMAT=FIXED min_rows=1000000;
|
||||
show create table t1;
|
||||
insert into t1 select seq,seq from seq_1_to_100000;
|
||||
|
||||
create or replace table t1 (
|
||||
c1 int unsigned,
|
||||
c2 char(80)
|
||||
) Engine=ARIA ROW_FORMAT=FIXED;
|
||||
show create table t1;
|
||||
insert into t1 select seq,seq from seq_1_to_100000;
|
||||
|
||||
create or replace table t1 (
|
||||
c1 int unsigned,
|
||||
c2 char(80)
|
||||
) Engine=ARIA ROW_FORMAT=PAGE TRANSACTIONAL=0;
|
||||
show create table t1;
|
||||
insert into t1 select seq,seq from seq_1_to_100000;
|
||||
|
||||
#
|
||||
# For these we should get table is full error
|
||||
#
|
||||
|
||||
create or replace table t1 (
|
||||
c1 int unsigned,
|
||||
c2 char(80)
|
||||
) Engine=ARIA ROW_FORMAT=FIXED MAX_ROWS=10;
|
||||
show create table t1;
|
||||
--error ER_RECORD_FILE_FULL
|
||||
insert into t1 select seq,seq from seq_1_to_100000;
|
||||
select count(*) from t1;
|
||||
|
||||
create or replace table t1 (
|
||||
c1 int unsigned,
|
||||
c2 char(80)
|
||||
) Engine=ARIA ROW_FORMAT=DYNAMIC MAX_ROWS=10;
|
||||
show create table t1;
|
||||
--error ER_RECORD_FILE_FULL
|
||||
insert into t1 select seq,seq from seq_1_to_100000;
|
||||
select count(*) from t1;
|
||||
check table t1;
|
||||
|
||||
# PAGE uses 3 byte pointers as minimum, which can handle up to 200M files
|
||||
|
||||
create or replace table t1 (
|
||||
c1 int unsigned,
|
||||
c2 char(80)
|
||||
) Engine=ARIA ROW_FORMAT=PAGE MAX_ROWS=10;
|
||||
show create table t1;
|
||||
insert into t1 select seq,seq from seq_1_to_100000;
|
||||
select count(*) from t1;
|
||||
check table t1;
|
||||
drop table t1;
|
||||
|
||||
create or replace table t1 (
|
||||
c1 int unsigned,
|
||||
c2 char(80)
|
||||
) Engine=ARIA ROW_FORMAT=PAGE MAX_ROWS=10;
|
||||
show create table t1;
|
||||
--error ER_RECORD_FILE_FULL
|
||||
insert into t1 select seq,seq from seq_1_to_10000000;
|
||||
select count(*) from t1;
|
||||
check table t1;
|
||||
drop table t1;
|
||||
|
|
|
@ -882,3 +882,50 @@ union all
|
|||
where c1.term is null);
|
||||
|
||||
drop table t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-14969: view using subquery with attached CTE
|
||||
--echo #
|
||||
|
||||
create table region (
|
||||
r_regionkey int,
|
||||
r_name char(25),
|
||||
primary key (r_regionkey)
|
||||
);
|
||||
insert into region values
|
||||
(0,'AFRICA'), (1,'AMERICA'), (2,'ASIA'), (3,'EUROPE'), (4,'MIDDLE EAST');
|
||||
|
||||
create table nation (
|
||||
n_nationkey int,
|
||||
n_name char(25),
|
||||
n_regionkey int,
|
||||
primary key (n_nationkey),
|
||||
key i_n_regionkey (n_regionkey)
|
||||
);
|
||||
insert into nation values
|
||||
(0,'ALGERIA',0), (1,'ARGENTINA',1), (2,'BRAZIL',1), (3,'CANADA',1),
|
||||
(4,'EGYPT',4), (5,'ETHIOPIA',0), (6,'FRANCE',3), (7,'GERMANY',3),
|
||||
(8,'INDIA',2), (9,'INDONESIA',2), (10,'IRAN',4), (11,'IRAQ',4),
|
||||
(12,'JAPAN',2), (13,'JORDAN',4), (14,'KENYA',0), (15,'MOROCCO',0),
|
||||
(16,'MOZAMBIQUE',0), (17,'PERU',1), (18,'CHINA',2), (19,'ROMANIA',3),
|
||||
(20,'SAUDI ARABIA',4), (21,'VIETNAM',2), (22,'RUSSIA',3),
|
||||
(23,'UNITED KINGDOM',3), (24,'UNITED STATES',1);
|
||||
|
||||
select * from nation n ,region r
|
||||
where n.n_regionkey = r.r_regionkey and
|
||||
r.r_regionkey in
|
||||
(with t as (select * from region where r_regionkey <= 3 )
|
||||
select r_regionkey from t where r_name <> "ASIA");
|
||||
|
||||
create view v as
|
||||
select * from nation n ,region r
|
||||
where n.n_regionkey = r.r_regionkey and
|
||||
r.r_regionkey in
|
||||
(with t as (select * from region where r_regionkey <= 3)
|
||||
select r_regionkey from t where r_name <> "ASIA");
|
||||
|
||||
show create view v;
|
||||
select * from v;
|
||||
|
||||
drop view v;
|
||||
drop table region, nation;
|
||||
|
|
|
@ -4357,6 +4357,9 @@ table_map subselect_union_engine::upper_select_const_tables()
|
|||
void subselect_single_select_engine::print(String *str,
|
||||
enum_query_type query_type)
|
||||
{
|
||||
With_clause* with_clause= select_lex->get_with_clause();
|
||||
if (with_clause)
|
||||
with_clause->print(str, query_type);
|
||||
select_lex->print(get_thd(), str, query_type);
|
||||
}
|
||||
|
||||
|
|
|
@ -68,6 +68,7 @@ sp_rcontext *sp_rcontext::create(THD *thd,
|
|||
Field *return_value_fld,
|
||||
Row_definition_list &field_def_lst)
|
||||
{
|
||||
SELECT_LEX *save_current_select;
|
||||
sp_rcontext *ctx= new (thd->mem_root) sp_rcontext(owner,
|
||||
root_parsing_ctx,
|
||||
return_value_fld,
|
||||
|
@ -75,14 +76,19 @@ sp_rcontext *sp_rcontext::create(THD *thd,
|
|||
if (!ctx)
|
||||
return NULL;
|
||||
|
||||
/* Reset current_select as it's checked in Item_ident::Item_ident */
|
||||
save_current_select= thd->lex->current_select;
|
||||
thd->lex->current_select= 0;
|
||||
|
||||
if (ctx->alloc_arrays(thd) ||
|
||||
ctx->init_var_table(thd, field_def_lst) ||
|
||||
ctx->init_var_items(thd, field_def_lst))
|
||||
{
|
||||
delete ctx;
|
||||
return NULL;
|
||||
ctx= 0;
|
||||
}
|
||||
|
||||
thd->lex->current_select= save_current_select;
|
||||
return ctx;
|
||||
}
|
||||
|
||||
|
|
|
@ -2898,6 +2898,12 @@ static bool do_execute_sp(THD *thd, sp_head *sp)
|
|||
ha_rows select_limit= thd->variables.select_limit;
|
||||
thd->variables.select_limit= HA_POS_ERROR;
|
||||
|
||||
/*
|
||||
Reset current_select as it may point to random data as a
|
||||
result of previous parsing.
|
||||
*/
|
||||
thd->lex->current_select= NULL;
|
||||
|
||||
/*
|
||||
We never write CALL statements into binlog:
|
||||
- If the mode is non-prelocked, each statement will be logged
|
||||
|
|
|
@ -2162,7 +2162,7 @@ convert_error_code_to_mysql(
|
|||
|
||||
case DB_TOO_BIG_INDEX_COL:
|
||||
my_error(ER_INDEX_COLUMN_TOO_LONG, MYF(0),
|
||||
DICT_MAX_FIELD_LEN_BY_FORMAT_FLAG(flags));
|
||||
(ulong) DICT_MAX_FIELD_LEN_BY_FORMAT_FLAG(flags));
|
||||
return(HA_ERR_INDEX_COL_TOO_LONG);
|
||||
|
||||
case DB_NO_SAVEPOINT:
|
||||
|
@ -5285,7 +5285,6 @@ innobase_close_connection(
|
|||
"MariaDB is closing a connection that has an active "
|
||||
"InnoDB transaction. " TRX_ID_FMT " row modifications "
|
||||
"will roll back.",
|
||||
" row modifications will roll back.",
|
||||
trx->undo_no);
|
||||
ut_d(ib::warn()
|
||||
<< "trx: " << trx << " started on: "
|
||||
|
@ -12131,7 +12130,7 @@ create_table_info_t::create_options_are_invalid()
|
|||
ER_ILLEGAL_HA_CREATE_OPTION,
|
||||
"InnoDB: invalid KEY_BLOCK_SIZE = %u."
|
||||
" Valid values are [1, 2, 4, 8, 16]",
|
||||
m_create_info->key_block_size);
|
||||
(uint) m_create_info->key_block_size);
|
||||
ret = "KEY_BLOCK_SIZE";
|
||||
break;
|
||||
}
|
||||
|
@ -12622,7 +12621,7 @@ index_bad:
|
|||
m_thd, Sql_condition::WARN_LEVEL_WARN,
|
||||
ER_ILLEGAL_HA_CREATE_OPTION,
|
||||
"InnoDB: ignoring KEY_BLOCK_SIZE=%u.",
|
||||
m_create_info->key_block_size);
|
||||
(uint) m_create_info->key_block_size);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12645,7 +12644,7 @@ index_bad:
|
|||
ER_ILLEGAL_HA_CREATE_OPTION,
|
||||
"InnoDB: ignoring KEY_BLOCK_SIZE=%u"
|
||||
" unless ROW_FORMAT=COMPRESSED.",
|
||||
m_create_info->key_block_size);
|
||||
(uint) m_create_info->key_block_size);
|
||||
zip_allowed = false;
|
||||
}
|
||||
} else {
|
||||
|
@ -14201,7 +14200,8 @@ ha_innobase::records_in_range(
|
|||
push_warning_printf(
|
||||
ha_thd(), Sql_condition::WARN_LEVEL_WARN,
|
||||
ER_NO_DEFAULT,
|
||||
"btr_estimate_n_rows_in_range(): %f", n_rows);
|
||||
"btr_estimate_n_rows_in_range(): %lld",
|
||||
(longlong) n_rows);
|
||||
);
|
||||
|
||||
func_exit:
|
||||
|
@ -22970,7 +22970,7 @@ ib_push_frm_error(
|
|||
"installations? See "
|
||||
REFMAN
|
||||
"innodb-troubleshooting.html\n",
|
||||
ib_table->name);
|
||||
ib_table->name.m_name);
|
||||
|
||||
if (push_warning) {
|
||||
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||
|
@ -23014,7 +23014,7 @@ ib_push_frm_error(
|
|||
"installations? See "
|
||||
REFMAN
|
||||
"innodb-troubleshooting.html\n",
|
||||
ib_table->name, n_keys,
|
||||
ib_table->name.m_name, n_keys,
|
||||
table->s->keys);
|
||||
|
||||
if (push_warning) {
|
||||
|
|
|
@ -300,7 +300,7 @@ my_error_innodb(
|
|||
break;
|
||||
case DB_TOO_BIG_INDEX_COL:
|
||||
my_error(ER_INDEX_COLUMN_TOO_LONG, MYF(0),
|
||||
DICT_MAX_FIELD_LEN_BY_FORMAT_FLAG(flags));
|
||||
(ulong) DICT_MAX_FIELD_LEN_BY_FORMAT_FLAG(flags));
|
||||
break;
|
||||
case DB_TOO_MANY_CONCURRENT_TRXS:
|
||||
my_error(ER_TOO_MANY_CONCURRENT_TRXS, MYF(0));
|
||||
|
@ -1636,7 +1636,7 @@ innobase_get_foreign_key_info(
|
|||
/* Not possible to add a foreign key without a
|
||||
referenced column */
|
||||
mutex_exit(&dict_sys->mutex);
|
||||
my_error(ER_CANNOT_ADD_FOREIGN, MYF(0), tbl_namep);
|
||||
my_error(ER_CANNOT_ADD_FOREIGN, MYF(0));
|
||||
goto err_exit;
|
||||
}
|
||||
|
||||
|
@ -2050,7 +2050,8 @@ innobase_check_index_keys(
|
|||
}
|
||||
#endif /* MYSQL_RENAME_INDEX */
|
||||
|
||||
my_error(ER_WRONG_NAME_FOR_INDEX, MYF(0), key.name);
|
||||
my_error(ER_WRONG_NAME_FOR_INDEX, MYF(0),
|
||||
key.name);
|
||||
|
||||
return(ER_WRONG_NAME_FOR_INDEX);
|
||||
}
|
||||
|
|
|
@ -2463,7 +2463,7 @@ row_import_cfg_read_index_fields(
|
|||
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_ERROR, ER_IO_READ_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while reading index fields.");
|
||||
|
||||
return(DB_IO_ERROR);
|
||||
|
@ -2499,7 +2499,7 @@ row_import_cfg_read_index_fields(
|
|||
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_ERROR, ER_IO_READ_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while parsing table name.");
|
||||
|
||||
return(err);
|
||||
|
@ -2569,7 +2569,7 @@ row_import_read_index_data(
|
|||
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_ERROR, ER_IO_READ_ERROR,
|
||||
errno, strerror(errno), msg);
|
||||
(ulong) errno, strerror(errno), msg);
|
||||
|
||||
ib::error() << "IO Error: " << msg;
|
||||
|
||||
|
@ -2644,7 +2644,7 @@ row_import_read_index_data(
|
|||
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_ERROR, ER_IO_READ_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while parsing index name.");
|
||||
|
||||
return(err);
|
||||
|
@ -2683,7 +2683,7 @@ row_import_read_indexes(
|
|||
if (fread(row, 1, sizeof(row), file) != sizeof(row)) {
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_ERROR, ER_IO_READ_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while reading number of indexes.");
|
||||
|
||||
return(DB_IO_ERROR);
|
||||
|
@ -2769,7 +2769,7 @@ row_import_read_columns(
|
|||
if (fread(row, 1, sizeof(row), file) != sizeof(row)) {
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_ERROR, ER_IO_READ_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while reading table column meta-data.");
|
||||
|
||||
return(DB_IO_ERROR);
|
||||
|
@ -2833,7 +2833,7 @@ row_import_read_columns(
|
|||
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_ERROR, ER_IO_READ_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while parsing table column name.");
|
||||
|
||||
return(err);
|
||||
|
@ -2864,7 +2864,7 @@ row_import_read_v1(
|
|||
if (fread(value, 1, sizeof(value), file) != sizeof(value)) {
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_ERROR, ER_IO_READ_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while reading meta-data export hostname length.");
|
||||
|
||||
return(DB_IO_ERROR);
|
||||
|
@ -2892,7 +2892,7 @@ row_import_read_v1(
|
|||
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_ERROR, ER_IO_READ_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while parsing export hostname.");
|
||||
|
||||
return(err);
|
||||
|
@ -2906,7 +2906,7 @@ row_import_read_v1(
|
|||
if (fread(value, 1, sizeof(value), file) != sizeof(value)) {
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_ERROR, ER_IO_READ_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while reading meta-data table name length.");
|
||||
|
||||
return(DB_IO_ERROR);
|
||||
|
@ -2933,7 +2933,7 @@ row_import_read_v1(
|
|||
if (err != DB_SUCCESS) {
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_ERROR, ER_IO_READ_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while parsing table name.");
|
||||
|
||||
return(err);
|
||||
|
@ -2952,7 +2952,7 @@ row_import_read_v1(
|
|||
if (fread(row, 1, sizeof(ib_uint64_t), file) != sizeof(ib_uint64_t)) {
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_ERROR, ER_IO_READ_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while reading autoinc value.");
|
||||
|
||||
return(DB_IO_ERROR);
|
||||
|
@ -2968,7 +2968,7 @@ row_import_read_v1(
|
|||
if (fread(row, 1, sizeof(row), file) != sizeof(row)) {
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_ERROR, ER_IO_READ_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while reading meta-data header.");
|
||||
|
||||
return(DB_IO_ERROR);
|
||||
|
@ -3039,7 +3039,7 @@ row_import_read_meta_data(
|
|||
if (fread(&row, 1, sizeof(row), file) != sizeof(row)) {
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_ERROR, ER_IO_READ_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while reading meta-data version.");
|
||||
|
||||
return(DB_IO_ERROR);
|
||||
|
@ -3090,7 +3090,7 @@ row_import_read_cfg(
|
|||
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_WARN, ER_IO_READ_ERROR,
|
||||
errno, strerror(errno), msg);
|
||||
(ulong) errno, strerror(errno), msg);
|
||||
|
||||
cfg.m_missing = true;
|
||||
|
||||
|
|
|
@ -4702,8 +4702,8 @@ row_merge_build_indexes(
|
|||
"Table %s is encrypted but encryption service or"
|
||||
" used key_id is not available. "
|
||||
" Can't continue reading table.",
|
||||
!old_table->is_readable() ? old_table->name :
|
||||
new_table->name);
|
||||
!old_table->is_readable() ? old_table->name.m_name :
|
||||
new_table->name.m_name);
|
||||
goto func_exit;
|
||||
}
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@ row_quiesce_write_index_fields(
|
|||
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_WARN, ER_IO_WRITE_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while writing index fields.");
|
||||
|
||||
return(DB_IO_ERROR);
|
||||
|
@ -87,7 +87,7 @@ row_quiesce_write_index_fields(
|
|||
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_WARN, ER_IO_WRITE_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while writing index column.");
|
||||
|
||||
return(DB_IO_ERROR);
|
||||
|
@ -121,7 +121,7 @@ row_quiesce_write_indexes(
|
|||
if (fwrite(row, 1, sizeof(row), file) != sizeof(row)) {
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_WARN, ER_IO_WRITE_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while writing index count.");
|
||||
|
||||
return(DB_IO_ERROR);
|
||||
|
@ -175,7 +175,7 @@ row_quiesce_write_indexes(
|
|||
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_WARN, ER_IO_WRITE_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while writing index meta-data.");
|
||||
|
||||
return(DB_IO_ERROR);
|
||||
|
@ -196,7 +196,7 @@ row_quiesce_write_indexes(
|
|||
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_WARN, ER_IO_WRITE_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while writing index name.");
|
||||
|
||||
return(DB_IO_ERROR);
|
||||
|
@ -256,7 +256,7 @@ row_quiesce_write_table(
|
|||
if (fwrite(row, 1, sizeof(row), file) != sizeof(row)) {
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_WARN, ER_IO_WRITE_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while writing table column data.");
|
||||
|
||||
return(DB_IO_ERROR);
|
||||
|
@ -283,7 +283,7 @@ row_quiesce_write_table(
|
|||
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_WARN, ER_IO_WRITE_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while writing column name.");
|
||||
|
||||
return(DB_IO_ERROR);
|
||||
|
@ -315,7 +315,7 @@ row_quiesce_write_header(
|
|||
if (fwrite(&value, 1, sizeof(value), file) != sizeof(value)) {
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_WARN, ER_IO_WRITE_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while writing meta-data version number.");
|
||||
|
||||
return(DB_IO_ERROR);
|
||||
|
@ -345,7 +345,7 @@ row_quiesce_write_header(
|
|||
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_WARN, ER_IO_WRITE_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while writing hostname.");
|
||||
|
||||
return(DB_IO_ERROR);
|
||||
|
@ -365,7 +365,7 @@ row_quiesce_write_header(
|
|||
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_WARN, ER_IO_WRITE_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while writing table name.");
|
||||
|
||||
return(DB_IO_ERROR);
|
||||
|
@ -381,7 +381,7 @@ row_quiesce_write_header(
|
|||
if (fwrite(row, 1, sizeof(ib_uint64_t), file) != sizeof(ib_uint64_t)) {
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_WARN, ER_IO_WRITE_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while writing table autoinc value.");
|
||||
|
||||
return(DB_IO_ERROR);
|
||||
|
@ -405,7 +405,7 @@ row_quiesce_write_header(
|
|||
if (fwrite(row, 1, sizeof(row), file) != sizeof(row)) {
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_WARN, ER_IO_WRITE_ERROR,
|
||||
errno, strerror(errno),
|
||||
(ulong) errno, strerror(errno),
|
||||
"while writing table meta-data.");
|
||||
|
||||
return(DB_IO_ERROR);
|
||||
|
@ -458,7 +458,7 @@ row_quiesce_write_cfg(
|
|||
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_WARN, ER_IO_WRITE_ERROR,
|
||||
errno, strerror(errno), msg);
|
||||
(ulong) errno, strerror(errno), msg);
|
||||
}
|
||||
|
||||
if (fclose(file) != 0) {
|
||||
|
@ -468,7 +468,7 @@ row_quiesce_write_cfg(
|
|||
|
||||
ib_senderrf(
|
||||
thd, IB_LOG_LEVEL_WARN, ER_IO_WRITE_ERROR,
|
||||
errno, strerror(errno), msg);
|
||||
(ulong) errno, strerror(errno), msg);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -824,10 +824,6 @@ trx_resurrect_insert(
|
|||
ut_d(trx->start_line = __LINE__);
|
||||
|
||||
trx->rsegs.m_redo.rseg = rseg;
|
||||
/* For transactions with active data will not have rseg size = 1
|
||||
or will not qualify for purge limit criteria. So it is safe to increment
|
||||
this trx_ref_count w/o mutex protection. */
|
||||
++trx->rsegs.m_redo.rseg->trx_ref_count;
|
||||
*trx->xid = undo->xid;
|
||||
trx->id = undo->trx_id;
|
||||
trx->rsegs.m_redo.insert_undo = undo;
|
||||
|
@ -934,10 +930,6 @@ trx_resurrect_update(
|
|||
trx_rseg_t* rseg) /*!< in/out: rollback segment */
|
||||
{
|
||||
trx->rsegs.m_redo.rseg = rseg;
|
||||
/* For transactions with active data will not have rseg size = 1
|
||||
or will not qualify for purge limit criteria. So it is safe to increment
|
||||
this trx_ref_count w/o mutex protection. */
|
||||
++trx->rsegs.m_redo.rseg->trx_ref_count;
|
||||
*trx->xid = undo->xid;
|
||||
trx->id = undo->trx_id;
|
||||
trx->rsegs.m_redo.update_undo = undo;
|
||||
|
@ -991,10 +983,12 @@ trx_lists_init_at_db_start()
|
|||
|
||||
purge_sys = UT_NEW_NOKEY(purge_sys_t());
|
||||
|
||||
if (srv_force_recovery < SRV_FORCE_NO_UNDO_LOG_SCAN) {
|
||||
trx_rseg_array_init();
|
||||
if (srv_force_recovery >= SRV_FORCE_NO_UNDO_LOG_SCAN) {
|
||||
return;
|
||||
}
|
||||
|
||||
trx_rseg_array_init();
|
||||
|
||||
/* Look from the rollback segments if there exist undo logs for
|
||||
transactions. */
|
||||
|
||||
|
@ -1002,8 +996,9 @@ trx_lists_init_at_db_start()
|
|||
trx_undo_t* undo;
|
||||
trx_rseg_t* rseg = trx_sys->rseg_array[i];
|
||||
|
||||
/* At this stage non-redo rseg slots are all NULL as they are
|
||||
re-created on server start and existing slots are not read. */
|
||||
/* Some rollback segment may be unavailable,
|
||||
especially if the server was previously run with a
|
||||
non-default value of innodb_undo_logs. */
|
||||
if (rseg == NULL) {
|
||||
continue;
|
||||
}
|
||||
|
@ -1013,6 +1008,11 @@ trx_lists_init_at_db_start()
|
|||
undo != NULL;
|
||||
undo = UT_LIST_GET_NEXT(undo_list, undo)) {
|
||||
|
||||
/* trx_purge() will not run before we return,
|
||||
so we can safely increment this without
|
||||
holding rseg->mutex. */
|
||||
++rseg->trx_ref_count;
|
||||
|
||||
trx_t* trx;
|
||||
|
||||
trx = trx_resurrect_insert(undo, rseg);
|
||||
|
@ -1037,6 +1037,7 @@ trx_lists_init_at_db_start()
|
|||
|
||||
if (trx == NULL) {
|
||||
trx = trx_allocate_for_background();
|
||||
++rseg->trx_ref_count;
|
||||
|
||||
ut_d(trx->start_file = __FILE__);
|
||||
ut_d(trx->start_line = __LINE__);
|
||||
|
|
|
@ -70,7 +70,7 @@ int maria_create(const char *name, enum data_file_type datafile_type,
|
|||
myf create_flag;
|
||||
uint length,max_key_length,packed,pack_bytes,pointer,real_length_diff,
|
||||
key_length,info_length,key_segs,options,min_key_length,
|
||||
base_pos,long_varchar_count,varchar_length,
|
||||
base_pos,long_varchar_count,
|
||||
unique_key_parts,fulltext_keys,offset, not_block_record_extra_length;
|
||||
uint max_field_lengths, extra_header_size, column_nr;
|
||||
uint internal_table= flags & HA_CREATE_INTERNAL_TABLE;
|
||||
|
@ -144,9 +144,6 @@ int maria_create(const char *name, enum data_file_type datafile_type,
|
|||
datafile_type= BLOCK_RECORD;
|
||||
}
|
||||
|
||||
if (ci->reloc_rows > ci->max_rows)
|
||||
ci->reloc_rows=ci->max_rows; /* Check if wrong parameter */
|
||||
|
||||
if (!(rec_per_key_part=
|
||||
(double*) my_malloc((keys + uniques)*HA_MAX_KEY_SEG*sizeof(double) +
|
||||
(keys + uniques)*HA_MAX_KEY_SEG*sizeof(ulong) +
|
||||
|
@ -160,7 +157,7 @@ int maria_create(const char *name, enum data_file_type datafile_type,
|
|||
|
||||
|
||||
/* Start by checking fields and field-types used */
|
||||
varchar_length=long_varchar_count=packed= not_block_record_extra_length=
|
||||
long_varchar_count=packed= not_block_record_extra_length=
|
||||
pack_reclength= max_field_lengths= 0;
|
||||
reclength= min_pack_length= ci->null_bytes;
|
||||
forced_packed= 0;
|
||||
|
@ -232,7 +229,6 @@ int maria_create(const char *name, enum data_file_type datafile_type,
|
|||
}
|
||||
else if (type == FIELD_VARCHAR)
|
||||
{
|
||||
varchar_length+= column->length-1; /* Used for min_pack_length */
|
||||
pack_reclength++;
|
||||
not_block_record_extra_length++;
|
||||
max_field_lengths++;
|
||||
|
@ -368,6 +364,7 @@ int maria_create(const char *name, enum data_file_type datafile_type,
|
|||
pack_bytes);
|
||||
if (!ci->data_file_length && ci->max_rows)
|
||||
{
|
||||
set_if_bigger(ci->max_rows, ci->reloc_rows);
|
||||
if (pack_reclength == INT_MAX32 ||
|
||||
(~(ulonglong) 0)/ci->max_rows < (ulonglong) pack_reclength)
|
||||
ci->data_file_length= ~(ulonglong) 0;
|
||||
|
@ -401,13 +398,14 @@ int maria_create(const char *name, enum data_file_type datafile_type,
|
|||
else
|
||||
ci->max_rows= data_file_length / (min_pack_length +
|
||||
extra_header_size +
|
||||
DIR_ENTRY_SIZE)+1;
|
||||
DIR_ENTRY_SIZE);
|
||||
}
|
||||
else
|
||||
ci->max_rows=(ha_rows) (ci->data_file_length/(min_pack_length +
|
||||
((options &
|
||||
HA_OPTION_PACK_RECORD) ?
|
||||
3 : 0)))+1;
|
||||
3 : 0)));
|
||||
set_if_smaller(ci->reloc_rows, ci->max_rows);
|
||||
}
|
||||
max_rows= (ulonglong) ci->max_rows;
|
||||
if (datafile_type == BLOCK_RECORD)
|
||||
|
@ -800,6 +798,7 @@ int maria_create(const char *name, enum data_file_type datafile_type,
|
|||
share.state.state.data_file_length= maria_block_size;
|
||||
/* Add length of packed fields + length */
|
||||
share.base.pack_reclength+= share.base.max_field_lengths+3;
|
||||
share.base.max_pack_length= share.base.pack_reclength;
|
||||
|
||||
/* Adjust max_pack_length, to be used if we have short rows */
|
||||
if (share.base.max_pack_length < maria_block_size)
|
||||
|
|
Loading…
Reference in a new issue