Commit graph

37009 commits

Author SHA1 Message Date
unknown
07dcc80023 Fixed bug #25798.
This bug may manifest itself not only with the queries for which
the index-merge access method is chosen. It also may display
itself for queries with DISTINCT.

The bug was in how the Unique::get method used the merge_buffers
function. To compare elements in the the queue employed by
merge_buffers() it must use the buffpek_compare function rather
than the function for binary comparison. 


mysql-test/r/innodb_mysql.result:
  Added a test case for bug #25798.
mysql-test/t/innodb_mysql.test:
  Added a test case for bug #25798.
sql/filesort.cc:
  Fixed bug #25798.
  The function merge_buffers() when called from the Uniques::get method
  must use function buffpek_compare to compare elements in the queue it
  employs. The pointer to buffpek_compare and the info for the function
  that compares sorted records are passed to merge_buffers through certain 
  designated fields of the SORTPARAM structure.
sql/sql_sort.h:
  Fixed bug #25798.
  Added fields to the SORTPARAM structure to be used in the function 
  merge_buffers when called by the Uniques::get method.
sql/uniques.cc:
  Fixed bug 25798.
  The function merge_buffers() when called from the Uniques::get method
  must use function buffpek_compare to compare elements in the queue it
  employes.
2007-07-01 15:33:28 -07:00
unknown
8dcd5fca69 Merge olga.mysql.com:/home/igor/mysql-4.1-opt
into  olga.mysql.com:/home/igor/mysql-5.0-opt


mysql-test/r/type_enum.result:
  Auto merged
mysql-test/t/type_enum.test:
  Auto merged
sql/field_conv.cc:
  SCCS merged
2007-06-30 16:24:09 -07:00
unknown
a89259fad8 Merge gleb.loc:/home/uchum/work/bk/5.0-opt-29205
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-06-30 02:47:22 +05:00
unknown
db397d16ad Fixed bug #29205.
When a UNION statement forced conversion of an UTF8
charset value to a binary charset value, the byte
length of the result values was truncated to the
CHAR_LENGTH of the original UTF8 value.


sql/item.cc:
  Fixed bug #29205.
  The calculation of data length was modified in
  the Item_type_holder::join_types method to take into
  account possible conversion of a multibyte charset
  value to a binary charset value, when each
  multibyte character is converted into a sequence
  of bytes (not to a single byte of binary charset).
mysql-test/t/ctype_utf8.test:
  Updated test case for bug #29205.
mysql-test/r/ctype_utf8.result:
  Updated test case for bug #29205.
2007-06-30 02:09:50 +05:00
unknown
6a00ce7170 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/29261-bug-5.0-opt-mysql
2007-06-29 22:22:05 +04:00
unknown
4772a012b3 Bug#29261: Sort order of the collation wasn't used when comparing trailing
spaces.

When the my_strnncollsp_simple function compares two strings and one is a prefix
of another then this function compares characters in the rest of longer key
with the space character to find whether the longer key is greater or less.
But the sort order of the collation isn't used in this comparison. This may
lead to a wrong comparison result, wrongly created index or wrong order of the
result set of a query with the ORDER BY clause.

Now the my_strnncollsp_simple function uses collation sort order to compare
the characters in the rest of longer key with the space character.


mysql-test/t/ctype_collate.test:
  Added a test case for the bug#29261: Sort order of the collation wasn't used
  when comparing trailing spaces.
mysql-test/r/ctype_collate.result:
  Added a test case for the bug#29261: Sort order of the collation wasn't used
  when comparing trailing spaces.
strings/ctype-simple.c:
  Bug#29261: Sort order of the collation wasn't used when comparing trailing
  spaces.
  Now the my_strnncollsp_simple function uses collation sort order to compare
  the characters in the rest of longer key with the space character.
