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