Loading mysql-test/mysql-test-run.pl +4 −2 Original line number Diff line number Diff line Loading @@ -2137,7 +2137,8 @@ sub mysqld_start ($$$$) { { if ( $pid= mtr_spawn($exe, $args, "", $master->[$idx]->{'path_myerr'}, $master->[$idx]->{'path_myerr'}, "") ) $master->[$idx]->{'path_myerr'}, "", { append_log_file => 1 }) ) { return sleep_until_file_created($master->[$idx]->{'path_mypid'}, $master->[$idx]->{'start_timeout'}, $pid); Loading @@ -2148,7 +2149,8 @@ sub mysqld_start ($$$$) { { if ( $pid= mtr_spawn($exe, $args, "", $slave->[$idx]->{'path_myerr'}, $slave->[$idx]->{'path_myerr'}, "") ) $slave->[$idx]->{'path_myerr'}, "", { append_log_file => 1 }) ) { return sleep_until_file_created($slave->[$idx]->{'path_mypid'}, $master->[$idx]->{'start_timeout'}, $pid); Loading mysql-test/r/view.result +26 −0 Original line number Diff line number Diff line Loading @@ -2262,3 +2262,29 @@ WEEKDAY(date) 1 DROP TABLE t1; DROP VIEW v1, v2, v3; CREATE TABLE t1 ( a int, b int ); INSERT INTO t1 VALUES (1,1),(2,2),(3,3); CREATE VIEW v1 AS SELECT a,b FROM t1; SELECT t1.a FROM t1 GROUP BY t1.a HAVING a > 1; a 2 3 SELECT v1.a FROM v1 GROUP BY v1.a HAVING a > 1; a 2 3 DROP VIEW v1; DROP TABLE t1; CREATE TABLE t1 ( a int, b int ); INSERT INTO t1 VALUES (1,1),(2,2),(3,3); CREATE VIEW v1 AS SELECT a,b FROM t1; SELECT t1.a FROM t1 GROUP BY t1.a HAVING t1.a > 1; a 2 3 SELECT v1.a FROM v1 GROUP BY v1.a HAVING v1.a > 1; a 2 3 DROP VIEW v1; DROP TABLE t1; mysql-test/t/view.test +26 −0 Original line number Diff line number Diff line Loading @@ -2139,3 +2139,29 @@ SELECT * FROM v3; DROP TABLE t1; DROP VIEW v1, v2, v3; # # Bug #13411: crash when using non-qualified view column in HAVING clause # CREATE TABLE t1 ( a int, b int ); INSERT INTO t1 VALUES (1,1),(2,2),(3,3); CREATE VIEW v1 AS SELECT a,b FROM t1; SELECT t1.a FROM t1 GROUP BY t1.a HAVING a > 1; SELECT v1.a FROM v1 GROUP BY v1.a HAVING a > 1; DROP VIEW v1; DROP TABLE t1; # # Bug #13410: failed name resolution for qualified view column in HAVING # CREATE TABLE t1 ( a int, b int ); INSERT INTO t1 VALUES (1,1),(2,2),(3,3); CREATE VIEW v1 AS SELECT a,b FROM t1; SELECT t1.a FROM t1 GROUP BY t1.a HAVING t1.a > 1; SELECT v1.a FROM v1 GROUP BY v1.a HAVING v1.a > 1; DROP VIEW v1; DROP TABLE t1; sql/item.cc +4 −4 Original line number Diff line number Diff line Loading @@ -1687,7 +1687,7 @@ bool Item_field::eq(const Item *item, bool binary_cmp) const return 0; Item_field *item_field= (Item_field*) item; if (item_field->field) if (item_field->field && field) return item_field->field == field; /* We may come here when we are trying to find a function in a GROUP BY Loading @@ -1701,10 +1701,10 @@ bool Item_field::eq(const Item *item, bool binary_cmp) const */ return (!my_strcasecmp(system_charset_info, item_field->name, field_name) && (!item_field->table_name || (!item_field->table_name || !table_name || (!my_strcasecmp(table_alias_charset, item_field->table_name, table_name) && (!item_field->db_name || (!item_field->db_name || !db_name || (item_field->db_name && !strcmp(item_field->db_name, db_name)))))); } Loading Loading @@ -2983,7 +2983,7 @@ static Item** find_field_in_group_list(Item *find_item, ORDER *group_list) for (ORDER *cur_group= group_list ; cur_group ; cur_group= cur_group->next) { if ((*(cur_group->item))->type() == Item::FIELD_ITEM) if ((*(cur_group->item))->real_item()->type() == Item::FIELD_ITEM) { cur_field= (Item_field*) *cur_group->item; cur_match_degree= 0; Loading sql/sql_base.cc +1 −1 Original line number Diff line number Diff line Loading @@ -3459,7 +3459,7 @@ find_item_in_list(Item *find, List<Item> &items, uint *counter, } } } else if (!table_name && (item->eq(find,0) || else if (!table_name && (find->eq(item,0) || find->name && item->name && !my_strcasecmp(system_charset_info, item->name,find->name))) Loading Loading
mysql-test/mysql-test-run.pl +4 −2 Original line number Diff line number Diff line Loading @@ -2137,7 +2137,8 @@ sub mysqld_start ($$$$) { { if ( $pid= mtr_spawn($exe, $args, "", $master->[$idx]->{'path_myerr'}, $master->[$idx]->{'path_myerr'}, "") ) $master->[$idx]->{'path_myerr'}, "", { append_log_file => 1 }) ) { return sleep_until_file_created($master->[$idx]->{'path_mypid'}, $master->[$idx]->{'start_timeout'}, $pid); Loading @@ -2148,7 +2149,8 @@ sub mysqld_start ($$$$) { { if ( $pid= mtr_spawn($exe, $args, "", $slave->[$idx]->{'path_myerr'}, $slave->[$idx]->{'path_myerr'}, "") ) $slave->[$idx]->{'path_myerr'}, "", { append_log_file => 1 }) ) { return sleep_until_file_created($slave->[$idx]->{'path_mypid'}, $master->[$idx]->{'start_timeout'}, $pid); Loading
mysql-test/r/view.result +26 −0 Original line number Diff line number Diff line Loading @@ -2262,3 +2262,29 @@ WEEKDAY(date) 1 DROP TABLE t1; DROP VIEW v1, v2, v3; CREATE TABLE t1 ( a int, b int ); INSERT INTO t1 VALUES (1,1),(2,2),(3,3); CREATE VIEW v1 AS SELECT a,b FROM t1; SELECT t1.a FROM t1 GROUP BY t1.a HAVING a > 1; a 2 3 SELECT v1.a FROM v1 GROUP BY v1.a HAVING a > 1; a 2 3 DROP VIEW v1; DROP TABLE t1; CREATE TABLE t1 ( a int, b int ); INSERT INTO t1 VALUES (1,1),(2,2),(3,3); CREATE VIEW v1 AS SELECT a,b FROM t1; SELECT t1.a FROM t1 GROUP BY t1.a HAVING t1.a > 1; a 2 3 SELECT v1.a FROM v1 GROUP BY v1.a HAVING v1.a > 1; a 2 3 DROP VIEW v1; DROP TABLE t1;
mysql-test/t/view.test +26 −0 Original line number Diff line number Diff line Loading @@ -2139,3 +2139,29 @@ SELECT * FROM v3; DROP TABLE t1; DROP VIEW v1, v2, v3; # # Bug #13411: crash when using non-qualified view column in HAVING clause # CREATE TABLE t1 ( a int, b int ); INSERT INTO t1 VALUES (1,1),(2,2),(3,3); CREATE VIEW v1 AS SELECT a,b FROM t1; SELECT t1.a FROM t1 GROUP BY t1.a HAVING a > 1; SELECT v1.a FROM v1 GROUP BY v1.a HAVING a > 1; DROP VIEW v1; DROP TABLE t1; # # Bug #13410: failed name resolution for qualified view column in HAVING # CREATE TABLE t1 ( a int, b int ); INSERT INTO t1 VALUES (1,1),(2,2),(3,3); CREATE VIEW v1 AS SELECT a,b FROM t1; SELECT t1.a FROM t1 GROUP BY t1.a HAVING t1.a > 1; SELECT v1.a FROM v1 GROUP BY v1.a HAVING v1.a > 1; DROP VIEW v1; DROP TABLE t1;
sql/item.cc +4 −4 Original line number Diff line number Diff line Loading @@ -1687,7 +1687,7 @@ bool Item_field::eq(const Item *item, bool binary_cmp) const return 0; Item_field *item_field= (Item_field*) item; if (item_field->field) if (item_field->field && field) return item_field->field == field; /* We may come here when we are trying to find a function in a GROUP BY Loading @@ -1701,10 +1701,10 @@ bool Item_field::eq(const Item *item, bool binary_cmp) const */ return (!my_strcasecmp(system_charset_info, item_field->name, field_name) && (!item_field->table_name || (!item_field->table_name || !table_name || (!my_strcasecmp(table_alias_charset, item_field->table_name, table_name) && (!item_field->db_name || (!item_field->db_name || !db_name || (item_field->db_name && !strcmp(item_field->db_name, db_name)))))); } Loading Loading @@ -2983,7 +2983,7 @@ static Item** find_field_in_group_list(Item *find_item, ORDER *group_list) for (ORDER *cur_group= group_list ; cur_group ; cur_group= cur_group->next) { if ((*(cur_group->item))->type() == Item::FIELD_ITEM) if ((*(cur_group->item))->real_item()->type() == Item::FIELD_ITEM) { cur_field= (Item_field*) *cur_group->item; cur_match_degree= 0; Loading
sql/sql_base.cc +1 −1 Original line number Diff line number Diff line Loading @@ -3459,7 +3459,7 @@ find_item_in_list(Item *find, List<Item> &items, uint *counter, } } } else if (!table_name && (item->eq(find,0) || else if (!table_name && (find->eq(item,0) || find->name && item->name && !my_strcasecmp(system_charset_info, item->name,find->name))) Loading