Commit graph

37640 commits

Author SHA1 Message Date
unknown
4f14c13a1c Fix for BUG#31035: select from function, group by result crasher.
This actually, fix for the patch for bug-27354. The problem with
the patch was that Item_func_sp::used_tables() was updated, but
Item_func_sp::const_item() was not. So, for Item_func_sp, we had
the following inconsistency:
  - used_tables() returned RAND_TABLE, which means that the item
    can produce "random" results;
  - but const_item() returned TRUE, which means that the item is
    a constant one.

The fix is to change Item_func_sp::const_item() behaviour: it must
return TRUE (an item is a constant one) only if a stored function
is deterministic and each of its arguments (if any) is a constant
item.


mysql-test/r/sp.result:
  Update result file.
mysql-test/t/sp.test:
  Add test cases for BUG-31035, BUG-31191, BUG-31226
sql/item_func.cc:
  Make Item::const_item() be consistent with Item::used_tables().
2007-10-04 17:19:14 +04:00
unknown
6a5c7fc3b8 Merge kindahl-laptop.dnsalias.net:/home/bk/b30992-mysql-5.0-rpl
into  kindahl-laptop.dnsalias.net:/home/bk/b30992-mysql-5.0-runtime


include/my_pthread.h:
  Auto merged
2007-10-01 15:14:58 +02:00
unknown
2b9b71d0e3 BUG#30992 (Wrong implementation of pthread_mutex_trylock()):
Adding support for correct handling of pthread_mutex_trylock() on Win32
systems as well as when using the safe mutexes. 


include/my_pthread.h:
  Adding win_pthread_mutex_trylock() function as wrapper function for
  Windows implementation of pthread_mutex_trylock().
  
  Adding flag to safe_mutex_lock() that is shall not abort if the mutex
  is already locked and instead return EBUSY since this is the POSIX
  behaviour.
mysys/my_winthread.c:
  Added Win32 wrappper function to handle pthread_mutex_trylock().
mysys/thr_mutex.c:
  Added parameter 'try_lock' to safe_mutex_lock() to allow it to do double-
  duty as a pthread_mutex_trylock() in addition to working as
  pthread_mutex_lock().
  
  The code needs to return EBUSY instead of throwing an error in the event
  that the mutex is re-locked (we do not have recursive mutexes), but it
  also requires some special handling to avoid race conditions when
  calling the real pthread_mutex_{lock,trylock}().
2007-10-01 15:11:15 +02:00
unknown
db50f37ae0 Bug#16918: Aborted_clients > Connections.
The problem was that aborted_threads variable was updated
twice when a client connection had been aborted.

The fix is to refactor a code to have aborted_threads updated
only in one place.


sql/mysql_priv.h:
  Make do_command() a private function.
sql/sql_parse.cc:
  1. Make do_command() a private function;
  2. Update aborted_threads in the only one place.
2007-09-13 17:30:44 +04:00
unknown
5c836d24f6 Fixed whitespace 2007-09-04 16:40:27 -06:00
unknown
3a94137ce0 Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.0-rt-merge


mysql-test/r/sp.result:
  Auto merged
mysql-test/t/mysql.test:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
2007-09-04 14:38:26 -06:00
unknown
0f70a032c2 Merge adventure.(none):/home/thek/Development/cpp/bug21074/my50-bug21074
into  adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime


sql/sql_cache.cc:
  Auto merged
2007-09-03 13:46:10 +02:00
unknown
d2a0a4d53a - Fix cross compatibility issues by exchanging pthread_yield with my_sleep(0) 2007-09-03 13:42:32 +02:00
unknown
11987c913a Merge kpettersson@bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime


sql/sql_cache.cc:
  Auto merged
2007-09-03 10:59:44 +02:00
unknown
37db876e10 Merge adventure.(none):/home/thek/Development/cpp/bug21074/my50-bug21074
into  adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime


sql/sql_cache.cc:
  Auto merged
2007-09-03 10:54:33 +02:00
unknown
733bd4fe81 Bug #21074 Large query_cache freezes mysql server sporadically under heavy load
Invaldating a subset of a sufficiently large query cache can take a long time.
During this time the server is efficiently frozen and no other operation can
be executed. This patch addresses this problem by setting a time limit on
how long time a dictionary access request can take before giving up on the 
attempt. This patch does not work for query cache invalidations issued by
DROP, ALTER or RENAME TABLE operations.


