Commit graph

21899 commits

Author SHA1 Message Date
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
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
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
603a398172 Bug#25673 - spatial index corruption, error 126 incorrect key file for table
Fixed a compiler warning, deteced by pushbuild only.
2007-03-09 16:19:42 +01:00
unknown
35d5819129 Bug#25673 - spatial index corruption, error 126 incorrect key file for table
After backport fix.
Added forgotten DBUG_RETURNs, which was detected in 5.1 only.
2007-03-08 19:22:43 +01:00
unknown
0fcd9c2bfb Merge bk@192.168.21.1:mysql-4.1
into  mysql.com:/home/hf/work/mrg/mysql-4.1-opt
2007-03-08 21:14:31 +04:00
unknown
5130e88e41 Merge bk-internal:/home/bk/mysql-4.1-maint
into  pilot.blaudden:/home/msvensson/mysql/mysql-4.1-maint
2007-03-08 15:10:24 +01:00
unknown
548a39a104 Bug#25673 - spatial index corruption, error 126
incorrect key file for table

In certain cases it could happen that deleting a row could
corrupt an RTREE index.

According to Guttman's algorithm, page underflow is handled
by storing the page in a list for later re-insertion. The
keys from the stored pages have to be inserted into the
remaining pages of the same level of the tree. Hence the
level number is stored in the re-insertion list together
with the page.

In the MySQL RTree implementation the level counts from zero
at the root page, increasing numbers for levels down the tree.

If during re-insertion of the keys the tree height grows, all
level numbers become invalid. The remaining keys will be
inserted at the wrong level.

The fix is to increment the level numbers stored in the
reinsert list after a split of the root block during reinsertion.


myisam/rt_index.c:
  Bug#25673 - spatial index corruption, error 126
              incorrect key file for table
  Added a loop in rtree_delete() to increment the level numbers
  stored in the reinsert list after a split of the root block
  during reinsertion.
  Added comments and DBUG statements.
myisam/rt_key.c:
  Bug#25673 - spatial index corruption, error 126
              incorrect key file for table
  Added DBUG statements.
myisam/rt_split.c:
  Bug#25673 - spatial index corruption, error 126
              incorrect key file for table
  Added DBUG statements.
mysql-test/r/gis-rtree.result:
  Bug#25673 - spatial index corruption, error 126
              incorrect key file for table
  Added the test result.
mysql-test/t/gis-rtree.test:
  Bug#25673 - spatial index corruption, error 126
              incorrect key file for table
  Added a test.
2007-03-08 09:54:37 +01:00
unknown
f2044997d8 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/mar07/stage2/40
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/mar07/stage2/41
2007-03-08 01:06:04 +01:00
unknown
ae8cad4424 Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-4.1-build
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/mar07/stage2/41
2007-03-08 00:59:15 +01:00
unknown
7a512b029d Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/40
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/mrg0306/40
2007-03-07 23:54:52 +01:00
unknown
4c1312d446 Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/home/kent/bk/tmp/mysql-4.1-build
2007-03-07 23:04:25 +01:00
unknown
cd5140d389 Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-4.1-runtime
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/mrg0306/41
2007-03-07 07:02:00 +01:00
unknown
b68519f7dc Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-4.1
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/mrg0306/41
2007-03-07 05:59:56 +01:00
unknown
49110f3e30 Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1-maint
into  mysql.com:/home/ram/work/b26038/b26038.4.1
2007-03-05 18:21:52 +04:00
unknown
da9c659c81 Bug#26464 - insert delayed + update + merge = corruption
Using INSERT DELAYED on MERGE tables could lead to table
corruptions.

The manual lists a couple of storage engines, which can be
used with INSERT DELAYED. MERGE is not in this list.

The attempt to try it anyway has not been rejected yet.
This bug was not detected earlier as it can work under
special circumstances. Most notable is low concurrency.

To be safe, this patch rejects any attempt to use INSERT
DELAYED on MERGE tables.


mysql-test/r/merge.result:
  Bug#26464 - insert delayed + update + merge = corruption
  Added test result.
mysql-test/t/merge.test:
  Bug#26464 - insert delayed + update + merge = corruption
  Added test.
sql/ha_myisammrg.h:
  Bug#26464 - insert delayed + update + merge = corruption
  Removed HA_CAN_INSERT_DELAYED flag from table_flags().
  The insert delayed thread upgrades the lock from the first
  entry in MYSQL_LOCK::locks only. Hence it is incapable to
  handle MERGE tables, which have as many entries in this
  array as they have MyISAM sub-tables.
2007-03-05 11:52:28 +01:00
unknown
c5e5b5e167 Bug #26792 Add DBX debugger support to mysql-test-run.pl
- Add --debugger=dbx
 - Fix --debugger=devenv, --debugger=DevEnv and --debugger=/path/devenv


mysql-test/mysql-test-run.pl:
  Add support for --debugger=dbx to mysql-test-run.pl
  Fix case senitive match for vc, vcexpress or deven
  Make it possible to use full path to debugger for
  --debugger=/path/vcexpress
