When fields are inserted instead of * in the select list they were not marked
for check for the ONLY_FULL_GROUP_BY mode.
The Field_iterator_table::create_item() function now marks newly created
items for check when in the ONLY_FULL_GROUP_BY mode.
The setup_wild() and the insert_fields() functions now maintain the
cur_pos_in_select_list counter for the ONLY_FULL_GROUP_BY mode.
It was later disabled because the test failed with timeout on one testing box.
The reason for this failing test could not be found because we do not have informations about the conditions on the box during this test.
Jeb and I tried this test on other boxes and it passed.
My experience is that
- tests using NDB need in general often significant more runtime
than comparable tests of other storage engines
- the actual load of the box where the test is running and the
filesystem (nfs could be extreme slow) where the tests are
executed might have a huge impact on the test performance
(runtime * 2 till 3)
- there are sometimes problems with the ports most probably
caused by OS properties (NDB+RPL need many ports) or
parallel tests accidently running with the same ports.
AFAIK these are the reasons why the NDB tests fail sometimes with timeout.
Conclusion: We enable rpl_ndb_ddl again because the failure happens in rare cases
and seems not to be caused by errors within the server or test code.
- The function build_table_filename() builds up a string unconditionally
using the forward slash as a path separator. Later, when the string is
searched for FN_LIBCHAR by the set_up_table_before_create() function, a
null pointer is returned that is finally used by strlen in the
append_file_to_dir() function which causes the crash.
In multi_update::send_data(), the counter of matched rows was not correctly incremented, when during insertion of a new row to a temporay table it had to be converted from HEAP to MyISAM.
This fix changes the logic to increment the counter of matched rows in the following cases:
1. If the error returned from write_row() is zero.
2. If the error returned from write_row() is non-zero, is neither HA_ERR_FOUND_DUPP_KEY nor HA_ERR_FOUND_DUPP_UNIQUE, and a call to create_myisam_from_heap() succeeds.
FORCE_INIT_OF_VARS was not defined for the
debug builds on Windows. This caused LINT_INIT
macro to be defined as NOP and this triggers
false alarms about use of uninitialized with
the runtime libs of some Visual Studio versions.
Fixed by defining FORCE_INIT_OF_VARS to match the
state of the Windows