Commit graph

37558 commits

Author SHA1 Message Date
unknown
524a40a982 Merge chilla.local:/home/mydev/mysql-5.0-amain
into  chilla.local:/home/mydev/mysql-5.0-axmrg
2007-07-21 01:34:55 +02:00
unknown
4ae56e219d Merge chilla.local:/home/mydev/mysql-5.0-ateam
into  chilla.local:/home/mydev/mysql-5.0-axmrg
2007-07-21 01:33:25 +02:00
unknown
95a8c6c327 Bug #28591: MySQL need not sort the records in case of
ORDER BY primary_key on InnoDB table

Queries that use an InnoDB secondary index to retrieve
data don't need to sort in case of ORDER BY primary key
if the secondary index is compared to constant(s).
They can also skip sorting if ORDER BY contains both the
the secondary key parts and the primary key parts (in
that order).
This is because InnoDB returns the rows in order of the
primary key for rows with the same values of the secondary
key columns.
Fixed by preventing temp table sort for the qualifying 
queries.


mysql-test/r/innodb_mysql.result:
  Bug #28591: test case
mysql-test/t/innodb_mysql.test:
  Bug #28591: test case
sql/sql_select.cc:
  Bug #28591: Use the primary key as suffix when testing
  if the key can be used for ORDER BY on supporting engines.
sql/table.cc:
  Bug #28591: can use the primary key
  as a suffix for the secondary keys
2007-07-20 21:05:29 +03:00
unknown
d758b1e629 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/29898-bug-5.0-opt-mysql
2007-07-20 22:05:20 +04:00
unknown
7a99db0b73 Remove obvious comments. 2007-07-20 19:46:13 +04:00
unknown
366c21fef8 Merge trift-lap.none:/MySQL/M50/bug14151-5.0
into  trift-lap.none:/MySQL/M50/push-5.0
2007-07-20 13:35:23 +02:00
unknown
eea5c2a3c5 Bug #29644: alter table hangs if records locked in share mode
by long running transaction

On Windows opened files can't be deleted. There was a special
upgraded lock mode (TL_WRITE instead of TL_WRITE_ALLOW_READ) 
in ALTER TABLE to make sure nobody has the table opened
when deleting the old table in ALTER TABLE. This special mode
was causing ALTER TABLE to hang waiting on a lock inside InnoDB.
This special lock is no longer necessary as the server is 
closing the tables it needs to delete in ALTER TABLE.
Fixed by removing the special lock.
Note that this also reverses the fix for bug 17264 that deals with
another consequence of this special lock mode being used.


mysql-test/r/innodb_mysql.result:
  Bug #29644: test case
mysql-test/t/innodb_mysql.test:
  Bug #29644: test case
sql/ha_innodb.cc:
  Bug #29644: reverse the (now excessive) fix
  for bug 17264 (but leave the test case).
sql/sql_base.cc:
  Bug #29644: don't need a special lock mode for Win32 anymore: 
  the table is closed before the drop.
2007-07-20 14:17:15 +03:00
unknown
1a2d2117ff Bug #29494 Field packet with NULL fields crashes libmysqlclient.
unpack_fields() didn't expect NULL_LENGHT in the field's descriptions.
In this case we get NULL in the resulting string so cannot use
strdup_root to make a copy of it.
strdup_root changed with strmake_root as it's NULL-safe


sql-common/client.c:
  Bug #29494 Field packet with NULL fields crashes libmysqlclient
  
  strdup_root changed with strmake_root in unpack_fields()
2007-07-20 16:05:55 +05:00
unknown
3d2675ec3e after-merge fixup 2007-07-20 15:37:42 +05:00
unknown
91e5864d70 Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  mysql.com:/home/ram/work/b28125/b28125.5.0


mysql-test/t/innodb_mysql.test:
  Auto merged
mysql-test/r/innodb_mysql.result:
  manual merge.
2007-07-20 15:23:35 +05:00
unknown
d8305ab99b Merge pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0.46
into  pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0-build


configure.in:
  Auto merged
libmysql/libmysql.c:
  Auto merged
scripts/make_binary_distribution.sh:
  Auto merged
sql/field.cc:
  Auto merged
