used to return "" and not bool(false). It's not worth keeping it because
STR_FREE() and zval_dtor() always have to check for it and it slows down
the general case. In addition, it seems that empty_string has been abused
quite a lot, and was used not only for setting zval's but generally in
PHP code instead of "", which wasn't the intention. Last but not least,
nuking empty_string should improve stability as I doubt every place
correctly checked if they are not mistakenly erealloc()'ing it or
calling efree() on it.
NOTE: Some code is probably broken. Each extension maintainer should
check and see that my changes are OK. Also, I haven't had time to touch
PECL yet. Will try and do it tomorrow.
the original connection has been changed).
* Fixed a crash when trying to fetch an unbuffered result after
mysql_close() has been called.
* Added a check to make sure no unbuffered results are inside the buffer
when calling functions that internally execute a query. Affected functions
are: mysql_select_db(), mysql_list_dbs(), mysql_list_tables(),
mysql_list_processes(), mysql_list_fields(), mysql_stat() and mysql_ping().
* Do not re-select a database if the database to be selected is the same.
windows sockets. The winsock implementation will only work with sockets;
our implementation works with sockets and file descriptors.
By association, stream_select() will now operate correctly with files, pipes and sockets.
This change required linking against the winsock2 library. In terms of
compatibility, only older versions of windows 95 do not have winsock2
installed by default. It is available as a redistributable file, and is most likely installed by any OS patches (eg: Internet Explorer) applied by the user.
Also, add a win32 compatible pipe test when opening a stream from a pipe. This test will only work on NT, win2k and XP platforms. Without this test, interleaved fread() and select() calls would cause the read buffer to be clobbered. I will be working on a fix for this issue for win9x.
mysql_ping() as a more efficient alternative to using mysql_stat() to
check if the server is alive and then calling mysql_(real_)?connect() to
reconnect.
Simple tests of opening pconnects indicate that only about 10k of data per
ping needs to be returned to the client per connection check, rather than
about 110k per status check.
Major changes to _restore_connection_defaults
- added code block to finds and releases the active mysql result (if any)
- this should prevent the 'Commands out of sync' error that would be
raised when a query is made when unfreed results exist
Minor changes to _restore_connection_defaults
- replaced calls to mysql_real_query with mysql_query
- we probably should not be using mysql_real_query without checking to
see if we have a version that supports the function.
- given that we control the query strings here and do not need to
worry about binary safety, I am using mysql_query instead
- see the bug report for further discussion
#- This will remove the annoying notices, while this function is used in
# a lot of scripts. There is not reason why we should discontinue it's use
# as it works perfect for about 99% of the time.
Why:
1) Its not the common way to add additionally functionality for functions or
features which are already implemented in SQL. Therefore also a lot of
mysql functions are marked as deprecated (and will be removed in near future)
2) The implemented workaround works only when mysql_select_db was called
before (fetching the databasename from mysql->conn.db). It returns invalid
or inconsistent results e.g.:
- when "USE databasename" via mysql_query was used
- when database was dropped or grant privileges had changed.
In conjunction with persistent connection, there are also some inconsistencies,
cause mysql_select_db returns the databasename from an old connection.
To determine the database name just use the SQL command "SELECT DATABASE()"
MYSQL_CLIENT_SSL for ssl connections
MYSQL_CLIENT_COMPRESS for compressed protocol
MYSQL_CLIENT_IGNORE_SPACES for spaces after function names
MYSQL_CLIENT_INTERACTIVE for closing connections after timeout_interactive seconds
2) Optional parameter client_flags for mysql_connect and mysql_pconnect
For parameter desctiption see 1.
This also should fix bug #13589
3) New internal function _rollback_mysql_transactions, which is called via
PHP_RSHUTDOWN_FUNCTION
This fixes bug #12513
b) changed mysql_list_processes, mysql_stat (zend_parse_parameters)
c) New functions:
1) mysql_real_escape_string this function is similar to mysql_escape_string (deprecated).
it needs a mysql-connection to escape a string according to the
current character set
2) mysql_character_set_name returns the current character set for the connection
3) mysql_thread_id return the pid for the current connection. This function is usefull
when using mysql_list_processes
information on the processes running in the
MySQL server.
(PHP mysql_stat) Returns a string containing information on the status
of the MySQL server.
@- Added two new functions: mysql_list_processes and mysql_stat (Georg)
@- mysql_list_processes() fetches information on the processes running on
@ the MySQL server.
@- mysql_stat() returns status information for a MySQL server.
# Committed for Georg by Zak
- Some tests were only run when compiling with the bundled libs.
(caused some compile warnings with external mysql libs)
- Another try to fix the zlib issue..(uncompress)