The GROUP_CONCAT uses its own temporary table. When ROLLUP is present
it creates the second copy of Item_func_group_concat. This copy receives the
same list of arguments that original group_concat does. When the copy is
set up the result_fields of functions from the argument list are reset to the
temporary table of this copy.
As a result of this action data from functions flow directly to the ROLLUP copy
and the original group_concat functions shows wrong result.
Since queries with COUNT(DISTINCT ...) use temporary tables to store
the results the COUNT function they are also affected by this bug.
The idea of the fix is to copy content of the result_field for the function
under GROUP_CONCAT/COUNT from the first temporary table to the second one,
rather than setting result_field to point to the second temporary table.
To achieve this goal force_copy_fields flag is added to Item_func_group_concat
and Item_sum_count_distinct classes. This flag is initialized to 0 and set to 1
into the make_unique() member function of both classes.
To the TMP_TABLE_PARAM structure is modified to include the similar flag as
well.
The create_tmp_table() function passes that flag to create_tmp_field().
When the flag is set the create_tmp_field() function will set result_field
as a source field and will not reset that result field to newly created
field for Item_func_result_field and its descendants. Due to this there
will be created copy func to copy data from old result_field to newly
created field.
mysql-test/t/func_gconcat.test:
Added test for bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
mysql-test/r/func_gconcat.result:
Added test for bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
sql/sql_table.cc:
Fixed bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
Added 0 as a last parameter to create_tmp_field() to force old behaviour.
sql/sql_select.cc:
Fixed bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
Added the flag 'make_copy_field' to create_tmp_field(), so that for Item_result_field descendants create_tmp_field() sets the item's result field as a source field and deny resetting that result field to a new value.
sql/sql_class.h:
Fixed bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
Added the flag 'force_copy_fields' to the structure TMP_TABLE_PARAM in order to make create_tmp_field() force the creation of 'copy_field' objects.
sql/mysql_priv.h:
Fixed bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
Added the bool parameter 'make_copy_field' to create_tmp_field().
sql/item_sum.cc:
Fixed bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
Added initialization of the force_copy_fields flag and passing it to create_tmp_table() through TMP_TBLE_PARAM in the Item_func_group_concat and Item_sum_count_distinct member functions.
sql/item_sum.h:
Fixed bug#15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
Added the flag 'force_copy_fields' to the Item_func_group_concat and Item_sum_count_distinct classes.
Give space for second and third slave port
mysql-test/mysql-test-run.pl:
Give space for second and third slave port
Define shell variables for all ports, and
list these at startup
mysql-test/mysql-test-run.sh:
Give space for second and third slave port
errorneously abort reporting failure to kill child processes, where in
reality the problem was merely that the child had become a zombie because
of missing waitpid() call.
mysql-test/lib/mtr_process.pl:
Fix race (on some platforms) when killing processes.
Bug #17257 ndb, update fails for inner joins if tables do not have Primary Key
change: the allocated area by setValue may not be around for later, store hidden key in special member variable instead
mysql-test/r/ndb_basic.result:
Bug #17249 delete statement with join where clause fails when table do not have pk
Bug #17257 update fails for inner joins if tables do not have Primary Key
mysql-test/t/ndb_basic.test:
Bug #17249 delete statement with join where clause fails when table do not have pk
Bug #17257 update fails for inner joins if tables do not have Primary Key
sql/ha_ndbcluster.cc:
Bug #17249 delete statement with join where clause fails when table do not have pk
Bug #17257 update fails for inner joins if tables do not have Primary Key
change: the allocated area by setValue may not be around for later, store hidden key in special member variable instead
sql/ha_ndbcluster.h:
Bug #17249 delete statement with join where clause fails when table do not have pk
Bug #17257 update fails for inner joins if tables do not have Primary Key
change: the allocated area by setValue may not be around for later, store hidden key in special member variable instead
support-files/mysql.spec.sh:
Use "-i" on "make test-force";
this will prevent "make" from writing "***" which in turn was treated as a _build_ error
by the log evaluation tool, causing it not to list the failing tests.
into perch.ndb.mysql.com:/home/jonas/src/mysql-4.1
ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
Auto merged
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
Auto merged
Introduce new variable c_newest_restorable_gci
which is set _after_ both GCP_SAVE and COPY_GCI
This variable is used when cutting redo (calcKeepGci)
Also make sure complete GCI is run inbetween LCP's
ndb/src/kernel/blocks/dbdih/Dbdih.hpp:
Introduce new variable c_newest_restorable_gci
which is set _after_ both GCP_SAVE and COPY_GCI
This variable is used when cutting redo (calcKeepGci)
Also make sure complete GCI is run inbetween LCP's
ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
Introduce new variable c_newest_restorable_gci
which is set _after_ both GCP_SAVE and COPY_GCI
This variable is used when cutting redo (calcKeepGci)
Also make sure complete GCI is run inbetween LCP's
mysql-test/r/kill.result:
This result chenged because of the correspondent test change.
mysql-test/t/kill.test:
This test fixed for kill on Mac OS X (which do not send OK)
Bug #17158 load data infile of char values into table of char with no (PK) fails to load
Bug #17081 Doing "LOAD DATA INFILE" directly after delete can cause missing data
mysql-test/r/ndb_load.result:
New BitKeeper file ``mysql-test/r/ndb_load.result''
mysql-test/t/ndb_load.test:
New BitKeeper file ``mysql-test/t/ndb_load.test''
better error message on invalid config change
ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
fix typo
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
Change error message...note that this is a guess
ndb/test/ndbapi/testBlobs.cpp:
do batched deletes + list commit across open cursor test cases
ndb/tools/delete_all.cpp:
if blobs, no commit across open cursor (single trans)
cases listed in testBlobs.cpp, analyze later (in 5.0 maybe)
mysql-test/r/ndb_blob.result:
replace+tinyblob back-patch from 5.0
mysql-test/t/ndb_blob.test:
replace+tinyblob back-patch from 5.0
ndb/src/ndbapi/NdbBlob.cpp:
replace+tinyblob back-patch from 5.0
Fixed that fulltext query + union results in unexpected behaviour.
sql/item_func.h:
Remove access to table object from cleanup() as the table object
may have been dropped earlier (In case of temporary tables or of
close_thread_tables() is run before cleanup())
This fixed a bug with access to already freed memory
sql/sql_base.cc:
Reset variables used by fulltext
libmysql/libmysql.c:
stmt->mysql could be 0x0 if the connection has failed between prepare and execute
or any other operation. thus if the user decides to use mysql_stmt_reset()
we should not segfault.
tests/mysql_client_test.c:
test for bug #12744 (MYSQL_STMT operations cause seg fault after connection reset)
MATCH and FULLTEXT
Fixed that fulltext query using PS results in unexpected behaviour
when executed 2 or more times.
mysql-test/r/fulltext.result:
Testcase for BUG#14496.
mysql-test/t/fulltext.test:
Testcase for BUG#14496.
sql/item_func.h:
In Item_func_match::cleanup() always reset ft_handler to 0.
- Change "mysql_create_db" to not call "send_ok" if in silent mode i.e. called from "load_master_data"
- Change mysqltest to detect when there aren't as many warnings available as was reported.
client/mysqltest.c:
Call "die" if warnings were reported but there weren't any warnings to retrieve
sql/sql_db.cc:
Don't call "send_ok" if in silent mode.
Applied innodb-4.1-ss20 snapshot.
innobase/btr/btr0sea.c:
Applied innodb-4.1-ss20 snapshot.
Account for a race condition when dropping the adaptive
hash index for a B-tree page (Bug #16582).
btr_search_drop_page_hash_index(): Retry the operation if a hash
index with different parameters was built meanwhile. Add
diagnostics for the case that hash node pointers to the page
remain. This fix is from Heikki.
btr_search_info_update_hash(), btr_search_info_update_slow():
Document the parameter "info" as in/out.
innobase/fil/fil0fil.c:
Applied innodb-4.1-ss20 snapshot.
Keep track on unflushed modifications to file spaces. When
there are tens of thousnads of file spaces, flushing all files
in fil_flush_file_spaces() would be very slow (Bug #16582).
fil_flush_file_spaces(): Only flush unflushed file spaces.
fil_space_t, fil_system_t: Add a list of unflushed spaces.
innobase/include/btr0sea.ic:
Applied innodb-4.1-ss20 snapshot.
btr_search_info_update_hash(), btr_search_info_update_slow():
Document the parameter "info" as in/out.
Bug#16780: Extend port range to make space for 5.1 NDBCLUSTER_PORT_SLAVE
mysql-test/mysql-test-run.sh:
Bug#16780: Extend port range to make space for 5.1 NDBCLUSTER_PORT_SLAVE
mysql-test/t/rpl_ignore_table-slave.opt:
New BitKeeper file ``mysql-test/t/rpl_ignore_table-slave.opt''
mysql-test/t/rpl_ignore_table.test:
New BitKeeper file ``mysql-test/t/rpl_ignore_table.test''
sql/sql_parse.cc:
BUG#15699,16487 merge of the fix made in 5.0
mysql-test/r/rpl_multi_update4.result:
New BitKeeper file ``mysql-test/r/rpl_multi_update4.result''
mysql-test/t/rpl_multi_update4-slave.opt:
New BitKeeper file ``mysql-test/t/rpl_multi_update4-slave.opt''
mysql-test/t/rpl_multi_update4.test:
New BitKeeper file ``mysql-test/t/rpl_multi_update4.test''
mysql-test/r/rpl_ignore_table.result:
New BitKeeper file ``mysql-test/r/rpl_ignore_table.result''