2007-07-20 09:20:48 +02:00
unknown
0d8a7aac0e Merge dfischer@bk-internal.mysql.com:/home/bk/mysql-4.1
into  pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-4.1
2007-07-20 08:37:19 +02:00
unknown
28ec0efcb6 Fixed #29923: federated.test fails in 5.0-maint, 5.1-maint
Result adjusted.


mysql-test/r/federated.result:
  Fixed #29923: federated.test fails in 5.0-maint, 5.1-maint
    - result adjusted.
2007-07-20 11:23:38 +05:00
unknown
d1210318db Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-5.0-engines
into  mysql.com:/home/svoj/devel/mysql/BUG28838/mysql-5.0-engines
2007-07-20 10:50:39 +05:00
unknown
db31d3c96d Merge gleb.loc:/home/uchum/work/bk/5.0
into  gleb.loc:/home/uchum/work/bk/5.0-opt


sql/set_var.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
2007-07-20 04:15:50 +05:00
unknown
77a0e7f718 Merge pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0.44
into  pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0.46


configure.in:
  Auto merged
libmysql/libmysql.c:
  Auto merged
sql/field.cc:
  Auto merged
sql/field.h:
  Auto merged
2007-07-19 23:30:26 +02:00
unknown
d9fda1cf9a BUG#20815 Errno 12 on Windows after 197 connections
CMakeLists.txt:
  BUG#20815 Set stack size. This value is really supposed to be the linker's default. I'm not quite sure why we have to specify it manually too.
2007-07-19 23:06:34 +02:00
unknown
a131428f04 Bug#29898: Item_date_typecast::val_int doesn't reset the null_value flag.
The Item_date_typecast::val_int function doesn't reset null_value flag.
This makes all values that follows the first null value to be treated as nulls
and led to a wrong result.

Now the Item_date_typecast::val_int function correctly sets the null_value flag
for both null and non-null values.


mysql-test/t/cast.test:
  Added a test case for the bug#29898:  Item_date_typecast::val_int doesn't reset
  the null_value flag.
mysql-test/r/cast.result:
  Added a test case for the bug#29898:  Item_date_typecast::val_int doesn't reset
  the null_value flag.
sql/item_timefunc.cc:
  Bug#29898: Item_date_typecast::val_int doesn't reset the null_value flag.
  Now the Item_date_typecast::val_int function correctly sets the null_value flag
  for both null and non-null values.
2007-07-20 00:06:35 +04:00
unknown
6a5fff64a3 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-maint


mysql-test/t/federated.test:
  Auto merged
sql/ha_federated.h:
  Auto merged
mysql-test/r/federated.result:
  Manual merge.
2007-07-19 15:33:27 -04:00
unknown
99af63e53d Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug26909/my50-bug26909
into  zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-maint
2007-07-19 15:30:49 -04:00
unknown
92de7b7bb2 Merge trift2.:/MySQL/M50/mysql-5.0
into  trift2.:/MySQL/M50/push-5.0
2007-07-19 20:04:35 +02:00
unknown
d0020607b3 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/29850-bug-5.0-opt-mysql
2007-07-19 21:40:12 +04:00
unknown
04aba6ec5d Merge damien-katzs-computer.local:/Users/dkatz/mysql50
into  damien-katzs-computer.local:/Users/dkatz/50
2007-07-19 13:27:31 -04:00
unknown
7f6a816484 Bug#29850: Wrong charset of GROUP_CONCAT result when the select employs
a temporary table.

The result string of the Item_func_group_concat wasn't initialized in the 
copying constructor of the Item_func_group_concat class. This led to a
wrong charset of GROUP_CONCAT result when the select employs a temporary
table.

The copying constructor of the Item_func_group_concat class now correctly
initializes the charset of the result string.


mysql-test/t/func_gconcat.test:
  Added a test case for the bug#29850: Wrong charset of the GROUP_CONCAT result
  when the select employs a temporary table.
mysql-test/r/func_gconcat.result:
  Added a test case for the bug#29850: Wrong charset of the GROUP_CONCAT result
  when the select employs a temporary table.
sql/item_sum.cc:
  Bug#29850: Wrong charset of GROUP_CONCAT result when the select employs
  a temporary table.
  The copying constructor of the Item_func_group_concat class now correctly
  initializes the charset of the result string.
