- Added conversion to DataFrame functions:
GPUdb.to_df()
- convert SQL result set to DataFrameGPUdbTable.to_df()
- convert table data to DataFrame
- Re-added support for username/password in the URL
- Re-added support for 7.0 protocol & port overrides
- Re-added support for numeric log levels
- Removed default HTTP protocol assignment in Options
- Result tables can now be created from GPUdbTable in schemas other than the one associated with the GPUdbTable table
- Support for more varieties of Mac OS
- Issue with injection of default HTTP port into HTTPS URLs
- Issue with services that don't accept uppercase protocols
- Issue with services that don't accept lowercase methods
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes.
- Support for more platforms on Python 3.10
- Import issue with Python3 on Mac OS
- Issue with injection of default HTTP port into HTTPS URLs
- Issue with services that don't accept uppercase protocols
- Memory leak in underlying C-extension library
- Made the connection parameters more accommodating to additional host:port combinations
- Made the connection parameters more accommodating to different URL/host/port combinations
- Made the API Python3 compatible
- Prevented client hanging when connection IP/URL does not match any known to the server; client will operate in degraded mode (no multi-head, etc.)
- Removed client-side primary key check, to improve performance and make returned errors more consistently delivered
- Rectified a formatting issue while building expressions for keyed lookups that was resulting in a failure on Python 2.7.x.
- Corrected some string/null comparisons
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes.
- Made 7.1.6 API backward-compatible with previous database versions
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes.
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes.
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes.
- GPUdbTable constructor error when the table exists in the database but the user does not have access to it.
- Issue when server and client versions are incompatible resulting in an exception being thrown. Now it prints a warning as expected.
- Logging format millisecond so that it shows the actual millisecond, and not .333 always.
- Class
GPUdb.Version
that represents Kinetica version (the server's or client's). GPUdb
properties:current_cluster_info
:GPUdb.ClusterAddressInfo
object containing information on the active cluster.server_version
:GPUdb.Version
containing the version of the active server cluster's version, or None if not known.
- Improved performance when debug or trace logging is not enabled
- Added GPUdbTableMonitor to the API docs
- Added GPUdbWorkerList to the API docs
- Added GPUdbException to the API docs
- Improved class/method linkages in API docs
- Issue with parsing a URL with no port
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes.
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes.
- Increased overall multi-head I/O speed by reducing client-side workload.
- GPUdb methods for adding custom headers per endpoint call:
add_http_header()
remove_http_header()
get_http_headers()
- Add multi-head i/o support for new column type UUID
- New log level
trace
for GPUdb
- The GPUdb table monitor API has been refactored to be more user friendly.
Here are the following breaking changes (as compared to the initial API
released in version 7.0.17.0):
- The only exported class is
GPUdbTableMonitor
which acts as a global namespace. It contains the following nested public classes that the user will use: GPUdbTableMonitor.Client
GPUdbTableMonitor.Options
GPUdbTableMonitor.Callback
GPUdbTableMonitor.Callback.Options
(and its derivativeInsertDecodedOptions
)GPUdbTableMonitor.Callback.Type
- The old
GPUdbTableMonitorBase.Options
is nowGPUdbTableMonitor.Options
. All old options have been replaced with following current option:inactivity_timeout
- The following classes have been refactored or removed (users need not
use the refactored versions; they exist only for internal purposes):
GPUdbTableMonitorBase
BaseTask
InsertWatcherTask
DeleteWatcherTask
UpdateWatcherTask
TableEvent
NotificationEventType
NotificationEvent
TableEventType
- The only exported class is
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes.
- Added missing imports:
- Exception class
GPUdbUnauthorizedAccessException
- Utility class
_Util
- Exception class
- GPUdbTable read-only property
qualified_table_name
which returns the fully qualified table name. - GPUdbTable static helper method
get_qualified_table_name
which returns the fully qualified version of the given table name. - GPUdb.HASynchronicityMode
NONE
- New exception classe(s):
- GPUdbHAUnavailableException (for internal API use)
- GPUdbFailoverDisabledException (for internal API use)
- GPUdbUnauthorizedAccessException
- Method
is_kinetica_running()
for checking if a Kinetica instance is running at the given URL. GPUdb
read-only properties:- all_cluster_info
- logging_level
- options
- protocol
- Some convenience methods:
- GPUdb.ping()
- GPUdb.is_kinetica_running()
- GPUdb.get_server_debug_information()
- GPUdb.wms()
GPUdbIngestor
read-only properties:- retry_count
- GPUdbTable methods that return a GPUdbTable object now creates that object based on a fully qualified (i.e. with schema) name which is returned in the response of the endpoint query.
GPUdb.get_url()
takes an optional argumentstringified
with default value True.GPUdb.get_all_available_full_urls()
takes an optional argumentstringified
with default value True.- If the user gives the wrong host manager port to
GPUdb
viaGPUdb.Options
,GPUdb
will no longer attempt to fix it.
- The following
GPUdb
property setters have been deprecated; they will no longer have any effect on the GPUdb object:GPUdb.connection
GPUdb.host
GPUdb.port
GPUdb.host_manager_port
GPUdb.gpudb_url_path
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes.
- Some GPUdbTable methods to have a limit of -9999, instead of 10,000, to
align it with the GPUdb method default value:
get_records()
get_records_by_column()
get_records_from_collection()
get_geo_json()
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes.
- Introduced new API for client side table monitor feature.
The name of the class to use is
GPUdbTableMonitorBase
A default implementation which demonstrates usage of this class is included in the classGPUdbTableMonitor
. A full example is found in the directoryexamples
in the Python filetable_monitor_example_Default_impl.py
. There are other variants of the example in the Python files,table_monitor_example_basic_first.py
andtable_monitor_example_basic_second.py
. Several test cases are included in thetest/table_monitor
directory.
- GPUdbTable.random_name() and GPUdbTable.prefix_name() now generate strings without hyphens to be more SQL-compatible.
- GPUdbTable.alter_table() now updates the multi-head I/O objects' table names so that subsequent multi-head I/O operations work.
- Response encoding for GPUdb endpoints that return encoded data for JSON encoding.
- Occassional data corruption issue with replacing '\U' with '\u' for JSON encoding.
- Python 3 compatibility issue in GPUdbIngestor
- GPUdbIngestor bug introduced in 7.0.15.2 :-/
- GPUdbTable.insert_records() slow-down when using multi-head ingestion.
- GPUdbTable.insert_records() bug when using stringified numerics (e.g. "1" for an integer column) with multi-head ingestion.
- GPUdbTable creation--type comparison issue where column data type case is not all lower case and the column properties' order and case are different from the existing type.
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes.
- Upon client-server version mismatch, do not throw an exception anymore. Just log a warning.
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes.
- GPUdb constructor behavior--if a single URL is used and no primary URL is specified via the options, the given single URL will be treated as the primary URL.
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes.
- GPUdbRecordType property
column_names
which is a list containing the names of all the columns in the record type, in the order they appear in the type. - GPUdbRecordType method
get_column()
that takes a string (column name) or integer (column index) and returns the respectiveGPUdbRecordColumn
object.
GPUdbTable.get_records_by_key()
issue dict as the input argument
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes.
- Support for overriding the high availability synchronicity mode for
endpoints; set the property
ha_sync_mode
of gpudb.GPUdb with one of the following values of the enumeration gpudb.GPUdb.HASynchronicityMode:- DEFAULT
- SYNCHRONOUS
- ASYNCRHONOUS
- Example script to match changed endpoint format.
- Support for high-availability failover when the database is in the offline mode.
- Support for new column property 'ulong' to multi-head I/O. Compatible with Kinetica Server version 7.0.7.0 and later only.
- The following properties to GPUdbTable regarding whether the table itself is a
collection or belongs to a collection:
- GPUdbTable.is_collection
- GPUdbTable.collection_name
- GPUdb class constructor parameter
skip_ssl_cert_verification
which disables verifying the SSL certificate for the Kinetica server for HTTPS connections.
- Some Python3 compatibility related issues
- Kinetica 7.0.7.0 and later
- Added support for high availability failover when the system is limited (in addition to connection problems). Compatible with Kinetica Server version 7.0.6.2 and later only.
- Kinetica 7.0.6.2 and later
- Support for passing /get/records options to RecordRetriever.get_records_by_key() and GPUdbTable.get_records_by_key()
- Minor documentation and some options for some endpoints
- Parameters for /visualize/isoschrone
- Lifted restrictions on columns with property date, time, datetime, or
timestamp such that no validation occurs by the client. This allows
the
init_with_now
property to be applied to such columns.
- Changed GPUdbTable constructor behavior--it no longer calls /show/table
with
get_sizes = true
since that can be a relatively costly query. len() now calls /show/table as needed, even for read-only tables. - Added option
is_automatic_partition
to GPUdbTableOptions
- Added support for selecting a primary host for the GPUdb class
- Added support for high availability (HA) to multi-head ingestion retrieval
- Added some logging support
- Added support for high availability (HA) failover logic to the GPUdb class
- Added support for cluster reconfiguration to the multi-head I/O operations
- Changed GPUdbTable constructor behavior--it no longer calls /show/table
with
get_sizes = true
since that can be a relatively costly query. len() now calls /show/table as needed, even for read-only tables.
- Added support for host manager endpoints
- Added support for replicated tables to multi-head ingestion via GPUdbTable and GPUdbIngestor
- Added head-node only usage support to GPUdbWorkerList
- New RecordRetriever class to support multi-head record lookup by shard key in gpudb_multihead_io.py (file previously named gpudb_ingestor.py)
- Renamed gpudb_ingestor.py to gpudb_multihead_io.py
- Added an opt-out mechanism for the GPUdb constructor such that no version check or other communication is made with the server.
- Added an in-house compiled C-module named protcol for avro encoding and decoding to drastically increase record ingestion and retrieval speed.
- Added a convenience method get_geo_json() to GPUdbTable that returns a GeoJSON object from a table.
-
Added new GPUdbTable class that makes the creation of tables and data i/o much more convenient. Query chaining for relevant endpoints is also made convenient.
-
Added object oriented record type and data handling. See new classes
- GPUdbColumnProperty -- Contains the different column properties.
- GPUdbRecordColumn -- Represents a column for any given record.
- GPUdbRecordType -- Represents a record data type. Has convenient functions for creating a type in GPUdb.
- GPUdbRecord -- Contains data for any given record; also has convenient data encoding and decoding functions for inserting and fetching data from the database server.
- Releasing version
- Releasing version
- Maintenance
- Added the pymmh3 python package.
- Updated documentation generation.
- Refactor generation of the APIs.