2007-06-29 22:13:33 +04:00
unknown
33eb22a35f Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B27333-gcov-5.0-opt
2007-06-29 11:05:59 +03:00
unknown
c2e961cf2e Bug#27333: subquery grouped for aggregate of outer
query / no aggregate of subquery
 The optimizer counts the aggregate functions that 
 appear as top level expressions (in all_fields) in 
 the current subquery. Later it makes a list of these
 that it uses to actually execute the aggregates in
 end_send_group().
 That count is used in several places as a flag whether
 there are aggregates functions.
 While collecting the above info it must not consider
 aggregates that are not aggregated in the current 
 context. It must treat them as normal expressions 
 instead. Not doing that leads to incorrect data about
 the query, e.g. running a query that actually has no
 aggregate functions as if it has some (and hence is
 expected to return only one row).
 Fixed by ignoring the aggregates that are not aggregated
 in the current context. 
 One other smaller omission discovered and fixed in the 
 process : the place of aggregation was not calculated for
 user defined functions. Fixed by calling 
 Item_sum::init_sum_func_check() and 
 Item_sum::check_sum_func() as it's done for the rest of 
 the aggregate functions.


mysql-test/r/subselect.result:
  Bug #27333: test case
mysql-test/t/subselect.test:
  Bug #27333: test case
sql/item_subselect.cc:
  Bug#27333: need select_lex to filter out
   aggregates that are not aggregated in
   the current select.
sql/item_sum.cc:
  Bug#27333: need select_lex to filter out
   aggregates that are not aggregated in
   the current select.
sql/item_sum.h:
  Bug#27333: calculate the place of 
   aggregation for user defined functions.
sql/sql_select.cc:
  Bug#27333: When counting the aggregated functions
   and collecting a list of them we must not consider
   the aggregates that are not aggregated in the local
   context as "local" : i.e. we must treat them as 
   normal functions and not add them to the aggregate
   functions list.
sql/sql_select.h:
  Bug#27333: need select_lex to filter out
   aggregates that are not aggregated in
   the current select.
2007-06-29 10:39:17 +03:00
unknown
7302360869 Merge bk@192.168.21.1:mysql-5.0-opt
into  mysql.com:/home/hf/work/29247/my50-29247


sql-common/client.c:
  Auto merged
2007-06-29 10:50:56 +05:00
unknown
b728d0a65e Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B26642-5.0-opt
2007-06-28 09:27:27 +03:00
unknown
00b3d3c245 Merge mhansson@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  dl145s.mysql.com:/dev/shm/mhansson/my50-bug28677


sql/sql_class.h:
  Auto merged
sql/sql_insert.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
2007-06-27 14:02:32 +02:00
unknown
0c31d0bbd7 Bug #26642: create index corrupts table definition in .frm
Thanks to Martin Friebe for finding and submitting a fix for this bug!
  
  A table with maximum number of key segments and maximum length key name
  would have a corrupted .frm file, due to an incorrect calculation of the
  complete key length.  Now the key length is computed correctly (I hope) :-)
  
  MyISAM would reject a table with the maximum number of keys and the maximum
  number of key segments in all keys.  It would allow one less than this total
  maximum.  Now MyISAM accepts a table defined with the maximum.  (This is a
  very minor issue.)


myisam/mi_open.c:
  Bug #26642: change >= to > in a comparison (i.e., error 
  only if key_parts_in_table really is greater than 
  MAX_KEY * MAX_KEY_SEG)
mysql-test/r/create.result:
  Bug #26642: test case
mysql-test/t/create.test:
  Bug #26642: test case
sql/table.cc:
  Bug #26642: In create_frm(), fix formula for key_length; 
  it was too small by (keys * 2) bytes
2007-06-27 14:35:49 +03:00
unknown
39ef7a533e Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug29087
2007-06-26 16:37:02 -07:00
unknown
7fbf6303d2 Fixed bug #29251.
Sometimes special 0 ENUM values was ALTERed to normal
empty string ENUM values.

Special 0 ENUM value has the same string representation
as normal ENUM value defined as '' (empty string).
The do_field_string function was used to convert
ENUM data at an ALTER TABLE request, but this
function doesn't care about numerical "indices" of
ENUM values, i.e. do_field_string doesn't distinguish
a special 0 value from an empty string value.

A new copy function called do_field_enum has been added to
copy special 0 ENUM values without conversion to an empty
string.


sql/field_conv.cc:
  Fixed bug #29251.
  The Copy_field::get_copy_func method has been modified to
  return a pointer to the do_field_enum function if a conversion
  between two columns of incompatible enum types is required.
  The do_field_enum function has been added for the correct
  conversion of special 0 enum values.