2007-07-19 20:21:23 +04:00
unknown
248c5e24e9 Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  mysql.com:/home/hf/work/29687/my50-29687
2007-07-19 21:01:58 +05:00
unknown
0299963601 Merge bk@192.168.21.1:mysql-5.0-opt
into  mysql.com:/home/hf/work/29687/my50-29687
2007-07-19 20:59:08 +05:00
unknown
8d592e95a5 Merge bk-internal.mysql.com:/data0/bk/mysql-4.1-maint
into  bk-internal.mysql.com:/data0/bk/tsmith-tmp/mysql-5.0-maint
2007-07-19 17:43:34 +02:00
unknown
62eb5f1794 Rename all references to 'Delayed_insert' instances from 'tmp' to 'di'
for consistency.
2007-07-19 19:36:52 +04:00
unknown
e81e55e783 A fix for Bug#29431 killing an insert delayed thread causes crash
No test case, since the bug requires a stress case with 30 INSERT DELAYED
threads and 1 killer thread to repeat. The patch is verified
manually.
Review fixes.

The server that is running DELAYED inserts would deadlock itself
or crash under high load if some of the delayed threads were KILLed
in the meanwhile.

The fix is to change internal lock acquisition order of delayed inserts
subsystem and to ensure that
Delayed_insert::table_list::db does not point to volatile memory in some 
cases.
For details, please see a comment for sql_insert.cc.


sql/sql_insert.cc:
  A fix for Bug#29431 killing an insert delayed thread causes crash
  
  1) The deadlock was caused by different lock acquisition order
  between delayed_get_table and handle_delayed_insert.
  
  delayed_get_table would:
  - acquire LOCK_delayed_create
  - create a new Delayed_insert instance
  - acquire instance mutex (di->mutex)
  - "lock the instance in memory" by 
  increasing di->locked_in_memory variable
  - start the delayed thread
  - release di->mutex
  - let the delayed thread open the delayed table
  - discover that the delayed thread was killed
  - try to unlock() the delayed insert instance in memory
  - in Delayed_insert::unlock() do
   * lock LOCK_delayed_insert
   * decrease locks_in_memory and discover it's 0
   * attempt to lock di->mutex to broadcast di->cond condition <-- deadlock
   here
  
  Meanwhile, the delayed thread would
   * lock di->mutex
   * open the table
   * get killed
   * not notice that and attempt to lock LOCK_delayed_insert
  to register itself in the delayed insert list <-- deadlock here.
  
  Simply put, delayed_get_table used to lock LOCK_delayed_insert and then 
  di->mutex, and handle_delayed_insert would lock di->mutex and then 
  LOCK_delayed_insert.
  
  Fixed by moving registration in the list of delayed insert threads from 
  handle_delayed_insert to delayed_get_table - so that now
  handle_delayed_insert doesn't need to acquire LOCK_delayed_insert mutex.
  
  
  2) di->table_list.db was copied by-pointer from table_list.db of the first
  producer -- the one who initiated creation of the delayed insert thread.
  This producer might be long gone when the member is needed
  (handle_delayed_insert:open_ltable),
  e.g. by having been killed with KILL CONNECTION statement.
  Fixed by using a pointer to the consumer's deep copy of THD::db.
  
  3) In find_handler, we shouldn't assume that Delayed_insert object
  already (or still) has a table opened all the time it is
  present in the delayed insert list. E.g. it's not the case
  when Delayed_insert decided to terminate, closed the table, but haven't
  yet unregistered from the list (see the end of handle_delayed_insert).
2007-07-19 19:28:00 +04:00
unknown
c865b22514 Merge gleb.loc:/home/uchum/work/bk/5.0
into  gleb.loc:/home/uchum/work/bk/5.0-opt


sql/ha_myisam.cc:
  Auto merged
sql/sql_select.cc:
  Auto merged
2007-07-19 19:57:53 +05:00
unknown
36f1e4848c Fixed bug #29338.
Optimization of queries with DETERMINISTIC functions in the
WHERE clause was not effective: sequential scan was always
used.
Now a SF with the DETERMINISTIC flags is treated as constant
when it's arguments are constants (or a SF doesn't has arguments).


sql/item_func.h:
  Fixed bug #29338.
  The Item_func_sp::used_tables has been removed
  (virtual Item_func::used_tables function is enough).
  The virtual Item_func_sp::update_used_tables function
  has been added.
