Commit graph

37099 commits

Author SHA1 Message Date
unknown
39459397cd Bug : 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 : test case
mysql-test/t/innodb_mysql.test:
  Bug : test case
sql/sql_parse.cc:
  Bug : 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
b6ec51ebc1 Merge chilla.local:/home/mydev/mysql-5.0-amain
into  chilla.local:/home/mydev/mysql-5.0-axmrg
2007-06-24 16:44:56 +02:00
unknown
5b7e98822b Merge chilla.local:/home/mydev/mysql-5.0-ateam
into  chilla.local:/home/mydev/mysql-5.0-axmrg
2007-06-24 16:44:55 +02:00
unknown
b3b8d5165d BUG#15787 - MySQL crashes when archive table exceeds 2GB
Max compressed file size was calculated incorretly causing server
crash on INSERT.

With this patch we use proper max file size provided by zlib.

Affects 5.0 only.


sql/ha_archive.cc:
  When calculating max compressed file size, use the real offset size
  that is provided by zlib, instead of sizeof(z_off_t), which may be
  different from actual offset size.
  
  When we're about to write and the data file is almost full flush gzio
  buffer to get accurate real file size.
mysql-test/r/archive-big.result:
  New BitKeeper file ``mysql-test/r/archive-big.result''
mysql-test/t/archive-big.test:
  New BitKeeper file ``mysql-test/t/archive-big.test''
2007-06-24 19:44:54 +05: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 . 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 .
mysql-test/t/group_min_max.test:
  Added a test case for bug .
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 .
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  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 .
  One part of the patch for bug  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 .
  Created a test case for bug .
mysql-test/r/insert_select.result:
  Expanded the test case for bug .
  Created a test case for bug .
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
ab5e152132 Merge adventure.(none):/home/thek/Development/cpp/bug28846/my50-bug28846
into  adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime


sql/sql_class.h:
  Auto merged
sql/sql_parse.cc:
  Auto merged
sql/sql_prepare.cc:
  Auto merged
sql/sql_view.cc:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
2007-06-22 15:40:35 +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 : 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 : avoid pointer aliasing problems while 
  not re-violating the Intel FPU gcc bug.
2007-06-22 15:34:28 +03:00
unknown
9b940d0cb7 Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl
into  mysql.com:/home/bar/mysql-work/mysql-5.0.b28925


sql/sql_yacc.yy:
  Auto merged
mysql-test/r/ctype_ucs2_def.result:
  After merge fix
mysql-test/t/ctype_ucs2_def.test:
  After merge fix
2007-06-22 17:28:26 +05:00
unknown
46c3d7b87d Bug#28925 GROUP_CONCAT inserts wrong separators for a ucs2 column
Problem: separator was not converted to the result character set,
so the result was a mixture of two different character sets,
which was especially bad for UCS2.
Fix: convert separator to the result character set.


mysql-test/r/ctype_ucs.result:
  Adding test case
mysql-test/r/ctype_ucs2_def.result:
  Adding test case
mysql-test/t/ctype_ucs.test:
  Adding test case
mysql-test/t/ctype_ucs2_def.test:
  Adding test case
sql/item_sum.cc:
  Adding conversion of separator to the result character set
sql/sql_yacc.yy:
  Fixing GROUPC_CONCAT problems when "mysqld --default-character-set=ucs2".
2007-06-22 17:18:40 +05: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
099be80130 Bug#28846 Use of undocumented Prepared Statements crashes server
ALTER VIEW is currently not supported as a prepared statement
and should be disabled as such as they otherwise could cause server crashes.

ALTER VIEW is currently not supported when called from stored
procedures or functions for related reasons and should also be disabled.

This patch disables these DDL statements and adjusts the appropriate test
cases accordingly.

Additional tests has been added to reflect on the fact that we do support
CREATE/ALTER/DROP TABLE for Prepared Statements (PS), Stored Procedures (SP)
and PS within SP.


mysql-test/r/ps_1general.result:
  - Updated test to reflect on the new policy to disallow ALTER VIEW within SP.
mysql-test/r/sp-dynamic.result:
  - Added PS ALTER TABLE test from within SP-context to demonstrate that CREATE/ALTER/DROP
  TABLE statements is working.
  - Added PS CREATE/ALTER/DROP VIEW tests from within SP-context to show that
  ALTER VIEW is not supported, CREATE VIEW/DROP VIEW are supported.
mysql-test/r/sp-error.result:
  - Updated test to reflect on the new policy to disallow VIEW DDL within SP.
mysql-test/t/ps_1general.test:
  - Updated test to reflect on the new policy to disallow VIEW DDL within SP.
mysql-test/t/sp-dynamic.test:
  - Add PS ALTER TABLE test from within SP to demonstrate that CREATE/ALTER/DROP
  TABLE statements are supported.
