Loading mysql-test/r/view.result +13 −0 Original line number Diff line number Diff line Loading @@ -2262,3 +2262,16 @@ 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; mysql-test/t/view.test +15 −0 Original line number Diff line number Diff line Loading @@ -2139,3 +2139,18 @@ 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; sql/item.cc +3 −3 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 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/r/view.result +13 −0 Original line number Diff line number Diff line Loading @@ -2262,3 +2262,16 @@ 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;
mysql-test/t/view.test +15 −0 Original line number Diff line number Diff line Loading @@ -2139,3 +2139,18 @@ 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;
sql/item.cc +3 −3 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
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