Commit graph

35372 commits

Author SHA1 Message Date
unknown
e8a25c95d3 BUG#25521 - optimize table, delete, show table status leads to table
losing it's .MYD

When OPTIMIZE TABLE is completed it attempts to rename temporary
file to original name. This step may fail on windows when a file
is opened. As a result data file might be deleted and optimized
copy of file (table_name.MYD) remains.

This situation is handled properly by my_delete_allow_opened, so
use it instead of my_delete when attempting to rename a file on
windows.

No suitable test case for this bug.


mysys/my_redel.c:
  Attempting to delete an opened file and to immediately create
  a new one with the same name may result in my_redel failure on
  windows. It may fail because file is not deleted until it is
  closed.
  
  This situation is handled properly by my_delete_allow_opened, so
  use it instead of my_delete.
2007-03-28 21:09:16 +05:00
unknown
c4b440aaf0 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-engines
into  chilla.local:/home/mydev/mysql-5.0-bug24985


sql/ha_myisam.cc:
  Auto merged
mysql-test/r/heap_btree.result:
  Bug#24985 - UTF8 ENUM primary key on MEMORY using BTREE
              causes incorrect duplicate entries
  Manual merge
mysql-test/t/heap_btree.test:
  Bug#24985 - UTF8 ENUM primary key on MEMORY using BTREE
              causes incorrect duplicate entries
  Manual merge
2007-03-27 21:19:25 +02:00
unknown
de3c371956 Bug#24985 - UTF8 ENUM primary key on MEMORY using BTREE
causes incorrect duplicate entries
After merge fix
2007-03-27 12:39:31 +02:00
unknown
42422d0e62 Merge chilla.local:/home/mydev/mysql-4.1-bug24985
into  chilla.local:/home/mydev/mysql-5.0-bug24985


mysql-test/r/heap_btree.result:
  Auto merged
sql/ha_heap.cc:
  Auto merged
mysql-test/t/heap_btree.test:
  Bug#24985 - UTF8 ENUM primary key on MEMORY using BTREE
              causes incorrect duplicate entries
  Manual merge from 4.1
2007-03-27 10:54:37 +02:00
unknown
1fd0ba8909 Bug#24985 - UTF8 ENUM primary key on MEMORY using BTREE
causes incorrect duplicate entries

Keys for BTREE indexes on ENUM and SET columns of MEMORY tables
with character set UTF8 were computed incorrectly. Many
different column values got the same key value.

Apart of possible performance problems, it made unique indexes
of this type unusable because it rejected many different
values as duplicates.

The problem was that multibyte character detection was tried
on the internal numeric column value. Many values were not
identified as characters. Their key value became blank filled.

Thanks to Alexander Barkov and Ramil Kalimullin for the patch,
which sets the character set of ENUM and SET key segments to
the pseudo binary character set.


mysql-test/r/heap_btree.result:
  Bug#24985 - UTF8 ENUM primary key on MEMORY using BTREE
              causes incorrect duplicate entries
  Added test result.
mysql-test/t/heap_btree.test:
  Bug#24985 - UTF8 ENUM primary key on MEMORY using BTREE
              causes incorrect duplicate entries
  Added test.
sql/ha_heap.cc:
  Bug#24985 - UTF8 ENUM primary key on MEMORY using BTREE
              causes incorrect duplicate entries
  Set key segment charset to my_charset_bin for ENUM and SET
  columns.
2007-03-27 10:49:48 +02:00
unknown
578d29d6f3 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-engines
into  chilla.local:/home/mydev/mysql-5.0--team


sql/ha_myisam.cc:
  Auto merged
2007-03-25 14:44:16 +02:00
unknown
cc4a0bc4ea Merge bk-internal.mysql.com:/home/bk/mysql-5.0-engines
into  chilla.local:/home/mydev/mysql-5.0-bug26996


heap/hp_write.c:
  Auto merged
