Commit Graph

494 Commits

Author SHA1 Message Date
Andrey Hristov
429e07bba2 grok the MySQL 5.5 extended handshake.
Move the authentication routines, the native ones, to
separate file and encapsulate them in a plugin.
Depending on the server version and what the server
requests (or doesn't in old versions) load the authentication
plugin to handle it.
Currently only the 4.1+ authentication is supported. More to come
2011-01-12 21:40:05 +00:00
Andrey Hristov
ddbbcdce49 Use common code to handle initial authentication and
COM_CHANGE_USER
2011-01-11 13:02:57 +00:00
Andrey Hristov
00eaff1528 plug a leak 2011-01-10 15:28:52 +00:00
Andrey Hristov
61d49db1f3 new flag 2011-01-10 15:14:56 +00:00
Andrey Hristov
5549e066f2 Proper fix for
Bug #53503      mysqli::query returns false after successful LOAD DATA query
which fixes als #56349, same behavior but in ext/mysql. Both due to a bug
in mysqlnd. Never was a problem with libmysql.
Also fixed the 53503's test case as it always reported PASS, even when there
should have been a failure.
2011-01-07 14:22:30 +00:00
Felipe Pena
0203cc3d44 - Year++ 2011-01-01 02:17:06 +00:00
Andrey Hristov
d8774af125 C89 fix 2010-12-28 16:41:39 +00:00
Andrey Hristov
cfac5f5b67 extending the API interface - plugins can register
themselves with a structure and can be searched.
Every plugin can have statistics and they are shown
under the statistics of mysqlnd in MINFO.
2010-12-28 15:16:21 +00:00
Andrey Hristov
b51abfb35f fix a small bug about affected_rows in the text protocol 2010-12-16 12:56:19 +00:00
Andrey Hristov
47bb667a64 Fix sprintf modifier to be right, wrong data reported in the log 2010-12-16 12:18:54 +00:00
Andrey Hristov
69894eaf80 count preciser in case of error 2010-12-15 14:14:58 +00:00
Pierre Joye
a7ffa09e18 - add PHP_INSTALL_HEADERS to all parts (core&exts) exposing headers, generate the install-headers cmd 2010-12-11 22:18:10 +00:00
Andrey Hristov
27ecaa7901 Skip additional result sets sent by MySQL 5.5 servers
which break the Protocol API 
(see http://bugs.mysql.com/bug.php?id=58700)
2010-12-06 13:59:14 +00:00
Andrey Hristov
e183ea0495 don't crash if the API is used incorrectly 2010-12-06 13:50:51 +00:00
Andrey Hristov
ee15ed307e new server constant as of 5.5 2010-12-02 13:59:56 +00:00
Pierre Joye
87fd3737b4 -fix build 2010-11-15 23:53:13 +00:00
Andrey Hristov
bcb4c8427e two new stats 2010-11-05 20:07:34 +00:00
Andrey Hristov
769a3cf0c3 - More features for the profiling, create aggregates and dump them
on file close.
- Also add a trace modifier to switch on and off the profiling.
- With additional compiler switch the profiling can be completely omitted,
of course it makes sense only when --enable-debug. Because otherwise
there is no tracing, thus no profiling.
- Added a fix for Windows for handling trace files on different devices
 (special handing of ':' )
2010-10-29 15:02:39 +00:00
Andrey Hristov
da633ed52e gettimeofday for windows 2010-10-28 14:14:06 +00:00
Andrey Hristov
9920be1a81 show tracing 2010-10-28 14:07:36 +00:00
Andrey Hristov
099a505f89 fix windows debug build
better zlib detection
2010-10-28 13:46:54 +00:00
Andrey Hristov
e70b2fcda4 rename and remove usage of inttypes.h, not needed 2010-10-25 13:44:11 +00:00
Andrey Hristov
fe719c5e42 profiling in trace mode 2010-10-22 15:46:26 +00:00
Andrey Hristov
a25ce8c606 last piece to enable trace logging on windows 2010-10-22 14:34:33 +00:00
Andrey Hristov
76783dfeb5 enable debug logging on windows, in debug builds, of course 2010-10-22 14:12:45 +00:00
Andrey Hristov
74ec58a045 new collations 2010-10-08 09:15:31 +00:00
Andrey Hristov
0e519d247e fix some uninitialized variables. also fix shadowing of global symbols 2010-10-07 13:49:00 +00:00
Andrey Hristov
1f9cf93cac Fix for Bug #52686 mysql_stmt_attr_[gs]et arg. points to incorrect type 2010-10-06 11:11:02 +00:00
Andrey Hristov
63d6892b56 more variable hiding fixes 2010-10-06 07:09:37 +00:00
Andrey Hristov
b373ccd6fc fix shadowing of parameters 2010-10-06 06:08:55 +00:00
Andrey Hristov
223832c501 rename parameter name - should not shadow the global symbol alloca 2010-10-05 17:20:00 +00:00
Andrey Hristov
c7a09c682d two more compiler warnings fixed - size does matter 2010-10-05 17:10:47 +00:00
Andrey Hristov
396402fc97 Rename a method so it doesn't clash with a global symbol - a function
Fix compiler waring by extening the type of a variable
2010-10-05 17:03:50 +00:00
Andrey Hristov
de69927b8e Fix compiler warnings - on 32bit size_t is smaller than uint64_t, although
we will never hit this the compiler should be happy.
2010-10-05 16:54:14 +00:00
Andrey Hristov
60bfedb1e6 rename parameter, should not conflict with global symbol -
the socket function
2010-10-05 16:27:49 +00:00
Andrey Hristov
07c08c1c93 remove trailing commas in enums 2010-10-05 14:56:49 +00:00
Andrey Hristov
a9da84800e add some safe casts 2010-10-05 11:08:21 +00:00
Andrey Hristov
75ed0bbb3e fixing more types 2010-10-05 10:30:00 +00:00
Andrey Hristov
a3f2895e67 fix types 2010-10-05 08:56:21 +00:00
Ulf Wendel
b3dfb56949 Fix warnings
ext\mysqlnd\mysqlnd_result_meta.c(57) : warning C4090: 'initializing' : different 'const' qualifiers
ext\mysqlnd\mysqlnd_result_meta.c(64) : warning C4090: 'initializing' : different 'const' qualifiers
ext\mysqli\mysqli_report.c(50) : warning C4013: 'php_mysqli_throw_sql_exception' undefined; assuming extern returning int
2010-10-05 08:29:54 +00:00
Andrey Hristov
d4b1c1ec78 fix recent TSRM build break, with --enable-debug 2010-10-05 08:17:33 +00:00
Kalle Sommer Nielsen
304bc60e98 We do not need this TSRMLS_FETCH() call as we do not use any TSRM stuff in here, so we can get
a minor boost here in ZTS mode.
2010-10-04 21:04:25 +00:00
Andrey Hristov
026da7d4a0 fix two more warnings 2010-10-04 14:52:14 +00:00
Andrey Hristov
0a5c631488 add some safe casts - lower the number of warnings by 2 2010-10-04 14:12:31 +00:00
Andrey Hristov
bf3b607f7a Fix const-ness 2010-10-04 13:54:30 +00:00
Andrey Hristov
d7b26d2987 Even better patch 2010-10-04 12:59:29 +00:00
Andrey Hristov
5f06ac5caf don't define twice the macro on some platforms 2010-10-04 12:41:12 +00:00
Ulf Wendel
500cd35c21 Fixing compiler warning. 2010-10-04 10:58:05 +00:00
Ulf Wendel
5d6f3fb908 Fixing "ext/mysqlnd/mysqlnd.h", line 287: warning: syntax error: empty declaration" 2010-10-04 10:51:44 +00:00
Andrey Hristov
d55566c7b8 Fix a problem that leads to leaks in plugins that
use stmt local data - no free is called for statements
that are over-prepared
2010-09-29 13:18:07 +00:00
Andrey Hristov
1762d63406 add another hook, maybe the last one, for MYSQLND_STMT, which
was missed before
2010-09-28 14:36:18 +00:00
Andrey Hristov
c301c358ae Fix the value, it was bumped 2010-09-27 11:23:01 +00:00
Andrey Hristov
859a1404bf WS fixes 2010-09-23 16:03:22 +00:00
Kalle Sommer Nielsen
1ac15b2f8e Added TSRMLS macros into php_get_current_user() 2010-09-23 04:13:36 +00:00
Andrey Hristov
4c26112c88 Fix for
Request #48082 mysql_connect does not work with named pipes
2010-09-22 15:14:04 +00:00
Andrey Hristov
7346d8d590 small macro fix 2010-09-22 14:54:43 +00:00
Andrey Hristov
0b74eb2e96 fix for bug 52891 - optimize a bit 2010-09-22 14:26:43 +00:00
Andrey Hristov
fbaed5476c Fix for
Bug #52891 Wrong data inserted with mysqli/mysqlnd when using bind_param,value>LONG_MAX
2010-09-22 11:38:49 +00:00
Pierre Joye
ed58636f00 - use TSRMLS_D/C with php_stream_context_alloc 2010-09-16 09:33:42 +00:00
Andrey Hristov
f60bd23914 remove unneeded proxy function _mysqlnd_restart_psessoin 2010-09-15 12:23:45 +00:00
Andrey Hristov
d5f1517cd6 Remove unneeded proxy function _mysqlnd_end_psession 2010-09-15 12:11:33 +00:00
Andrey Hristov
383d7d005a fix build on windows, seems this macro is not defined 2010-09-01 16:54:20 +00:00
Andrey Hristov
b2bcf3ae48 OPT_COMPRESS support for mysqlnd_conn::set_client_option
To be used by mysqli_options
2010-09-01 14:47:36 +00:00
Andrey Hristov
2ab9513ff4 Fix for MySQL Bug #49406
Binding params doesn't work when selecting a date inside a CASE-WHEN
(http://bugs.mysql.com/bug.php?id=49406)
The MySQL server sends MYSQL_TYPE_NEWDATE values as clear text, even
when PS are used and thus the binary protocol are used. Changing the
handler for the type.
2010-08-30 18:10:23 +00:00
Andrey Hristov
9c0439e4bc Fix for Bug #52613 crash in mysqlnd 2010-08-17 18:08:25 +00:00
Andrey Hristov
277c7d4dea Added utf16 and utf32 support, as in MySQL 5.5, in mysqlnd.
Fixed tests, so they don't try to use SET NAMES utf16|utf32,
as character_set_client can't be set to those (the lexer can't
read ucs2, utf16 and utf32).
Added support for 4-byte utf8, as found in MySQL 5.5
2010-08-16 17:44:50 +00:00
Andrey Hristov
c803b0024a Make this function static, as it is used only in this file.
Add additional comment about how it works.
2010-08-12 14:17:31 +00:00
Andrey Hristov
9da177f8d5 Allocate memory in a burst mode, and later use it. Increases
locality of the data.
Also use MYSQLND_INC_CONN_STATISTIC in one place, instead of
two, thus removing code duplication from macro expansion - less
code to fit in the instruction cache.
2010-08-12 13:23:16 +00:00
Andrey Hristov
c974313aed Switch from using PHP_MAJOR_VERSION to separate define for
unicode. Unicode is no more, but these are "bookmarks" where
to change mysqlnd, if Unicode becomes trendy again.
2010-08-12 12:02:02 +00:00
Andrey Hristov
d27983e781 ws + cs 2010-08-12 11:38:08 +00:00
Andrey Hristov
da42d146ab Fix Request #52302 mysqli_fetch_all does not work with MYSQLI_USE_RESULT 2010-08-09 17:29:30 +00:00
Andrey Hristov
ebaee8a4d0 Lay foundations for named pipe support in mysqlnd 2010-08-09 17:01:57 +00:00
David Soria Parra
d9afaad77f make ssl_set return value in mysqlnd compatible with libmysqli return value 2010-08-06 19:47:03 +00:00
Andrey Hristov
7043949c89 Fix for Bug #51583 Bus error due to wrong alignment in mysqlnd 2010-07-15 16:57:14 +00:00
Andrey Hristov
12f8599b86 Give an error when USE_RESULT is used with fetch_all 2010-07-13 13:02:00 +00:00
Dmitry Stogov
df8bf2a2de Fixed checks for PHP_DEBUG macro 2010-07-08 07:38:59 +00:00
Andrey Hristov
ee4818a12a Two functions, which should be methods so one can catch
their output, for example
2010-06-24 19:52:13 +00:00
Andrey Hristov
baf72b7336 Fix sprintf modifiers all around the place. In most cases
%u should be used. Where size_t is used then MYSQLND_SZ_T_SPEC should be
the modifier
2010-06-21 15:32:26 +00:00
Andrey Hristov
523960892c fix valgrind warnings on 64bit, thread_is is strictly 32bit 2010-06-21 14:49:45 +00:00
Andrey Hristov
c7f10efabc Fix for bug #52115 mysqli_result::fetch_all returns null, not an empty array 2010-06-18 17:25:41 +00:00
Andrey Hristov
986e30048d missed this one in the last commit, the real type 2010-06-18 12:00:57 +00:00
Andrey Hristov
d3d7447803 fix type mismatch, this is fresh misunderstanding 2010-06-18 11:56:25 +00:00
Pierre Joye
aac1ef3815 - fix build 2010-06-17 17:09:48 +00:00
Andrey Hristov
59205a6655 split mysqlnd_connect() in two parts, one doing the authorization 2010-06-17 11:37:49 +00:00
Andrey Hristov
55f879015d no more needed because of the charset fix in the previous changeset 2010-06-16 19:01:13 +00:00
Andrey Hristov
65b1895759 Fixed bug #52082 (character_set_client & character_set_connection reset after
mysqli_change_user())

libmysql >= 5.1.23 will PASS, older library versions will fail
2010-06-14 17:16:20 +00:00
Andrey Hristov
3b2000f042 export mysqlnd_globals_id, per Johannes 2010-06-10 12:24:03 +00:00
Andrey Hristov
408d786aa2 void functions return nothing 2010-06-10 09:37:58 +00:00
Andrey Hristov
c7831cbe27 defensive programming, check before using a resource 2010-06-01 14:16:27 +00:00
Andrey Hristov
e6b4e01ce0 Perform later initialization 2010-06-01 09:47:46 +00:00
Andrey Hristov
3fe085d10b More check for valid MYSQLND_STMT before using it 2010-05-31 18:26:19 +00:00
Andrey Hristov
40e6685063 Don't reference row_packet before checking if dereferencing is possible 2010-05-31 18:18:37 +00:00
Andrey Hristov
c195dc21a2 Check if data is correct and initialize in a safe manner 2010-05-31 18:10:25 +00:00
Andrey Hristov
d02e785d68 Handle problems in the row_decoder, return type used to be void,
now it can return on problems.
2010-05-31 17:57:03 +00:00
Andrey Hristov
6ed619a351 Bail if allocation fails 2010-05-31 17:09:13 +00:00
Andrey Hristov
bdb2d71dc7 try to workaround problems with non-c99 on HPUX 2010-05-31 16:51:03 +00:00
Ulf Wendel
73a32c52d2 Updating test to reflect the latest and more verbose mysqlnd error messages, updating mysqlnd error message as well. 2010-05-31 13:56:42 +00:00
Andrey Hristov
3251e54f0f Don't use NULL pointer, always check before use 2010-05-27 12:39:12 +00:00
Andrey Hristov
ae9ac28ec2 Fix possible crashes, in case of OOM, due to half-baken
objects.
2010-05-27 12:05:02 +00:00
Andrey Hristov
95d4f2ac66 Fix crashes in the allocator in case of OOM. 2010-05-27 12:00:48 +00:00
Andrey Hristov
4de0da5a56 Fix deallocation which can crash if the object is half-baken.
Happens during OOM.
2010-05-27 08:51:46 +00:00
Andrey Hristov
0e8b380941 Don't use conn->net without checking if it is NULL, because
it can be NULL in OOM conditions. This would cause a crash.
2010-05-26 13:47:43 +00:00
Andrey Hristov
433cb868d6 Handle the situation when MYSQLND_PROTOCOL's methods return NULL.
mysqlnd should not crash but gracefully return with an error.
2010-05-25 23:18:13 +00:00
Andrey Hristov
708b31a510 Gracefully handle OOM in mysqlnd_stmt_init. Release the handle
and return NULL.
2010-05-25 22:42:25 +00:00
Andrey Hristov
6d434e70a4 Init should return status value because initialization can fail.
In this case mysqlnd_init() should return NULL to the end-user.
2010-05-25 22:40:47 +00:00
Andrey Hristov
b3c553fa99 Use the specialized macro for this case 2010-05-25 22:38:11 +00:00
Andrey Hristov
b434301f7b Use only memory that has been allocated 2010-05-25 22:36:33 +00:00
Andrey Hristov
decdfeeeb2 Access memory which was really allocated 2010-05-25 22:34:47 +00:00
Andrey Hristov
844b435655 Fix shared build 2010-05-25 21:54:21 +00:00
Andrey Hristov
954e7db644 Handle OOM in the code that generates PS Execute requests
to the server. Fixes crashes in case of OOM.
2010-05-25 19:19:29 +00:00
Andrey Hristov
52e31252fc Fix metadata duplicatin which wasn't crash-safe in case of OOM. 2010-05-25 18:14:37 +00:00
Andrey Hristov
a25482105e Check set->data for validity before using it.
Prevents crashes after OOM.
2010-05-21 13:37:18 +00:00
Andrey Hristov
476391c02e When OOM hits the wire, don't crash. 2010-05-21 13:06:52 +00:00
Andrey Hristov
3ea05600e9 result_meta local storage 2010-05-14 16:42:17 +00:00
Andrey Hristov
8a093b3811 Allow overloading of mysqlnd_result_meta_init().
Add free space for future hooks.
2010-05-14 15:11:56 +00:00
Andrey Hristov
faf4659295 Export MYSQLND_PROTOCOL methods 2010-05-14 13:32:27 +00:00
Andrey Hristov
8691786ebd - Give possibility to overload mysqlnd_result_init().
- Always use conn->m->stmt_init instead of mysqlnd_stmt_init()
2010-05-14 13:18:39 +00:00
Andrey Hristov
dd85f9c2f2 OOM fixes 2010-05-14 13:04:33 +00:00
Andrey Hristov
07619b7190 - initialize some variables
- initialize the methods in a shorter way, use the compiler.
 = on structures copies them. Allows also exportability of
 the methods.
2010-05-13 15:29:08 +00:00
Andrey Hristov
fccec600eb Export the methods of MYSQLND_NET 2010-05-13 14:15:23 +00:00
Andrey Hristov
4c1487577c Export the result_metadata methods to external modules. 2010-05-13 11:16:11 +00:00
Andrey Hristov
d53337bbe7 OOM stability fixes 2010-05-04 14:02:42 +00:00
Andrey Hristov
447c693b2d Add possibility to control the allocator in when PHP is compiled
with debug
2010-05-04 13:49:43 +00:00
Andrey Hristov
5ca71c00f5 Handle OOM in mysqlnd_res::store_result_fetch_data 2010-05-03 19:32:07 +00:00
Andrey Hristov
9c276eee6c Handle OOM in mysqlnd_fetch_row_buffered_c() 2010-05-03 19:09:45 +00:00
Andrey Hristov
2b00096004 Handle OOM in mysqlnd_fetch_row_unbuffered_c() 2010-05-03 19:02:48 +00:00
Andrey Hristov
2b18a3ff93 Handle OOM stemming from mysqlnd_result_init in the same
function and up the stack.
2010-05-03 18:50:47 +00:00
Andrey Hristov
7de2607c12 Handle gracefully OOM in mysqlnd_mempool_create and up the stack 2010-05-03 17:07:18 +00:00
Andrey Hristov
c32bae720c Handle OOM in block_alloc_get_chunk, and also in the caller
in mysqlnd_wireprotocol.c
2010-05-03 16:20:46 +00:00
Andrey Hristov
ec0fe858c6 Remove unused parameter 2010-05-03 16:09:05 +00:00
Andrey Hristov
57059d4e31 One more case to handle in case of OOM, in block_alloc_resize_chunk 2010-05-03 14:26:08 +00:00
Andrey Hristov
8e8348a4b0 Handle OOM when resizing blocks during data fetch 2010-05-03 14:16:04 +00:00
Andrey Hristov
2da3f5ba90 Fix compiler warnings - unused functions 2010-05-03 13:51:30 +00:00
Andrey Hristov
333581fcb4 Better handing of OOM in mysqlnd::set_client_option 2010-05-03 13:45:58 +00:00
Andrey Hristov
3010485d44 Handle OOM cases, in case of persistent connections this is real
and the Zend MM won't help.
2010-04-29 15:49:51 +00:00
Andrey Hristov
aec94a464b Fix valgrind warning, usage of nirvana memory 2010-04-29 15:17:44 +00:00
Andrey Hristov
ac172db01f Fix possible crashes in case of OOM, as well as a leak. 2010-04-29 13:13:41 +00:00
Andrey Hristov
6c1a2831f6 Fix crash if OOM and USE_ZEND_ALLOC=0 2010-04-29 11:49:08 +00:00
Andrey Hristov
6d88d1a75e Fixed few buffer overflows reported by Stefan Esser. 2010-04-28 15:35:52 +00:00
Andrey Hristov
16d5d5966e const-ify fields 2010-04-28 12:29:13 +00:00
Andrey Hristov
8546225b6e Fixed very rare memory leak in mysqlnd, when binding thousands of columns 2010-04-27 12:32:34 +00:00
Andrey Hristov
194444b293 Of course, 64*4 is 256, not 1024 2010-04-27 11:02:51 +00:00
Andrey Hristov
4b658e3ded Move the macro to mysqlnd_enum_n_def.h, because it can be reused
in other places. Also, premultiply the values by 4 and add some
reserve for future releases of the server.
2010-04-27 10:53:27 +00:00
Andrey Hristov
207a72ca0e Fixed buffer overflow in mysqlnd_change_user 2010-04-27 08:26:24 +00:00
Andrey Hristov
6f6909e582 Fixed possible buffer overflow in mysqlnd_conn__list_fields. 2010-04-27 08:02:08 +00:00
Kalle Sommer Nielsen
dd8e59da8f Removed safe_mode
* Removed ini options, safe_mode*
 * Removed --enable-safe-mode --with-exec-dir configure options on Unix
 * Updated extensions, SAPI's and core
 * php_get_current_user() is now declared in main.c, thrus no need to include safe_mode.h anymore
2010-04-26 23:53:30 +00:00
Andrey Hristov
3dbf6acd7b Change the way the allocator is called - through an abstraction
to give the possibility of pluggability. Thanks to the macros
already used the changes are not pervasive.
2010-04-22 16:28:50 +00:00
Andrey Hristov
e5dcac245c Fix problem spotted by Felipe. 2010-04-22 16:22:56 +00:00
Andrey Hristov
7c5259cca3 adding what last commit was missing 2010-04-22 15:14:45 +00:00
Andrey Hristov
1ed3da294b Remove dead code and add possibility to fine tune the size of
a mempool (used for result sets).
2010-04-22 15:07:40 +00:00