sql/item_func.cc:
  Fixed bug #29338.
  The Item_func_sp::update_used_tables and the
  Item_func_sp::fix_field functions have been modified
  to take into account the DETERMINISTIC flag of SF definition.
mysql-test/r/sp.result:
  Updated test case for bug #29338.
mysql-test/t/sp.test:
  Updated test case for bug #29338.
2007-07-19 18:39:01 +05:00
unknown
f4209c71a2 Avoid the name conflict between the system-provided "md5.h" and the MySQL one
by renaming "include/md5.h" to "include/my_md5.h".

Fixes bug#14151.


include/my_md5.h:
  Rename: include/md5.h -> include/my_md5.h
2007-07-19 14:14:03 +02:00
unknown
9fa66ba423 field.cc, field.h:
i5 compatibility


sql/field.h:
  i5 compatibility
sql/field.cc:
  i5 compatibility
2007-07-19 14:12:05 +02:00
unknown
2486c23ca6 BUG#26325 - TEMPORARY TABLE "corrupt" after first read, according
to CHECK TABLE

CHECK/REPAIR TABLE reports "File not found" error when issued
against temporary table.

Fixed by disabling a brunch of code (in case it gets temporary table)
that is responsible for updating frm version as it is not needed
for temporary tables.


mysql-test/r/check.result:
  A test case for BUG#26325.
mysql-test/t/check.test:
  A test case for BUG#26325.
sql/handler.cc:
  No need to update frm version in case table was created or checked
  by server with the same version. This also ensures that we do not
  update frm version for temporary tables as this code doesn't support
  temporary tables.
2007-07-19 13:51:31 +05:00
unknown
8b59beaebe Merge gleb.loc:/home/uchum/work/bk/5.0-opt-28524
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-07-19 10:54:39 +05:00
unknown
8b8b430bbc Bug#26909: Specified key was too long; max key length is 255 bytes \
when creating table

Federated tables had an artificially low maximum of key length, 
because the handler failed to implement a method to return it and 
the default value is taked from the prototype handler.

Now, implement that method and return the maximum possible key
length, which is that of InnoDB.


mysql-test/r/federated.result:
  Verify that unique keys may be longer than 255 characters.
mysql-test/t/federated.test:
  Verify that unique keys may be longer than 255 characters.
sql/ha_federated.h:
  Implement the virtual method that tells the max size of parts to 
  make a key.
  
  Backport the length defined in 5.1.
2007-07-18 14:03:58 -04:00
unknown
2bfe84d434 Fixed bug #28524.
For each view the mysqldump utility creates a temporary table
with the same name and the same columns as the view 
in order to satisfy views that depend on this view.
After the creation of all tables, mysqldump drops all
temporary tables and creates actual views.
However, --skip-add-drop-table and --compact flags disable
DROP TABLE statements for those temporary tables. Thus, it was
impossible to create the views because of existence of the
temporary tables with the same names.


client/mysqldump.c:
  Fixed bug #28524.
  The mysqldump utility has been modified to unconditionally drop
  temporary tables before the creation of views.
mysql-test/t/mysqldump.test:
  Updated test case for bug #28524 and updated result of previous tests.
mysql-test/r/mysqldump.result:
  Updated test case for bug #28524 and updated result of previous tests.
2007-07-18 19:14:48 +05:00
unknown
73a680a54d CMakeLists.txt, configure.js:
Allow to set mysqld exe suffix


sql/CMakeLists.txt:
  Allow to set mysqld exe suffix
win/configure.js:
  Allow to set mysqld exe suffix
2007-07-18 15:42:36 +02:00
unknown
6981af6ff5 Add a test case for Bug#22427 create table if not exists + stored
function results in inconsistent behavior.

The bug itself was fixed by the patch for bug 20662.