2007-03-05 09:52:40 +01:00
unknown
6db4978947 Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1-maint
into  mysql.com:/home/ram/work/b23616/b23616.4.1
2007-03-05 12:07:59 +04:00
unknown
72773f4f8a Bug#25126: Wrongly resolved field leads to a crash.
When the ORDER BY clause gets fixed it's allowed to search in the current
item_list in order to find aliased fields and expressions. This is ok for a
SELECT but wrong for an UPDATE statement. If the ORDER BY clause will
contain a non-existing field which is mentioned in the UPDATE set list
then the server will crash due to using of non-existing (0x0) field.

When an Item_field is getting fixed it's allowed to search item list for
aliased expressions and fields only for selects.


sql/sql_base.cc:
  Bug#25126: Wrongly resolved field leads to a crash.
  When an Item_field is getting fixed it's allowed to search item list for
  aliased expressions and fields only for selects.
sql/sql_select.cc:
  Bug#25126: Wrongly resolved field leads to a crash.
  When an Item_field is getting fixed it's allowed to search item list for
  aliased expressions and fields only for selects.
mysql-test/r/update.result:
  Added a test case for bug#25126: Wrongly resolved field leads to a crash.
mysql-test/t/update.test:
  Added a test case for bug#25126: Wrongly resolved field leads to a crash.
2007-03-04 00:47:42 +03:00
unknown
6389cd128e Merge mysql.com:/home/kent/bk/tmp/mysql-4.0
into  mysql.com:/home/kent/bk/tmp/mysql-4.1-build
2007-03-02 19:22:53 +01:00
unknown
36d9dea1ae Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-4.0
into  mysql.com:/home/kent/bk/tmp/mysql-4.0
2007-03-02 19:21:11 +01:00
unknown
a74c8eaf9c Merge trift2.:/MySQL/M40/manpages-4.0
into  trift2.:/MySQL/M41/manpages-4.1


support-files/mysql.spec.sh:
  SCCS merged
2007-03-02 16:34:29 +01:00
unknown
56eae45c8f More man pages for the RPMs.
support-files/mysql.spec.sh:
  More man pages.
2007-03-02 16:32:27 +01:00
unknown
b73f17fb77 Another man page in the RPMs.
support-files/mysql.spec.sh:
  Another man page.
2007-03-02 16:30:22 +01:00
unknown
00179853d4 Merge trift2.:/MySQL/M40/manpages-4.0
into  trift2.:/MySQL/M41/manpages-4.1


support-files/mysql.spec.sh:
  Null-merge, the equivalent fix here is a change of its own (NDB).
2007-03-02 14:17:04 +01:00
unknown
622533fa81 Add the man pages for NDB to the RPMs.
support-files/mysql.spec.sh:
  Add the man pages for NDB.
2007-03-02 14:05:43 +01:00
unknown
d26369327e Add missing man pages to the RPMs.
support-files/mysql.spec.sh:
  Add missing man pages.
2007-03-02 14:03:28 +01:00
unknown
115a299ff3 Add two more USE_CYGWIN ifdefs to mysqltest 2007-03-01 19:09:43 +01:00
unknown
ec38bd7a32 Fix bug in mtr.pl where slave wes using same query log file as master 2007-03-01 18:31:09 +01:00
unknown
a01e8043de Don't set the "is_windows" flag if using cygwin 2007-03-01 18:30:29 +01:00
unknown
71d12e9f31 Merge weblab.(none):/home/marcsql/TREE/mysql-4.1-base
into  weblab.(none):/home/marcsql/TREE/mysql-4.1-runtime


sql/sql_parse.cc:
  Auto merged
2007-03-01 05:59:16 -07:00
unknown
38c26f4ac5 Merge bk-internal:/home/bk/mysql-4.1-maint
into  pilot.blaudden:/home/msvensson/mysql/mysql-4.1-maint


sql/mysqld.cc:
  Auto merged
2007-03-01 11:41:53 +01:00
unknown
b40ef082c8 MySQL versions before 5.0 still use cygwin, no need
to convert path
2007-03-01 11:41:29 +01:00
unknown
03b7766af1 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/41
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/41
2007-03-01 01:59:31 +01:00
unknown
c267b7e81a Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/40
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/40
2007-03-01 01:58:31 +01:00
unknown
ff71e7311c Merge mysql.com:/home/kent/bk/tmp/mysql-4.0
into  mysql.com:/home/kent/bk/tmp/mysql-4.1-build
2007-02-28 22:31:58 +01:00
unknown
48c3d361e4 Makefile.am:
EXCEPTIONS-CLIENT is now static part of repository


Docs/Makefile.am:
  EXCEPTIONS-CLIENT is now static part of repository
2007-02-28 22:30:50 +01:00
unknown
548d23ac5a Merge mysql.com:/home/kent/bk/tmp/mysql-4.0
into  mysql.com:/home/kent/bk/tmp/mysql-4.1-build


