Below is the list of changes that have just been committed into a local
5.0 repository of gluh. When gluh does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet
1.2006 06/01/24 16:48:19 gluh@stripped +6 -0
Fix for bug#15307 GROUP_CONCAT() with ORDER BY returns empty set on information_schema(2nd ver)
Fill schema tables with data before filesort if it's necessary
sql/table.h
1.122 06/01/24 16:48:13 gluh@stripped +1 -0
Fix for bug#15307 GROUP_CONCAT() with ORDER BY returns empty set on information_schema(2nd ver)
Fill schema tables with data before filesort if it's necessary
sql/sql_show.cc
1.306 06/01/24 16:48:13 gluh@stripped +11 -1
Fix for bug#15307 GROUP_CONCAT() with ORDER BY returns empty set on information_schema(2nd ver)
Fill schema tables with data before filesort if it's necessary
sql/sql_select.cc
1.388 06/01/24 16:48:13 gluh@stripped +6 -0
Fix for bug#15307 GROUP_CONCAT() with ORDER BY returns empty set on information_schema(2nd ver)
Fill schema tables with data before filesort if it's necessary
sql/sql_prepare.cc
1.167 06/01/24 16:48:13 gluh@stripped +2 -0
Fix for bug#15307 GROUP_CONCAT() with ORDER BY returns empty set on information_schema(2nd ver)
Fill schema tables with data before filesort if it's necessary
mysql-test/t/information_schema.test
1.68 06/01/24 16:48:13 gluh@stripped +9 -0
Fix for bug#15307 GROUP_CONCAT() with ORDER BY returns empty set on information_schema(2nd ver)
test case
mysql-test/r/information_schema.result
1.96 06/01/24 16:48:13 gluh@stripped +8 -0
Fix for bug#15307 GROUP_CONCAT() with ORDER BY returns empty set on information_schema(2nd ver)
test result
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: gluh
# Host: eagle.intranet.mysql.r18.ru
# Root: /home/gluh/MySQL/Merge/5.0
--- 1.387/sql/sql_select.cc Mon Jan 23 16:07:42 2006
+++ 1.388/sql/sql_select.cc Tue Jan 24 16:48:13 2006
@@ -11582,6 +11582,12 @@ create_sort_index(THD *thd, JOIN *join,
goto err;
}
}
+
+ /* Fill schema tables with data before filesort if it's necessary */
+ if ((join->select_lex->options & OPTION_SCHEMA_TABLE) &&
+ get_schema_tables_result(join))
+ goto err;
+
if (table->s->tmp_table)
table->file->info(HA_STATUS_VARIABLE); // Get record count
table->sort.found_records=filesort(thd, table,sortorder, length,
--- 1.305/sql/sql_show.cc Mon Jan 16 21:08:42 2006
+++ 1.306/sql/sql_show.cc Tue Jan 24 16:48:13 2006
@@ -3845,7 +3845,16 @@ bool get_schema_tables_result(JOIN *join
TABLE_LIST *table_list= tab->table->pos_in_table_list;
if (table_list->schema_table && thd->fill_derived_tables())
{
- if (&lex->unit != lex->current_select->master_unit()) // is subselect
+ bool is_subselect= (&lex->unit != lex->current_select->master_unit());
+ /*
+ The schema table is already processed and
+ the statement is not a subselect.
+ So we don't need to handle this table again.
+ */
+ if (table_list->is_schema_table_processed && !is_subselect)
+ continue;
+
+ if (is_subselect) // is subselect
{
table_list->table->file->extra(HA_EXTRA_RESET_STATE);
table_list->table->file->delete_all_rows();
@@ -3858,6 +3867,7 @@ bool get_schema_tables_result(JOIN *join
if (table_list->schema_table->fill_table(thd, table_list,
tab->select_cond))
result= 1;
+ table_list->is_schema_table_processed= TRUE;
}
}
thd->no_warnings_for_error= 0;
--- 1.121/sql/table.h Wed Nov 30 23:27:08 2005
+++ 1.122/sql/table.h Tue Jan 24 16:48:13 2006
@@ -515,6 +515,7 @@ typedef struct st_table_list
st_select_lex_unit *derived; /* SELECT_LEX_UNIT of derived table */
ST_SCHEMA_TABLE *schema_table; /* Information_schema table */
st_select_lex *schema_select_lex;
+ bool is_schema_table_processed;
/*
True when the view field translation table is used to convert
schema table fields for backwards compatibility with SHOW command.
--- 1.95/mysql-test/r/information_schema.result Tue Jan 24 15:59:02 2006
+++ 1.96/mysql-test/r/information_schema.result Tue Jan 24 16:48:13 2006
@@ -1089,3 +1089,11 @@ create table mysqltest.t1(a int);
select table_schema from information_schema.tables where table_schema='mysqltest';
table_schema
drop database mysqltest;
+select column_type, group_concat(table_schema, '.', table_name), count(*) as num
+from information_schema.columns where
+table_schema='information_schema' and
+(column_type = 'varchar(7)' or column_type = 'varchar(20)')
+group by column_type order by num;
+column_type group_concat(table_schema, '.', table_name) num
+varchar(20) information_schema.COLUMNS 1
+varchar(7) information_schema.ROUTINES,information_schema.VIEWS 2
--- 1.67/mysql-test/t/information_schema.test Tue Jan 24 15:59:02 2006
+++ 1.68/mysql-test/t/information_schema.test Tue Jan 24 16:48:13 2006
@@ -800,3 +800,12 @@ create table mysqltest.t1(a int);
select table_schema from information_schema.tables where table_schema='mysqltest';
--exec chmod +r $MYSQL_TEST_DIR/var/master-data/mysqltest
drop database mysqltest;
+
+#
+# Bug#15307 GROUP_CONCAT() with ORDER BY returns empty set on information_schema
+#
+select column_type, group_concat(table_schema, '.', table_name), count(*) as num
+from information_schema.columns where
+table_schema='information_schema' and
+(column_type = 'varchar(7)' or column_type = 'varchar(20)')
+group by column_type order by num;
--- 1.166/sql/sql_prepare.cc Wed Nov 23 11:00:46 2005
+++ 1.167/sql/sql_prepare.cc Tue Jan 24 16:48:13 2006
@@ -2111,6 +2111,8 @@ void reinit_stmt_before_use(THD *thd, LE
were closed in the end of previous prepare or execute call.
*/
tables->table= 0;
+ /* Reset is_schema_table_processed value(needed for I_S tables */
+ tables->is_schema_table_processed= FALSE;
if (tables->prep_on_expr)
{
| Thread |
|---|
| • bk commit into 5.0 tree (gluh:1.2006) BUG#15307 | gluh | 24 Jan |