Commit graph

106 commits

Author SHA1 Message Date
Davi Arnaut
b3d22cef93 WL#5486: Remove code for unsupported platforms
Remove MS-DOS specific code.
2010-07-15 08:16:06 -03:00
Davi Arnaut
a10ae35328 Bug#34043: Server loops excessively in _checkchunk() when safemalloc is enabled
Essentially, the problem is that safemalloc is excruciatingly
slow as it checks all allocated blocks for overrun at each
memory management primitive, yielding a almost exponential
slowdown for the memory management functions (malloc, realloc,
free). The overrun check basically consists of verifying some
bytes of a block for certain magic keys, which catches some
simple forms of overrun. Another minor problem is violation
of aliasing rules and that its own internal list of blocks
is prone to corruption.

Another issue with safemalloc is rather the maintenance cost
as the tool has a significant impact on the server code.
Given the magnitude of memory debuggers available nowadays,
especially those that are provided with the platform malloc
implementation, maintenance of a in-house and largely obsolete
memory debugger becomes a burden that is not worth the effort
due to its slowness and lack of support for detecting more
common forms of heap corruption.

Since there are third-party tools that can provide the same
functionality at a lower or comparable performance cost, the
solution is to simply remove safemalloc. Third-party tools
can provide the same functionality at a lower or comparable
performance cost. 

The removal of safemalloc also allows a simplification of the
malloc wrappers, removing quite a bit of kludge: redefinition
of my_malloc, my_free and the removal of the unused second
argument of my_free. Since free() always check whether the
supplied pointer is null, redudant checks are also removed.

Also, this patch adds unit testing for my_malloc and moves
my_realloc implementation into the same file as the other
memory allocation primitives.
2010-07-08 18:20:08 -03:00
Mats Kindahl
e409d6f69c WL#5030: Split and remove mysql_priv.h
This patch:

- Moves all definitions from the mysql_priv.h file into
  header files for the component where the variable is
  defined
- Creates header files if the component lacks one
- Eliminates all include directives from mysql_priv.h
- Eliminates all circular include cycles
- Rename time.cc to sql_time.cc
- Rename mysql_priv.h to sql_priv.h
2010-03-31 16:05:33 +02:00
Alexander Nozdrin
069d78c067 Merge from mysql-next-mr. 2009-10-23 15:22:21 +04:00
Alexander Nozdrin
ca08f10ccd Manual merge from mysql-trunk-merge. 2009-10-14 12:25:39 +04:00
Magne Mahre
63350dfc8b Bug #33831 mysql_real_connect() connects again if
given an already connected MYSQL handle

mysql_real_connect() did not check whether the MYSQL connection
handler was already connected and connected again even if so. 
Now a CR_ALREADY_CONNECTED error is returned.
2009-10-09 14:30:54 +02:00
Ingo Struewing
1e87babb19 Bug#37267 - connect() EINPROGRESS failures mishandled in client library
We cann connect() in a non-blocking mode to be able to specify a
non-standard timeout.

The problem was that we did not fetch the status from the
non-blocking connect(). We assumed that poll() would not return
a POLLIN flag if the connect failed. But on some platforms this
is not true.

After a successful poll() we do now retrieve the status value
from connect() with getsockopt(...SO_ERROR...). Now we do know
if (and how) the connect failed.

The test case for my investigation was rpl.rlp_ssl1 on an
Ubuntu 9.04 x86_64 machine. Both, IPV4 and IPV6 were active.
'localhost' resolved first for IPV6 and then for IPV4. The
connection over IPV6 was blocked. rpl.rlp_ssl1 timed out
as it did not notice the failed connect(). The first read()
failed, which was interpreted as a master crash and the
connection was tried to reestablish with the same result
until the retry limit was reached.

With the fix, the connect() problem is immediately recognized,
and the connect() is retried on the second resolution for
'localhost', which is successful.
2009-09-30 12:28:15 +02:00
Georgi Kodinov
1648dad6ed merge 2009-09-25 14:39:05 +03:00
Georgi Kodinov
63212b1643 Bug #45159 : some tests in suite "jp" fail in embedded server (use LOAD DATA)
Initialize correctly client flags for the embedded client
Test cases in jp updated to work correctly with embedded server.
2009-09-11 15:52:08 +03:00
davi@mysql.com/endora.local
41545137ef Bug#34655 Compile error
Rename client_last_error to last_error and client_last_errno to last_errno
to not break connectors which use the internal net structure for error handling.
2008-02-28 14:55:46 -03:00
kostja@bodhi.(none)
ebb9c5d983 Bug#12713 "Error in a stored function called from a SELECT doesn't
cause ROLLBACK of statement", part 1. Review fixes.