mysql-test/t/type_enum.test:
  Updated test case for bug #29251.
mysql-test/r/type_enum.result:
  Updated test case for bug #29251.
2007-06-27 03:41:50 +05:00
unknown
69f82e2563 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B29154-5.0-opt
2007-06-26 10:49:21 +03:00
unknown
0127c1a30f Fixed bug #29087. This bug manifested itself for queries that performed
a lookup into a BINARY index by a key ended with spaces. It caused
an assertion abort for a debug version and wrong results for non-debug
versions.

The problem occurred because the function _mi_pack_key stripped off 
the trailing spaces from binary search keys while the function _mi_make_key
did not do it when keys were inserted into the index.

Now the function _mi_pack_key does not remove the trailing spaces from
search keys if they are of the binary type.


mysql-test/r/binary.result:
  Added a test case for bug #29087.
mysql-test/t/binary.test:
  Added a test case for bug #29087.
2007-06-25 22:44:22 -07:00
unknown
57444944d5 Bug #29247 Double free in libmysqlclient_r when mysql restarted.
If one sets MYSQL_READ_DEFAULTS_FILE and MYSQL_READ_DEFAULT_GROUP options
after mysql_real_connect() called with that MYSQL instance,
these options will affect next mysql_reconnect then.
As we use a copy of the original MYSQL object inside mysql_reconnect,
and mysql_real_connect frees options.my_cnf_file and _group strings,
we will free these twice when we execute mysql_reconnect with the
same MYSQL for the second time.

I don't think we should ever read defaults files handling mysql_reconnect.
So i just set them to 0 for the temporary MYSQL object there/


sql-common/client.c:
  Bug #29247 Double free in libmysqlclient_r when mysql restarted.
  
  we don't need mysql_real_connect to reread defaults file in this
  case, so set related parameters to zero
2007-06-25 16:40:29 +05:00
unknown
637d9f1c50 Merge gleb.loc:/home/uchum/work/bk/4.1-opt
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-06-25 14:13:16 +05:00
unknown
fb12c686b1 Merge gleb.loc:/home/uchum/work/bk/5.0
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-06-25 14:12:01 +05:00
unknown
be684dc0ee Merge gleb.loc:/home/uchum/work/bk/4.1
into  gleb.loc:/home/uchum/work/bk/4.1-opt
2007-06-25 14:08:53 +05:00
unknown
4ea2eb4a75 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B29154-5.0-opt
2007-06-25 11:00:58 +03:00
unknown
39459397cd Bug #29154: LOCK TABLES is not atomic when >1 InnoDB tables are locked
LOCK TABLES takes a list of tables to lock. It may lock several 
  tables successfully and then encounter a tables that it can't lock, 
  e.g. because it's locked. In such case it needs to undo the locks on
  the already locked tables. And it does that. But it has also notified
  the relevant table storage engine handlers that they should lock.
  The only reliable way to ensure that the table handlers will give up
  their locks is to end the transaction. This is what UNLOCK TABLE 
  does : it ends the transaction if there were locked tables by LOCK 
  tables.
  It is possible to end the transaction when the lock fails in 
  LOCK TABLES because LOCK TABLES ends the transaction at its start 
  already. 
  Fixed by ending (again) the transaction when LOCK TABLES fails to
  lock a table.


mysql-test/r/innodb_mysql.result:
  Bug #29154: test case
mysql-test/t/innodb_mysql.test:
  Bug #29154: test case
sql/sql_parse.cc:
  Bug #29154: end the trasaction at a failing 
  LOCK TABLES so the handler can free its locks.
2007-06-25 10:44:52 +03:00
unknown
f30db30991 Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug25602


sql/sql_select.cc:
  Auto merged
2007-06-24 10:50:24 -07:00
unknown
fec835f1eb Merge gleb.loc:/home/uchum/work/bk/5.0
into  gleb.loc:/home/uchum/work/bk/5.0-opt


sql/log_event.cc:
  Auto merged
2007-06-24 12:58:45 +05:00
unknown
e009b764b9 Fixed bug #25602. A query with DISTINCT in the select list to which
the loose scan optimization for grouping queries was applied returned 
a wrong result set when the query was used with the SQL_BIG_RESULT
option.