mysql-test/r/sp-prelocking.result:
  Update results (Bug#22427)
mysql-test/t/sp-prelocking.test:
  Add a test case for Bug#22427 create table if not exists + stored 
  function results in inconsistent behavior
2007-07-18 17:09:03 +04:00
unknown
a266c16d14 Bug #29325: create table overwrites .MYD file of other
table (datadir)
Set errno when retunring an error in my_create_with_symlink.


mysys/my_symlink2.c:
  Bug #29325: set errno when retunring 
  an error in my_create_with_symlink
2007-07-18 15:33:41 +03:00
unknown
c0277a1192 A fix and a test case for Bug#26104 Bug on foreign key class constructor.
Fix the typo in the constructor. Cover a semantic check that previously
never worked with a test.


mysql-test/r/create.result:
  Update results (Bug#26104)
mysql-test/r/innodb.result:
  Update results.
mysql-test/t/create.test:
  Add a test case for Bug#26104 Bug on foreign key class constructor
mysql-test/t/innodb.test:
  Return a new error number (MySQL error instead of internal InnoDB error).
sql/sql_class.h:
  A fix for Bug#26104 Bug on foreign key class constructor -- fix
  the typo in the constructor
2007-07-18 16:22:05 +04:00
unknown
5f462f9626 Add a test case for Bug#27248 Triggers: error if insert affects temporary
table.
The bug itself is yet another manifestation of Bug 26141.


mysql-test/r/trigger.result:
  Update results.
mysql-test/t/trigger.test:
  Add a test case for Bug#27248 Triggers: error if insert affects temporary
  table
2007-07-18 14:42:06 +04:00
unknown
035b06b4e1 BUG#28838 - duplicate external_lock in mysql_alter_table
Removed duplicate call to handler::external_lock() when
ALTER TABLE that doesn't need to copy a table (quick
ALTER TABLE) was executed.

Also quick ALTER TABLE doesn't hold LOCK_open anymore when
it enables/disables indexes.


sql/sql_table.cc:
  Do not call handler::external_lock() as table is already locked
  by open_ltable().
  
  Also do not hold LOCK_open mutex for alter_table_manage_keys() as
  this function doesn't require LOCK_open (LOCK_open is required by
  wait_while_table_is_used() only).
2007-07-18 15:39:13 +05:00
unknown
6947f2d131 Fix for bug #28125: ERROR 2013 when adding index.
Problem: we may break a multibyte char sequence using a key 
reduced to maximum allowed length for a storage engine
(that leads to failed assertion in the innodb code, 
see also #17530). 

Fix: align truncated key length to multibyte char boundary.


mysql-test/r/innodb_mysql.result:
  Fix for bug #28125: ERROR 2013 when adding index.
    - test result.
mysql-test/t/innodb_mysql.test:
  Fix for bug #28125: ERROR 2013 when adding index.
    - test case.
sql/sql_table.cc:
  Fix for bug #28125: ERROR 2013 when adding index.
    - align truncated key length to multibyte char boundary.
    - display real key length in bytes raising warnings.
2007-07-18 12:13:45 +05:00
unknown
06b446dae4 Mark deadcode for gcov 2007-07-18 11:12:15 +04:00
unknown
043f697aee Mark deadcode for gcov 2007-07-18 00:29:25 +04:00
unknown
c3e1eaba62 Merge trift2.:/MySQL/M50/bug21023-25486-5.0
into  trift2.:/MySQL/M50/push-5.0
2007-07-17 21:44:36 +02:00
unknown
a5a0a38d8d Merge trift2.:/MySQL/M50/mysql-5.0
into  trift2.:/MySQL/M50/push-5.0
2007-07-17 21:40:36 +02:00
unknown
2679e53a73 Small comments fix 2007-07-17 22:46:51 +04:00
unknown
475eac91ce Bug #29784 YaSSL assertion failure when reading 8k key.
Fixed the yassl base64 decoding to correctly allocate a maximum decoded buffer size. 


mysql-test/std_data/server8k-cert.pem:
  BitKeeper file /Users/dkatz/50/mysql-test/std_data/server8k-cert.pem
mysql-test/std_data/server8k-key.pem:
  BitKeeper file /Users/dkatz/50/mysql-test/std_data/server8k-key.pem
extra/yassl/taocrypt/src/coding.cpp:
  Fixed buffer allocation to compute the proper maximum decoded size: (EncodedLength * 3/4) + 3
mysql-test/r/ssl_8k_key.result:
  New BitKeeper file ``mysql-test/r/ssl_8k_key.result''
  
  Test connection to server using large SSL key.
mysql-test/t/ssl_8k_key.test:
  New BitKeeper file ``mysql-test/t/ssl_8k_key.test''
  
  Test connection to server using large SSL key.
2007-07-17 14:43:56 -04:00