Do not send OK/EOF packets to the client until we reached the end of 
the current statement.
This is a consolidation, to keep the functionality that is shared by all 
SQL statements in one place in the server.
Currently this functionality includes:
- close_thread_tables()
- log_slow_statement().

After this patch and the subsequent patch for Bug#12713, it shall also include:
- ha_autocommit_or_rollback()
- net_end_statement()
- query_cache_end_of_result().

In future it may also include:
- mysql_reset_thd_for_next_command().
2007-12-12 18:21:01 +03:00
kent@mysql.com/kent-amd64.(none)
226a5c833f Many files:
Changed header to GPL version 2 only
2006-12-23 20:17:15 +01:00
monty@mysql.com/nosik.monty.fi
e825879800 Remove compiler warnings
(Mostly in DBUG_PRINT() and unused arguments)
Fixed bug in query cache when used with traceing (--with-debug)
Fixed memory leak in mysqldump
Removed warnings from mysqltest scripts (replaced -- with #)
2006-11-20 22:42:06 +02:00
holyfoot/hf@mysql.com/deer.(none)
00f56da9af merging 2006-07-18 16:43:39 +05:00
holyfoot/hf@mysql.com/deer.(none)
bed7b69243 Merge mysql.com:/home/hf/work/mysql-4.1.mrg
into  mysql.com:/home/hf/work/mysql-5.0.mrg
2006-07-18 14:52:29 +05:00
holyfoot/hf@mysql.com/deer.(none)
eddaafb12b Merge bk@192.168.21.1:mysql-4.1
into  mysql.com:/home/hf/work/mysql-4.1.16017
2006-07-13 22:32:18 +05:00
holyfoot@mysql.com
0a9a755419 merging 2006-06-26 22:32:02 +05:00
holyfoot@deer.(none)
d8d42948b2 bug #20318 (ctype_ucs2_def test fails with embedded)
there was two problems about charsets in embedded server
1. mysys/charset.c - defined there default_charset_info variable is
modified by both server and client code (particularly when
--default-charset option is handled)
In embedded server we get two codelines modifying one variable.
I created separate default_client_charset_info for client code

2. mysql->charset and mysql->options.charset initialization isn't
properly done for embedded server - necessary calls added
2006-06-19 22:11:01 +05:00
holyfoot@deer.(none)
bc35c50063 bug #16017 (memory leaks in embedded server)
There actually was 3 different problems -
hash_user_connections wasn't cleaned
one strdupped database name wasn't freed
and stmt->mem_root wasn't cleaned as it was
replased with mysql->field_alloc for result
For the last one - i made the library using stmt's
fields to store result if it's the case.
2006-06-01 17:06:42 +05:00
monty@mysql.com
82b77cdd90 Fixes to embedded server to be able to run tests with it
(Needed for "list of pushes" web page and autopush)
2006-02-24 18:34:15 +02:00
holyfoot@hf-ibm.(none)
5ddaf35c26 Fix for bug #9632 (strict.test fails in -embedded-server mode) 2005-05-09 16:26:06 +05:00
hf@deer.(none)
5eb5fd12be fix for bug #5920 (embedded-server mysql doesn't handle --defaults-file) 2005-01-03 19:21:54 +04:00
hf@deer.(none)
e79dfd91d0 Fix asked by Ranger.
If embedded library gets empty string as a hostname it should use embedded connection
2004-09-25 21:56:52 +05:00
monty@mysql.com
272c3a2669 After merge fixes 2004-05-27 02:50:42 +03:00
monty@mysql.com
61a6557307 merge with 4.0 to get windows fixes 2004-05-27 00:30:28 +03:00
hf@deer.(none)
78f58ff384 Fix to make Windows compilation smoother 2004-05-26 21:40:27 +05:00
hf@deer.(none)
c00bc7a803 Proposed fix for #3744 (embedded server, wrong error message if database is
missing)
2004-05-17 12:05:57 +05:00
hf@deer.(none)
3348564447 Fix for 1224 (USER() CURRENT_USER() functions in embedded library)
Now we return user@host for USER() in embedded library
CURRENT_USER returns empty string if library compiled with
NO_EMBEDDED_ACCESS_CHECKS
2004-01-07 21:30:15 +04:00
hf@deer.(none)
9db115c027 Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-4.1
into deer.(none):/home/hf/work/mysql-4.1.2046
2003-12-24 16:04:24 +04:00
hf@deer.(none)
42799cc584 Fix for #2126 (mysql_server_init call shouldn't be needed)
now mysql_server_init is called from mysql_init with fake parameters
mysql_once_init code included to mysql_server_init.
embedded-specific initialization is in init_embedded_server function
2003-12-18 15:51:22 +04:00
hf@deer.(none)
757acc512d Fix for #2046
Just didn't notice that the mysql_connect function was implemeted
in libmysqld.c.
Implementation removed.
2003-12-10 11:04:58 +04:00
hf@deer.(none)
5f8e7fef27 Merge 2003-09-26 15:40:26 +05:00
hf@deer.(none)
ba8fa76fa2 SCRUM:
WL#604 Privileges in embedded library
code added to check privileges in embedded library
NO_EMBEDDED_ACCESS_CHECKS macros inserted in code so we can exclude
access-checking parts. Actually we now can exclude these parts from
standalone server as well. Do we need it?
Access checks are disabled in embedded server by default. One should
edit libmysqld/Makefile manually to get this working.
We definitely need the separate configure for embedded server
2003-09-26 15:33:13 +05:00
hf@deer.(none)
0868446b3e SCRUM
embedded library
missed memory freeing added
2003-09-19 14:17:55 +05:00
hf@deer.(none)
0e059dcb74 SCRUM:
embedded library
I decided to get rid of #define mysql_some_function in mysql.h
It puzzles users and makes problems with dynamic libraries

