From e53199e76b0e89e3601651e48c5667793d0fa954 Mon Sep 17 00:00:00 2001 From: Andrei Date: Wed, 2 Feb 2022 20:02:20 +0200 Subject: [PATCH 01/11] MDEV-27721 rpl.rpl_relay_max_extension test is not FreeBSD-compatible Fixed the test to execute only on linux as it depends on unportable sed. --- mysql-test/suite/rpl/t/rpl_relay_max_extension.test | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mysql-test/suite/rpl/t/rpl_relay_max_extension.test b/mysql-test/suite/rpl/t/rpl_relay_max_extension.test index e1e087f2e0e59..acca2f6954cd4 100644 --- a/mysql-test/suite/rpl/t/rpl_relay_max_extension.test +++ b/mysql-test/suite/rpl/t/rpl_relay_max_extension.test @@ -28,6 +28,8 @@ # showed # +# MDEV-27721 rpl.rpl_relay_max_extension test is not FreeBSD-compatible +--source include/linux.inc --source include/have_innodb.inc --source include/have_binlog_format_row.inc --let $rpl_topology=1->2 From 5c89386fdbd5eb9062e10247380ad65cb85c9f29 Mon Sep 17 00:00:00 2001 From: Sergei Petrunia Date: Mon, 7 Feb 2022 12:10:18 +0300 Subject: [PATCH 02/11] MDEV-17785: Window functions not working in ONLY_FULL_GROUP_BY mode (Backport Varun Gupta's patch + edit the commit comment) Name resolution code produced errors for valid queries with window functions (but not for queries which used aggregate functions as window functions). Name resolution code worked incorrectly, because window function objects had is_window_func_sum_expr()=false. This was so, because mark_as_window_func_sum_expr() was only called for aggregate functions used as window functions. The fix is to call it for any window function. --- mysql-test/r/win.result | 32 +++++++++++++++++++ .../encryption/r/tempfiles_encrypted.result | 32 +++++++++++++++++++ mysql-test/t/win.test | 27 ++++++++++++++++ sql/item_windowfunc.cc | 3 ++ sql/sql_yacc.yy | 3 -- 5 files changed, 94 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/win.result b/mysql-test/r/win.result index bc017ea70a3cc..30650f29555bc 100644 --- a/mysql-test/r/win.result +++ b/mysql-test/r/win.result @@ -4198,5 +4198,37 @@ drop procedure sp7; drop view v1,v2; drop table t1; # +# MDEV-17785: Window functions not working in ONLY_FULL_GROUP_BY mode +# +CREATE TABLE t1(a VARCHAR(10), b int); +INSERT INTO t1 VALUES +('Maths', 60),('Maths', 60), +('Maths', 70),('Maths', 55), +('Biology', 60), ('Biology', 70); +SET @save_sql_mode= @@sql_mode; +SET sql_mode = 'ONLY_FULL_GROUP_BY'; +SELECT +RANK() OVER (PARTITION BY a ORDER BY b) AS rank, +a, b FROM t1 ORDER BY a, b DESC; +rank a b +2 Biology 70 +1 Biology 60 +4 Maths 70 +2 Maths 60 +2 Maths 60 +1 Maths 55 +SET sql_mode= @save_sql_mode; +DROP TABLE t1; +CREATE TABLE t1(i int,j int); +INSERT INTO t1 VALUES (1,1), (1,5),(1,4), (2,2),(2,5), (3,3),(4,4); +INSERT INTO t1 VALUES (1,1), (1,5),(1,4), (2,2),(2,5), (3,3),(4,4); +SELECT i, LAST_VALUE(COUNT(i)) OVER (PARTITION BY i ORDER BY j) FROM t1 GROUP BY i; +i LAST_VALUE(COUNT(i)) OVER (PARTITION BY i ORDER BY j) +1 6 +2 4 +3 2 +4 2 +DROP TABLE t1; +# # End of 10.2 tests # diff --git a/mysql-test/suite/encryption/r/tempfiles_encrypted.result b/mysql-test/suite/encryption/r/tempfiles_encrypted.result index f66a5fd0b2578..aaba6bb044a5c 100644 --- a/mysql-test/suite/encryption/r/tempfiles_encrypted.result +++ b/mysql-test/suite/encryption/r/tempfiles_encrypted.result @@ -4204,6 +4204,38 @@ drop procedure sp7; drop view v1,v2; drop table t1; # +# MDEV-17785: Window functions not working in ONLY_FULL_GROUP_BY mode +# +CREATE TABLE t1(a VARCHAR(10), b int); +INSERT INTO t1 VALUES +('Maths', 60),('Maths', 60), +('Maths', 70),('Maths', 55), +('Biology', 60), ('Biology', 70); +SET @save_sql_mode= @@sql_mode; +SET sql_mode = 'ONLY_FULL_GROUP_BY'; +SELECT +RANK() OVER (PARTITION BY a ORDER BY b) AS rank, +a, b FROM t1 ORDER BY a, b DESC; +rank a b +2 Biology 70 +1 Biology 60 +4 Maths 70 +2 Maths 60 +2 Maths 60 +1 Maths 55 +SET sql_mode= @save_sql_mode; +DROP TABLE t1; +CREATE TABLE t1(i int,j int); +INSERT INTO t1 VALUES (1,1), (1,5),(1,4), (2,2),(2,5), (3,3),(4,4); +INSERT INTO t1 VALUES (1,1), (1,5),(1,4), (2,2),(2,5), (3,3),(4,4); +SELECT i, LAST_VALUE(COUNT(i)) OVER (PARTITION BY i ORDER BY j) FROM t1 GROUP BY i; +i LAST_VALUE(COUNT(i)) OVER (PARTITION BY i ORDER BY j) +1 6 +2 4 +3 2 +4 2 +DROP TABLE t1; +# # End of 10.2 tests # # diff --git a/mysql-test/t/win.test b/mysql-test/t/win.test index 72e789dff3f31..126ed735c88fd 100644 --- a/mysql-test/t/win.test +++ b/mysql-test/t/win.test @@ -2703,6 +2703,33 @@ drop procedure sp7; drop view v1,v2; drop table t1; +--echo # +--echo # MDEV-17785: Window functions not working in ONLY_FULL_GROUP_BY mode +--echo # + +CREATE TABLE t1(a VARCHAR(10), b int); + +INSERT INTO t1 VALUES +('Maths', 60),('Maths', 60), +('Maths', 70),('Maths', 55), +('Biology', 60), ('Biology', 70); + +SET @save_sql_mode= @@sql_mode; +SET sql_mode = 'ONLY_FULL_GROUP_BY'; + +SELECT + RANK() OVER (PARTITION BY a ORDER BY b) AS rank, + a, b FROM t1 ORDER BY a, b DESC; + +SET sql_mode= @save_sql_mode; +DROP TABLE t1; + +CREATE TABLE t1(i int,j int); +INSERT INTO t1 VALUES (1,1), (1,5),(1,4), (2,2),(2,5), (3,3),(4,4); +INSERT INTO t1 VALUES (1,1), (1,5),(1,4), (2,2),(2,5), (3,3),(4,4); +SELECT i, LAST_VALUE(COUNT(i)) OVER (PARTITION BY i ORDER BY j) FROM t1 GROUP BY i; +DROP TABLE t1; + --echo # --echo # End of 10.2 tests --echo # diff --git a/sql/item_windowfunc.cc b/sql/item_windowfunc.cc index bb4a8a9f3af5f..03f995407714c 100644 --- a/sql/item_windowfunc.cc +++ b/sql/item_windowfunc.cc @@ -93,6 +93,9 @@ Item_window_func::fix_fields(THD *thd, Item **ref) my_error(ER_NO_ORDER_LIST_IN_WINDOW_SPEC, MYF(0), window_func()->func_name()); return true; } + + window_func()->mark_as_window_func_sum_expr(); + /* TODO: why the last parameter is 'ref' in this call? What if window_func decides to substitute itself for something else and does *ref=.... ? diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index a4b105862f36e..6f3274aced57e 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -10557,9 +10557,6 @@ window_func: simple_window_func | sum_expr - { - ((Item_sum *) $1)->mark_as_window_func_sum_expr(); - } ; simple_window_func: From 21413aee0a32c80708a02a96074c108f3db419f1 Mon Sep 17 00:00:00 2001 From: Teemu Ollakka Date: Thu, 3 Feb 2022 12:06:25 +0000 Subject: [PATCH 03/11] MDEV-27737 Wsrep SST scripts not working on FreeBSD MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Changed SST scripts to use /usr/bin/env bash instead of /bin/bash for better portability. - Fixed use of mktemp on non-Linux platforms to produce temporary file instead of directory. Reviewed-by: Jan Lindström --- scripts/wsrep_sst_mariabackup.sh | 5 ++++- scripts/wsrep_sst_mysqldump.sh | 5 ++++- scripts/wsrep_sst_rsync.sh | 6 ++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/scripts/wsrep_sst_mariabackup.sh b/scripts/wsrep_sst_mariabackup.sh index aa9442b0601c6..471b0e5f5b097 100644 --- a/scripts/wsrep_sst_mariabackup.sh +++ b/scripts/wsrep_sst_mariabackup.sh @@ -1,4 +1,7 @@ -#!/bin/bash -ue +#!/usr/bin/env bash + +set -ue + # Copyright (C) 2017-2021 MariaDB # Copyright (C) 2013 Percona Inc # diff --git a/scripts/wsrep_sst_mysqldump.sh b/scripts/wsrep_sst_mysqldump.sh index bed2cac0a9a9d..1c8fc18132864 100644 --- a/scripts/wsrep_sst_mysqldump.sh +++ b/scripts/wsrep_sst_mysqldump.sh @@ -1,4 +1,7 @@ -#!/bin/bash -ue +#!/usr/bin/env bash + +set -ue + # Copyright (C) 2009-2015 Codership Oy # Copyright (C) 2017-2021 MariaDB # diff --git a/scripts/wsrep_sst_rsync.sh b/scripts/wsrep_sst_rsync.sh index 28dfed1821816..cc73db5da878f 100644 --- a/scripts/wsrep_sst_rsync.sh +++ b/scripts/wsrep_sst_rsync.sh @@ -1,4 +1,6 @@ -#!/bin/bash -ue +#!/usr/bin/env bash + +set -ue # Copyright (C) 2017-2021 MariaDB # Copyright (C) 2010-2014 Codership Oy @@ -740,7 +742,7 @@ EOF elif [ "$OS" = 'Linux' ]; then tmpfile=$(mktemp "--tmpdir=$tmpdir") else - tmpfile=$(TMPDIR="$tmpdir"; mktemp '-d') + tmpfile=$(TMPDIR="$tmpdir"; mktemp) fi wsrep_log_info "Extracting binlog files:" From ae33a006f7c50d8f98c3b931574b2d2e2a7381b9 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Fri, 4 Feb 2022 00:33:10 +0100 Subject: [PATCH 04/11] MDEV-27738 Windows : mysql-test-run --extern does not work Use portable quoting in mtr_add_arg. --- mysql-test/mysql-test-run.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index aa6a02a454106..bbe5df4c57a8c 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -1908,7 +1908,7 @@ () } mtr_add_arg($args, "--silent"); # Tab separated output - mtr_add_arg($args, "-e '%s'", "use mysql; SHOW VARIABLES"); + mtr_add_arg($args, "-e \"use mysql; SHOW VARIABLES\""); my $cmd= "$mysql " . join(' ', @$args); mtr_verbose("cmd: $cmd"); From c0a44ff7f19cc697ab5b940b5af539b5f630bc55 Mon Sep 17 00:00:00 2001 From: Daniel Bartholomew Date: Tue, 8 Feb 2022 16:28:44 -0500 Subject: [PATCH 05/11] bump the VERSION --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 3c9ab3987263c..d9c4622d96b0d 100644 --- a/VERSION +++ b/VERSION @@ -1,3 +1,3 @@ MYSQL_VERSION_MAJOR=10 MYSQL_VERSION_MINOR=2 -MYSQL_VERSION_PATCH=42 +MYSQL_VERSION_PATCH=43 From 30cc63fa1a2aaae1a63bed8e83adb71a9abf0b95 Mon Sep 17 00:00:00 2001 From: Daniel Bartholomew Date: Tue, 8 Feb 2022 16:47:37 -0500 Subject: [PATCH 06/11] bump the VERSION --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 2504c91668047..6deead00756b1 100644 --- a/VERSION +++ b/VERSION @@ -1,4 +1,4 @@ MYSQL_VERSION_MAJOR=10 MYSQL_VERSION_MINOR=3 -MYSQL_VERSION_PATCH=33 +MYSQL_VERSION_PATCH=34 SERVER_MATURITY=stable From ad1fb06982d70c7ef61ac792f9dab7eae0e4abf8 Mon Sep 17 00:00:00 2001 From: Monty Date: Thu, 10 Feb 2022 12:28:46 +0200 Subject: [PATCH 07/11] MDEV-27789 mysql_upgrade / mariadb-upgrade in 10.6.6 is putting password in host argument Removed all dependencies of command line arguments based on positions in an array (this kind of code should never have been written). Instead use option names, which are stable. Reviewer: Sergei Golubchik --- client/mysql_upgrade.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/client/mysql_upgrade.c b/client/mysql_upgrade.c index 8c186b521c138..b9f4a437bab11 100644 --- a/client/mysql_upgrade.c +++ b/client/mysql_upgrade.c @@ -121,7 +121,6 @@ static struct my_option my_long_options[]= &opt_not_used, &opt_not_used, 0 , GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"host", 'h', "Connect to host.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, -#define PASSWORD_OPT 12 {"password", 'p', "Password to use when connecting to server. If password is not given," " it's solicited on the tty.", &opt_password,&opt_password, @@ -158,7 +157,6 @@ static struct my_option my_long_options[]= {"upgrade-system-tables", 's', "Only upgrade the system tables in the mysql database. Tables in other databases are not checked or touched.", &opt_systables_only, &opt_systables_only, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, -#define USER_OPT (array_elements(my_long_options) - 6) {"user", 'u', "User for login.", &opt_user, &opt_user, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"verbose", 'v', "Display more output about the process; Using it twice will print connection argument; Using it 3 times will print out all CHECK, RENAME and ALTER TABLE during the check phase.", @@ -264,11 +262,11 @@ static void print_error(const char *error_msg, DYNAMIC_STRING *output) */ static void add_one_option_cmd_line(DYNAMIC_STRING *ds, - const struct my_option *opt, - const char* arg) + const char *name, + const char *arg) { dynstr_append(ds, "--"); - dynstr_append(ds, opt->name); + dynstr_append(ds, name); if (arg) { dynstr_append(ds, "="); @@ -278,10 +276,10 @@ static void add_one_option_cmd_line(DYNAMIC_STRING *ds, } static void add_one_option_cnf_file(DYNAMIC_STRING *ds, - const struct my_option *opt, - const char* arg) + const char *name, + const char *arg) { - dynstr_append(ds, opt->name); + dynstr_append(ds, name); if (arg) { dynstr_append(ds, "="); @@ -324,7 +322,7 @@ get_one_option(int optid, const struct my_option *opt, if (argument) { /* Add password to ds_args before overwriting the arg with x's */ - add_one_option_cnf_file(&ds_args, opt, argument); + add_one_option_cnf_file(&ds_args, opt->name, argument); while (*argument) *argument++= 'x'; /* Destroy argument */ tty_password= 0; @@ -383,7 +381,7 @@ get_one_option(int optid, const struct my_option *opt, case OPT_SHARED_MEMORY_BASE_NAME: /* --shared-memory-base-name */ case OPT_PLUGIN_DIR: /* --plugin-dir */ case OPT_DEFAULT_AUTH: /* --default-auth */ - add_one_option_cmd_line(&conn_args, opt, argument); + add_one_option_cmd_line(&conn_args, opt->name, argument); break; } @@ -394,7 +392,7 @@ get_one_option(int optid, const struct my_option *opt, it can be passed on to "mysql" and "mysqlcheck" Save it in the ds_args string */ - add_one_option_cnf_file(&ds_args, opt, argument); + add_one_option_cnf_file(&ds_args, opt->name, argument); } return 0; } @@ -1349,12 +1347,10 @@ int main(int argc, char **argv) { opt_password= get_tty_password(NullS); /* add password to defaults file */ - add_one_option_cnf_file(&ds_args, &my_long_options[PASSWORD_OPT], opt_password); - DBUG_ASSERT(strcmp(my_long_options[PASSWORD_OPT].name, "password") == 0); + add_one_option_cnf_file(&ds_args, "password", opt_password); } /* add user to defaults file */ - add_one_option_cnf_file(&ds_args, &my_long_options[USER_OPT], opt_user); - DBUG_ASSERT(strcmp(my_long_options[USER_OPT].name, "user") == 0); + add_one_option_cnf_file(&ds_args, "user", opt_user); cnf_file_path= strmov(defaults_file, "--defaults-file="); { From 0168d1eda30dad4b517659422e347175eb89e923 Mon Sep 17 00:00:00 2001 From: Oleksandr Byelkin Date: Wed, 15 Sep 2021 16:06:02 +0200 Subject: [PATCH 08/11] MDEV-25766 Unused CTE lead to a crash in find_field_in_tables/find_order_in_list Do not assume that subquery Item always present. --- mysql-test/r/cte_nonrecursive.result | 33 +++++++++++++++++++++++++ mysql-test/t/cte_nonrecursive.test | 36 ++++++++++++++++++++++++++++ sql/sql_base.cc | 7 +++--- 3 files changed, 73 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/cte_nonrecursive.result b/mysql-test/r/cte_nonrecursive.result index b2fee0d3c6f99..4aaf11de8bfac 100644 --- a/mysql-test/r/cte_nonrecursive.result +++ b/mysql-test/r/cte_nonrecursive.result @@ -2184,4 +2184,37 @@ select * from t1; a 7 drop table t1,t2; +# +# MDEV-25766: Unused CTE lead to a crash in +# find_field_in_tables/find_order_in_list +# +create table t1 (f1 INTEGER); +create view v1 as +select +subq_0.c4 as c2, +subq_0.c4 as c4 +from +(select +ref_0.f1 as c4 +from +t1 as ref_0 +where (select 1) +) as subq_0 +order by c2, c4 desc; +WITH +unused_with AS (select +subq_0.c4 as c6 +from +(select +11 as c4 +from +v1 as ref_0 +) as subq_0, +v1 as ref_2 +) +select 1 ; +1 +1 +drop view v1; +drop table t1; # End of 10.2 tests diff --git a/mysql-test/t/cte_nonrecursive.test b/mysql-test/t/cte_nonrecursive.test index 175be8b9881ad..723332b43b6ba 100644 --- a/mysql-test/t/cte_nonrecursive.test +++ b/mysql-test/t/cte_nonrecursive.test @@ -1624,4 +1624,40 @@ select * from t1; drop table t1,t2; +--echo # +--echo # MDEV-25766: Unused CTE lead to a crash in +--echo # find_field_in_tables/find_order_in_list +--echo # + +create table t1 (f1 INTEGER); + +create view v1 as +select + subq_0.c4 as c2, + subq_0.c4 as c4 + from + (select + ref_0.f1 as c4 + from + t1 as ref_0 + where (select 1) + ) as subq_0 + order by c2, c4 desc; + +WITH +unused_with AS (select + subq_0.c4 as c6 + from + (select + 11 as c4 + from + v1 as ref_0 + ) as subq_0, + v1 as ref_2 +) +select 1 ; + +drop view v1; +drop table t1; + --echo # End of 10.2 tests diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 248dedf36e49b..a6c07600591a3 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -6011,9 +6011,10 @@ find_field_in_tables(THD *thd, Item_ident *item, sl=sl->outer_select()) { Item *subs= sl->master_unit()->item; - if (subs->type() == Item::SUBSELECT_ITEM && - ((Item_subselect*)subs)->substype() == Item_subselect::IN_SUBS && - ((Item_in_subselect*)subs)->test_strategy(SUBS_SEMI_JOIN)) + if (!subs || + (subs->type() == Item::SUBSELECT_ITEM && + ((Item_subselect*)subs)->substype() == Item_subselect::IN_SUBS && + ((Item_in_subselect*)subs)->test_strategy(SUBS_SEMI_JOIN))) { continue; } From 1b8bb44106f528f742faa19d23bd6e822be04f39 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Thu, 10 Feb 2022 13:03:02 +0100 Subject: [PATCH 09/11] MDEV-26351 segfault - (MARIA_HA *) 0x0 in ha_maria::extra use the correct check. before invoking handler methods we need to know that the table was opened, not only created. --- mysql-test/r/tmp_table_error.result | 2634 ++++++++++++++++++++++++++ mysql-test/t/tmp_table_error.test | 2637 +++++++++++++++++++++++++++ sql/records.cc | 2 +- 3 files changed, 5272 insertions(+), 1 deletion(-) create mode 100644 mysql-test/r/tmp_table_error.result create mode 100644 mysql-test/t/tmp_table_error.test diff --git a/mysql-test/r/tmp_table_error.result b/mysql-test/r/tmp_table_error.result new file mode 100644 index 0000000000000..c0c8b203dfb94 --- /dev/null +++ b/mysql-test/r/tmp_table_error.result @@ -0,0 +1,2634 @@ +call mtr.add_suppression('Index for table'); +create table t1 ( +a int primary key, +b text +) engine=innodb; +create table t2 as +select +1 +from +(select distinct +b as c0, +b as c1, +b as c2, +b as c3, +b as c4, +b as c5, +b as c6, +b as c7, +b as c8, +b as c9, +b as c10, +b as c11, +b as c12, +b as c13, +b as c14, +b as c15, +b as c16, +b as c17, +b as c18, +b as c19, +b as c20, +b as c21, +b as c22, +b as c23, +b as c24, +b as c25, +b as c26, +b as c27, +b as c28, +b as c29, +b as c30, +b as c31, +b as c32, +b as c33, +b as c34, +b as c35, +b as c36, +b as c37, +b as c38, +b as c39, +b as c40, +b as c41, +b as c42, +b as c43, +b as c45, +b as c46, +b as c47, +b as c48, +b as c49, +b as c50, +b as c51, +b as c52, +b as c53, +b as c54, +b as c55, +b as c56, +b as c57, +b as c58, +b as c59, +b as c60, +b as c61, +b as c62, +b as c63, +b as c64, +b as c65, +b as c66, +b as c67, +b as c68, +b as c69, +b as c70, +b as c71, +b as c72, +b as c73, +b as c74, +b as c75, +b as c76, +b as c77, +b as c78, +b as c79, +b as c80, +b as c81, +b as c82, +b as c83, +b as c84, +b as c85, +b as c86, +b as c87, +b as c88, +b as c89, +b as c90, +b as c91, +b as c92, +b as c93, +b as c94, +b as c95, +b as c96, +b as c97, +b as c98, +b as c99, +b as c100, +b as c101, +b as c102, +b as c103, +b as c104, +b as c105, +b as c106, +b as c107, +b as c108, +b as c109, +b as c110, +b as c111, +b as c112, +b as c113, +b as c114, +b as c115, +b as c116, +b as c117, +b as c118, +b as c119, +b as c120, +b as c121, +b as c122, +b as c123, +b as c124, +b as c125, +b as c126, +b as c127, +b as c128, +b as c129, +b as c130, +b as c131, +b as c132, +b as c133, +b as c134, +b as c135, +b as c136, +b as c137, +b as c138, +b as c139, +b as c140, +b as c141, +b as c142, +b as c143, +b as c144, +b as c145, +b as c146, +b as c147, +b as c148, +b as c149, +b as c150, +b as c151, +b as c152, +b as c153, +b as c154, +b as c155, +b as c156, +b as c157, +b as c158, +b as c159, +b as c160, +b as c161, +b as c162, +b as c163, +b as c164, +b as c165, +b as c166, +b as c167, +b as c168, +b as c169, +b as c170, +b as c171, +b as c172, +b as c173, +b as c174, +b as c175, +b as c176, +b as c177, +b as c178, +b as c179, +b as c180, +b as c181, +b as c182, +b as c183, +b as c184, +b as c185, +b as c186, +b as c187, +b as c188, +b as c189, +b as c190, +b as c191, +b as c192, +b as c193, +b as c194, +b as c195, +b as c196, +b as c197, +b as c198, +b as c199, +b as c200, +b as c201, +b as c202, +b as c203, +b as c204, +b as c205, +b as c206, +b as c207, +b as c208, +b as c209, +b as c210, +b as c211, +b as c212, +b as c213, +b as c214, +b as c215, +b as c216, +b as c217, +b as c218, +b as c219, +b as c220, +b as c221, +b as c222, +b as c223, +b as c224, +b as c225, +b as c226, +b as c227, +b as c228, +b as c229, +b as c230, +b as c231, +b as c232, +b as c233, +b as c234, +b as c235, +b as c236, +b as c237, +b as c238, +b as c239, +b as c240, +b as c241, +b as c242, +b as c243, +b as c244, +b as c245, +b as c246, +b as c247, +b as c248, +b as c249, +b as c250, +b as c251, +b as c252, +b as c253, +b as c254, +b as c255, +b as c256, +b as c257, +b as c258, +b as c259, +b as c260, +b as c261, +b as c262, +b as c263, +b as c264, +b as c265, +b as c266, +b as c267, +b as c268, +b as c269, +b as c270, +b as c271, +b as c272, +b as c273, +b as c274, +b as c275, +b as c276, +b as c277, +b as c278, +b as c279, +b as c280, +b as c281, +b as c282, +b as c283, +b as c284, +b as c285, +b as c286, +b as c287, +b as c288, +b as c289, +b as c290, +b as c291, +b as c292, +b as c293, +b as c294, +b as c295, +b as c296, +b as c297, +b as c298, +b as c299, +b as c300, +b as c301, +b as c302, +b as c303, +b as c304, +b as c305, +b as c306, +b as c307, +b as c308, +b as c309, +b as c310, +b as c311, +b as c312, +b as c313, +b as c314, +b as c315, +b as c316, +b as c317, +b as c318, +b as c319, +b as c320, +b as c321, +b as c322, +b as c323, +b as c324, +b as c325, +b as c326, +b as c327, +b as c328, +b as c329, +b as c330, +b as c331, +b as c332, +b as c333, +b as c334, +b as c335, +b as c336, +b as c337, +b as c338, +b as c339, +b as c340, +b as c341, +b as c342, +b as c343, +b as c344, +b as c345, +b as c346, +b as c347, +b as c348, +b as c349, +b as c350, +b as c351, +b as c352, +b as c353, +b as c354, +b as c355, +b as c356, +b as c357, +b as c358, +b as c359, +b as c360, +b as c361, +b as c362, +b as c363, +b as c364, +b as c365, +b as c366, +b as c367, +b as c368, +b as c369, +b as c370, +b as c371, +b as c372, +b as c373, +b as c374, +b as c375, +b as c376, +b as c377, +b as c378, +b as c379, +b as c380, +b as c381, +b as c382, +b as c383, +b as c384, +b as c385, +b as c386, +b as c387, +b as c388, +b as c389, +b as c390, +b as c391, +b as c392, +b as c393, +b as c394, +b as c395, +b as c396, +b as c397, +b as c398, +b as c399, +b as c400, +b as c401, +b as c402, +b as c403, +b as c404, +b as c405, +b as c406, +b as c407, +b as c409, +b as c410, +b as c411, +b as c412, +b as c413, +b as c414, +b as c415, +b as c416, +b as c417, +b as c418, +b as c419, +b as c420, +b as c421, +b as c422, +b as c423, +b as c424, +b as c425, +b as c426, +b as c427, +b as c428, +b as c429, +b as c430, +b as c431, +b as c432, +b as c433, +b as c434, +b as c435, +b as c436, +b as c437, +b as c438, +b as c439, +b as c440, +b as c441, +b as c442, +b as c443, +b as c444, +b as c445, +b as c446, +b as c447, +b as c448, +b as c449, +b as c450, +b as c451, +b as c452, +b as c453, +b as c454, +b as c455, +b as c456, +b as c457, +b as c458, +b as c459, +b as c460, +b as c461, +b as c462, +b as c463, +b as c464, +b as c465, +b as c466, +b as c467, +b as c468, +b as c469, +b as c470, +b as c471, +b as c472, +b as c473, +b as c474, +b as c475, +b as c476, +b as c477, +b as c478, +b as c479, +b as c480, +b as c481, +b as c482, +b as c483, +b as c484, +b as c485, +b as c486, +b as c487, +b as c488, +b as c489, +b as c490, +b as c491, +b as c492, +b as c493, +b as c494, +b as c495, +b as c496, +b as c497, +b as c498, +b as c499, +b as c500, +b as c501, +b as c502, +b as c503, +b as c504, +b as c505, +b as c506, +b as c507, +b as c508, +b as c509, +b as c510, +b as c511, +b as c512, +b as c513, +b as c514, +b as c515, +b as c516, +b as c517, +b as c518, +b as c519, +b as c520, +b as c521, +b as c522, +b as c523, +b as c524, +b as c525, +b as c526, +b as c527, +b as c528, +b as c529, +b as c530, +b as c531, +b as c532, +b as c533, +b as c534, +b as c535, +b as c536, +b as c537, +b as c538, +b as c539, +b as c540, +b as c541, +b as c542, +b as c543, +b as c544, +b as c545, +b as c546, +b as c547, +b as c548, +b as c549, +b as c550, +b as c551, +b as c552, +b as c553, +b as c554, +b as c555, +b as c556, +b as c557, +b as c558, +b as c559, +b as c560, +b as c561, +b as c562, +b as c563, +b as c564, +b as c565, +b as c566, +b as c567, +b as c568, +b as c569, +b as c570, +b as c571, +b as c572, +b as c573, +b as c574, +b as c575, +b as c576, +b as c577, +b as c578, +b as c579, +b as c580, +b as c581, +b as c582, +b as c583, +b as c584, +b as c585, +b as c586, +b as c587, +b as c588, +b as c589, +b as c590, +b as c591, +b as c592, +b as c593, +b as c594, +b as c595, +b as c596, +b as c597, +b as c598, +b as c599, +b as c600, +b as c601, +b as c602, +b as c603, +b as c604, +b as c605, +b as c606, +b as c607, +b as c608, +b as c609, +b as c610, +b as c611, +b as c612, +b as c613, +b as c614, +b as c615, +b as c616, +b as c617, +b as c618, +b as c619, +b as c620, +b as c621, +b as c622, +b as c623, +b as c624, +b as c625, +b as c626, +b as c627, +b as c628, +b as c629, +b as c630, +b as c631, +b as c632, +b as c633, +b as c634, +b as c635, +b as c636, +b as c637, +b as c638, +b as c639, +b as c640, +b as c641, +b as c642, +b as c643, +b as c644, +b as c645, +b as c646, +b as c647, +b as c648, +b as c649, +b as c650, +b as c651, +b as c652, +b as c653, +b as c654, +b as c655, +b as c656, +b as c657, +b as c658, +b as c659, +b as c660, +b as c661, +b as c662, +b as c663, +b as c664, +b as c665, +b as c666, +b as c667, +b as c668, +b as c669, +b as c670, +b as c671, +b as c672, +b as c673, +b as c674, +b as c675, +b as c676, +b as c677, +b as c678, +b as c679, +b as c680, +b as c681, +b as c682, +b as c683, +b as c684, +b as c685, +b as c686, +b as c687, +b as c688, +b as c689, +b as c690, +b as c691, +b as c692, +b as c693, +b as c694, +b as c695, +b as c696, +b as c697, +b as c698, +b as c699, +b as c700, +b as c701, +b as c702, +b as c703, +b as c704, +b as c705, +b as c706, +b as c707, +b as c708, +b as c709, +b as c710, +b as c711, +b as c712, +b as c713, +b as c714, +b as c715, +b as c716, +b as c717, +b as c718, +b as c719, +b as c720, +b as c721, +b as c722, +b as c723, +b as c724, +b as c725, +b as c726, +b as c727, +b as c728, +b as c729, +b as c730, +b as c731, +b as c732, +b as c733, +b as c734, +b as c735, +b as c736, +b as c737, +b as c738, +b as c739, +b as c740, +b as c741, +b as c742, +b as c743, +b as c744, +b as c745, +b as c746, +b as c747, +b as c748, +b as c749, +b as c750, +b as c751, +b as c752, +b as c753, +b as c754, +b as c755, +b as c756, +b as c757, +b as c758, +b as c759, +b as c760, +b as c761, +b as c762, +b as c763, +b as c764, +b as c765, +b as c766, +b as c767, +b as c768, +b as c769, +b as c770, +b as c771, +b as c772, +b as c773, +b as c774, +b as c775, +b as c776, +b as c777, +b as c778, +b as c779, +b as c780, +b as c781, +b as c782, +b as c783, +b as c784, +b as c785, +b as c786, +b as c787, +b as c788, +b as c789, +b as c790, +b as c791, +b as c792, +b as c793, +b as c794, +b as c795, +b as c796, +b as c797, +b as c798, +b as c799, +b as c800, +b as c801, +b as c802, +b as c803, +b as c804, +b as c805, +b as c806, +b as c807, +b as c808, +b as c809, +b as c810, +b as c811, +b as c812, +b as c813, +b as c814, +b as c815, +b as c816, +b as c817, +b as c818, +b as c819, +b as c820, +b as c821, +b as c822, +b as c823, +b as c824, +b as c825, +b as c826, +b as c827, +b as c828, +b as c829, +b as c830, +b as c831, +b as c832, +b as c833, +b as c834, +b as c835, +b as c836, +b as c837, +b as c838, +b as c839, +b as c840, +b as c841, +b as c842, +b as c843, +b as c844, +b as c845, +b as c846, +b as c847, +b as c848, +b as c849, +b as c850, +b as c851, +b as c852, +b as c853, +b as c854, +b as c855, +b as c856, +b as c857, +b as c858, +b as c859, +b as c860, +b as c861, +b as c862, +b as c863, +b as c864, +b as c865, +b as c866, +b as c867, +b as c868, +b as c869, +b as c870, +b as c871, +b as c872, +b as c873, +b as c874, +b as c875, +b as c876, +b as c877, +b as c878, +b as c879, +b as c880, +b as c881, +b as c882, +b as c883, +b as c884, +b as c885, +b as c886, +b as c887, +b as c888, +b as c889, +b as c890, +b as c891, +b as c892, +b as c893, +b as c894, +b as c895, +b as c897, +b as c898, +b as c899, +b as c900, +b as c901, +b as c902, +b as c903, +b as c904, +b as c905, +b as c906, +b as c907, +b as c908, +b as c909, +b as c910, +b as c911, +b as c912, +b as c913, +b as c914, +b as c915, +b as c916, +b as c917, +b as c918, +b as c919, +b as c920, +b as c921, +b as c922, +b as c923, +b as c924, +b as c925, +b as c926, +b as c927, +b as c928, +b as c929, +b as c930, +b as c931, +b as c932, +b as c933, +b as c934, +b as c935, +b as c936, +b as c937, +b as c938, +b as c939, +b as c940, +b as c941, +b as c942, +b as c943, +b as c944, +b as c945, +b as c946, +b as c947, +b as c948, +b as c949, +b as c950, +b as c951, +b as c952, +b as c953, +b as c954, +b as c955, +b as c956, +b as c957, +b as c958, +b as c959, +b as c960, +b as c961, +b as c962, +b as c963, +b as c964, +b as c965, +b as c966, +b as c967, +b as c968, +b as c969, +b as c970, +b as c971, +b as c972, +b as c973, +b as c974, +b as c975, +b as c976, +b as c977, +b as c978, +b as c979, +b as c980, +b as c981, +b as c982, +b as c983, +b as c984, +b as c985, +b as c986, +b as c987, +b as c988, +b as c989, +b as c990, +b as c991, +b as c992, +b as c993, +b as c995, +b as c996, +b as c997, +b as c998, +b as c999, +b as c1000, +b as c1001, +b as c1002, +b as c1003, +b as c1004, +b as c1005, +b as c1006, +b as c1007, +b as c1008, +b as c1009, +b as c1010, +b as c1011, +b as c1012, +b as c1013, +b as c1014, +b as c1015, +b as c1016, +b as c1017, +b as c1018, +b as c1019, +b as c1020, +b as c1021, +b as c1022, +b as c1023, +b as c1024, +b as c1025, +b as c1026, +b as c1027, +b as c1028, +b as c1029, +b as c1030, +b as c1031, +b as c1032, +b as c1033, +b as c1034, +b as c1035, +b as c1036, +b as c1037, +b as c1038, +b as c1039, +b as c1040, +b as c1041, +b as c1042, +b as c1043, +b as c1044, +b as c1045, +b as c1046, +b as c1047, +b as c1048, +b as c1049, +b as c1050, +b as c1051, +b as c1052, +b as c1053, +b as c1054, +b as c1055, +b as c1056, +b as c1057, +b as c1058, +b as c1059, +b as c1060, +b as c1061, +b as c1062, +b as c1063, +b as c1064, +b as c1065, +b as c1066, +b as c1067, +b as c1068, +b as c1069, +b as c1070, +b as c1071, +b as c1072, +b as c1073, +b as c1074, +b as c1075, +b as c1076, +b as c1077, +b as c1078, +b as c1079, +b as c1080, +b as c1081, +b as c1082, +b as c1083, +b as c1084, +b as c1085, +b as c1086, +b as c1087, +b as c1088, +b as c1089, +b as c1090, +b as c1091, +b as c1092, +b as c1093, +b as c1094, +b as c1095, +b as c1096, +b as c1097, +b as c1098, +b as c1099, +b as c1100, +b as c1101, +b as c1102, +b as c1103, +b as c1104, +b as c1105, +b as c1106, +b as c1107, +b as c1108, +b as c1109, +b as c1110, +b as c1111, +b as c1112, +b as c1113, +b as c1114, +b as c1115, +b as c1116, +b as c1117, +b as c1118, +b as c1119, +b as c1120, +b as c1121, +b as c1122, +b as c1123, +b as c1124, +b as c1125, +b as c1126, +b as c1127, +b as c1128, +b as c1129, +b as c1130, +b as c1131, +b as c1132, +b as c1133, +b as c1134, +b as c1135, +b as c1136, +b as c1137, +b as c1138, +b as c1139, +b as c1140, +b as c1141, +b as c1142, +b as c1143, +b as c1144, +b as c1145, +b as c1146, +b as c1147, +b as c1148, +b as c1149, +b as c1150, +b as c1151, +b as c1152, +b as c1153, +b as c1154, +b as c1155, +b as c1156, +b as c1157, +b as c1158, +b as c1159, +b as c1160, +b as c1161, +b as c1162, +b as c1163, +b as c1164, +b as c1165, +b as c1166, +b as c1167, +b as c1168, +b as c1169, +b as c1170, +b as c1171, +b as c1172, +b as c1173, +b as c1174, +b as c1175, +b as c1176, +b as c1177, +b as c1178, +b as c1179, +b as c1180, +b as c1181, +b as c1182, +b as c1183, +b as c1184, +b as c1185, +b as c1186, +b as c1187, +b as c1188, +b as c1189, +b as c1190, +b as c1191, +b as c1192, +b as c1193, +b as c1194, +b as c1195, +b as c1196, +b as c1197, +b as c1198, +b as c1199, +b as c1200, +b as c1201, +b as c1202, +b as c1203, +b as c1204, +b as c1205, +b as c1206, +b as c1207, +b as c1208, +b as c1209, +b as c1210, +b as c1211, +b as c1212, +b as c1213, +b as c1214, +b as c1215, +b as c1216, +b as c1217, +b as c1218, +b as c1219, +b as c1220, +b as c1221, +b as c1222, +b as c1223, +b as c1224, +b as c1225, +b as c1226, +b as c1227, +b as c1228, +b as c1229, +b as c1230, +b as c1231, +b as c1232, +b as c1233, +b as c1234, +b as c1235, +b as c1236, +b as c1237, +b as c1238, +b as c1239, +b as c1240, +b as c1241, +b as c1242, +b as c1243, +b as c1244, +b as c1245, +b as c1246, +b as c1247, +b as c1248, +b as c1249, +b as c1250, +b as c1251, +b as c1252, +b as c1253, +b as c1254, +b as c1255, +b as c1256, +b as c1257, +b as c1258, +b as c1259, +b as c1260, +b as c1261, +b as c1262, +b as c1263, +b as c1264, +b as c1265, +b as c1266, +b as c1267, +b as c1268, +b as c1269, +b as c1270, +b as c1271, +b as c1272, +b as c1273, +b as c1274, +b as c1275, +b as c1276, +b as c1277, +b as c1278, +b as c1279, +b as c1280, +b as c1281, +b as c1282, +b as c1283, +b as c1284, +b as c1285, +b as c1286, +b as c1287, +b as c1288, +b as c1289, +b as c1290, +b as c1291, +b as c1292, +b as c1293, +b as c1294, +b as c1295, +b as c1296, +b as c1297, +b as c1298, +b as c1299, +b as c1300, +b as c1301, +b as c1302, +b as c1303, +b as c1304, +b as c1305, +b as c1306, +b as c1307, +b as c1308, +b as c1309, +b as c1310, +b as c1311, +b as c1312, +b as c1313, +b as c1314, +b as c1315, +b as c1316, +b as c1317, +b as c1318, +b as c1319, +b as c1320, +b as c1321, +b as c1322, +b as c1323, +b as c1324, +b as c1325, +b as c1326, +b as c1327, +b as c1328, +b as c1329, +b as c1330, +b as c1331, +b as c1332, +b as c1333, +b as c1334, +b as c1335, +b as c1336, +b as c1337, +b as c1338, +b as c1339, +b as c1340, +b as c1341, +b as c1342, +b as c1343, +b as c1344, +b as c1345, +b as c1346, +b as c1347, +b as c1348, +b as c1349, +b as c1350, +b as c1351, +b as c1352, +b as c1353, +b as c1354, +b as c1355, +b as c1356, +b as c1357, +b as c1358, +b as c1359, +b as c1360, +b as c1361, +b as c1362, +b as c1363, +b as c1364, +b as c1365, +b as c1366, +b as c1367, +b as c1368, +b as c1369, +b as c1370, +b as c1371, +b as c1372, +b as c1373, +b as c1374, +b as c1375, +b as c1376, +b as c1377, +b as c1378, +b as c1379, +b as c1380, +b as c1381, +b as c1382, +b as c1383, +b as c1384, +b as c1385, +b as c1386, +b as c1387, +b as c1388, +b as c1389, +b as c1390, +b as c1391, +b as c1392, +b as c1393, +b as c1394, +b as c1395, +b as c1396, +b as c1397, +b as c1398, +b as c1399, +b as c1400, +b as c1401, +b as c1402, +b as c1403, +b as c1404, +b as c1405, +b as c1406, +b as c1407, +b as c1408, +b as c1409, +b as c1410, +b as c1411, +b as c1412, +b as c1413, +b as c1414, +b as c1415, +b as c1416, +b as c1417, +b as c1418, +b as c1419, +b as c1420, +b as c1421, +b as c1422, +b as c1423, +b as c1424, +b as c1425, +b as c1426, +b as c1427, +b as c1428, +b as c1429, +b as c1430, +b as c1431, +b as c1432, +b as c1433, +b as c1434, +b as c1435, +b as c1436, +b as c1437, +b as c1438, +b as c1439, +b as c1440, +b as c1441, +b as c1442, +b as c1443, +b as c1444, +b as c1445, +b as c1446, +b as c1447, +b as c1448, +b as c1449, +b as c1451, +b as c1452, +b as c1453, +b as c1454, +b as c1455, +b as c1456, +b as c1457, +b as c1458, +b as c1459, +b as c1460, +b as c1461, +b as c1462, +b as c1463, +b as c1464, +b as c1465, +b as c1466, +b as c1467, +b as c1468, +b as c1469, +b as c1470, +b as c1471, +b as c1472, +b as c1473, +b as c1474, +b as c1475, +b as c1476, +b as c1477, +b as c1478, +b as c1479, +b as c1480, +b as c1481, +b as c1482, +b as c1483, +b as c1484, +b as c1485, +b as c1486, +b as c1487, +b as c1488, +b as c1489, +b as c1490, +b as c1491, +b as c1492, +b as c1493, +b as c1494, +b as c1495, +b as c1496, +b as c1497, +b as c1498, +b as c1499, +b as c1500, +b as c1501, +b as c1502, +b as c1503, +b as c1504, +b as c1505, +b as c1506, +b as c1507, +b as c1508, +b as c1509, +b as c1510, +b as c1511, +b as c1512, +b as c1513, +b as c1514, +b as c1515, +b as c1516, +b as c1517, +b as c1518, +b as c1519, +b as c1520, +b as c1521, +b as c1522, +b as c1523, +b as c1524, +b as c1525, +b as c1526, +b as c1527, +b as c1528, +b as c1529, +b as c1530, +b as c1531, +b as c1532, +b as c1533, +b as c1534, +b as c1535, +b as c1536, +b as c1537, +b as c1538, +b as c1539, +b as c1540, +b as c1541, +b as c1542, +b as c1543, +b as c1544, +b as c1545, +b as c1546, +b as c1547, +b as c1548, +b as c1549, +b as c1550, +b as c1551, +b as c1552, +b as c1553, +b as c1554, +b as c1555, +b as c1556, +b as c1557, +b as c1558, +b as c1559, +b as c1560, +b as c1561, +b as c1562, +b as c1563, +b as c1564, +b as c1565, +b as c1566, +b as c1567, +b as c1568, +b as c1569, +b as c1570, +b as c1571, +b as c1572, +b as c1573, +b as c1574, +b as c1575, +b as c1576, +b as c1577, +b as c1578, +b as c1579, +b as c1580, +b as c1581, +b as c1582, +b as c1583, +b as c1584, +b as c1585, +b as c1586, +b as c1587, +b as c1588, +b as c1589, +b as c1590, +b as c1591, +b as c1592, +b as c1593, +b as c1594, +b as c1595, +b as c1596, +b as c1597, +b as c1598, +b as c1599, +b as c1600, +b as c1601, +b as c1602, +b as c1603, +b as c1604, +b as c1605, +b as c1606, +b as c1607, +b as c1608, +b as c1609, +b as c1610, +b as c1611, +b as c1612, +b as c1613, +b as c1614, +b as c1615, +b as c1616, +b as c1617, +b as c1618, +b as c1619, +b as c1620, +b as c1621, +b as c1622, +b as c1623, +b as c1624, +b as c1625, +b as c1626, +b as c1627, +b as c1628, +b as c1629, +b as c1630, +b as c1631, +b as c1632, +b as c1633, +b as c1634, +b as c1635, +b as c1636, +b as c1637, +b as c1638, +b as c1639, +b as c1640, +b as c1641, +b as c1642, +b as c1643, +b as c1644, +b as c1645, +b as c1646, +b as c1647, +b as c1648, +b as c1649, +b as c1650, +b as c1651, +b as c1652, +b as c1653, +b as c1654, +b as c1655, +b as c1656, +b as c1657, +b as c1658, +b as c1659, +b as c1660, +b as c1661, +b as c1662, +b as c1663, +b as c1664, +b as c1665, +b as c1666, +b as c1667, +b as c1668, +b as c1669, +b as c1670, +b as c1671, +b as c1672, +b as c1673, +b as c1674, +b as c1675, +b as c1676, +b as c1677, +b as c1678, +b as c1679, +b as c1680, +b as c1681, +b as c1682, +b as c1683, +b as c1684, +b as c1685, +b as c1686, +b as c1687, +b as c1688, +b as c1689, +b as c1690, +b as c1691, +b as c1692, +b as c1693, +b as c1694, +b as c1695, +b as c1696, +b as c1697, +b as c1698, +b as c1699, +b as c1700, +b as c1701, +b as c1702, +b as c1703, +b as c1704, +b as c1705, +b as c1706, +b as c1707, +b as c1708, +b as c1709, +b as c1710, +b as c1711, +b as c1712, +b as c1713, +b as c1714, +b as c1715, +b as c1716, +b as c1717, +b as c1718, +b as c1719, +b as c1720, +b as c1721, +b as c1722, +b as c1723, +b as c1724, +b as c1725, +b as c1726, +b as c1727, +b as c1728, +b as c1729, +b as c1730, +b as c1731, +b as c1732, +b as c1733, +b as c1734, +b as c1735, +b as c1736, +b as c1737, +b as c1738, +b as c1739, +b as c1740, +b as c1741, +b as c1742, +b as c1743, +b as c1744, +b as c1745, +b as c1746, +b as c1747, +b as c1748, +b as c1749, +b as c1750, +b as c1751, +b as c1752, +b as c1753, +b as c1754, +b as c1755, +b as c1756, +b as c1757, +b as c1758, +b as c1759, +b as c1760, +b as c1761, +b as c1762, +b as c1763, +b as c1764, +b as c1765, +b as c1766, +b as c1767, +b as c1768, +b as c1769, +b as c1770, +b as c1771, +b as c1772, +b as c1773, +b as c1774, +b as c1775, +b as c1776, +b as c1777, +b as c1778, +b as c1779, +b as c1780, +b as c1781, +b as c1782, +b as c1783, +b as c1784, +b as c1785, +b as c1786, +b as c1787, +b as c1788, +b as c1789, +b as c1790, +b as c1791, +b as c1792, +b as c1793, +b as c1794, +b as c1795, +b as c1796, +b as c1797, +b as c1798, +b as c1799, +b as c1800, +b as c1801, +b as c1802, +b as c1803, +b as c1804, +b as c1805, +b as c1806, +b as c1807, +b as c1808, +b as c1809, +b as c1810, +b as c1811, +b as c1812, +b as c1813, +b as c1814, +b as c1815, +b as c1816, +b as c1817, +b as c1818, +b as c1819, +b as c1820, +b as c1821, +b as c1822, +b as c1823, +b as c1824, +b as c1825, +b as c1826, +b as c1827, +b as c1828, +b as c1829, +b as c1830, +b as c1831, +b as c1832, +b as c1833, +b as c1834, +b as c1835, +b as c1836, +b as c1837, +b as c1838, +b as c1839, +b as c1840, +b as c1841, +b as c1842, +b as c1843, +b as c1844, +b as c1845, +b as c1846, +b as c1847, +b as c1848, +b as c1849, +b as c1850, +b as c1851, +b as c1852, +b as c1853, +b as c1854, +b as c1855, +b as c1856, +b as c1857, +b as c1858, +b as c1859, +b as c1860, +b as c1861, +b as c1862, +b as c1863, +b as c1864, +b as c1865, +b as c1866, +b as c1867, +b as c1868, +b as c1869, +b as c1870, +b as c1871, +b as c1872, +b as c1873, +b as c1874, +b as c1875, +b as c1876, +b as c1877, +b as c1878, +b as c1879, +b as c1880, +b as c1881, +b as c1882, +b as c1883, +b as c1884, +b as c1885, +b as c1886, +b as c1887, +b as c1888, +b as c1889, +b as c1890, +b as c1891, +b as c1892, +b as c1893, +b as c1894, +b as c1895, +b as c1896, +b as c1897, +b as c1898, +b as c1899, +b as c1900, +b as c1901, +b as c1902, +b as c1903, +b as c1904, +b as c1905, +b as c1906, +b as c1907, +b as c1908, +b as c1909, +b as c1910, +b as c1911, +b as c1912, +b as c1913, +b as c1914, +b as c1915, +b as c1916, +b as c1917, +b as c1918, +b as c1919, +b as c1920, +b as c1921, +b as c1922, +b as c1923, +b as c1924, +b as c1925, +b as c1926, +b as c1927, +b as c1928, +b as c1929, +b as c1930, +b as c1931, +b as c1932, +b as c1933, +b as c1934, +b as c1935, +b as c1936, +b as c1937, +b as c1938, +b as c1939, +b as c1940, +b as c1941, +b as c1942, +b as c1943, +b as c1944, +b as c1945, +b as c1946, +b as c1947, +b as c1948, +b as c1949, +b as c1950, +b as c1951, +b as c1952, +b as c1953, +b as c1954, +b as c1955, +b as c1956, +b as c1957, +b as c1958, +b as c1959, +b as c1960, +b as c1961, +b as c1962, +b as c1963, +b as c1964, +b as c1965, +b as c1966, +b as c1967, +b as c1968, +b as c1969, +b as c1970, +b as c1971, +b as c1972, +b as c1973, +b as c1974, +b as c1975, +b as c1976, +b as c1977, +b as c1978, +b as c1979, +b as c1980, +b as c1981, +b as c1982, +b as c1983, +b as c1984, +b as c1985, +b as c1986, +b as c1987, +b as c1988, +b as c1989, +b as c1990, +b as c1991, +b as c1992, +b as c1993, +b as c1994, +b as c1995, +b as c1996, +b as c1997, +b as c1998, +b as c1999, +b as c2000, +b as c2001, +b as c2002, +b as c2003, +b as c2004, +b as c2005, +b as c2006, +b as c2007, +b as c2008, +b as c2009, +b as c2010, +b as c2011, +b as c2012, +b as c2013, +b as c2014, +b as c2015, +b as c2016, +b as c2017, +b as c2018, +b as c2019, +b as c2020, +b as c2021, +b as c2022, +b as c2023, +b as c2024, +b as c2025, +b as c2026, +b as c2027, +b as c2028, +b as c2029, +b as c2030, +b as c2031, +b as c2032, +b as c2033, +b as c2034, +b as c2035, +b as c2036, +b as c2037, +b as c2038, +b as c2039, +b as c2040, +b as c2041, +b as c2042, +b as c2043, +b as c2044, +b as c2045, +b as c2046, +b as c2047, +b as c2048, +b as c2049, +b as c2050, +b as c2051, +b as c2052, +b as c2053, +b as c2054, +b as c2055, +b as c2056, +b as c2057, +b as c2058, +b as c2059, +b as c2060, +b as c2061, +b as c2062, +b as c2063, +b as c2064, +b as c2065, +b as c2066, +b as c2067, +b as c2068, +b as c2069, +b as c2070, +b as c2071, +b as c2072, +b as c2073, +b as c2074, +b as c2075, +b as c2076, +b as c2077, +b as c2078, +b as c2079, +b as c2080, +b as c2081, +b as c2082, +b as c2083, +b as c2084, +b as c2085, +b as c2086, +b as c2087, +b as c2088, +b as c2089, +b as c2090, +b as c2091, +b as c2092, +b as c2093, +b as c2094, +b as c2095, +b as c2096, +b as c2097, +b as c2098, +b as c2099, +b as c2100, +b as c2101, +b as c2102, +b as c2103, +b as c2104, +b as c2105, +b as c2106, +b as c2107, +b as c2108, +b as c2109, +b as c2110, +b as c2111, +b as c2112, +b as c2113, +b as c2114, +b as c2115, +b as c2116, +b as c2117, +b as c2118, +b as c2119, +b as c2120, +b as c2121, +b as c2122, +b as c2123, +b as c2124, +b as c2125, +b as c2126, +b as c2127, +b as c2128, +b as c2129, +b as c2130, +b as c2131, +b as c2132, +b as c2133, +b as c2134, +b as c2135, +b as c2136, +b as c2137, +b as c2138, +b as c2139, +b as c2140, +b as c2141, +b as c2142, +b as c2143, +b as c2144, +b as c2145, +b as c2146, +b as c2147, +b as c2148, +b as c2149, +b as c2150, +b as c2151, +b as c2152, +b as c2153, +b as c2154, +b as c2155, +b as c2156, +b as c2157, +b as c2158, +b as c2159, +b as c2160, +b as c2161, +b as c2162, +b as c2163, +b as c2164, +b as c2165, +b as c2166, +b as c2167, +b as c2168, +b as c2169, +b as c2170, +b as c2171, +b as c2172, +b as c2173, +b as c2174, +b as c2175, +b as c2176, +b as c2177, +b as c2178, +b as c2179, +b as c2180, +b as c2181, +b as c2182, +b as c2183, +b as c2184, +b as c2185, +b as c2186, +b as c2187, +b as c2188, +b as c2189, +b as c2190, +b as c2191, +b as c2192, +b as c2193, +b as c2194, +b as c2195, +b as c2196, +b as c2197, +b as c2198, +b as c2199, +b as c2200, +b as c2201, +b as c2202, +b as c2203, +b as c2204, +b as c2205, +b as c2206, +b as c2207, +b as c2208, +b as c2209, +b as c2210, +b as c2211, +b as c2212, +b as c2213, +b as c2214, +b as c2215, +b as c2216, +b as c2217, +b as c2218, +b as c2219, +b as c2220, +b as c2221, +b as c2222, +b as c2223, +b as c2224, +b as c2225, +b as c2226, +b as c2227, +b as c2228, +b as c2229, +b as c2230, +b as c2231, +b as c2232, +b as c2233, +b as c2234, +b as c2235, +b as c2236, +b as c2237, +b as c2238, +b as c2239, +b as c2240, +b as c2241, +b as c2242, +b as c2243, +b as c2244, +b as c2245, +b as c2246, +b as c2247, +b as c2248, +b as c2249, +b as c2250, +b as c2251, +b as c2252, +b as c2253, +b as c2254, +b as c2255, +b as c2256, +b as c2257, +b as c2258, +b as c2259, +b as c2260, +b as c2261, +b as c2262, +b as c2263, +b as c2264, +b as c2265, +b as c2266, +b as c2267, +b as c2268, +b as c2269, +b as c2270, +b as c2271, +b as c2272, +b as c2273, +b as c2274, +b as c2275, +b as c2276, +b as c2277, +b as c2278, +b as c2279, +b as c2280, +b as c2281, +b as c2282, +b as c2283, +b as c2284, +b as c2285, +b as c2286, +b as c2287, +b as c2288, +b as c2289, +b as c2290, +b as c2291, +b as c2292, +b as c2293, +b as c2294, +b as c2295, +b as c2296, +b as c2297, +b as c2298, +b as c2299, +b as c2300, +b as c2301, +b as c2302, +b as c2303, +b as c2304, +b as c2305, +b as c2306, +b as c2307, +b as c2308, +b as c2309, +b as c2310, +b as c2311, +b as c2312, +b as c2313, +b as c2314, +b as c2315, +b as c2316, +b as c2317, +b as c2318, +b as c2319, +b as c2320, +b as c2321, +b as c2322, +b as c2323, +b as c2324, +b as c2325, +b as c2326, +b as c2327, +b as c2328, +b as c2329, +b as c2330, +b as c2331, +b as c2332, +b as c2333, +b as c2334, +b as c2335, +b as c2336, +b as c2337, +b as c2338, +b as c2339, +b as c2340, +b as c2341, +b as c2342, +b as c2343, +b as c2344, +b as c2345, +b as c2346, +b as c2347, +b as c2348, +b as c2349, +b as c2350, +b as c2351, +b as c2352, +b as c2353, +b as c2354, +b as c2355, +b as c2356, +b as c2357, +b as c2358, +b as c2359, +b as c2360, +b as c2361, +b as c2362, +b as c2363, +b as c2364, +b as c2365, +b as c2366, +b as c2367, +b as c2368, +b as c2369, +b as c2370, +b as c2371, +b as c2372, +b as c2373, +b as c2374, +b as c2375, +b as c2376, +b as c2377, +b as c2378, +b as c2379, +b as c2380, +b as c2381, +b as c2382, +b as c2383, +b as c2384, +b as c2385, +b as c2386, +b as c2387, +b as c2388, +b as c2389, +b as c2390, +b as c2391, +b as c2392, +b as c2393, +b as c2394, +b as c2395, +b as c2396, +b as c2397, +b as c2398, +b as c2399, +b as c2400, +b as c2401, +b as c2402, +b as c2403, +b as c2404, +b as c2405, +b as c2406, +b as c2407, +b as c2408, +b as c2409, +b as c2410, +b as c2411, +b as c2412, +b as c2413, +b as c2414, +b as c2415, +b as c2416, +b as c2417, +b as c2418, +b as c2419, +b as c2420, +b as c2421, +b as c2422, +b as c2423, +b as c2424, +b as c2425, +b as c2426, +b as c2427, +b as c2428, +b as c2429, +b as c2430, +b as c2431, +b as c2432, +b as c2433, +b as c2434, +b as c2435, +b as c2436, +b as c2437, +b as c2438, +b as c2439, +b as c2440, +b as c2441, +b as c2442, +b as c2443, +b as c2444, +b as c2445, +b as c2446, +b as c2447, +b as c2448, +b as c2449, +b as c2450, +b as c2451, +b as c2452, +b as c2453, +b as c2454, +b as c2455, +b as c2456, +b as c2457, +b as c2458, +b as c2459, +b as c2460, +b as c2461, +b as c2462, +b as c2463, +b as c2464, +b as c2465, +b as c2466, +b as c2467, +b as c2468, +b as c2469, +b as c2470, +b as c2471, +b as c2472, +b as c2473, +b as c2474, +b as c2475, +b as c2476, +b as c2477, +b as c2478, +b as c2479, +b as c2480, +b as c2481, +b as c2482, +b as c2483, +b as c2484, +b as c2485, +b as c2486, +b as c2487, +b as c2488, +b as c2489, +b as c2490, +b as c2491, +b as c2492, +b as c2493, +b as c2494, +b as c2495, +b as c2496, +b as c2497, +b as c2498, +b as c2499, +b as c2500, +b as c2501, +b as c2503, +b as c2504, +b as c2505, +b as c2506, +b as c2507, +b as c2508, +b as c2509, +b as c2510, +b as c2511, +b as c2512, +b as c2513, +b as c2514, +b as c2515, +b as c2516, +b as c2517, +b as c2518, +b as c2519, +b as c2520, +b as c2521, +b as c2522, +b as c2523, +b as c2524, +b as c2525, +b as c2526, +b as c2527, +b as c2528, +b as c2529, +b as c2530, +b as c2531, +b as c2532, +b as c2533, +b as c2534, +b as c2535, +b as c2536, +b as c2537, +b as c2538, +b as c2539, +b as c2540, +b as c2541, +b as c2542, +b as c2543, +b as c2544, +b as c2545, +b as c2546, +b as c2547, +b as c2548, +b as c2549, +b as c2550, +b as c2551, +b as c2552, +b as c2553, +b as c2554, +b as c2555, +b as c2556, +b as c2557, +b as c2558, +b as c2559, +b as c2560, +b as c2561, +b as c2562, +b as c2563, +b as c2564, +b as c2565, +b as c2566, +b as c2567, +b as c2568, +b as c2569, +b as c2570, +b as c2571, +b as c2572, +b as c2573, +b as c2574, +b as c2575, +b as c2576, +b as c2577, +b as c2578, +b as c2579, +b as c2580, +b as c2581, +b as c2582, +b as c2583, +b as c2584, +b as c2585, +b as c2586, +b as c2587, +b as c2588, +b as c2589, +b as c2590, +b as c2591, +b as c2592, +b as c2593, +b as c2594, +b as c2595, +b as c2596, +b as c2597, +b as c2598, +b as c2599, +b as c2600, +b as c2601, +b as c2602, +b as c2603, +b as c2604, +b as c2605, +b as c2606, +b as c2607, +b as c2608, +b as c2609, +b as c2610, +b as c2611, +b as c2612, +b as c2613, +b as c2614, +b as c2615, +b as c2616, +b as c2617, +b as c2618, +b as c2619, +b as c2620, +b as c2621, +b as c2622, +b as c2623, +b as c2624, +b as c2626 +from t1 +) as tt1; +ERROR HY000: Index for table 'tmp' is corrupt; try to repair it +drop table t1; diff --git a/mysql-test/t/tmp_table_error.test b/mysql-test/t/tmp_table_error.test new file mode 100644 index 0000000000000..e09e45085faaa --- /dev/null +++ b/mysql-test/t/tmp_table_error.test @@ -0,0 +1,2637 @@ +source include/have_innodb.inc; +call mtr.add_suppression('Index for table'); +create table t1 ( + a int primary key, + b text +) engine=innodb; + +--replace_regex /'.*'/'tmp'/ +--error 126 +create table t2 as +select + 1 + from + (select distinct + b as c0, + b as c1, + b as c2, + b as c3, + b as c4, + b as c5, + b as c6, + b as c7, + b as c8, + b as c9, + b as c10, + b as c11, + b as c12, + b as c13, + b as c14, + b as c15, + b as c16, + b as c17, + b as c18, + b as c19, + b as c20, + b as c21, + b as c22, + b as c23, + b as c24, + b as c25, + b as c26, + b as c27, + b as c28, + b as c29, + b as c30, + b as c31, + b as c32, + b as c33, + b as c34, + b as c35, + b as c36, + b as c37, + b as c38, + b as c39, + b as c40, + b as c41, + b as c42, + b as c43, + b as c45, + b as c46, + b as c47, + b as c48, + b as c49, + b as c50, + b as c51, + b as c52, + b as c53, + b as c54, + b as c55, + b as c56, + b as c57, + b as c58, + b as c59, + b as c60, + b as c61, + b as c62, + b as c63, + b as c64, + b as c65, + b as c66, + b as c67, + b as c68, + b as c69, + b as c70, + b as c71, + b as c72, + b as c73, + b as c74, + b as c75, + b as c76, + b as c77, + b as c78, + b as c79, + b as c80, + b as c81, + b as c82, + b as c83, + b as c84, + b as c85, + b as c86, + b as c87, + b as c88, + b as c89, + b as c90, + b as c91, + b as c92, + b as c93, + b as c94, + b as c95, + b as c96, + b as c97, + b as c98, + b as c99, + b as c100, + b as c101, + b as c102, + b as c103, + b as c104, + b as c105, + b as c106, + b as c107, + b as c108, + b as c109, + b as c110, + b as c111, + b as c112, + b as c113, + b as c114, + b as c115, + b as c116, + b as c117, + b as c118, + b as c119, + b as c120, + b as c121, + b as c122, + b as c123, + b as c124, + b as c125, + b as c126, + b as c127, + b as c128, + b as c129, + b as c130, + b as c131, + b as c132, + b as c133, + b as c134, + b as c135, + b as c136, + b as c137, + b as c138, + b as c139, + b as c140, + b as c141, + b as c142, + b as c143, + b as c144, + b as c145, + b as c146, + b as c147, + b as c148, + b as c149, + b as c150, + b as c151, + b as c152, + b as c153, + b as c154, + b as c155, + b as c156, + b as c157, + b as c158, + b as c159, + b as c160, + b as c161, + b as c162, + b as c163, + b as c164, + b as c165, + b as c166, + b as c167, + b as c168, + b as c169, + b as c170, + b as c171, + b as c172, + b as c173, + b as c174, + b as c175, + b as c176, + b as c177, + b as c178, + b as c179, + b as c180, + b as c181, + b as c182, + b as c183, + b as c184, + b as c185, + b as c186, + b as c187, + b as c188, + b as c189, + b as c190, + b as c191, + b as c192, + b as c193, + b as c194, + b as c195, + b as c196, + b as c197, + b as c198, + b as c199, + b as c200, + b as c201, + b as c202, + b as c203, + b as c204, + b as c205, + b as c206, + b as c207, + b as c208, + b as c209, + b as c210, + b as c211, + b as c212, + b as c213, + b as c214, + b as c215, + b as c216, + b as c217, + b as c218, + b as c219, + b as c220, + b as c221, + b as c222, + b as c223, + b as c224, + b as c225, + b as c226, + b as c227, + b as c228, + b as c229, + b as c230, + b as c231, + b as c232, + b as c233, + b as c234, + b as c235, + b as c236, + b as c237, + b as c238, + b as c239, + b as c240, + b as c241, + b as c242, + b as c243, + b as c244, + b as c245, + b as c246, + b as c247, + b as c248, + b as c249, + b as c250, + b as c251, + b as c252, + b as c253, + b as c254, + b as c255, + b as c256, + b as c257, + b as c258, + b as c259, + b as c260, + b as c261, + b as c262, + b as c263, + b as c264, + b as c265, + b as c266, + b as c267, + b as c268, + b as c269, + b as c270, + b as c271, + b as c272, + b as c273, + b as c274, + b as c275, + b as c276, + b as c277, + b as c278, + b as c279, + b as c280, + b as c281, + b as c282, + b as c283, + b as c284, + b as c285, + b as c286, + b as c287, + b as c288, + b as c289, + b as c290, + b as c291, + b as c292, + b as c293, + b as c294, + b as c295, + b as c296, + b as c297, + b as c298, + b as c299, + b as c300, + b as c301, + b as c302, + b as c303, + b as c304, + b as c305, + b as c306, + b as c307, + b as c308, + b as c309, + b as c310, + b as c311, + b as c312, + b as c313, + b as c314, + b as c315, + b as c316, + b as c317, + b as c318, + b as c319, + b as c320, + b as c321, + b as c322, + b as c323, + b as c324, + b as c325, + b as c326, + b as c327, + b as c328, + b as c329, + b as c330, + b as c331, + b as c332, + b as c333, + b as c334, + b as c335, + b as c336, + b as c337, + b as c338, + b as c339, + b as c340, + b as c341, + b as c342, + b as c343, + b as c344, + b as c345, + b as c346, + b as c347, + b as c348, + b as c349, + b as c350, + b as c351, + b as c352, + b as c353, + b as c354, + b as c355, + b as c356, + b as c357, + b as c358, + b as c359, + b as c360, + b as c361, + b as c362, + b as c363, + b as c364, + b as c365, + b as c366, + b as c367, + b as c368, + b as c369, + b as c370, + b as c371, + b as c372, + b as c373, + b as c374, + b as c375, + b as c376, + b as c377, + b as c378, + b as c379, + b as c380, + b as c381, + b as c382, + b as c383, + b as c384, + b as c385, + b as c386, + b as c387, + b as c388, + b as c389, + b as c390, + b as c391, + b as c392, + b as c393, + b as c394, + b as c395, + b as c396, + b as c397, + b as c398, + b as c399, + b as c400, + b as c401, + b as c402, + b as c403, + b as c404, + b as c405, + b as c406, + b as c407, + b as c409, + b as c410, + b as c411, + b as c412, + b as c413, + b as c414, + b as c415, + b as c416, + b as c417, + b as c418, + b as c419, + b as c420, + b as c421, + b as c422, + b as c423, + b as c424, + b as c425, + b as c426, + b as c427, + b as c428, + b as c429, + b as c430, + b as c431, + b as c432, + b as c433, + b as c434, + b as c435, + b as c436, + b as c437, + b as c438, + b as c439, + b as c440, + b as c441, + b as c442, + b as c443, + b as c444, + b as c445, + b as c446, + b as c447, + b as c448, + b as c449, + b as c450, + b as c451, + b as c452, + b as c453, + b as c454, + b as c455, + b as c456, + b as c457, + b as c458, + b as c459, + b as c460, + b as c461, + b as c462, + b as c463, + b as c464, + b as c465, + b as c466, + b as c467, + b as c468, + b as c469, + b as c470, + b as c471, + b as c472, + b as c473, + b as c474, + b as c475, + b as c476, + b as c477, + b as c478, + b as c479, + b as c480, + b as c481, + b as c482, + b as c483, + b as c484, + b as c485, + b as c486, + b as c487, + b as c488, + b as c489, + b as c490, + b as c491, + b as c492, + b as c493, + b as c494, + b as c495, + b as c496, + b as c497, + b as c498, + b as c499, + b as c500, + b as c501, + b as c502, + b as c503, + b as c504, + b as c505, + b as c506, + b as c507, + b as c508, + b as c509, + b as c510, + b as c511, + b as c512, + b as c513, + b as c514, + b as c515, + b as c516, + b as c517, + b as c518, + b as c519, + b as c520, + b as c521, + b as c522, + b as c523, + b as c524, + b as c525, + b as c526, + b as c527, + b as c528, + b as c529, + b as c530, + b as c531, + b as c532, + b as c533, + b as c534, + b as c535, + b as c536, + b as c537, + b as c538, + b as c539, + b as c540, + b as c541, + b as c542, + b as c543, + b as c544, + b as c545, + b as c546, + b as c547, + b as c548, + b as c549, + b as c550, + b as c551, + b as c552, + b as c553, + b as c554, + b as c555, + b as c556, + b as c557, + b as c558, + b as c559, + b as c560, + b as c561, + b as c562, + b as c563, + b as c564, + b as c565, + b as c566, + b as c567, + b as c568, + b as c569, + b as c570, + b as c571, + b as c572, + b as c573, + b as c574, + b as c575, + b as c576, + b as c577, + b as c578, + b as c579, + b as c580, + b as c581, + b as c582, + b as c583, + b as c584, + b as c585, + b as c586, + b as c587, + b as c588, + b as c589, + b as c590, + b as c591, + b as c592, + b as c593, + b as c594, + b as c595, + b as c596, + b as c597, + b as c598, + b as c599, + b as c600, + b as c601, + b as c602, + b as c603, + b as c604, + b as c605, + b as c606, + b as c607, + b as c608, + b as c609, + b as c610, + b as c611, + b as c612, + b as c613, + b as c614, + b as c615, + b as c616, + b as c617, + b as c618, + b as c619, + b as c620, + b as c621, + b as c622, + b as c623, + b as c624, + b as c625, + b as c626, + b as c627, + b as c628, + b as c629, + b as c630, + b as c631, + b as c632, + b as c633, + b as c634, + b as c635, + b as c636, + b as c637, + b as c638, + b as c639, + b as c640, + b as c641, + b as c642, + b as c643, + b as c644, + b as c645, + b as c646, + b as c647, + b as c648, + b as c649, + b as c650, + b as c651, + b as c652, + b as c653, + b as c654, + b as c655, + b as c656, + b as c657, + b as c658, + b as c659, + b as c660, + b as c661, + b as c662, + b as c663, + b as c664, + b as c665, + b as c666, + b as c667, + b as c668, + b as c669, + b as c670, + b as c671, + b as c672, + b as c673, + b as c674, + b as c675, + b as c676, + b as c677, + b as c678, + b as c679, + b as c680, + b as c681, + b as c682, + b as c683, + b as c684, + b as c685, + b as c686, + b as c687, + b as c688, + b as c689, + b as c690, + b as c691, + b as c692, + b as c693, + b as c694, + b as c695, + b as c696, + b as c697, + b as c698, + b as c699, + b as c700, + b as c701, + b as c702, + b as c703, + b as c704, + b as c705, + b as c706, + b as c707, + b as c708, + b as c709, + b as c710, + b as c711, + b as c712, + b as c713, + b as c714, + b as c715, + b as c716, + b as c717, + b as c718, + b as c719, + b as c720, + b as c721, + b as c722, + b as c723, + b as c724, + b as c725, + b as c726, + b as c727, + b as c728, + b as c729, + b as c730, + b as c731, + b as c732, + b as c733, + b as c734, + b as c735, + b as c736, + b as c737, + b as c738, + b as c739, + b as c740, + b as c741, + b as c742, + b as c743, + b as c744, + b as c745, + b as c746, + b as c747, + b as c748, + b as c749, + b as c750, + b as c751, + b as c752, + b as c753, + b as c754, + b as c755, + b as c756, + b as c757, + b as c758, + b as c759, + b as c760, + b as c761, + b as c762, + b as c763, + b as c764, + b as c765, + b as c766, + b as c767, + b as c768, + b as c769, + b as c770, + b as c771, + b as c772, + b as c773, + b as c774, + b as c775, + b as c776, + b as c777, + b as c778, + b as c779, + b as c780, + b as c781, + b as c782, + b as c783, + b as c784, + b as c785, + b as c786, + b as c787, + b as c788, + b as c789, + b as c790, + b as c791, + b as c792, + b as c793, + b as c794, + b as c795, + b as c796, + b as c797, + b as c798, + b as c799, + b as c800, + b as c801, + b as c802, + b as c803, + b as c804, + b as c805, + b as c806, + b as c807, + b as c808, + b as c809, + b as c810, + b as c811, + b as c812, + b as c813, + b as c814, + b as c815, + b as c816, + b as c817, + b as c818, + b as c819, + b as c820, + b as c821, + b as c822, + b as c823, + b as c824, + b as c825, + b as c826, + b as c827, + b as c828, + b as c829, + b as c830, + b as c831, + b as c832, + b as c833, + b as c834, + b as c835, + b as c836, + b as c837, + b as c838, + b as c839, + b as c840, + b as c841, + b as c842, + b as c843, + b as c844, + b as c845, + b as c846, + b as c847, + b as c848, + b as c849, + b as c850, + b as c851, + b as c852, + b as c853, + b as c854, + b as c855, + b as c856, + b as c857, + b as c858, + b as c859, + b as c860, + b as c861, + b as c862, + b as c863, + b as c864, + b as c865, + b as c866, + b as c867, + b as c868, + b as c869, + b as c870, + b as c871, + b as c872, + b as c873, + b as c874, + b as c875, + b as c876, + b as c877, + b as c878, + b as c879, + b as c880, + b as c881, + b as c882, + b as c883, + b as c884, + b as c885, + b as c886, + b as c887, + b as c888, + b as c889, + b as c890, + b as c891, + b as c892, + b as c893, + b as c894, + b as c895, + b as c897, + b as c898, + b as c899, + b as c900, + b as c901, + b as c902, + b as c903, + b as c904, + b as c905, + b as c906, + b as c907, + b as c908, + b as c909, + b as c910, + b as c911, + b as c912, + b as c913, + b as c914, + b as c915, + b as c916, + b as c917, + b as c918, + b as c919, + b as c920, + b as c921, + b as c922, + b as c923, + b as c924, + b as c925, + b as c926, + b as c927, + b as c928, + b as c929, + b as c930, + b as c931, + b as c932, + b as c933, + b as c934, + b as c935, + b as c936, + b as c937, + b as c938, + b as c939, + b as c940, + b as c941, + b as c942, + b as c943, + b as c944, + b as c945, + b as c946, + b as c947, + b as c948, + b as c949, + b as c950, + b as c951, + b as c952, + b as c953, + b as c954, + b as c955, + b as c956, + b as c957, + b as c958, + b as c959, + b as c960, + b as c961, + b as c962, + b as c963, + b as c964, + b as c965, + b as c966, + b as c967, + b as c968, + b as c969, + b as c970, + b as c971, + b as c972, + b as c973, + b as c974, + b as c975, + b as c976, + b as c977, + b as c978, + b as c979, + b as c980, + b as c981, + b as c982, + b as c983, + b as c984, + b as c985, + b as c986, + b as c987, + b as c988, + b as c989, + b as c990, + b as c991, + b as c992, + b as c993, + b as c995, + b as c996, + b as c997, + b as c998, + b as c999, + b as c1000, + b as c1001, + b as c1002, + b as c1003, + b as c1004, + b as c1005, + b as c1006, + b as c1007, + b as c1008, + b as c1009, + b as c1010, + b as c1011, + b as c1012, + b as c1013, + b as c1014, + b as c1015, + b as c1016, + b as c1017, + b as c1018, + b as c1019, + b as c1020, + b as c1021, + b as c1022, + b as c1023, + b as c1024, + b as c1025, + b as c1026, + b as c1027, + b as c1028, + b as c1029, + b as c1030, + b as c1031, + b as c1032, + b as c1033, + b as c1034, + b as c1035, + b as c1036, + b as c1037, + b as c1038, + b as c1039, + b as c1040, + b as c1041, + b as c1042, + b as c1043, + b as c1044, + b as c1045, + b as c1046, + b as c1047, + b as c1048, + b as c1049, + b as c1050, + b as c1051, + b as c1052, + b as c1053, + b as c1054, + b as c1055, + b as c1056, + b as c1057, + b as c1058, + b as c1059, + b as c1060, + b as c1061, + b as c1062, + b as c1063, + b as c1064, + b as c1065, + b as c1066, + b as c1067, + b as c1068, + b as c1069, + b as c1070, + b as c1071, + b as c1072, + b as c1073, + b as c1074, + b as c1075, + b as c1076, + b as c1077, + b as c1078, + b as c1079, + b as c1080, + b as c1081, + b as c1082, + b as c1083, + b as c1084, + b as c1085, + b as c1086, + b as c1087, + b as c1088, + b as c1089, + b as c1090, + b as c1091, + b as c1092, + b as c1093, + b as c1094, + b as c1095, + b as c1096, + b as c1097, + b as c1098, + b as c1099, + b as c1100, + b as c1101, + b as c1102, + b as c1103, + b as c1104, + b as c1105, + b as c1106, + b as c1107, + b as c1108, + b as c1109, + b as c1110, + b as c1111, + b as c1112, + b as c1113, + b as c1114, + b as c1115, + b as c1116, + b as c1117, + b as c1118, + b as c1119, + b as c1120, + b as c1121, + b as c1122, + b as c1123, + b as c1124, + b as c1125, + b as c1126, + b as c1127, + b as c1128, + b as c1129, + b as c1130, + b as c1131, + b as c1132, + b as c1133, + b as c1134, + b as c1135, + b as c1136, + b as c1137, + b as c1138, + b as c1139, + b as c1140, + b as c1141, + b as c1142, + b as c1143, + b as c1144, + b as c1145, + b as c1146, + b as c1147, + b as c1148, + b as c1149, + b as c1150, + b as c1151, + b as c1152, + b as c1153, + b as c1154, + b as c1155, + b as c1156, + b as c1157, + b as c1158, + b as c1159, + b as c1160, + b as c1161, + b as c1162, + b as c1163, + b as c1164, + b as c1165, + b as c1166, + b as c1167, + b as c1168, + b as c1169, + b as c1170, + b as c1171, + b as c1172, + b as c1173, + b as c1174, + b as c1175, + b as c1176, + b as c1177, + b as c1178, + b as c1179, + b as c1180, + b as c1181, + b as c1182, + b as c1183, + b as c1184, + b as c1185, + b as c1186, + b as c1187, + b as c1188, + b as c1189, + b as c1190, + b as c1191, + b as c1192, + b as c1193, + b as c1194, + b as c1195, + b as c1196, + b as c1197, + b as c1198, + b as c1199, + b as c1200, + b as c1201, + b as c1202, + b as c1203, + b as c1204, + b as c1205, + b as c1206, + b as c1207, + b as c1208, + b as c1209, + b as c1210, + b as c1211, + b as c1212, + b as c1213, + b as c1214, + b as c1215, + b as c1216, + b as c1217, + b as c1218, + b as c1219, + b as c1220, + b as c1221, + b as c1222, + b as c1223, + b as c1224, + b as c1225, + b as c1226, + b as c1227, + b as c1228, + b as c1229, + b as c1230, + b as c1231, + b as c1232, + b as c1233, + b as c1234, + b as c1235, + b as c1236, + b as c1237, + b as c1238, + b as c1239, + b as c1240, + b as c1241, + b as c1242, + b as c1243, + b as c1244, + b as c1245, + b as c1246, + b as c1247, + b as c1248, + b as c1249, + b as c1250, + b as c1251, + b as c1252, + b as c1253, + b as c1254, + b as c1255, + b as c1256, + b as c1257, + b as c1258, + b as c1259, + b as c1260, + b as c1261, + b as c1262, + b as c1263, + b as c1264, + b as c1265, + b as c1266, + b as c1267, + b as c1268, + b as c1269, + b as c1270, + b as c1271, + b as c1272, + b as c1273, + b as c1274, + b as c1275, + b as c1276, + b as c1277, + b as c1278, + b as c1279, + b as c1280, + b as c1281, + b as c1282, + b as c1283, + b as c1284, + b as c1285, + b as c1286, + b as c1287, + b as c1288, + b as c1289, + b as c1290, + b as c1291, + b as c1292, + b as c1293, + b as c1294, + b as c1295, + b as c1296, + b as c1297, + b as c1298, + b as c1299, + b as c1300, + b as c1301, + b as c1302, + b as c1303, + b as c1304, + b as c1305, + b as c1306, + b as c1307, + b as c1308, + b as c1309, + b as c1310, + b as c1311, + b as c1312, + b as c1313, + b as c1314, + b as c1315, + b as c1316, + b as c1317, + b as c1318, + b as c1319, + b as c1320, + b as c1321, + b as c1322, + b as c1323, + b as c1324, + b as c1325, + b as c1326, + b as c1327, + b as c1328, + b as c1329, + b as c1330, + b as c1331, + b as c1332, + b as c1333, + b as c1334, + b as c1335, + b as c1336, + b as c1337, + b as c1338, + b as c1339, + b as c1340, + b as c1341, + b as c1342, + b as c1343, + b as c1344, + b as c1345, + b as c1346, + b as c1347, + b as c1348, + b as c1349, + b as c1350, + b as c1351, + b as c1352, + b as c1353, + b as c1354, + b as c1355, + b as c1356, + b as c1357, + b as c1358, + b as c1359, + b as c1360, + b as c1361, + b as c1362, + b as c1363, + b as c1364, + b as c1365, + b as c1366, + b as c1367, + b as c1368, + b as c1369, + b as c1370, + b as c1371, + b as c1372, + b as c1373, + b as c1374, + b as c1375, + b as c1376, + b as c1377, + b as c1378, + b as c1379, + b as c1380, + b as c1381, + b as c1382, + b as c1383, + b as c1384, + b as c1385, + b as c1386, + b as c1387, + b as c1388, + b as c1389, + b as c1390, + b as c1391, + b as c1392, + b as c1393, + b as c1394, + b as c1395, + b as c1396, + b as c1397, + b as c1398, + b as c1399, + b as c1400, + b as c1401, + b as c1402, + b as c1403, + b as c1404, + b as c1405, + b as c1406, + b as c1407, + b as c1408, + b as c1409, + b as c1410, + b as c1411, + b as c1412, + b as c1413, + b as c1414, + b as c1415, + b as c1416, + b as c1417, + b as c1418, + b as c1419, + b as c1420, + b as c1421, + b as c1422, + b as c1423, + b as c1424, + b as c1425, + b as c1426, + b as c1427, + b as c1428, + b as c1429, + b as c1430, + b as c1431, + b as c1432, + b as c1433, + b as c1434, + b as c1435, + b as c1436, + b as c1437, + b as c1438, + b as c1439, + b as c1440, + b as c1441, + b as c1442, + b as c1443, + b as c1444, + b as c1445, + b as c1446, + b as c1447, + b as c1448, + b as c1449, + b as c1451, + b as c1452, + b as c1453, + b as c1454, + b as c1455, + b as c1456, + b as c1457, + b as c1458, + b as c1459, + b as c1460, + b as c1461, + b as c1462, + b as c1463, + b as c1464, + b as c1465, + b as c1466, + b as c1467, + b as c1468, + b as c1469, + b as c1470, + b as c1471, + b as c1472, + b as c1473, + b as c1474, + b as c1475, + b as c1476, + b as c1477, + b as c1478, + b as c1479, + b as c1480, + b as c1481, + b as c1482, + b as c1483, + b as c1484, + b as c1485, + b as c1486, + b as c1487, + b as c1488, + b as c1489, + b as c1490, + b as c1491, + b as c1492, + b as c1493, + b as c1494, + b as c1495, + b as c1496, + b as c1497, + b as c1498, + b as c1499, + b as c1500, + b as c1501, + b as c1502, + b as c1503, + b as c1504, + b as c1505, + b as c1506, + b as c1507, + b as c1508, + b as c1509, + b as c1510, + b as c1511, + b as c1512, + b as c1513, + b as c1514, + b as c1515, + b as c1516, + b as c1517, + b as c1518, + b as c1519, + b as c1520, + b as c1521, + b as c1522, + b as c1523, + b as c1524, + b as c1525, + b as c1526, + b as c1527, + b as c1528, + b as c1529, + b as c1530, + b as c1531, + b as c1532, + b as c1533, + b as c1534, + b as c1535, + b as c1536, + b as c1537, + b as c1538, + b as c1539, + b as c1540, + b as c1541, + b as c1542, + b as c1543, + b as c1544, + b as c1545, + b as c1546, + b as c1547, + b as c1548, + b as c1549, + b as c1550, + b as c1551, + b as c1552, + b as c1553, + b as c1554, + b as c1555, + b as c1556, + b as c1557, + b as c1558, + b as c1559, + b as c1560, + b as c1561, + b as c1562, + b as c1563, + b as c1564, + b as c1565, + b as c1566, + b as c1567, + b as c1568, + b as c1569, + b as c1570, + b as c1571, + b as c1572, + b as c1573, + b as c1574, + b as c1575, + b as c1576, + b as c1577, + b as c1578, + b as c1579, + b as c1580, + b as c1581, + b as c1582, + b as c1583, + b as c1584, + b as c1585, + b as c1586, + b as c1587, + b as c1588, + b as c1589, + b as c1590, + b as c1591, + b as c1592, + b as c1593, + b as c1594, + b as c1595, + b as c1596, + b as c1597, + b as c1598, + b as c1599, + b as c1600, + b as c1601, + b as c1602, + b as c1603, + b as c1604, + b as c1605, + b as c1606, + b as c1607, + b as c1608, + b as c1609, + b as c1610, + b as c1611, + b as c1612, + b as c1613, + b as c1614, + b as c1615, + b as c1616, + b as c1617, + b as c1618, + b as c1619, + b as c1620, + b as c1621, + b as c1622, + b as c1623, + b as c1624, + b as c1625, + b as c1626, + b as c1627, + b as c1628, + b as c1629, + b as c1630, + b as c1631, + b as c1632, + b as c1633, + b as c1634, + b as c1635, + b as c1636, + b as c1637, + b as c1638, + b as c1639, + b as c1640, + b as c1641, + b as c1642, + b as c1643, + b as c1644, + b as c1645, + b as c1646, + b as c1647, + b as c1648, + b as c1649, + b as c1650, + b as c1651, + b as c1652, + b as c1653, + b as c1654, + b as c1655, + b as c1656, + b as c1657, + b as c1658, + b as c1659, + b as c1660, + b as c1661, + b as c1662, + b as c1663, + b as c1664, + b as c1665, + b as c1666, + b as c1667, + b as c1668, + b as c1669, + b as c1670, + b as c1671, + b as c1672, + b as c1673, + b as c1674, + b as c1675, + b as c1676, + b as c1677, + b as c1678, + b as c1679, + b as c1680, + b as c1681, + b as c1682, + b as c1683, + b as c1684, + b as c1685, + b as c1686, + b as c1687, + b as c1688, + b as c1689, + b as c1690, + b as c1691, + b as c1692, + b as c1693, + b as c1694, + b as c1695, + b as c1696, + b as c1697, + b as c1698, + b as c1699, + b as c1700, + b as c1701, + b as c1702, + b as c1703, + b as c1704, + b as c1705, + b as c1706, + b as c1707, + b as c1708, + b as c1709, + b as c1710, + b as c1711, + b as c1712, + b as c1713, + b as c1714, + b as c1715, + b as c1716, + b as c1717, + b as c1718, + b as c1719, + b as c1720, + b as c1721, + b as c1722, + b as c1723, + b as c1724, + b as c1725, + b as c1726, + b as c1727, + b as c1728, + b as c1729, + b as c1730, + b as c1731, + b as c1732, + b as c1733, + b as c1734, + b as c1735, + b as c1736, + b as c1737, + b as c1738, + b as c1739, + b as c1740, + b as c1741, + b as c1742, + b as c1743, + b as c1744, + b as c1745, + b as c1746, + b as c1747, + b as c1748, + b as c1749, + b as c1750, + b as c1751, + b as c1752, + b as c1753, + b as c1754, + b as c1755, + b as c1756, + b as c1757, + b as c1758, + b as c1759, + b as c1760, + b as c1761, + b as c1762, + b as c1763, + b as c1764, + b as c1765, + b as c1766, + b as c1767, + b as c1768, + b as c1769, + b as c1770, + b as c1771, + b as c1772, + b as c1773, + b as c1774, + b as c1775, + b as c1776, + b as c1777, + b as c1778, + b as c1779, + b as c1780, + b as c1781, + b as c1782, + b as c1783, + b as c1784, + b as c1785, + b as c1786, + b as c1787, + b as c1788, + b as c1789, + b as c1790, + b as c1791, + b as c1792, + b as c1793, + b as c1794, + b as c1795, + b as c1796, + b as c1797, + b as c1798, + b as c1799, + b as c1800, + b as c1801, + b as c1802, + b as c1803, + b as c1804, + b as c1805, + b as c1806, + b as c1807, + b as c1808, + b as c1809, + b as c1810, + b as c1811, + b as c1812, + b as c1813, + b as c1814, + b as c1815, + b as c1816, + b as c1817, + b as c1818, + b as c1819, + b as c1820, + b as c1821, + b as c1822, + b as c1823, + b as c1824, + b as c1825, + b as c1826, + b as c1827, + b as c1828, + b as c1829, + b as c1830, + b as c1831, + b as c1832, + b as c1833, + b as c1834, + b as c1835, + b as c1836, + b as c1837, + b as c1838, + b as c1839, + b as c1840, + b as c1841, + b as c1842, + b as c1843, + b as c1844, + b as c1845, + b as c1846, + b as c1847, + b as c1848, + b as c1849, + b as c1850, + b as c1851, + b as c1852, + b as c1853, + b as c1854, + b as c1855, + b as c1856, + b as c1857, + b as c1858, + b as c1859, + b as c1860, + b as c1861, + b as c1862, + b as c1863, + b as c1864, + b as c1865, + b as c1866, + b as c1867, + b as c1868, + b as c1869, + b as c1870, + b as c1871, + b as c1872, + b as c1873, + b as c1874, + b as c1875, + b as c1876, + b as c1877, + b as c1878, + b as c1879, + b as c1880, + b as c1881, + b as c1882, + b as c1883, + b as c1884, + b as c1885, + b as c1886, + b as c1887, + b as c1888, + b as c1889, + b as c1890, + b as c1891, + b as c1892, + b as c1893, + b as c1894, + b as c1895, + b as c1896, + b as c1897, + b as c1898, + b as c1899, + b as c1900, + b as c1901, + b as c1902, + b as c1903, + b as c1904, + b as c1905, + b as c1906, + b as c1907, + b as c1908, + b as c1909, + b as c1910, + b as c1911, + b as c1912, + b as c1913, + b as c1914, + b as c1915, + b as c1916, + b as c1917, + b as c1918, + b as c1919, + b as c1920, + b as c1921, + b as c1922, + b as c1923, + b as c1924, + b as c1925, + b as c1926, + b as c1927, + b as c1928, + b as c1929, + b as c1930, + b as c1931, + b as c1932, + b as c1933, + b as c1934, + b as c1935, + b as c1936, + b as c1937, + b as c1938, + b as c1939, + b as c1940, + b as c1941, + b as c1942, + b as c1943, + b as c1944, + b as c1945, + b as c1946, + b as c1947, + b as c1948, + b as c1949, + b as c1950, + b as c1951, + b as c1952, + b as c1953, + b as c1954, + b as c1955, + b as c1956, + b as c1957, + b as c1958, + b as c1959, + b as c1960, + b as c1961, + b as c1962, + b as c1963, + b as c1964, + b as c1965, + b as c1966, + b as c1967, + b as c1968, + b as c1969, + b as c1970, + b as c1971, + b as c1972, + b as c1973, + b as c1974, + b as c1975, + b as c1976, + b as c1977, + b as c1978, + b as c1979, + b as c1980, + b as c1981, + b as c1982, + b as c1983, + b as c1984, + b as c1985, + b as c1986, + b as c1987, + b as c1988, + b as c1989, + b as c1990, + b as c1991, + b as c1992, + b as c1993, + b as c1994, + b as c1995, + b as c1996, + b as c1997, + b as c1998, + b as c1999, + b as c2000, + b as c2001, + b as c2002, + b as c2003, + b as c2004, + b as c2005, + b as c2006, + b as c2007, + b as c2008, + b as c2009, + b as c2010, + b as c2011, + b as c2012, + b as c2013, + b as c2014, + b as c2015, + b as c2016, + b as c2017, + b as c2018, + b as c2019, + b as c2020, + b as c2021, + b as c2022, + b as c2023, + b as c2024, + b as c2025, + b as c2026, + b as c2027, + b as c2028, + b as c2029, + b as c2030, + b as c2031, + b as c2032, + b as c2033, + b as c2034, + b as c2035, + b as c2036, + b as c2037, + b as c2038, + b as c2039, + b as c2040, + b as c2041, + b as c2042, + b as c2043, + b as c2044, + b as c2045, + b as c2046, + b as c2047, + b as c2048, + b as c2049, + b as c2050, + b as c2051, + b as c2052, + b as c2053, + b as c2054, + b as c2055, + b as c2056, + b as c2057, + b as c2058, + b as c2059, + b as c2060, + b as c2061, + b as c2062, + b as c2063, + b as c2064, + b as c2065, + b as c2066, + b as c2067, + b as c2068, + b as c2069, + b as c2070, + b as c2071, + b as c2072, + b as c2073, + b as c2074, + b as c2075, + b as c2076, + b as c2077, + b as c2078, + b as c2079, + b as c2080, + b as c2081, + b as c2082, + b as c2083, + b as c2084, + b as c2085, + b as c2086, + b as c2087, + b as c2088, + b as c2089, + b as c2090, + b as c2091, + b as c2092, + b as c2093, + b as c2094, + b as c2095, + b as c2096, + b as c2097, + b as c2098, + b as c2099, + b as c2100, + b as c2101, + b as c2102, + b as c2103, + b as c2104, + b as c2105, + b as c2106, + b as c2107, + b as c2108, + b as c2109, + b as c2110, + b as c2111, + b as c2112, + b as c2113, + b as c2114, + b as c2115, + b as c2116, + b as c2117, + b as c2118, + b as c2119, + b as c2120, + b as c2121, + b as c2122, + b as c2123, + b as c2124, + b as c2125, + b as c2126, + b as c2127, + b as c2128, + b as c2129, + b as c2130, + b as c2131, + b as c2132, + b as c2133, + b as c2134, + b as c2135, + b as c2136, + b as c2137, + b as c2138, + b as c2139, + b as c2140, + b as c2141, + b as c2142, + b as c2143, + b as c2144, + b as c2145, + b as c2146, + b as c2147, + b as c2148, + b as c2149, + b as c2150, + b as c2151, + b as c2152, + b as c2153, + b as c2154, + b as c2155, + b as c2156, + b as c2157, + b as c2158, + b as c2159, + b as c2160, + b as c2161, + b as c2162, + b as c2163, + b as c2164, + b as c2165, + b as c2166, + b as c2167, + b as c2168, + b as c2169, + b as c2170, + b as c2171, + b as c2172, + b as c2173, + b as c2174, + b as c2175, + b as c2176, + b as c2177, + b as c2178, + b as c2179, + b as c2180, + b as c2181, + b as c2182, + b as c2183, + b as c2184, + b as c2185, + b as c2186, + b as c2187, + b as c2188, + b as c2189, + b as c2190, + b as c2191, + b as c2192, + b as c2193, + b as c2194, + b as c2195, + b as c2196, + b as c2197, + b as c2198, + b as c2199, + b as c2200, + b as c2201, + b as c2202, + b as c2203, + b as c2204, + b as c2205, + b as c2206, + b as c2207, + b as c2208, + b as c2209, + b as c2210, + b as c2211, + b as c2212, + b as c2213, + b as c2214, + b as c2215, + b as c2216, + b as c2217, + b as c2218, + b as c2219, + b as c2220, + b as c2221, + b as c2222, + b as c2223, + b as c2224, + b as c2225, + b as c2226, + b as c2227, + b as c2228, + b as c2229, + b as c2230, + b as c2231, + b as c2232, + b as c2233, + b as c2234, + b as c2235, + b as c2236, + b as c2237, + b as c2238, + b as c2239, + b as c2240, + b as c2241, + b as c2242, + b as c2243, + b as c2244, + b as c2245, + b as c2246, + b as c2247, + b as c2248, + b as c2249, + b as c2250, + b as c2251, + b as c2252, + b as c2253, + b as c2254, + b as c2255, + b as c2256, + b as c2257, + b as c2258, + b as c2259, + b as c2260, + b as c2261, + b as c2262, + b as c2263, + b as c2264, + b as c2265, + b as c2266, + b as c2267, + b as c2268, + b as c2269, + b as c2270, + b as c2271, + b as c2272, + b as c2273, + b as c2274, + b as c2275, + b as c2276, + b as c2277, + b as c2278, + b as c2279, + b as c2280, + b as c2281, + b as c2282, + b as c2283, + b as c2284, + b as c2285, + b as c2286, + b as c2287, + b as c2288, + b as c2289, + b as c2290, + b as c2291, + b as c2292, + b as c2293, + b as c2294, + b as c2295, + b as c2296, + b as c2297, + b as c2298, + b as c2299, + b as c2300, + b as c2301, + b as c2302, + b as c2303, + b as c2304, + b as c2305, + b as c2306, + b as c2307, + b as c2308, + b as c2309, + b as c2310, + b as c2311, + b as c2312, + b as c2313, + b as c2314, + b as c2315, + b as c2316, + b as c2317, + b as c2318, + b as c2319, + b as c2320, + b as c2321, + b as c2322, + b as c2323, + b as c2324, + b as c2325, + b as c2326, + b as c2327, + b as c2328, + b as c2329, + b as c2330, + b as c2331, + b as c2332, + b as c2333, + b as c2334, + b as c2335, + b as c2336, + b as c2337, + b as c2338, + b as c2339, + b as c2340, + b as c2341, + b as c2342, + b as c2343, + b as c2344, + b as c2345, + b as c2346, + b as c2347, + b as c2348, + b as c2349, + b as c2350, + b as c2351, + b as c2352, + b as c2353, + b as c2354, + b as c2355, + b as c2356, + b as c2357, + b as c2358, + b as c2359, + b as c2360, + b as c2361, + b as c2362, + b as c2363, + b as c2364, + b as c2365, + b as c2366, + b as c2367, + b as c2368, + b as c2369, + b as c2370, + b as c2371, + b as c2372, + b as c2373, + b as c2374, + b as c2375, + b as c2376, + b as c2377, + b as c2378, + b as c2379, + b as c2380, + b as c2381, + b as c2382, + b as c2383, + b as c2384, + b as c2385, + b as c2386, + b as c2387, + b as c2388, + b as c2389, + b as c2390, + b as c2391, + b as c2392, + b as c2393, + b as c2394, + b as c2395, + b as c2396, + b as c2397, + b as c2398, + b as c2399, + b as c2400, + b as c2401, + b as c2402, + b as c2403, + b as c2404, + b as c2405, + b as c2406, + b as c2407, + b as c2408, + b as c2409, + b as c2410, + b as c2411, + b as c2412, + b as c2413, + b as c2414, + b as c2415, + b as c2416, + b as c2417, + b as c2418, + b as c2419, + b as c2420, + b as c2421, + b as c2422, + b as c2423, + b as c2424, + b as c2425, + b as c2426, + b as c2427, + b as c2428, + b as c2429, + b as c2430, + b as c2431, + b as c2432, + b as c2433, + b as c2434, + b as c2435, + b as c2436, + b as c2437, + b as c2438, + b as c2439, + b as c2440, + b as c2441, + b as c2442, + b as c2443, + b as c2444, + b as c2445, + b as c2446, + b as c2447, + b as c2448, + b as c2449, + b as c2450, + b as c2451, + b as c2452, + b as c2453, + b as c2454, + b as c2455, + b as c2456, + b as c2457, + b as c2458, + b as c2459, + b as c2460, + b as c2461, + b as c2462, + b as c2463, + b as c2464, + b as c2465, + b as c2466, + b as c2467, + b as c2468, + b as c2469, + b as c2470, + b as c2471, + b as c2472, + b as c2473, + b as c2474, + b as c2475, + b as c2476, + b as c2477, + b as c2478, + b as c2479, + b as c2480, + b as c2481, + b as c2482, + b as c2483, + b as c2484, + b as c2485, + b as c2486, + b as c2487, + b as c2488, + b as c2489, + b as c2490, + b as c2491, + b as c2492, + b as c2493, + b as c2494, + b as c2495, + b as c2496, + b as c2497, + b as c2498, + b as c2499, + b as c2500, + b as c2501, + b as c2503, + b as c2504, + b as c2505, + b as c2506, + b as c2507, + b as c2508, + b as c2509, + b as c2510, + b as c2511, + b as c2512, + b as c2513, + b as c2514, + b as c2515, + b as c2516, + b as c2517, + b as c2518, + b as c2519, + b as c2520, + b as c2521, + b as c2522, + b as c2523, + b as c2524, + b as c2525, + b as c2526, + b as c2527, + b as c2528, + b as c2529, + b as c2530, + b as c2531, + b as c2532, + b as c2533, + b as c2534, + b as c2535, + b as c2536, + b as c2537, + b as c2538, + b as c2539, + b as c2540, + b as c2541, + b as c2542, + b as c2543, + b as c2544, + b as c2545, + b as c2546, + b as c2547, + b as c2548, + b as c2549, + b as c2550, + b as c2551, + b as c2552, + b as c2553, + b as c2554, + b as c2555, + b as c2556, + b as c2557, + b as c2558, + b as c2559, + b as c2560, + b as c2561, + b as c2562, + b as c2563, + b as c2564, + b as c2565, + b as c2566, + b as c2567, + b as c2568, + b as c2569, + b as c2570, + b as c2571, + b as c2572, + b as c2573, + b as c2574, + b as c2575, + b as c2576, + b as c2577, + b as c2578, + b as c2579, + b as c2580, + b as c2581, + b as c2582, + b as c2583, + b as c2584, + b as c2585, + b as c2586, + b as c2587, + b as c2588, + b as c2589, + b as c2590, + b as c2591, + b as c2592, + b as c2593, + b as c2594, + b as c2595, + b as c2596, + b as c2597, + b as c2598, + b as c2599, + b as c2600, + b as c2601, + b as c2602, + b as c2603, + b as c2604, + b as c2605, + b as c2606, + b as c2607, + b as c2608, + b as c2609, + b as c2610, + b as c2611, + b as c2612, + b as c2613, + b as c2614, + b as c2615, + b as c2616, + b as c2617, + b as c2618, + b as c2619, + b as c2620, + b as c2621, + b as c2622, + b as c2623, + b as c2624, + b as c2626 + from t1 + ) as tt1; +drop table t1; diff --git a/sql/records.cc b/sql/records.cc index 8a152cda4c2bb..406512b6d7ed9 100644 --- a/sql/records.cc +++ b/sql/records.cc @@ -325,7 +325,7 @@ void end_read_record(READ_RECORD *info) free_cache(info); if (info->table) { - if (info->table->is_created()) + if (info->table->db_stat) // if opened (void) info->table->file->extra(HA_EXTRA_NO_CACHE); if (info->read_record != rr_quick) // otherwise quick_range does it (void) info->table->file->ha_index_or_rnd_end(); From 9e2c26b0f6d91b3b6b0deaf9bc82f6e6ebf9a90b Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Thu, 10 Feb 2022 13:40:03 +0100 Subject: [PATCH 10/11] MDEV-26351 segfault - (MARIA_HA *) 0x0 in ha_maria::extra don't let Aria create a table that it cannot open --- mysql-test/r/tmp_table_error.result | 2 +- mysql-test/t/tmp_table_error.test | 2 +- storage/maria/ma_create.c | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mysql-test/r/tmp_table_error.result b/mysql-test/r/tmp_table_error.result index c0c8b203dfb94..3a1a97250014b 100644 --- a/mysql-test/r/tmp_table_error.result +++ b/mysql-test/r/tmp_table_error.result @@ -2630,5 +2630,5 @@ b as c2624, b as c2626 from t1 ) as tt1; -ERROR HY000: Index for table 'tmp' is corrupt; try to repair it +ERROR 0A000: Aria table 'tmp' has too many columns and/or indexes and/or unique constraints. drop table t1; diff --git a/mysql-test/t/tmp_table_error.test b/mysql-test/t/tmp_table_error.test index e09e45085faaa..dbddaaaa4c794 100644 --- a/mysql-test/t/tmp_table_error.test +++ b/mysql-test/t/tmp_table_error.test @@ -6,7 +6,7 @@ create table t1 ( ) engine=innodb; --replace_regex /'.*'/'tmp'/ ---error 126 +--error 140 create table t2 as select 1 diff --git a/storage/maria/ma_create.c b/storage/maria/ma_create.c index dc041b79f06e9..6dd1d1b1a3afa 100644 --- a/storage/maria/ma_create.c +++ b/storage/maria/ma_create.c @@ -716,9 +716,10 @@ int maria_create(const char *name, enum data_file_type datafile_type, share.base.extra_options|= MA_EXTRA_OPTIONS_INSERT_ORDER; } + share.state.state.key_file_length= MY_ALIGN(info_length, maria_block_size); DBUG_PRINT("info", ("info_length: %u", info_length)); /* There are only 16 bits for the total header length. */ - if (info_length > 65535) + if (share.state.state.key_file_length > 65535) { my_printf_error(HA_WRONG_CREATE_OPTION, "Aria table '%s' has too many columns and/or " @@ -775,8 +776,7 @@ int maria_create(const char *name, enum data_file_type datafile_type, maria_set_all_keys_active(share.state.key_map, keys); - share.base.keystart = share.state.state.key_file_length= - MY_ALIGN(info_length, maria_block_size); + share.base.keystart = share.state.state.key_file_length; share.base.max_key_block_length= maria_block_size; share.base.max_key_length=ALIGN_SIZE(max_key_length+4); share.base.records=ci->max_rows; From 3a52569499e2f0c4d1f25db1e81617a9d9755400 Mon Sep 17 00:00:00 2001 From: Sergei Petrunia Date: Thu, 10 Feb 2022 14:23:20 +0300 Subject: [PATCH 11/11] MDEV-25636: Bug report: abortion in sql/sql_parse.cc:6294 The asserion failure was caused by this query select /*id=1*/ from t1 where col= ( select /*id=2*/ from ... where corr_cond1 union select /*id=4*/ from ... where corr_cond2) Here, - select with id=2 was correlated due to corr_cond1. - select with id=4 was initially correlated due to corr_cond2, but then the optimizer optimized away the correlation, making the select with id=4 uncorrelated. However, since select with id=2 remained correlated, the execution had to re-compute the whole UNION. When it tried to execute select with id=4, it hit an assertion (join buffer already free'd). This is because select with id=4 has freed its execution structures after it has been executed once. The select is uncorrelated, so it did not expect it would need to be executed for the second time. Fixed this by adding this logic in st_select_lex::optimize_unflattened_subqueries(): If a member of a UNION is correlated, mark all its members as correlated, so that they are prepared to be executed multiple times. --- mysql-test/r/subselect4.result | 4 ++- mysql-test/r/union_innodb.result | 34 ++++++++++++++++++++++++ mysql-test/t/subselect4.test | 2 ++ mysql-test/t/union_innodb.test | 45 ++++++++++++++++++++++++++++++++ sql/sql_lex.cc | 16 +++++++++++- 5 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 mysql-test/r/union_innodb.result create mode 100644 mysql-test/t/union_innodb.test diff --git a/mysql-test/r/subselect4.result b/mysql-test/r/subselect4.result index b1db309ec18eb..2657977dae7e5 100644 --- a/mysql-test/r/subselect4.result +++ b/mysql-test/r/subselect4.result @@ -1358,6 +1358,8 @@ INSERT IGNORE INTO t2 VALUES (8,0,0),(5,0,0); CREATE TABLE t3 (f4 int,KEY (f4)) ; INSERT IGNORE INTO t3 VALUES (0),(0); set @@optimizer_switch='semijoin=off'; +# NOTE: the following should have 'SUBQUERY', not 'DEPENDENT SUBQUERY' +# for line with id=2, see MDEV-27794. EXPLAIN SELECT * FROM t1 WHERE (SELECT f2 FROM t2 @@ -1367,7 +1369,7 @@ FROM t3 AS SQ1_t1 JOIN t3 AS SQ1_t3 ON SQ1_t3.f4 GROUP BY SQ1_t1.f4)); id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t1 system NULL NULL NULL NULL 1 -2 SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where +2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where 3 SUBQUERY SQ1_t1 index NULL f4 5 NULL 2 Using index; Using temporary 3 SUBQUERY SQ1_t3 index f4 f4 5 NULL 2 Using where; Using index; Using join buffer (flat, BNL join) SELECT * FROM t1 WHERE diff --git a/mysql-test/r/union_innodb.result b/mysql-test/r/union_innodb.result new file mode 100644 index 0000000000000..876897fa86519 --- /dev/null +++ b/mysql-test/r/union_innodb.result @@ -0,0 +1,34 @@ +# +# MDEV-25636: Bug report: abortion in sql/sql_parse.cc:6294 +# +CREATE TABLE t1 (i1 int)engine=innodb; +INSERT INTO `t1` VALUES (62),(66); +CREATE TABLE t2 (i1 int) engine=innodb; +SELECT 1 FROM t1 +WHERE t1.i1 =( SELECT t1.i1 FROM t2 +UNION SELECT i1 FROM (t1 AS dt1 natural JOIN t2) +window w1 as (partition by t1.i1)); +1 +drop table t1,t2; +# Another testcase +CREATE TABLE t1 (i3 int NOT NULL, i1 int , i2 int , i4 int , PRIMARY key(i2)); +INSERT INTO t1 VALUES (6,72,98,98),(46,1,6952,0); +SELECT i1 FROM t1 +WHERE t1.i3 = +(SELECT ref_4.i2 FROM t1 AS ref_4 +WHERE t1.i2 > (SELECT i3 FROM t1 ORDER BY i3 LIMIT 1 OFFSET 4) +UNION +SELECT ref_6.i2 +FROM (t1 AS ref_5 JOIN t1 AS ref_6 ON ((ref_6.i1 > ref_6.i2) OR (ref_5.i4 < ref_5.i4))) +WHERE (t1.i2 >= t1.i2)); +i1 +drop table t1; +# +# MDEV-25761: Assertion `aggr != __null' failed in sub_select_postjoin_aggr +# +CREATE TABLE t1 ( a int NOT NULL PRIMARY KEY) engine=innodb; +INSERT INTO t1 VALUES (0),(4),(31); +CREATE TABLE t2 (i int) engine=innodb; +DELETE FROM t1 WHERE t1.a = +(SELECT t1.a FROM t2 UNION SELECT DISTINCT 52 FROM t2 r WHERE t1.a = t1.a); +DROP TABLE t1,t2; diff --git a/mysql-test/t/subselect4.test b/mysql-test/t/subselect4.test index bd1e20cb5d63e..93389571c5c30 100644 --- a/mysql-test/t/subselect4.test +++ b/mysql-test/t/subselect4.test @@ -1039,6 +1039,8 @@ INSERT IGNORE INTO t3 VALUES (0),(0); set @@optimizer_switch='semijoin=off'; +--echo # NOTE: the following should have 'SUBQUERY', not 'DEPENDENT SUBQUERY' +--echo # for line with id=2, see MDEV-27794. EXPLAIN SELECT * FROM t1 WHERE (SELECT f2 FROM t2 diff --git a/mysql-test/t/union_innodb.test b/mysql-test/t/union_innodb.test new file mode 100644 index 0000000000000..cb805a30bb41d --- /dev/null +++ b/mysql-test/t/union_innodb.test @@ -0,0 +1,45 @@ +--source include/have_innodb.inc + +--echo # +--echo # MDEV-25636: Bug report: abortion in sql/sql_parse.cc:6294 +--echo # + +CREATE TABLE t1 (i1 int)engine=innodb; +INSERT INTO `t1` VALUES (62),(66); +CREATE TABLE t2 (i1 int) engine=innodb; + +SELECT 1 FROM t1 +WHERE t1.i1 =( SELECT t1.i1 FROM t2 + UNION SELECT i1 FROM (t1 AS dt1 natural JOIN t2) + window w1 as (partition by t1.i1)); + +drop table t1,t2; + +--echo # Another testcase +CREATE TABLE t1 (i3 int NOT NULL, i1 int , i2 int , i4 int , PRIMARY key(i2)); +INSERT INTO t1 VALUES (6,72,98,98),(46,1,6952,0); + +SELECT i1 FROM t1 +WHERE t1.i3 = + (SELECT ref_4.i2 FROM t1 AS ref_4 + WHERE t1.i2 > (SELECT i3 FROM t1 ORDER BY i3 LIMIT 1 OFFSET 4) + UNION + SELECT ref_6.i2 + FROM (t1 AS ref_5 JOIN t1 AS ref_6 ON ((ref_6.i1 > ref_6.i2) OR (ref_5.i4 < ref_5.i4))) + WHERE (t1.i2 >= t1.i2)); + +drop table t1; + +--echo # +--echo # MDEV-25761: Assertion `aggr != __null' failed in sub_select_postjoin_aggr +--echo # + +CREATE TABLE t1 ( a int NOT NULL PRIMARY KEY) engine=innodb; +INSERT INTO t1 VALUES (0),(4),(31); + +CREATE TABLE t2 (i int) engine=innodb; + +DELETE FROM t1 WHERE t1.a = + (SELECT t1.a FROM t2 UNION SELECT DISTINCT 52 FROM t2 r WHERE t1.a = t1.a); + +DROP TABLE t1,t2; diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index 125bbfe1bfd82..47ff2836aba9b 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -3898,7 +3898,21 @@ bool st_select_lex::optimize_unflattened_subqueries(bool const_only) } if (empty_union_result) subquery_predicate->no_rows_in_result(); - if (!is_correlated_unit) + + if (is_correlated_unit) + { + /* + Some parts of UNION are not correlated. This means we will need to + re-execute the whole UNION every time. Mark all parts of the UNION + as correlated so that they are prepared to be executed multiple + times (if we don't do that, some part of the UNION may free its + execution data at the end of first execution and crash on the second + execution) + */ + for (SELECT_LEX *sl= un->first_select(); sl; sl= sl->next_select()) + sl->uncacheable |= UNCACHEABLE_DEPENDENT; + } + else un->uncacheable&= ~UNCACHEABLE_DEPENDENT; subquery_predicate->is_correlated= is_correlated_unit; }