2007-03-22 21:34:31 +01:00
unknown
1963064097 Merge chilla.local:/home/mydev/mysql-4.1-bug26996
into  chilla.local:/home/mydev/mysql-5.0-bug26996


heap/hp_write.c:
  Auto merged
mysql-test/r/heap_btree.result:
  Auto merged
mysql-test/t/heap_btree.test:
  Bug#26996 - Update of a Field in a Memory Table ends with wrong result
  Manual merge from 4.1
2007-03-21 15:55:14 +01:00
unknown
db573e637c Bug#26996 - Update of a Field in a Memory Table ends with wrong result
Using a MEMORY table BTREE index for scanning for updatable rows
could lead to an infinite loop.

Everytime a key was inserted into a btree index, the position
in the index scan was cleared. The search started from the
beginning and found the same key again.

Now we do not clear the position on key insert an more.


heap/hp_write.c:
  Bug#26996 - Update of a Field in a Memory Table ends with wrong result
  Removed the index-scan-breaking nulling of last_pos.
  The comment behind this line ("For heap_rnext/heap_rprev")
  was misleading. It should have been "Breaks heap_rnext/heap_rprev".
mysql-test/r/heap_btree.result:
  Bug#26996 - Update of a Field in a Memory Table ends with wrong result
  Added test result.
mysql-test/t/heap_btree.test:
  Bug#26996 - Update of a Field in a Memory Table ends with wrong result
  Added test.
2007-03-19 15:56:53 +01:00
unknown
25101100c5 Merge istruewing@bk-internal.mysql.com:/home/bk/mysql-5.0-engines
into  blade08.mysql.com:/data0/istruewing/autopush/mysql-5.0-bug25289


sql/ha_myisam.cc:
  Auto merged
2007-03-16 12:26:36 +01:00
unknown
c7ce63fb0b Merge chilla.local:/home/mydev/mysql-4.1-bug25289
into  chilla.local:/home/mydev/mysql-5.0-bug25289