The SQL_BIG_RESULT option forces to use sorting algorithm for grouping
queries instead of employing a suitable index. The current loose scan
optimization is applied only for one table queries when the suitable
index is covering. It does not make sense to use sort algorithm in this
case. However the create_sort_index function does not take into account
the possible choice of the loose scan to implement the DISTINCT operator
which makes sorting unnecessary. Moreover the current implementation of
the loose scan for queries with distinct assumes that sorting will
never happen. Thus in this case create_sort_index should not call
the function filesort.


mysql-test/r/group_min_max.result:
  Added a test case for bug #25602.
mysql-test/t/group_min_max.test:
  Added a test case for bug #25602.
2007-06-23 23:33:55 -07:00
unknown
b462e06eac Merge gleb.loc:/home/uchum/work/bk/4.1-opt
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-06-24 03:42:18 +05:00
unknown
d37471b4ef Merge gleb.loc:/home/uchum/work/bk/5.0-opt-29095
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-06-24 01:22:25 +05:00
unknown
1bab1ddc55 Fixed bug #29095.
INSERT into table from SELECT from the same table
with ORDER BY and LIMIT was inserting other data
than sole SELECT ... ORDER BY ... LIMIT returns.

One part of the patch for bug #9676 improperly pushed
LIMIT to temporary table in the presence of the ORDER BY
clause.
That part has been removed.


sql/sql_select.cc:
  Fixed bug #29095.
  One part of the patch for bug #9676 improperly pushed
  LIMIT to temporary table in the presence of the ORDER BY
  clause.
  That part has been removed.
mysql-test/t/insert_select.test:
  Expanded the test case for bug #9676.
  Created a test case for bug #29095.
mysql-test/r/insert_select.result:
  Expanded the test case for bug #9676.
  Created a test case for bug #29095.
2007-06-24 01:20:14 +05:00
unknown
8541b56c81 Merge trift2.:/MySQL/M50/mysql-5.0
into  trift2.:/MySQL/M50/push-5.0
2007-06-22 22:48:17 +02:00
unknown
054201f48d Add the "nist" suite to the "test-bt" target,
to be run only if it is available on the machine.
2007-06-22 20:08:19 +02:00
unknown
f3940ebaf0 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B28400-5.0-opt
2007-06-22 15:35:59 +03:00
unknown
fe036d9848 Bug #27383: Crash in test "mysql_client_test"
The C optimizer may decide that data access operations
through pointer of different type are not related to 
the original data (strict aliasing).
This is what happens in fetch_long_with_conversion(),
when called as part of mysql_stmt_fetch() : it tries 
to check for truncation errors by first storing float
(and other types of data) into a char * buffer and then 
accesses them through a float pointer.
This is done to prevent the effects of excess precision
when using FPU registers.
However the doublestore() macro converts a double pointer
to an union pointer. This violates the strict aliasing rule.
Fixed by making the intermediary variables volatile (
to not re-introduce the excess precision bug) and using
the intermediary value instead of the char * buffer.
Note that there can be loss of precision for both signed
and unsigned 64 bit integers converted to double and back,
so the check must stay there (even for compatibility 
reasons).
Based on the excellent analysis in bug 28400.


libmysql/libmysql.c:
  Bug #27383: avoid pointer aliasing problems while 
  not re-violating the Intel FPU gcc bug.
2007-06-22 15:34:28 +03:00
unknown
bdc3213963 Merge trift2.:/MySQL/M50/mysql-5.0
into  trift2.:/MySQL/M50/push-5.0
2007-06-22 13:13:32 +02:00
unknown
f0dbd3101e Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  maint1.mysql.com:/data/localhome/tsmith/bk/maint/50
2007-06-22 11:23:12 +02:00
unknown
e434a5ca05 Merge bk@192.168.21.1:mysql-5.0-opt
into  mysql.com:/home/hf/work/28839/my50-28839
2007-06-22 10:12:15 +05:00
unknown
cb606a661a rpl_skip_error.test fixed
mysql-test/r/rpl_skip_error.result:
  test result fixed
mysql-test/t/rpl_skip_error.test:
  inconsistent column results hidden
