MySQL Proxy Changelog

What's new in MySQL Proxy 0.8.5 Alpha

Sep 6, 2014
  • Functionality Added or Changed:
  • As of this release, the admin-server's listening port is logged if log-level is set to message, info, or debug.
  • Bugs Fixed:
  • The network_mysqld_proto_password_check() function raised an assertion. (Bug #71165)
  • A stored function that used cursors caused the client to hang when the function was used in a nonprepared statement.
  • Specifying a directory name as the value of the --admin-lua-script option failed to produce an error (the value must be a file name).

New in MySQL Proxy 0.8.4 Alpha (Jan 11, 2014)

  • Functionality Added or Changed:
  • The admin plugin now rejects empty passwords.
  • Bugs Fixed:
  • Building with automake 1.13 is now supported. (Bug #17776451)
  • A too-strict test for protocol state resulted in writing excessive log output. (Bug #17434833)
  • Chassis log rotation functions did not work on Windows. (Bug #17275852)
  • Calls to network_address_set_address() returned a malformed value on Windows. (Bug #16664004)
  • MySQL Proxy libtool-archive .la files were inadvertently included with distributions. (Bug #14773448)
  • MySQL Proxy crashed when started with an unknown option. (Bug #14665885)
  • MySQL Proxy could fail to connect to the IPv6 loopback address. (Bug #14677085)
  • If MySQL Proxy was configured to listen on a Unix socket file, it failed to remove the file when exiting, causing the next Proxy instance to fail at startup. (Bug #60781, Bug #14198411)
  • The connected_clients value was incremented even if the backend was down. (Bug #66399, Bug #16389293)
  • A memory leak resulted from a missing callback to the memory-free function.
  • MySQL Proxy blocked port 4040.
  • Incorrect README files were included in distributions.

New in MySQL Proxy 0.8.3 (Dec 28, 2012)

  • Functionality Added or Changed:
  • Added timeouts for connect, read, and write operations through --proxy-connect-timeout, --proxy-read-timeout, and --proxy-write-timeout options.
  • Added support for making connections to backends and clients using IPv6 addresses.
  • Added initial support for the Windows authentication plugin.
  • Added support for extracting pluggable authentication protocol information. In the Lua API, added these values: con.client.challenge.auth_plugin_name, con.client.response.auth_plugin_name.
  • Bugs Fixed:
  • Fixed handling of capability flags in the client authentication response. In the C API, network_mysqld_auth_response_new() needs the server-side capabilities. In the Lua API, added these values: con.client.challenge (mirrors con.server.challenge), con.client.response.server_capabilties, con.server.challenge.server_capabilities.
  • Fixed the length of auth-plugin-data in the client authentication response packet.
  • Fixed crash if the configfile value contained invalid characters. In the C API, added chassis_keyfile_to_options_with_error() and deprecated chassis_keyfile_to_options().
  • Fixed a crash if the --max-open-files value was invalid on Win32.
  • Fixed the default plugin_dir value for 64-bit Unix systems (lib64/ versus lib/).
  • Fixed a crash if COM_BINLOG_DUMP was used with rw-splitting.lua.
  • Fixed handling of a missing trailing \0 in MySQL 5.5.7 through MySQL 5.5.10 in the auth-method name.
  • Fixed abort() in COM_CHANGE_USER+auth-method-switch.
  • Fixed excessive buffering of LOAD DATA LOCAL INFILE data.
  • Fixed a lockup under very high load.

New in MySQL Proxy 0.8.2 (Dec 28, 2012)

  • Functionality Added or Changed:
  • Added support for binary log checksums.
  • Added support for decoding all data types of the row-based replication protocol.
  • Added support for OUT parameters in prepared statements in stored procedures with MySQL 5.5.
  • Removed the “admin” plugin from the list of default plugins, as it requires configuration since 0.8.1.
  • Bugs Fixed:
  • Fixed handling of stored procedures with cursors with MySQL 5.5. (Bug #61998)
  • A crash occurred if the file named with the --defaults-file option did not exist. (Bug #59790)
  • The first characters of log messages were stripped. (Bug #59790)
  • A memory leak occurred if connection pooling was used. (Bug #56620)
  • Fixed handling of “used columns” with row-based replication.
  • A crash could occur if run under Valgrind.
  • A bogus timestamp log was produced if state tracking was not compiled in.

New in MySQL Proxy 0.8.1 (Dec 28, 2012)

  • Functionality Added or Changed:
  • con->in_load_data_local has been removed.
  • Shutdown hooks were added to free the global memory of third-party libraries such as openssl.
  • chassis_set_fdlimit() has been deprecated in favor of chassis_fdlimit_set().
  • The unused network_mysqld_com_query_result_track_state() function has been deprecated.
  • Allow interception of LOAD DATA INFILE and SHOW ERRORS statements.
  • Bugs Fixed:
  • The --proxy-read-only-backend-addresses option did not work. (Bug #38341, Bug #11749171)
  • If MySQL Proxy used a UNIX socket, it did not remove the socket file at termination time. (Bug #38415)
  • network_address_set_address()->network_address_set_address_ip() called gethostbyname() which was not reentrant. This meant that a MySQL Proxy plugin needed to guard all calls to network_address_set_address() with a mutex. network_address_set_address() has been modified to be thread safe. (Bug #49099)
  • The admin plugin had an undocumented default value for --admin-password. (Bug #53429)
  • If the backend MySQL server went down, and then the clock on the MySQL Proxy host went backward (for example, during daylight saving time adjustments), Proxy stopped forwarding queries to the backend. (Bug #50806)
  • The hard limit was fixed for the case where the fdlimit was set. (Bug #48120)
  • MySQL Proxy returned an error message with a nonstandard SQL State when all backends were down:
  • "#07000(proxy) all backends are down"
  • This caused issues for clients with “retry” logic, as they could not handle these “custom” SQL States. (Bug #45417)
  • Use of LOAD DATA LOCAL INFILE caused the connection between the client and MySQL Proxy to abort. (Bug #51864)
  • When running configure to build, the error message relating to the lua libraries could be misleading. The wording and build advice have been updated.

New in MySQL Proxy 0.8.0 (Dec 28, 2012)

  • Functionality Added or Changed:
  • The --no-daemon has been renamed to The --daemon. By default, MySQL Proxy now starts in foreground mode. Use the --daemon option to override this and start in daemon mode.
  • Bugs Fixed:
  • MySQL Proxy would load a configuration file with unsafe permissions, which could permit password information to be exposed through the file. MySQL Proxy now refuses to load a configuration file with unsafe permissions.
  • A memory leak occurred in MySQL Proxy if clients older than MySQL 4.1 connected to it.
  • Logging to syslog with the --log-use-syslog option did not work.
  • A segmentation fault occurred in MySQL Proxy if clients older than MySQL 4.1 connected to it.
  • Several supplied scripts were updated to account for flag and structure changes:
  • active-transactions.lua was updated to use the resultset_is_needed flag.
  • ro-balance.lua was updated to use the resultset_is_needed flag and updated proxy.connection.dst.name structure.
  • rw-splitting.lua was updated to use the resultset_is_needed flag and updated proxy.connections structure.
  • MySQL Proxy accepted more than one address in the value of the --proxy-backend-addresses option. You should specify one --proxy-backend-addresses option for each backend address.
  • MySQL Proxy raised an error when processing query packets larger than 16MB.
  • MySQL Proxy returned the wrong version string internally from the proxy.PROXY_VERSION constant.
  • MySQL Proxy failed to work with certain versions of MySQL, including MySQL 5.1.15, where a change in the MySQL protocol existed. Now Proxy denies COM_CHANGE_USER commands when it is connected to MySQL 5.1.14 to 5.1.17 servers by sending back an error: COM_CHANGE_USER is broken on 5.1.14-.17, please upgrade the MySQL Server.
  • The line numbers provided in stack traces were off by one.
  • Due to a memory leak, memory usage for each new connection to the proxy increased, leading to very high consumption.
  • MySQL Proxy could incorrectly insert NULL values into the returned result set, even though non-NULL values were returned in the original query.
  • MySQL Proxy could stop accepting network packets if it received a large number of packets. The listen queue has been extended to permit a larger backlog.

New in MySQL Proxy 0.7.2 (Dec 28, 2012)

  • On Windows, MySQL Proxy might not find the required modules during initialization. The core code has been updated to find the components correctly, and the Lua-based C modules are prefixed with lua- and Lua plugins with plugin-.

New in MySQL Proxy 0.7.1 (Dec 28, 2012)

  • When using the rw-splitting.lua script, you could get an error when talking to the backend server:
  • 2008-07-28 18:00:30: (critical) (read_query) [string
  • "/usr/local/share/mysql-proxy/rw-splitting.l..."]:218: bad argument #1 to 'ipairs' (table
  • expected, got userdata)
  • This led to Proxy closing the connection to the configured MySQL backend.
  • MySQL Proxy was unable to increase its own maximum number of open files according to the limit specified by the --max-open-files option, if the limit was less than 8192. When set to debug level, Proxy now reports the open files limit and when the limit has been updated
  • When using MySQL Proxy with multiple backends, failure of one backend caused Proxy to disconnect all backends and stop routing requests.
  • Due to a memory leak, memory usage for each new connection to the proxy increased, leading to very high consumption.
  • MySQL Proxy crashed when connecting to a MySQL 4.0 server. Now it generates an error message instead.
  • Result sets with more than 250 fields could cause MySQL Proxy to crash.
  • The port number was reported incorrectly in proxy.connection.client.address.

New in MySQL Proxy 0.6.1 (Dec 28, 2012)

  • Added new features to run-tests.lua.
  • Fixed error handling for socket functions on Windows.
  • Fixed sending fake server-greetings in connect_server().
  • Fixed assertions on write errors.

New in MySQL Proxy 0.6.0 (Dec 28, 2012)

  • Added connection pooling.
  • Added a global Lua-scope proxy.global.*.
  • Added support for listening UNIX sockets.
  • When using read/write splitting and the rw-splitting.lua example script, connecting a second user to the proxy returns an error message. (Bug #30867)
  • Added --no-proxy to disable the proxy.
  • Added test cases.
  • Added support for proxy.response.packets.
  • Added handling of proxy.connection.backend_ndx in connect_server() and read_query() to support read/write splitting.
  • Added hooks for read_auth(), read_handshake() and read_auth_result().
  • By default, MySQL Proxy now starts in daemon mode. Use the new --no-daemon option to override this. Added the --pid-file option for writing the process ID to a file after becoming a daemon.
  • Added support in read_query_result() to overwrite the result set.
  • Bugs Fixed
  • Fixed a memory leak when proxy.response.* is used.
  • Fixed handling of (SQL) NULL in result sets.
  • Fixed inj.resultset.affected_rows on SELECT queries.
  • Fixed decoding of length-encoded ints for 3-byte notation.
  • Fixed an assertion when connecting to MySQL 6.0.1.
  • Fixed an assertion that MySQL Proxy raised at login time if a client specified no password and no default database. (Bug #29719)
  • Fixed compilation on win32.
  • Fixed length encoding on proxy.resultsets.
  • Fixed an assertion on result-packets like [field-len | fields | EOF | ERR]. (Bug #29732)
  • Fixed connection stalling if read_query_result() raised an assertion.
  • Fixed an assertion on COM_BINLOG_DUMP. (Bug #29764)
  • Fixed an assertion at connect time when all backends are down.
  • Fixed an assertion at COM_SHUTDOWN. (Bug #29719)
  • Fixed the glib2 check to require at least glib2 2.6.0.
  • Fixed a crash if proxy.connection is used in connect_server().