sql/ha_myisam.cc:
  Bug#25289 - repair table causes "my_seek.c:56:
              my_seek: Assertion `fd != -1' failed"
  Manual merge from 4.1
2007-03-15 13:02:18 +01:00
unknown
6f47415f0e Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mockturtle.local:/home/dlenev/src/mysql-5.0-merge
2007-03-15 14:00:50 +03:00
unknown
04e727c742 Merge mockturtle.local:/home/dlenev/src/mysql-4.1-bg25966
into  mockturtle.local:/home/dlenev/src/mysql-5.0-bg25966-2


sql/mysqld.cc:
  Auto merged
2007-03-15 11:53:04 +03:00
unknown
cdd2a2e40d Fix for bug #25966 "2MB per second endless memory consumption after LOCK
TABLE ... WRITE".

Memory and CPU hogging occured when connection which had to wait for table
lock was serviced by thread which previously serviced connection that was
killed (note that connections can reuse threads if thread cache is enabled).
One possible scenario which exposed this problem was when thread which
provided binlog dump to replication slave was implicitly/automatically
killed when the same slave reconnected and started pulling data through
different thread/connection.
The problem also occured when one killed particular query in connection
(using KILL QUERY) and later this connection had to wait for some table
lock.

This problem was caused by the fact that thread-specific mysys_var::abort
variable, which indicates that waiting operations on mysys layer should
be aborted (this includes waiting for table locks), was set by kill
operation but was never reset back. So this value was "inherited" by the
following statements or even other connections (which reused the same
physical thread). Such discrepancy between this variable and THD::killed
flag broke logic on SQL-layer and caused CPU and memory hogging.

This patch tries to fix this problem by properly resetting this member.

There is no test-case associated with this patch since it is hard to test
for memory/CPU hogging conditions in our test-suite.


sql/mysqld.cc:
  We should not forget to reset THD::mysys_var::abort after kill operation
  if we are going to use thread to which this operation was applied for
  handling of other connections.
sql/sp_head.cc:
  We should not forget to reset THD::mysys_var::abort after kill operation
  if we are going to use thread to which this operation was applied for
  handling of further statements.
sql/sql_parse.cc:
  We should not forget to reset THD::mysys_var::abort after kill operation
  if we are going to use thread to which this operation was applied for
  handling of further statements.
2007-03-15 11:51:35 +03:00
unknown
db1d2f64d1 Fix for bug #25966 "2MB per second endless memory consumption after LOCK
TABLE ... WRITE".

CPU hogging occured when connection which had to wait for table lock was
serviced by thread which previously serviced connection that was killed
(note that connections can reuse threads if thread cache is enabled).
One possible scenario which exposed this problem was when thread which
provided binlog dump to replication slave was implicitly/automatically
killed when the same slave reconnected and started pulling data through
different thread/connection.
In 5.* versions memory hogging was added to CPU hogging. Moreover in
those versions the problem also occured when one killed particular query
in connection (using KILL QUERY) and later this connection had to wait for
some table lock.

This problem was caused by the fact that thread-specific mysys_var::abort
variable, which indicates that waiting operations on mysys layer should
be aborted (this includes waiting for table locks), was set by kill
operation but was never reset back. So this value was "inherited" by the
following statements or even other connections (which reused the same
physical thread). Such discrepancy between this variable and THD::killed
flag broke logic on SQL-layer and caused CPU and memory hogging.

This patch tries to fix this problem by properly resetting this member.

There is no test-case associated with this patch since it is hard to test
for memory/CPU hogging conditions in our test-suite.


sql/mysqld.cc:
  We should not forget to reset THD::mysys_var::abort after kill operation
  if we are going to use thread to which this operation was applied for
  handling of other connections.
2007-03-15 11:30:17 +03:00
unknown
26a7c7ed49 Merge mysql.com:/home/kent/bk/tmp/mysql-4.1-build
into  mysql.com:/home/kent/bk/tmp/mysql-5.0-build
2007-03-14 18:32:06 +01:00
unknown
eddf23e057 Merge mysql.com:/home/kent/bk/tmp/mysql-4.0
into  mysql.com:/home/kent/bk/tmp/mysql-4.1-build
2007-03-14 18:28:52 +01:00
unknown
377853e24f EXCEPTIONS-CLIENT:
Updated to version 0.6 of the text


EXCEPTIONS-CLIENT:
  Updated to version 0.6 of the text
2007-03-14 18:28:16 +01:00
unknown
3c89dd7966 Bug#25289 - repair table causes "my_seek.c:56:
my_seek: Assertion `fd != -1' failed"

In difficult optimize/repair situations the server could crash.
Under some circumstances the server retries an optimize/repair
with more elaborate options. But it did not check if the first
attempt failed so badly that a second one must not be tried.

This could happen when a new data file has been created
but it was not possible to open it. In this case the
repair leaves behind a table with closed data file.
This must not be used for another repair attempt.

We do now detect the closed data file and do not try
another repair attempt in this situation.

No test case. The required table corruption can not be
repeated easily. There is a test program attached to
bug 25433.