sql/sql_cache.cc:
  Changed mutex locking to a timed spinn lock. If access to query cache dictionary
  takes "a long time" (currently more than 0.1 seconds) the system fall backs on
  ordinary statement execution.
2007-09-03 10:47:24 +02:00
unknown
3f9be28c41 Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.0-runtime


sql/item_cmpfunc.h:
  Auto merged
sql/sql_lex.cc:
  Auto merged
2007-08-30 17:23:40 -06:00
unknown
bccbd5c493 Bug#28587 SELECT is blocked by INSERT waiting on read lock, even with low_priority_updates
The problem is that a SELECT on one thread is blocked by INSERT ... ON
DUPLICATE KEY UPDATE on another thread even when low_priority_updates is
activated.

The solution is to possibly downgrade the lock type to the setting of
low_priority_updates if the INSERT cannot be concurrent.


sql/sql_insert.cc:
  Possibly downgrade lock type to the the setting of low_priority_updates if
  if the INSERT cannot be concurrent.
2007-08-30 16:11:53 -03:00
unknown
672c421b13 Merge malff@bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  weblab.(none):/home/marcsql/TREE/mysql-5.0-28779-b
2007-08-30 10:38:20 -06:00
unknown
aef135da66 Use double quotes instead of single ones which make the test fail on Windows. This is for bug #30164.
mysql-test/t/mysql.test:
  Use double quotes instead of single ones which make the test fail on Windows.
2007-08-30 17:21:43 +04:00
unknown
bb986a24e7 Bug #30164: Using client side macro inside server side comments generates broken queries
Problem:
  
In cases when a client-side macro appears inside a server-side comment, the add_line() function in mysql.cc discarded all characters until the next delimiter to remove macro arguments from the query string. This resulted in broken queries being sent to the server when the next delimiter character appeared past the comment's boundaries, because the comment closing sequence ('*/') was discarded.
  
Fix:
  
If a client-side macro appears inside a server-side comment, discard all characters in the comment after the macro (that is, until the end of the comment rather than the next delimiter).
This is a minimal fix to allow only simple cases used by the mysqlbinlog utility. Limitations that are worth documenting:
  
- Nested server-side and/or client-side comments are not supported by mysql.cc
- Using client-side macros in multi-line server-side comments is not supported
- All characters after a client-side macro in a server-side comment will be omitted from the query string (and thus, will not be sent to server).


client/mysql.cc:
  If a client-side macro appears inside a server-side comment, discard all characters in the comment after the macro.
mysql-test/r/mysql.result:
  Added a test case for bug #30164.
mysql-test/t/mysql.test:
  Added a test case for bug #30164.
2007-08-30 12:53:24 +04:00
unknown
b0f899e977 Bug#28779 (mysql_query() allows execution of statements with unbalanced
comments)

Before this fix, the server would accept queries that contained comments,
even when the comments were not properly closed with a '*' '/' marker.

For example,
  select 1 /* + 2 <EOF>
would be accepted as
  select 1 /* + 2 */ <EOF>
and executed as
  select 1

With this fix, the server now rejects queries with unclosed comments
as syntax errors.
Both regular comments ('/' '*') and special comments ('/' '*' '!') must be
closed with '*' '/' to be parsed correctly.


mysql-test/r/comments.result:
  Unbalanced comments are a syntax error.
mysql-test/t/comments.test:
  Unbalanced comments are a syntax error.
sql/sql_lex.cc:
  Unbalanced comments are a syntax error.
2007-08-29 14:50:32 -06:00
unknown
7cafddc345 Merge pilot.(none):/data/msvensson/mysql/mysql-4.1-maint
into  pilot.(none):/data/msvensson/mysql/mysql-5.0-maint


mysql-test/mysql-test-run.pl:
  Auto merged