mysql-test/t/sp-error.test:
  - Updated test to reflect on the new policy to disallow ALTER VIEW
  within SP-context.
  - Changed error code 1314 to the more abstract ER_SP_BADSTATEMENT.
sql/sql_class.h:
  - Added comment for clarity
sql/sql_parse.cc:
  - Added comment for clarity
sql/sql_prepare.cc:
  - Disallow ALTER VIEW as prepared statements until they are
    properly supported. Note that SQLCOM_CREATE_VIEW also handles ALTER VIEW
    statements.
sql/sql_view.cc:
  - converted to doxygen comments
  - Added comment for clarity
sql/sql_yacc.yy:
  - Disallow ALTER VIEW statements within a SP.
  If the parser is operating within the SP context, this is shown
  on the sp->sphead pointer. If this flag is set for view DDL operations
  we stop parsing with the error 'ER_SP_BAD_STATEMENT'.
2007-06-22 11:55:48 +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 '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
unknown
4cd1b2d313 rpl_skip_error test fixed
mysql-test/r/rpl_skip_error.result:
  result fixed
mysql-test/t/rpl_skip_error.test:
  master port dependency eliminated
2007-06-21 15:25:28 +05:00
unknown
0b00e8294d Merge trift2.:/MySQL/M50/mysql-5.0
into  trift2.:/MySQL/M50/push-5.0
2007-06-21 10:45:54 +02:00
unknown
8c353de957 Merge bk@192.168.21.1:mysql-5.0-opt
into  mysql.com:/home/hf/work/28839/my50-28839


sql/log_event.cc:
  Auto merged
2007-06-21 12:04:13 +05:00
unknown
4d9cc3db77 Bug#24924: shared-memory-base-name that is too long causes buffer overflow
long shared-memory-base-names could overflow a static internal buffer
and thus crash mysqld and various clients.  change both to dynamic
buffers, show everything but overflowing those buffers still works.

The test case for this would pretty much amount to
mysqld --shared-memory-base-name=HeyMrBaseNameXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX --shared-memory=1 &
mysqladmin --no-defaults --shared-memory-base-name=HeyMrBaseNameXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX shutdown

Unfortunately, we can't just use an .opt file for the
server. The .opt file is used at start-up, before any
include in the actual test can tell mysqltest to skip
this one on non-Windows. As a result, such a test would
break on unices.

Fixing mysql-test-run.pl to export full path for master
and slave would enable us to start a server from within
the test which is ugly and, what's more, doesn't work as
the server blocks (mysqltest offers no fire-and-forget
fork-and-exec), and mysqladmin never gets run.

Making the test rpl_windows_shm or some such so we can
is beyond ugly. As is introducing another file-name based
special case (run "win*.test" only when on Windows). As is
(yuck) coding half the test into mtr (as in, having it
hand out a customized environment conductive to the shm-
thing on Win only).

Situation is exacerbated by the fact that .sh is not
necessary run as expected on Win.

In short, it's just not worth it. No test-case until we
have a new-and-improved test framework.


sql-common/client.c:
  Bug#24924: shared-memory-base-name that is too long causes buffer overflow
  
  compose shared memory name in dynamic rather than static buffer to prevent
  overflows (clients)
sql/mysqld.cc:
  Bug#24924: shared-memory-base-name that is too long causes buffer overflow
  
  compose shared memory name in dynamic rather than static buffer to prevent
  overflows (server)
2007-06-21 04:30:10 +02:00
unknown
b5eb3fcb82 Fixed bug .
Occasionally mysqlbinlog --hexdump failed with error:
  ERROR 1064 (42000) at line ...: You have an error in your
  SQL syntax; check the manual that corresponds to your MySQL
  server version for the right syntax to use near
  'Query thread_id=... exec_time=... error_code=...

When the length of hexadecimal dump of binlog header was
divisible by 16, commentary sign '#' after header was lost.
The Log_event::print_header function has been modified to always
finish hexadecimal binlog header with "\n# ".


sql/log_event.cc:
  Fixed bug .
  The Log_event::print_header function has been modified to always
  finish hexadecimal binlog header with "\n# ".
mysql-test/r/mysqlbinlog.result:
  Updated test case for bug .
mysql-test/t/mysqlbinlog.test:
  Updated test case for bug .
2007-06-21 02:11:28 +05:00
unknown
39bf2b9662 Fixed bug : assertion abort for grouping queries using views.
The abort happened when a query contained a conjunctive predicate
of the form 'view column = constant' in the WHERE condition and 
the grouping list also contained a reference to a view column yet
a different one.

Removed the failing assertion as invalid in a general case.

