Pyexasol

Latest version: v0.25.2

Safety actively analyzes 638379 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 6

0.23.1

Not secure
- Improved termination logic for HTTP transport thread while handling an exception. Order of closing pipes now depends on type of callback (EXPORT or IMPORT). It should help to prevent unresponsive infinite loop on Windows.
- Improved parallel HTTP transport examples with better exception handling.
- Removed comment about `if __name__ == '__main__':` being required for Windows OS only. Multiprocessing on macOS uses `spawn` method in the most recent Python versions, so it is no longer unique.
- `pyopenssl` is now a hard dependency, which is required for encrypted HTTP transport to generate an "ad-hoc" certificate. Encryption will be enabled by default for SAAS Exasol in future.

0.23.0

- Added [`orjson`](https://github.com/ijl/orjson) as possible option for `jsob_lib` connection parameter.
- Default `indent` for JSON debug output is now 2 (was 4) for more compact representation.
- `ensure_ascii` is now `False` (was `True`) for better readability and smaller payload size.
- Fixed JSON examples, `fetch_mapper` is now set correctly for second data set.

0.22.0

**BREAKING (!):** HTTP transport was significantly reworked in this version. Now it uses [threading](https://docs.python.org/3/library/threading.html) instead of [subprocess](https://docs.python.org/3/library/subprocess.html) to handle CSV data streaming.

There are no changes in a common **single-process** HTTP transport.

There are some breaking changes in **parallel** HTTP transport:

- Argument `mode` was removed from [`http_transport()`](/docs/REFERENCE.mdhttp_transport) function, it is no longer needed.
- Word "proxy" used in context of HTTP transport was replaced with "exa_address" in documentation and code. Word "proxy" now refers to connections routed through an actual HTTP proxy only.
- Function `ExaHTTPTransportWrapper.get_proxy()` was replaced with property `ExaHTTPTransportWrapper.exa_address`. Function `.get_proxy()` is still available for backwards compatibility, but it is deprecated.
- Module `pyexasol_utils.http_transport` no longer exists.
- Constants `HTTP_EXPORT` and `HTTP_IMPORT` are no longer exposed in `pyexasol` module.

Rationale:

- Threading provides much better compatibility with Windows OS and various exotic setups (e.g. uWSGI).
- Orphan "http_transport" processes will no longer be a problem.
- Modern Pandas and Dask can (mostly) release GIL when reading or writing CSV streams.
- HTTP thread is primarily dealing with network I/O and zlib compression, which (mostly) release GIL as well.

Execution time for small data sets might be improved by 1-2s, since another Python interpreter is no longer started from scratch. Execution time for very large data sets might be ~2-5% worse for CPU bound workloads and unchanged for network bound workloads.

Also, [examples](/docs/EXAMPLES.md) were re-arranged in this version, refactored and grouped into multiple categories.

0.21.2

Not secure
- Fixed a bug in `ExaStatement` when no rows were fetched. It could happen when data set has less than 1000 rows, but the amount of data exceeds maximum chunk size.

0.21.1

Not secure
- "HTTP Transport" and "Script Output" subprocess will now restore default handler for SIGTERM signal.

In some cases custom signal handlers can be inherited from parent process, which causes unwanted side effects and prevents correct termination of child process.

0.21.0

Not secure
- Default `protocol_version` is now 3.
- Dropped support for Exasol versions `6.0` and `6.1`.

These versions have reached ["end of life"](https://www.exasol.com/portal/display/DOWNLOAD/Exasol+Life+Cycle) and are no longer supported by vendor. It is still possible to connect to older Exasol versions using PyEXASOL, but you may have to set `protocol_version=1` connection option explicitly.

Page 2 of 6

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.