Docs/Makefile.am:
  SCCS merged
2007-02-28 22:13:35 +01:00
unknown
5a232872eb Makefile.am:
EXCEPTIONS-CLIENT is now static part of repository
EXCEPTIONS-CLIENT:
  BitKeeper file /home/kent/bk/tmp/mysql-4.0/EXCEPTIONS-CLIENT


EXCEPTIONS-CLIENT:
  BitKeeper file /home/kent/bk/tmp/mysql-4.0/EXCEPTIONS-CLIENT
Docs/Makefile.am:
  EXCEPTIONS-CLIENT is now static part of repository
2007-02-28 22:09:09 +01:00
unknown
7d1ff29c0d Merge mysql.com:/home/kent/bk/tmp/mysql-4.0
into  mysql.com:/home/kent/bk/tmp/mysql-4.1-build
2007-02-28 21:19:19 +01:00
unknown
acdfc1e9fe Merge pilot.blaudden:/home/msvensson/mysql/bug24878/my41-bug24878
into  pilot.blaudden:/home/msvensson/mysql/mysql-4.1-maint
2007-02-28 16:38:31 +01:00
unknown
87eee8fcad Bug#24878 mysql server doesn't log incident time in "mysqld got signal 11" error messages
- Add printout of current time when mysqld is killed by an
   unhandled signal


sql/mysqld.cc:
  Add printout of current time before the "mysqld got signal %d" message
  Hopefully we don't crash in the calls to 'time' or 'localtime_r'
  but if that should start to happen we can move the printout of
  time further down. At least it's now below the check for segfault
  inside of segfault handler.
2007-02-28 16:37:50 +01:00
unknown
22cac737ca Bug#20166 mysql-test-run.pl does not test system privilege tables creation
- Build lib/init-db.sql from the output of mysql_create_system_tables
 - Remove mysql-test/init_db.sql and mysql-test/lib/init_db.sql
 - Leave netware/init_db.sql until 5.0 where we should soon have possibility
   to test with mysql-test-run.pl


BitKeeper/deleted/.del-init_db.sql:
  Delete: mysql-test/init_db.sql
BitKeeper/deleted/.del-init_db.sql~a77d572c39d5a1f8:
  Delete: mysql-test/lib/init_db.sql
BitKeeper/etc/ignore:
  Added mysql-test/lib/init_db.sql to the ignore list
mysql-test/Makefile.am:
  Build lib/init_db.sql from the output of mysql_create_system_tables
2007-02-28 15:03:47 +01:00
unknown
7624028419 When using a --mem=<dir> the memdir must be removed to assure
afresh start
2007-02-28 13:47:41 +01:00
unknown
4d49015bf9 Bug#26416 mysql-test-run exits with "Hangup" when piped to grep
- Thanks to Christian for the patch!


mysql-test/lib/mtr_process.pl:
  Avoid printout of "Hangup" when script exits by using
  POSIX::kill
2007-02-28 10:52:51 +01:00
unknown
e40bcac08e Bug#26686 mysql-test-run.pl aborts when waitpid returns -1
- Add error handling for waitpid returns -1 for "simple run of command"


mysql-test/lib/mtr_process.pl:
  - Add error handling for waitpid returns -1
  when a simple command is run.
  - Add missing return
  - Add mtr_errors where the program should never come 
  - Remove an else to improve program readability
  - Change mtr_debug to mtr_warning for "Got EAGAIN from fork()..."
2007-02-28 10:37:32 +01:00
unknown
64278d4fc9 Merge pilot.blaudden:/home/msvensson/mysql/mysql-4.1-maint-without-cygwin
into  pilot.blaudden:/home/msvensson/mysql/mysql-4.1-maint


client/mysqltest.c:
  Auto merged
2007-02-28 10:06:21 +01:00
unknown
8c5a862569 Use cygwin for --exec and --system in mysqltest for MySQL before 5.0 2007-02-28 10:05:51 +01:00
unknown
d59d5f18c4 Bug#19410 Test 'kill' fails on Windows + SCO
- Use "mysql_stmt_field_count" to determine if there is a need to
call "mysql_stmt_store_result"


client/mysqltest.c:
  Only call 'mysql_stmt_store_result' if 'mysql_stmt_field_count' is
  greater than 0 indicating that this query has a result set.
  This change is mainly since if mysql_stmt_store_result fails
  the value returned by mysql_stmt_field_count will be reset.
2007-02-28 09:10:38 +01:00
unknown
2e669d8e7b Fix for BUG#26050 "LOAD DATA INFILE breaks ACID"; the ok must be sent
to the client only after the binlog write and engine commit.
No testcase for this bug, as to reproduce it, we need to "kill -9" mysqld,
which we cannot do in the testsuite. But, I tested by hand.


sql/sql_load.cc:
  D in ACID means that once the client got the ok from the server, the data
  is durable on disk. Implies that the ok must be sent after the binlog write
  and after the engine commit, not before.
2007-02-26 20:35:28 +01:00