Skip to content

Latest commit

 

History

History
122 lines (75 loc) · 6.92 KB

CHANGELOG.md

File metadata and controls

122 lines (75 loc) · 6.92 KB

Changelog

[0.14.2] - 2020-11-02

  • Run Travis tests with lowest (3.6) and highest (3.9) supported Python versions only.
  • Updated description and classifiers for PyPi.

[0.14.1] - 2020-08-11

  • Fixed the problem with delimit HTTP transport parameter expecting NONE value instead of NEVER.

[0.14.0] - 2020-08-01

ExaConnection

  • Added protocol_version connection option to adjust the protocol version requested by client (default: pyexasol.PROTOCOL_V1).
  • Added .protocol_version() function to check the actual protocol version of established connection.

ExaMetaData

ExaStatement

  • Added ability to execute no SQL metadata commands AND process the response as normal SQL-like result set. It does not change anything in public interface, but it might have an impact if you use custom overloaded ExaStatement class.

[0.13.1] - 2020-06-02

  • Re-throw BrokenPipeError (and other sub-classes of ConnectionError) as ExaCommunicationError. This type of errors might not be handled in WebSocket client library in certain cases.

[0.13.0] - 2020-05-30

  • Added optional disconnect command executed during .close(). It is now enabled by default , but can be disabled with explicit .close(disconnect=False) to revert to original behaviour;
  • Added csv_cols to HTTP transport parameters. It allows to skip some columns in CSV and adjust numeric and date format during IMPORT and EXPORT. It is still recommended to implement your own data transformation layer, since csv_cols capabilities are limited;

[0.12.0] - 2020-03-02

  • Added .meta sub-set of functions to execute lock-free meta data requests using /*snapshot execution*/ SQL hint;
  • Deprecated some .ext functions executing queries similar to .meta (code remains in place for compatibility);
  • Added connection option connection_timeout in addition to existing option socket_timeout. Connection_timeout is applied during initial connection only and socket_timeout is applied for all other requests, including actual login procedure.
  • Reworked error handling for HTTP transport to take care of even more complex failure scenarios;
  • Reworked internals of SQL builder for IMPORT / EXPORT parameters;
  • ExaStatement should now properly release result set handle after fetching and object termination;
  • Removed weakref, it was not related to previous garbage collector problems;
  • Renamed previously added .connection_time to .login_time, which is more accurate name for this timer;
  • Query text length in ExaQueryError exception is now limited to 20k characters to prevent logs from bloating;
  • Fixed open_schema function with quote_ident=True;
  • .last_statement() now always returns last ExaStatement executed on this connection. Previously it was skipping technical queries from ExaExtension (.ext);

[0.11.2] - 2020-01-27

ExaConnection

  • Added option client_os_username to specify custom client OS username. Previously username was always detected automatically with getpass.getuser(), but it might not work in some environments, like OpenShift.

[0.11.1] - 2020-01-26

ExaConnection

  • Added .connection_time property to measure execution time of two login requests required to establish connection.

[0.11.0] - 2020-01-25

ExaConnection

  • Reworked close() method. It is now sending basic OP_CLOSE WebSocket frame instead of disconnect command.
  • Method close() is now called implicitly during destruction of ExaConnection object to terminate IDLE session and free resources on Exasol server side immediately.
  • ExaFormatter, ExaExtension, ExaLogger objects now have weak reference to the main ExaConnection object. It helps to prevent circular reference problem which stopped ExaConnection object from being processed by Python garbage collector.
  • Connection will be closed automatically after receiving WebSocketException and raising ExaCommunicationError. It should prevent connection from being stuck in invalid state.

[0.10.0] - 2020-01-01

PyEXASOL code improvements

  • Reworked script output code and moved it into pyexasol_utils module. The new way to start script output server in debug mode is: python -m pyexasol_utils.script_output. Old call will produce the RuntimeException with directions.
  • Removed .utils sub-module.
  • Renamed pyexasol_utils.http into pyexasol_utils.http_transport for consistency.

ExaConnection

  • Fixed bug of .execute_udf_output() not working with empty udf_output_bind_address.
  • Added function _encrypt_password(), logic was moved from .utils.
  • Added function _get_stmt_output_dir(), logic was moved from .utils. It is now possible to overload this function.

[0.9.2] - 2019-12-08

ExaExtension

  • Metadata functions (starting with .ext.get_sys_*) are now using /*snapshot execution*/ SQL hint described in IDEA-476 to prevent locks.

[0.9.1] - 2019-10-22

ExaExtension

  • Added insert_multi function to allow faster INSERT's for small data sets using prepared statement.

[0.8.0] - 2019-09-24

ExaConnection

  • DSN hostname ranges with zero-padding are now supported (e.g. myhost01..16).
  • Context manager ("with" statement) is now supported for connection object.

ExaStatement

  • Context manager ("with" statement) is now supported for statement object.

[0.7.0] - 2019-08-25

ExaConnection

  • Added read-only .options property holding original arguments used to create ExaConnection object.
  • Added read-only .login_info property holding response data of LOGIN command.
  • Added documentation for read-only .attr property holding attributes of current connection (autocommit state, etc.).
  • Removed undocumented .meta property, renamed it to .login_info.
  • Removed undocumented .last_stmt property. Please use .last_statement() function instead.
  • Removed most of exposed properties related to connection options (e.g. .autocommit). Please use .options or .attr instead.

ExaStatement

  • Added documentation for read-only .execution_time property holding wall-clock execution time of SQL statement.