2007-08-29 17:54:16 +02:00
unknown
10012b36fe Remove any old pidfile before starting mysqld to make sure that
'mysqld_wait_started' don't return prematurely because of an old
pidfile
2007-08-29 17:54:02 +02:00
unknown
2e4963c5b6 Remove unportable use of "system rm" 2007-08-29 14:44:23 +02:00
unknown
5819322bd9 Merge pilot.(none):/data/msvensson/mysql/mysql-4.1-maint
into  pilot.(none):/data/msvensson/mysql/mysql-5.0-maint


mysql-test/lib/mtr_misc.pl:
  Auto merged
2007-08-29 14:39:59 +02:00
unknown
305c352685 Fix typo: '$$' => '$' 2007-08-29 14:39:40 +02:00
unknown
3d5440505c Test case for Bug#13675: DATETIME/DATE type in store proc param
seems to be converted as varbinary.

The bug has been already fixed. This CS just adds a test case for it.


mysql-test/r/sp.result:
  Update result file.
mysql-test/t/sp.test:
  Test case for BUG#13675.
2007-08-29 14:57:59 +04:00
unknown
cf37bc45fc Remove unportable use of "system rm" 2007-08-29 12:47:00 +02:00
unknown
643b2163e6 Remove unportable "system rm" 2007-08-29 12:44:43 +02:00
unknown
3b7f80940d Merge bk-internal:/home/bk/mysql-5.0-maint
into  pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
2007-08-29 11:54:21 +02:00
unknown
ff2475635c Merge pilot.(none):/data/msvensson/mysql/mysql-4.1-maint
into  pilot.(none):/data/msvensson/mysql/mysql-5.0-maint


mysql-test/lib/mtr_misc.pl:
  Auto merged
mysql-test/mysql-test-run.pl:
  Auto merged
