HEAP tables can't index BIT fields. Due to this when grouping by such fields is
needed they are converted to a fields of the LONG type when temporary table
is being created. But a side effect of this is that a wrong type of BIT
fields is returned to a client.
Now the JOIN::prepare and the create_distinct_group functions are create
additional hidden copy of BIT fields to preserve original fields untouched.
New hidden fields are used for grouping instead.
mysql-test/t/type_bit.test:
Added a test case for the bug#30245: A wrong type of a BIT field is reported when grouped by it.
mysql-test/r/type_bit.result:
Added a test case for the bug#30245: A wrong type of a BIT field is reported when grouped by it.
sql/sql_select.cc:
Bug#30245: A wrong type of a BIT field is reported when grouped by it.
Now the JOIN::prepare and the create_distinct_group functions are create
additional hidden copy of BIT fields to preserve original fields untouched.
New hidden fields are used for grouping instead.
The bug caused memory corruption for some queries with top OR level
in the WHERE condition if they contained equality predicates and
other sargable predicates in disjunctive parts of the condition.
The corruption happened because the upper bound of the memory
allocated for KEY_FIELD and SARGABLE_PARAM internal structures
containing info about potential lookup keys was calculated incorrectly
in some cases. In particular it was calculated incorrectly when the
WHERE condition was an OR formula with disjuncts being AND formulas
including equalities and other sargable predicates.
mysql-test/r/select.result:
Added a test case for bug #30396.
mysql-test/t/select.test:
Added a test case for bug #30396.
sql/item_cmpfunc.h:
Removed max_members from the COND_EQUAL class as not useful anymore.
sql/sql_base.cc:
Added the max_equal_elems field to the st_select_lex structure.
sql/sql_lex.cc:
Added the max_equal_elems field to the st_select_lex structure.
sql/sql_lex.h:
Added the max_equal_elems field to the st_select_lex structure.
The field contains the maximal number of elements in multiple equalities
built for the query conditions.
sql/sql_select.cc:
Fixed bug #30396.
The bug caused memory corruption for some queries with top OR level
in the WHERE condition if they contained equality predicates and
other sargable predicates in disjunctive parts of the condition.
The corruption happened because the upper bound of the memory
allocated for KEY_FIELD and SARGABLE_PARAM internal structures
containing info about potential lookup keys was calculated incorrectly
in some cases. In particular it was calculated incorrectly when the
WHERE condition was an OR formula with disjuncts being AND formulas
including equalities and other sargable predicates.
The max_equal_elems field to the st_select_lex structure is used now
to calculate the above mentioned upper bound. The field contains the
maximal number of elements in multiple equalities built for the query
conditions.
mysql_ha_open calls mysql_ha_close on the error path (unsupported) to close the (opened) table before inserting it into the tables hash list handler_tables_hash) but mysql_ha_close only closes tables which are on the hash list, causing the table to be left open and locked.
This change moves the table close logic into a separate function that is always called on the error path of mysql_ha_open or on a normal handler close (mysql_ha_close).
mysql-test/r/handler.result:
Bug#25856 test result
mysql-test/t/handler.test:
Bug#25856 test case
sql/sql_handler.cc:
Move the table close logic into a separate function that is always called on the error path of mysql_ha_open or on a normal handler close
ORDER BY is used
The range analysis module did not correctly signal to the
handler that a range represents a ref (EQ_RANGE flag). This causes
non-range queries like
SELECT ... FROM ... WHERE keypart_1=const, ..., keypart_n=const
ORDER BY ... FOR UPDATE
to wait for a lock unneccesarily if another running transaction uses
SELECT ... FOR UPDATE on the same table.
Fixed by setting EQ_RANGE for all range accesses that represent
an equality predicate.
mysql-test/r/innodb_mysql.result:
bug#28570: Test Result
mysql-test/t/innodb_mysql.test:
bug#28570: Test Case
sql/handler.cc:
bug#28570: Updated comment
sql/opt_range.cc:
bug#28570: Removed the criterion that key has to be unique (HA_NOSAME) in
order for the EQ_RANGE flag to be set. It is sufficient that the range
represent a ref access.
ChangeSet@1.2575, 2007-08-07 19:16:06+02:00, msvensson@pilot.(none) +2 -0
Bug#26793 mysqld crashes when doing specific query on information_schema
- Drop the newly created user user1@localhost
- Cleanup testcase
mysql-test/r/ndb_bug26793.result:
mysql-test/r/ndb_bug26793.result@1.3, 2007-08-07 19:16:04+02:00, msvensson@pilot.(none)
+1 -6
Update test result
mysql-test/t/ndb_bug26793.test:
mysql-test/t/ndb_bug26793.test@1.3, 2007-08-07 19:16:04+02:00, msvensson@pilot.(none) +8
-11
- Remove the drop/restore of anonymous users - there are no such users
by default anymore(if there were, they would probably be in mysql.user)
- Switch back to default connection before cleanup
- Drop user1@localhost as part of cleanup
Write test results to var/log
Add test for "source" and variable expansion
client/mysqltest.c:
Improve error messages
Write .reject file to the location specified by --logdir
mysql-test/mysql-test-run.pl:
Pass logdir to mysqltest, to get test results written to var/log
mysql-test/r/mysqltest.result:
Update test results
mysql-test/t/mysqltest.test:
Add test for "source" and variable expansion
Update test after writing result in var/log
also fix "while" and "connect"
It's now possible to write "if("
client/mysqltest.c:
Don't require a space between for example "if" and "(". This should
also fix "while" and "connect"
mysql-test/t/mysqltest.test:
Remove space between if and ( to check it works
into pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
client/mysqltest.c:
Auto merged
mysql-test/t/mysqltest.test:
Auto merged
mysql-test/r/mysqltest.result:
SCCS merged
client/mysqltest.c:
- Remove the extra newline first in the file produced by
write_file and append_file
- Add check for too many arguments passed to 'check_command_args'
mysql-test/r/mysqltest.result:
Update test result
mysql-test/t/mysqltest.test:
Add test to check that no extra newline is created
into bodhi.(none):/opt/local/work/mysql-5.0-runtime
mysql-test/r/federated.result:
Auto merged
mysql-test/t/federated.test:
Auto merged
sql/item.cc:
Auto merged
ndb/src/ndbapi/NdbDictionaryImpl.cpp:
Twiddle the "replicaCount" and "fragCount" variable when restore data from different endian.
ndb/src/ndbapi/NdbDictionaryImpl.hpp:
Add byte order variable
ndb/tools/restore/Restore.cpp:
Twiddle blob, datatime,timestamp when do restore in different endian.
mysql-test/r/ndb_restore_different_endian_data.result:
Test case result for restore data from different endian
mysql-test/std_data/ndb_backup50_data_be/BACKUP-1-0.1.Data:
Test case data
mysql-test/std_data/ndb_backup50_data_be/BACKUP-1-0.2.Data:
Test case data
mysql-test/std_data/ndb_backup50_data_be/BACKUP-1.1.ctl:
Test case data
mysql-test/std_data/ndb_backup50_data_be/BACKUP-1.1.log:
Test case data
mysql-test/std_data/ndb_backup50_data_be/BACKUP-1.2.ctl:
Test case data
mysql-test/std_data/ndb_backup50_data_be/BACKUP-1.2.log:
Test case data
mysql-test/std_data/ndb_backup50_data_le/BACKUP-1-0.1.Data:
Test case data
mysql-test/std_data/ndb_backup50_data_le/BACKUP-1-0.2.Data:
Test case data
mysql-test/std_data/ndb_backup50_data_le/BACKUP-1.1.ctl:
Test case data
mysql-test/std_data/ndb_backup50_data_le/BACKUP-1.1.log:
Test case data
mysql-test/std_data/ndb_backup50_data_le/BACKUP-1.2.ctl:
Test case data
mysql-test/std_data/ndb_backup50_data_le/BACKUP-1.2.log:
Test case data
mysql-test/t/ndb_restore_different_endian_data.test:
Test case for restore data from different endian
under terms of bug#28875 for better performance.
The change appeared to require more changes in item_cmpfunc.cc,
which is dangerous in 5.0.
Conversion between a latin1 column and an ascii string constant
stopped to work.
mysql-test/r/ctype_recoding.result:
Adding test case.
mysql-test/t/ctype_recoding.test:
Adding test case.
into pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
client/mysqltest.c:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/mysqltest.result:
Auto merged
mysql-test/r/sp.result:
Auto merged
mysql-test/t/mysqltest.test:
Auto merged
mysql-test/t/sp.test:
Auto merged
- Update comments
- Make "write_file" fail if file already exist
- Remove temporary files created by test cases
client/mysqltest.c:
Improve function comments
Make write_file fail if file already exist
mysql-test/r/mysqltest.result:
Update test result after adding new test and updating description
of argumements to chmod
mysql-test/t/bootstrap.test:
Remove temporary file created by testcase
mysql-test/t/mysql.test:
Remove temporary file created by testcase
mysql-test/t/mysqladmin.test:
Remove temporary file created by testcase
mysql-test/t/mysqltest.test:
Remove temporary file created by testcase
Add test to show that "write_file" fails if file already exist
mysql-test/t/sp-destruct.test:
Remove temporary file created by testcase
Two character mappings were way off (backtick and tilde were "E"
and "Y"!), and three others were slightly rotated. The first
would cause collisions, and the latter was probably benign.
Now, assign the character mappings exactly to their normal values.
sql/share/charsets/ascii.xml:
Change the character mapping for
"`" to "`" (was "E") and
"[" to "[" (was "\") and
"\" to "\" (was "]") and
"]" to "]" (was "[") and
"~" to "~" (was "Y").
strings/ctype-extra.c:
Generated from charsets directory.
mysql-test/r/ctype_ascii.result:
Add new test file.
Test all combinations of printable letter comparisons for
similarity.
mysql-test/t/ctype_ascii.test:
Add new test file.
Test all combinations of printable letter comparisons for
similarity.
MySQL replicates the time zone only when operations that involve
it are performed. This is controlled by a flag. But this flag
is set only on successful operation.
The flag must be set also when there is an error that involves
a timezone (so the master would replicate the error to the slaves).
Fixed by moving the setting of the flag before the operation
(so it apples to errors as well).
mysql-test/r/rpl_timezone.result:
Bug #29536: test case
mysql-test/t/rpl_timezone.test:
Bug #29536: test case
sql/field.cc:
Bug #29536: move setting of the flag before the operation
(so it apples to errors as well).
sql/time.cc:
Bug #29536: move setting of the flag before the operation
(so it apples to errors as well).
Update comments
Add more tests for "let from query"
client/mysqltest.c:
Remove NOT_YET code
Update comments
mysql-test/r/mysqltest.result:
Add more tests for "let from query"
mysql-test/t/mysqltest.test:
Add more tests for "let from query"
into shellback.(none):/home/msvensson/mysql/mysql-5.0-maint
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/sp.result:
Auto merged
mysql-test/t/sp.test:
Auto merged
Search "relwithdebinfo" directory in CMake Visual Studio build
Search for "mysqld-debug" even in source tree
mysql-test/mysql-test-run.pl:
Search "relwithdebinfo" directory in CMake Visual Studio build
Search for "mysqld-debug" even in source tree
This bug manifested itself for queries with grouping by columns of
the BIT type. It led to wrong comparisons of bit-field values and
wrong result sets.
Bit-field values never cannot be compared as binary values. Yet
the class Field_bit had an implementation of the cmp method that
compared bit-fields values as binary values.
Also the get_image and set_image methods of the base class Field
cannot be used for objects of the Field_bit class.
Now these methods are declared as virtual and specific implementations
of the methods are provided for the class Field_bit.
mysql-test/r/type_bit.result:
Added a test case for bug #30219.
mysql-test/t/type_bit.test:
Added a test case for bug #30219.
sql/field.h:
Fix bug #30219.
This bug manifested itself for queries with grouping by columns of
the BIT type. It led to wrong comparisons of bit-field values and
wrong result sets.
Bit-field values never cannot be compared as binary values. Yet
the class Field_bit had an implementation of the cmp method that
compared bit-fields values as binary values.
Also the get_image and set_image methods of the base class Field
cannot be used for objects of the Field_bit class.
Now these methods are declared as virtual and specific implementations
of these methods are provided for the class Field_bit.
into dl145h.mysql.com:/data0/mkindahl/mysql-5.0-2team
mysql-test/r/func_time.result:
Auto merged
mysql-test/t/func_time.test:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
A test case was waiting for a fixed number of seconds for a specific
state of the slave IO thread to take place.
Fixed by waiting in a loop for that specific thread state instead
(or timeout).
mysql-test/t/rpl_relayspace.test:
Bug #25228: fixed test case
- Move the code to generate test report to the test tool(in this
case mysqltest) where the best control of what failed is
- Simplify the code in mysql-test-run.pl
- mysqltest will now find what diff to use in a best effort attempt
using "diff -u", "diff -c" and finally dumping the two files verbatim
in the report.
client/mysqltest.c:
- Add new option --tail-lines indicating how many lines of the result to output
when generating report for a failure
- Remove eval_result, noone knows what it should do and it's not used.
- Add support for best effort execution of systems builtin "diff",
try with "diff -u" and "diff -c" and if that fails dump the whole content
of teh two files to report
- Use one common function when comapring two files, used when test
has completed and the result should be compared to the .result file
as well as using it from myqltest's builtin diff_files command.
- Output the last lines og the result so far in the report that mysqltest
generates in case of a test failure.
mysql-test/lib/mtr_report.pl:
- Remove code for generating diff between .reject and .result file,
that is handled by mysqltest(or the test tool) from now on.
- Add better comments
mysql-test/mysql-test-run.pl:
- Remove the --udiff flag to mysql-test-run.pl, if the systems diff supports
unified diff it will be used automatically
- Remove the code for "mtr_show_failed_diff", the report from mysqltest
will know include the diff so if mysqltest(or another test tool)
fails, just display it's report what went wrong
- Pass --tail-lines=20 to mysqltest to it will shos the last 20 lines
from the result in the report in case of failure.
mysql-test/r/mysqltest.result:
Update result file now when the output from mysqltest has been sent to /dev/null
mysql-test/t/mysqltest.test:
- Improve tests for --diff_files
- Remove temporary files in var/tmp generated in the fly
- Send output from test for --diff_files to /deb/null since only the error
code it returns are of interest and tyhe outpu may vary depending
on what builtin diff is being used.