2007-06-22 09:28:38 +05:00
unknown
37344c68f5 Bug #29138 'kill' fails in pushbuild
The reason the "reap;" succeeds unexpectedly is because the query was completing(almost always) and the network buffer was big enough to store the query result (sometimes) on Windows, meaning the response was completely sent before the server thread could be killed.

Therefore we use a much longer running query that doesn't have a chance to fully complete before the reap happens, testing the kill properly.


mysql-test/r/kill.result:
  We use a much longer running query that doesn't have a chance to fully complete before the reap happens.
mysql-test/t/kill.test:
  We use a much longer running query that doesn't have a chance to fully complete before the reap happens.
2007-06-21 21:39:52 -04:00
unknown
1944601586 Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug29104


sql/item.cc:
  Auto merged
2007-06-21 15:25:23 -07:00
unknown
8ddf61d382 Merge maint1.mysql.com:/data/localhome/tsmith/bk/maint/41
into  maint1.mysql.com:/data/localhome/tsmith/bk/maint/50
2007-06-21 20:12:35 +02:00
unknown
fc7f407a11 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-rpl
into  maint1.mysql.com:/data/localhome/tsmith/bk/maint/50


mysql-test/t/innodb.test:
  Auto merged
mysql-test/r/innodb.result:
  Manual merge
2007-06-21 20:09:04 +02:00
unknown
6ac33675bc Merge bk-internal.mysql.com:/home/bk/mysql-4.1-rpl
into  maint1.mysql.com:/data/localhome/tsmith/bk/maint/41
2007-06-21 19:48:05 +02:00
unknown
2e8357b4a7 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  amd64.(none):/src/bug27029/my50-bug27029


myisam/sort.c:
  Auto merged
2007-06-21 12:52:20 -04:00
unknown
c3e4b61c4e Bug#27029 alter table ... enable keys crashes mysqld on large table
- When creating an index for the sort, the number of rows plus 1 is used 
to allocate a buffer.  In this test case, the number of rows 4294967295 
is the max value of an unsigned integer, so when 1 was added to it, a 
buffer of size 0 was allocated causing the crash.
- Create new test suite for this bug's test suite as per QA.


myisam/sort.c:
  Bug#27029 alter table ... enable keys crashes mysqld on large table
  - Check to make sure the value of records is < UINT_MAX32 to avoid a 
  false positive on the remaining condition.
mysql-test/suite/large_tests/README.TXT:
  Bug#27029 alter table ... enable keys crashes mysqld on large table
  - New testsuite for large tests.
  - Added mtr hint for potential testers.
mysql-test/suite/large_tests/r/alter_table.result:
  Bug#27029 alter table ... enable keys crashes mysqld on large table
  - New testsuite for large tests.
  - Added results for bug.
mysql-test/suite/large_tests/t/alter_table.test:
  Bug#27029 alter table ... enable keys crashes mysqld on large table
  - New testsuite for large tests.
  - Added test for bug.
2007-06-21 12:45:56 -04:00
unknown
0e99d690cb Merge maint1.mysql.com:/data/localhome/tsmith/bk/50
into  maint1.mysql.com:/data/localhome/tsmith/bk/maint/50


configure.in:
  Auto merged
2007-06-21 18:28:52 +02:00
unknown
12e1a9df4f Merge mysql.com:/nfsdisk1/lars/bk/mysql-5.0
into  mysql.com:/nfsdisk1/lars/bk/mysql-5.0-rpl
2007-06-21 17:10:35 +02:00
unknown
8b3c5753c7 Test fix 2007-06-21 16:55:52 +02:00
unknown
e0e739b628 Add name of test that generated the warning to "warnings" file 2007-06-21 16:37:13 +02:00
unknown
022ee2b0b3 Merge pilot.(none):/data/msvensson/mysql/bug28769/my50-bug28769
into  pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
2007-06-21 15:14:00 +02:00
unknown
f3954ba1b0 Merge pilot.(none):/data/msvensson/mysql/bug28742/my50-bug28742
into  pilot.(none):/data/msvensson/mysql/mysql-5.0-maint


mysql-test/mysql-test-run.pl:
  Auto merged
2007-06-21 14:10:35 +02:00
unknown
f77d416821 Merge bk@192.168.21.1:mysql-5.0-opt
into  mysql.com:/home/hf/work/28839/my50-28839
2007-06-21 15:28:19 +05:00