2007-08-29 11:53:36 +02:00
unknown
2675c95217 Remove unportable use of "exec chmod" 2007-08-29 11:53:15 +02:00
unknown
038df2d05c Add 'mtr_rmtree'
mysql-test/lib/mtr_misc.pl:
  Add function 'mtr_rmtree' it will try 'rmtree' and if that fails (most likely
  due to permission problems we will fun File::find to chmod all files and dirs
  to 0777 and then delete.
mysql-test/mysql-test-run.pl:
  Use 'mtr_rmtree' in favour of 'rmtree'
2007-08-29 11:51:34 +02:00
unknown
901ead6cb5 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  moksha.local:/Users/davi/mysql/push/mysql-5.0-runtime
2007-08-28 18:47:08 -03:00
unknown
4dac538a0b Merge ramayana.hindu.god:/home/tsmith/m/bk/maint/b27694/50
into  ramayana.hindu.god:/home/tsmith/m/bk/maint/50
2007-08-28 13:24:31 -06:00
unknown
e0e44ad66e Bug#30625 (Performance, reduce depth for expressions)
This is a performance bug, affecting in particular the bison generated code
for the parser.

Prior to this fix, the grammar used a long chain of reduces to parse an
expression, like:
  bit_expr -> bit_term
  bit_term -> bit_factor
  bit_factor -> value_expr
  value_expr -> term
  term -> factor
etc

This chain of reduces cause the internal state automaton in the generated
parser to execute more state transitions and more reduces, so that the
generated MySQLParse() function would spend a lot of time looping to execute
all the grammar reductions.

With this patch, the grammar has been reorganized so that rules are more
"flat", limiting the depth of reduces needed to parse <expr>.

Tests have been written to enforce that relative priorities and properties
of operators have not changed while changing the grammar.

See the bug report for performance data.


mysql-test/r/parser_precedence.result:
  Improved test coverage for operator precedence
mysql-test/t/parser_precedence.test:
  Improved test coverage for operator precedence
sql/sql_yacc.yy:
  Simplified the grammar to improve performances
2007-08-28 11:16:03 -06:00
unknown
2bb6a44af1 Streamline "do_close_connection" and "do_send_quit"
Fix typo, "next_con" -> "con"


client/mysqltest.c:
  Reuse "find_connection_by_name" both from "do_close_connection" and "do_send_quit"
  Adjust alignment of comment
  Fix typo in "do_close_connection", it used the global variable "next_con" instead
  of local variable "con"
2007-08-28 16:47:05 +02:00
unknown
5f524dadcd Remove unportable constructs in loaddata.test 2007-08-28 16:44:31 +02:00
unknown
345c18e4e1 Move "analyze_testcase_failure" to mysqltest(since it knows best when
to perform this analyzis)


client/mysqltest.c:
  Add function 'show_query' and use it to output some debug queries when
  "sync_with_master" has failed.
mysql-test/mysql-test-run.pl:
  Move "analyze_testcase_failure" to mysqltest
2007-08-28 15:32:13 +02:00
unknown
484069cf00 Merge pilot.(none):/data/msvensson/mysql/bug28812/my50-bug28812
into  pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
2007-08-28 11:35:22 +02:00
unknown
b8c3ba1f84 Merge pilot.(none):/data/msvensson/mysql/yassl_import/my50-yassl_import
into  pilot.(none):/data/msvensson/mysql/bug28812/my50-bug28812
2007-08-28 11:35:05 +02:00
unknown
9c3a03a239 Bug#28812 rpl_ssl fails due to assert in extra/yassl/src/socket_wrapper.cpp:117
- Merge sslaccept and sslconnect.
 - Atomically "reset" vio to VIO_TYPE_SSL when the SSL connection has
   succeeded, this avoids having to revert anything and thus protects
   against "close_active_vio" in the middle.
 - Add some variance to the testcase


mysql-test/t/rpl_ssl.test:
  Add some variance by running two selects before stopping the slave
  Check that number of records in t1 are equal on master and slave
vio/viossl.c:
  Rewrite sslconnect and sslaccept to automically "reset" the vio
  to VIO_TYPE_SSL. Also use the fd from 'SSL_get_fd' to avoid
  setting vio->sd to -1, that previously occured when "close_active_vio"
  was called during connect/accept.
  
  Merge the two function since they were exactly the same except for one line.
  
  Update the DBUG printouts to be generic(i.e use peer instead of client/server).
2007-08-28 11:34:43 +02:00
unknown
fe4abfb2f7 Import yaSSL version 1.7.2
- Fix bug#27265
- Support for fixing bug#18441


extra/yassl/include/openssl/crypto.h:
  Import patch yassl.diff
extra/yassl/include/openssl/ssl.h:
  Import patch yassl.diff
extra/yassl/include/yassl_int.hpp:
  Import patch yassl.diff
extra/yassl/src/handshake.cpp:
  Import patch yassl.diff
extra/yassl/src/socket_wrapper.cpp:
  Import patch yassl.diff
extra/yassl/src/ssl.cpp:
  Import patch yassl.diff
extra/yassl/src/yassl_int.cpp:
  Import patch yassl.diff
extra/yassl/taocrypt/src/coding.cpp:
  Import patch yassl.diff
extra/yassl/taocrypt/src/crypto.cpp:
  Import patch yassl.diff
extra/yassl/include/openssl/des_old.h:
  Import patch yassl.diff
extra/yassl/include/openssl/evp.h:
  Import patch yassl.diff
extra/yassl/include/openssl/hmac.h:
  Import patch yassl.diff
extra/yassl/include/openssl/objects.h:
  Import patch yassl.diff
extra/yassl/include/openssl/sha.h:
  Import patch yassl.diff
extra/yassl/include/openssl/prefix_ssl.h:
  Update prefixes
2007-08-28 10:35:55 +02:00
unknown
d54f42c16c Merge ramayana.hindu.god:/home/tsmith/m/bk/50
into  ramayana.hindu.god:/home/tsmith/m/bk/maint/50


sql/sql_show.cc:
  Auto merged
2007-08-27 18:19:55 -06:00
unknown
34ded62908 Bug#30632 HANDLER read failure causes hang
If, after the tables are locked, one of the conditions to read from a
HANDLER table is not met, the handler code wrongly jumps to a error path
that won't unlock the tables.

The user-visible effect is that after a error in a handler read command,
all subsequent handler operations on the same table will hang.

The fix is simply to correct the code to jump to the (same) error path that
unlocks the tables.


mysql-test/r/handler.result:
  Bug#30632 test case result
mysql-test/t/handler.test:
  Bug#30632 test case
sql/sql_handler.cc:
  Always unlock the internal and external table level locks if any of the conditions
  (including errors) to read from a HANDLER table are not met.
2007-08-27 10:37:12 -03:00
unknown
369a5f1cdc Bug#25164 create table a as select * from A hangs
The problem from a user's perspective: user creates table A, and then tries
to CREATE TABLE a SELECT from A - and this causes a deadlock error, a hang,
or fails with a debug assert, but only if the storage engine is InnoDB.

The origin of the problem: InnoDB uses case-insensitive collation
(system_charset_info) when looking up the internal table share, thus returning
the same share for 'a' and 'A'.

Cause of the user-visible behavior: since the same share is returned to SQL
locking subsystem, it assumes that the same table is first locked (within the
same session) for WRITE, and then for READ, and returns a deadlock error.
However, the code is wrong in not properly cleaning up upon an error, leaving
external locks in place, which leads to assertion failures and hangs.

Fix that has been implemented: the SQL layer should properly propagate the
deadlock error, cleaning up and freeing all resources.

Further work towards a more complete solution: InnoDB should not use case
insensitive collation for table share hash if table names on disk honor the case.


mysql-test/r/innodb-deadlock.result:
  Bug#25164 test case result
mysql-test/t/innodb-deadlock.test:
  Bug#25164 test case. The CREATE TABLE may fail depending on the character set
  of the system and filesystem, but it should never hang.
sql/lock.cc:
  Unlock the storage engine "external" table level locks, if the MySQL thr_lock
  locking subsystem detects a deadlock error.
2007-08-27 10:13:54 -03:00
unknown
7388ea3c56 adjust version number
configure.in:
  adjust version number after 5.0.48 clone-off
2007-08-27 11:38:32 +02:00
unknown
6fdcb4c7b3 Bug#29805 mysql_upgrade test fail if ~/.my.cnf contain a password
- "mysql" and "mysqlcheck" should not read defaults file


client/mysql_upgrade.c:
  Instruct "mysql" and "mysqlcheck" that is invoked by "mysql_upgrade" not
  to read defaults file, they should get all the parameters they need from
  mysql_upgrade(that read the default file)
2007-08-27 11:31:49 +02:00
unknown
478fb4a14d Merge bk-internal:/home/bk/mysql-5.0
into  mysql.com:/data0/mysqldev/my/build-200708231546-5.0.48/mysql-5.0-release
2007-08-27 11:24:54 +02:00
unknown
bd55d4f174 Bug#28560 mysql_upgrade test links /usr/local/mysql/lib libraries
- Chop off .libs/ part of path if running in non installed builddir
   using libtool


client/mysql_upgrade.c:
  Chop off .libs part of path to avoid executing "non relinked" binaries
  that would use the system installed dynamic libraries instead of the
  newly built ones.
2007-08-27 10:25:34 +02:00
unknown
863a430108 Merge a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.0-main
into  a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-5.0-marvel
2007-08-25 11:39:56 +03:00
unknown
ac7f0f98d6 Merge trift2.:/MySQL/M50/netware2-5.0
into  trift2.:/MySQL/M50/push-5.0


netware/Makefile.am:
  Auto merged
2007-08-24 23:40:36 +02:00
unknown
4a801dde7e Fixes for the NetWare builds, discovered during 5.1.21-beta and backported to 5.0:
1) Ensure "init_db.sql" and "test_db-sql" really get built.

2) Ensure the "*.def" files with NetWare linker options get distributed to the proper directories.


netware/BUILD/compile-netware-END:
  Ensure the "*.def" files are built for NetWare.
  
  This is a backport of a 5.1 fix which may not be needed in 5.0 but cannot do any harm:
  the general "link_sources" step might fall victim to a cleanup which would be fatal
  just for NetWare, because of problems in the ordering of SUBDIR entries.
netware/Makefile.am:
  1) The scripts "init_db.sql" and "test_db.sql" must be built in the NetWare phase.
  
  2) Use "basename", not sed.
2007-08-24 23:07:59 +02:00
unknown
b18447112c Remove unsued variable $glob_hostname, unused functions
'mtr_short_hostname' and 'mtr_full_hostname'
2007-08-24 15:43:45 +02:00