Finally, there are only two functions left, that are covered with
the #define-s and it won't hurt performance at all
2003-09-18 18:28:42 +05:00
hf@deer.(none)
7dd4cb58d6 SCRUM
prepared statements in embedded library
2003-09-18 12:25:00 +05:00
hf@deer.(none)
bf017a2eb0 SCRUM
Prepared statements in embedded server
Several changes in library code with two goals:
to make mysql_prepare_stmt working in embedded server
to get rid of #define mysql_interface_func mysql->methods->interface_func
in user's interface
2003-09-16 16:06:25 +05:00
hf@deer.(none)
e63e2229b6 Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-4.1
into deer.(none):/home/hf/work/mysql-4.1.stmt
2003-09-12 19:36:42 +05:00
hf@deer.(none)
9f3996cde9 SCRUM:
#977 Prepared statements in embedded library
2003-09-12 19:35:34 +05:00
lenz@mysql.com
9578d0b0ea - fixed yet another C++-style comment in a .c file that made the IBM
C compiler barf
2003-09-12 15:48:05 +02:00
monty@mashka.mysql.fi
7538242e4f merge with 4.1 tree 2003-09-11 20:31:40 +03:00
monty@mashka.mysql.fi
73f66f68fd merge with 4.0.15 2003-09-11 20:24:14 +03:00
hf@deer.(none)
f434b329f5 SCRUM
embedded&client library
some fixes: zero at the end of the data added
mysql_list_fields became 'virtual'
2003-09-11 09:46:31 +05:00
hf@deer.(none)
fd77d78804 SCRUM: embedde library
Minor fixes
2003-09-10 12:58:26 +05:00
hf@deer.(none)
69283f8091 SCRUM: embedded library
mysql_fetch_length fixed for embedded library. Now data length is stored
before the data. Pointers in row still points to the data so you have to
get *(uint*)(data_ptr - sizeof(uint)) to get data length
2003-09-10 12:09:24 +05:00
monty@mashka.mysql.fi
99490870e6 Cleaned up last bug fixes
Fix bug in SHOW GRANTS when there is a column privilege but no table privilege
2003-09-09 20:06:50 +03:00
hf@deer.(none)
2ba517a3f1 fix for #1210 2003-09-08 13:11:18 +05:00
hf@deer.(none)
95bf984d15 Fix for #1210
i fixed this in 4.1 in slightly different way
2003-09-08 13:02:19 +05:00
hf@deer.(none)
bf3e65b128 SCRUM:
Fixed some mess with STDCALL in function's declarations
2003-08-28 13:39:46 +05:00
hf@deer.(none)
a4f899dfc0 SCRUM - adding client into embedded server
error handling fixed
fetch_lengths made to work differently in embedded and client cases
2003-07-23 15:23:20 +05:00