Also fixed a bug that prevented applying some optimization for grouping
queries using views. If the WHERE condition of such a query contains
a conjunctive condition of the form 'view column = constant' and
this view column is used in the grouping list then grouping by this
column can be eliminated. The bug blocked performing this elimination.


mysql-test/r/view.result:
  Added a test case for bug .
mysql-test/t/view.test:
  Added a test case for bug .
sql/item.cc:
  Fixed bug : assertion abort for grouping queries using views.
  The abort happened when a query contained a conjunctive predicate
  of the form 'view column = constant' in the WHERE condition and 
  the grouping list also contained a reference to a view column yet
  a different one.
  
  Removed the failing assertion as invalid in a general case.
  
  Also fixed a bug that prevented applying some optimization for grouping
  queries using views. If the WHERE condition of such a query contains
  a conjunctive condition of the form 'view column = constant' and
  this view column is used in the grouping list then grouping by this
  column can be eliminated. The bug blocked performing this elimination.
  This bug was in the function Item_field::eq while the failing
  assertion was in the function Item_direct_view_ref::eq.
2007-06-20 12:43:14 -07:00
unknown
65832a035f Merge kindahl-laptop.dnsalias.net:/home/bkroot/mysql-5.0-rpl
into  kindahl-laptop.dnsalias.net:/home/bk/b29030-mysql-5.0-rpl
2007-06-20 20:33:36 +02:00
unknown
cb3ce981c7 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/my/mysql-5.0


mysql-test/r/innodb_mysql.result:
  SCCS merged
mysql-test/t/innodb_mysql.test:
  SCCS merged
2007-06-20 19:25:44 +03:00
unknown
9b8b0000ce Allow multiple calls to mysql_server_end()
(Part of fix for Bug#25621 Error in my_thread_global_end(): 1 threads didn't exit)
Give correct error message if InnoDB table is not found
(This allows us to drop a an innodb table that is not in the InnoDB registery)


BitKeeper/etc/ignore:
  added include/abi_check
libmysql/libmysql.c:
  Allow multiple calls to mysql_server_end()
  (Part of fix for Bug#25621 Error in my_thread_global_end(): 1 threads didn't exit)
mysql-test/r/innodb_mysql.result:
  Test case for drop of table that only has a .frm file
mysql-test/t/innodb_mysql.test:
  Test case for drop of table that only has a .frm file
sql/ha_innodb.cc:
  Give correct error message if InnoDB table is not found.
  (This allows us to drop a an innodb table that is not in the InnoDB registery)
2007-06-20 19:22:27 +03:00
unknown
39cc31b307 BUG#29030 (DROP USER command that errors still gets written to binary log
and replicated):

A DROP USER statement with a non-existing user was correctly written to
the binary log (there might be users that were removed, but not all),
but the error code was not set, which caused the slave to stop with an
error.

The error reporting code was moved to before the statement was logged
to ensure that the error information for the thread was correctly set
up. This works since my_error() will set the fields net.last_errno and
net.last_error for the thread that is reporting the error, and this
will then be picked up when the Query_log_event is created and written
to the binary log.


sql/sql_acl.cc:
  Moving error reporting code to ensure that thd->net.last_err{or,no} is
  set and adding debug printout.
mysql-test/r/rpl_grant.result:
  New BitKeeper file ``mysql-test/r/rpl_grant.result''
mysql-test/t/rpl_grant.test:
  New BitKeeper file ``mysql-test/t/rpl_grant.test''
2007-06-20 14:24:31 +02:00
unknown
c8bdab1137 Bug slave sql fails to read from iocache when slave got stopped at pos==4
forgotten merge with 5.0. There can be some bugs waiting for this fix in 5.0 like Bug@29232


sql/log_event.cc:
  file name is changed in step with the position.
2007-06-20 13:21:16 +03:00
unknown
b5071a7234 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-4.1-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B29116-4.1-opt
2007-06-20 13:17:09 +03:00
unknown
d8512831ac port of the fix for bug 19116 4.1-opt -> 5.0-opt 2007-06-20 13:15:46 +03:00
unknown
c5fb4b243a Bug#28742 mysql-test-run is very slow on "Stopping All Servers" step
- Improve shutdown algorithm 
 - Wait up to 5 seconds for processes to exit after their port is free


mysql-test/lib/mtr_process.pl:
  Improve shutdown algorithm, shutdown the server hard
  if it hasn't responded to "mysqladmin shutdown" and it's port is free.
  Print error to servers error log indicating "hard shutdown"
  Give processes up to 5 seconds to exit after their port is free
mysql-test/lib/mtr_report.pl:
  Indicate in what file the warning was found
mysql-test/mysql-test-run.pl:
  Pass path of process error log to 'mtr_check_stop_servers'
2007-06-20 11:47:55 +02:00