sql/ha_myisam.cc:
  Bug#25289 - repair table causes "my_seek.c:56:
              my_seek: Assertion `fd != -1' failed"
  Added code to detect a closed data file. It could be closed
  by a preceeding repair attempt. We must not try another
  repair then.
2007-03-14 16:27:37 +01:00
unknown
29e6d30882 Merge mysql.com:/home/kent/bk/tmp/mysql-4.1-build
into  mysql.com:/home/kent/bk/tmp/mysql-5.0-build


configure.in:
  Auto merged
2007-03-14 14:31:44 +01:00
unknown
1c02d8c0cd Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/kent/bk/tmp/mysql-5.0-build
2007-03-14 14:30:54 +01:00
unknown
f4656c37ab Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/home/kent/bk/tmp/mysql-4.1-build
2007-03-14 14:30:12 +01:00
unknown
9be5d51809 Merge mysql.com:/home/kent/bk/tmp/mysql-4.0
into  mysql.com:/home/kent/bk/tmp/mysql-4.1-build


configure.in:
  SCCS merged
2007-03-14 14:29:23 +01:00
unknown
0f7f7ff845 configure.in:
Added test for sched_yield() possibly in -lposix4 on Solaris


configure.in:
  Added test for sched_yield() possibly in -lposix4 on Solaris
2007-03-14 14:27:46 +01:00
unknown
8205e16c89 Removed tabs. 2007-03-14 02:30:05 +04:00
unknown
968d1695a7 Merge mysql.com:/home/svoj/devel/mysql/BUG26881/mysql-4.1-engines
into  mysql.com:/home/svoj/devel/mysql/BUG26881/mysql-5.0-engines


myisam/mi_create.c:
  Auto merged
mysql-test/t/merge.test:
  Auto merged
sql/ha_myisam.cc:
  Auto merged
sql/sql_parse.cc:
  Use local.
mysql-test/r/merge.result:
  SCCS merged
2007-03-13 18:11:47 +04:00
unknown
969b71653d BUG#26881 - Large MERGE tables report incorrect specification when no
differences in tables
Certain merge tables were wrongly reported as having incorrect definition:
- Some fields that are 1 byte long (e.g. TINYINT, CHAR(1)), might
  be internally casted (in certain cases) to a different type on a
  storage engine layer. (affects 4.1 and up)
- If tables in a merge (and a MERGE table itself) had short VARCHAR column (less
  than 4 bytes) and at least one (but not all) tables were ALTER'ed (even to an
  identical table: ALTER TABLE xxx ENGINE=yyy), table definitions went ouf of
  sync. (affects 4.1 only)

This is fixed by relaxing a check for underlying conformance and setting
field type to FIELD_TYPE_STRING in case varchar is shorter than 4
when a table is created.


myisam/mi_create.c:
  Added a comment.
mysql-test/r/merge.result:
  A test case for bug#26881.
mysql-test/t/merge.test:
  A test case for bug#26881.
sql/ha_myisam.cc:
  Relaxed some checks performed by check_definition():
  As comparing of fulltext keys (and key segments) is not yet implemented,
  only return an error in case one of keys is fulltext and other is not.
  Otherwise, if both keys are fulltext, accept them as is.
  
  As comparing of spatial keys (and key segments) is not yet implemented,
  only return an error in case one of keys is spatial and other is not.
  Otherwise, if both keys are spatial, accept them as is.
  
  A workaround to handle situation when field is casted from FIELD_SKIP_ZERO
  to FIELD_NORMAL. This could happen only in case field length is 1 and row
  format is fixed.
sql/sql_parse.cc:
  When a table that has varchar field shorter than 4 is created, field type is
  set to FIELD_TYPE_VAR_STRING. Later, when a table is modified using alter
  table, field type is changed to FIELD_TYPE_STRING (see Field_string::type).
  That means HA_OPTION_PACK_RECORD flag might be lost and thus null_bit might
  be shifted by alter table, in other words alter table doesn't create 100%
  equal table definition.
  
  This is usually not a problem, since when a table is created/altered,
  definition on a storage engine layer is based on one that is passed from
  sql layer. But it is a problem for merge engine - null_bit is shifted when
  a table (merge or underlying) is altered.
  
  Set field type to FIELD_TYPE_STRING in case FIELD_TYPE_VAR_STRING is shorter
  than 4 when a table is created as it is done in Field::type.
2007-03-13 18:02:06 +04:00
unknown
063c95e6f0 Merge mysql.com:/home/svoj/devel/mysql/BUG26881/mysql-4.1-engines
into  mysql.com:/home/svoj/devel/mysql/BUG26881/mysql-5.0-engines
2007-03-13 17:00:48 +04:00
unknown
d496ab15e4 Merge mysql.com:/home/svoj/devel/bk/mysql-5.0
into  mysql.com:/home/svoj/devel/mysql/BUG26881/mysql-5.0-engines


myisam/rt_index.c:
  Auto merged
sql/field.h:
  Auto merged
2007-03-13 16:58:52 +04:00
unknown
e266365cad Merge mysql.com:/home/svoj/devel/bk/mysql-4.1
into  mysql.com:/home/svoj/devel/mysql/BUG26881/mysql-4.1-engines
2007-03-13 16:57:16 +04:00
unknown
e8bc4421f1 Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-5.0-build
into  mysql.com:/home/kent/bk/tmp/mysql-5.0-build
2007-03-12 21:32:59 +01:00
unknown
9be0ca437b Merge mysql.com:/home/kent/bk/tmp/mysql-4.1-build
into  mysql.com:/home/kent/bk/tmp/mysql-5.0-build


configure.in:
  SCCS merged
2007-03-12 21:29:05 +01:00
unknown
6f83533440 configure.in:
Restored accidently removed line to check for zlib


configure.in:
  Restored accidently removed line to check for zlib
2007-03-12 21:27:07 +01:00
unknown
caf7005eb1 Merge jbruehe@bk-internal.mysql.com:/home/bk/mysql-5.0-ndb
into  trift2.:/MySQL/M50/push-5.0
2007-03-12 16:00:35 +01:00
unknown
74536862f6 Makefile.am, CMakeLists.txt:
Removed references to my_winsem.c


mysys/CMakeLists.txt:
  Removed references to my_winsem.c
mysys/Makefile.am:
  Removed references to my_winsem.c
2007-03-12 14:52:37 +01:00
unknown
deeb3ee425 Merge mysql.com:/home/kent/bk/tmp/mysql-4.1-build
into  mysql.com:/home/kent/bk/tmp/mysql-5.0-build


VC++Files/mysys/mysys.vcproj:
  Auto merged
VC++Files/mysys/mysys_ia64.dsp:
  Auto merged
mysys/Makefile.am:
  Auto merged
BitKeeper/deleted/.del-my_semaphore.c:
  Auto merged
VC++Files/mysys/mysys.dsp:
  SCCS merged
2007-03-12 13:22:02 +01:00
unknown
d429f59011 mysys_ia64.dsp, mysys.vcproj:
Removed references to unused files


VC++Files/mysys/mysys.vcproj:
  Removed unused files
VC++Files/mysys/mysys_ia64.dsp:
  Removed unused files
2007-03-12 13:18:48 +01:00
unknown
d4d8d132eb Merge mysql.com:/home/kent/bk/tmp/mysql-4.0
into  mysql.com:/home/kent/bk/tmp/mysql-4.1-build


include/Makefile.am:
  Auto merged
2007-03-12 13:15:11 +01:00
unknown
32b370bb7f Makefile.am, configure.in, mysys.dsp:
Removed unused files
.del-my_winsem.c:
  Delete: mysys/my_winsem.c
.del-my_semaphore.c:
  Delete: mysys/my_semaphore.c
.del-my_semaphore.h:
  Delete: include/my_semaphore.h


BitKeeper/deleted/.del-my_semaphore.c:
  Delete: mysys/my_semaphore.c
BitKeeper/deleted/.del-my_semaphore.h:
  Delete: include/my_semaphore.h
BitKeeper/deleted/.del-my_winsem.c:
  Delete: mysys/my_winsem.c
VC++Files/mysys/mysys.dsp:
  Removed unused files
configure.in:
  Removed unused files
include/Makefile.am:
  Removed unused files
mysys/Makefile.am:
  Removed unused files
2007-03-12 13:12:42 +01:00
unknown
28d696d18b Merge ymer.(none):/usr/local/mysql/mysql-5.1-new-ndb
into  ymer.(none):/usr/local/mysql/mysql-5.0-ndb
2007-03-12 10:18:34 +01:00
unknown
2f774b479b Merge moonbone.local:/mnt/gentoo64/work/15757-bug-5.0-opt-mysql
into  moonbone.local:/mnt/gentoo64/work/25373-bug-5.0-opt-mysql


sql/item_strfunc.cc:
  Auto merged
mysql-test/r/func_str.result:
  SCCS merged
mysql-test/t/func_str.test:
  SCCS merged
2007-03-10 19:57:18 +03:00
unknown
816ea8a379 Bug#15757: Wrong SUBSTRING() result when a tmp table was employed.
When the SUBSTRING() function was used over a LONGTEXT field the max_length of
the SUBSTRING() result was wrongly calculated and set to 0. As the max_length
parameter is used while tmp field creation it limits the length of the result
field and leads to printing an empty string instead of the correct result.

Now the Item_func_substr::fix_length_and_dec() function correctly calculates
the max_length parameter.


mysql-test/t/func_str.test:
  Added a test case for the bug#15757: Wrong SUBSTRING() result when a tmp table was employed.
mysql-test/r/func_str.result:
  Added a test case for the bug#15757: Wrong SUBSTRING() result when a tmp table was employed.
sql/item_strfunc.cc:
  Bug#15757: Wrong SUBSTRING() result when a tmp table was employed.
  Now the Item_func_substr::fix_length_and_dec() function correctly calculates
  the max_length parameter.
2007-03-10 19:55:34 +03:00
unknown
c0a0543545 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/25373-bug-5.0-opt-mysql


mysql-test/r/func_str.result:
  Auto merged
mysql-test/r/subselect.result:
  Auto merged
mysql-test/r/union.result:
  Auto merged
sql/item.cc:
  Auto merged
2007-03-10 19:53:59 +03:00
unknown
9f911a4cf8 Merge bk-internal.mysql.com:/home/bk/mysql-4.1-engines
into  chilla.local:/home/mydev/mysql-4.1-bug25673
2007-03-10 17:01:52 +01:00
unknown
fc6ff0d9d8 Merge istruewing@bk-internal.mysql.com:/home/bk/mysql-5.0-engines
into  blade08.mysql.com:/data0/istruewing/autopush/mysql-5.0-bug25673
2007-03-10 15:08:56 +01:00
unknown
4d6ad7ac60 Fixed bug #26830: a crash for the query with a subselect containing ROLLUP.
Crash happened because the function get_best_group_min_max detected
joins with ROLLUP incorrectly.


mysql-test/r/olap.result:
  Added a test case for bug #26830.
mysql-test/t/olap.test:
  Added a test case for bug #26830.
2007-03-10 02:47:47 -08:00
unknown
3c81172776 Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0-build
into  poseidon.mysql.com:/home/tomas/mysql-5.0
2007-03-10 11:49:04 +07:00
unknown
ff94fdda37 disabling _new_ unstable test case 2007-03-10 11:46:20 +07:00
unknown
f5c27523fc BUG#27018: Partial blob write inside blob clobbers data after the write.
When doing partial blob update with NdbBlob::writeData(), zero-padding
after the write was wrongly done, causing part of the old blob value
to be overwritten with zeros (or spaces for text field).

Fixed by only padding when needed (when writing at end of the blob).


ndb/src/ndbapi/NdbBlob.cpp:
  Do not pad rest of blob part after the write, unless it is a write at the
  end of the blob.
ndb/test/ndbapi/testBlobs.cpp:
  Add test case.
2007-03-09 23:37:33 +01:00
unknown
8f6972dd6d Merge bk-internal:/home/bk/mysql-5.0
into  production.mysql.com:/usersnfs/mjorgensen/bktrees/mysql-5.0-build
2007-03-09 23:01:12 +01:00