- Option to change the number of automatic retries of failed requests
- Clean up of fast connection manager
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes
- Support for Python 3.14
- Reduced timeout for checking connectivity to server-known URLs that don't match user-given ones
- Default HA fail-over mode is now sequential
- Streamlined connection sequence & logging
- Updated DBAPI
sqlparselibrary to 0.5.4 - Updated DBAPI examples
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes
- Connection parameter
primary_urlto replaceprimary_host - Surfaced FailbackOptions class, accessible via gpudb.FailbackOptions
- Fail-back check to ensure database query planner is up & running
- New function to return primary cluster head node URL, for use by fail-back poller; previously, poller would construct the URL from the hostname
- Aligned fail-back poller logging level with main connection's logging level
- Changed retry mechanism to return error encountered instead of raising a new exception
- Fail-back poller now invoked using user-specified fail-back options
- Support for full range of connection options when using the DBAPI
- Support for a user-specified default schema when using the DBAPI
- Support for user-specified HTTP headers when using the DBAPI
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes
- Support for 12-byte decimals
- Support for unsigned long array types
- Improved efficiency in processing column properties
- Improved & aligned handling of connection errors across endpoint types
- Check of HA queue draining status on fail-back
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes
- Improved connection management
- Returned parse failure reason from URL parser
- Pool size configuration of
requestsset to defaults
- Logging to the DBAPI library
- Switched fail-back poller to use status call to determine HA queue draining state
- Removed additional Python2 handling
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes
- Support for unsigned long array types
- Improved consistency of connection error handling
- Improved connection management
- Returned parse failure reason from URL parser
- Pool size configuration of
requestsset to defaults
- Insert/update counts for multi-head ingest calls
- Simplified DML (insert, update, & delete) functions
- Example programs for working with date/time objects, multi-head insert counts, and simplified DML functions
- HTTP library from
httpxtorequests - Improved handling of time and null value inserts
- Removed Python2 handling in multi-head I/O module
- Issue with invoking
GPUdbIngestordirectly without passing in options
- Issue with
GPUdbSqlIteratoriterating over a batch size that is greater than the configuredmax_get_records_sizeon the server
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes
- Issue with
skip_ssl_cert_verificationparameter being ignored - Connectivity in environments where anonymous pass-through in httpd is blocked
- Better request retry handling
- Switched HTTP library from
httplibtohttpx - Updated installation instructions
- Improved support for DataFrame handling & type conversion
- Improved destruction of HA fail-back poller object
- Switched to non-deprecated SSL protocol constant
- Issue with using
GPUdbSqlIteratoron certain queries that return an unexpected response schema
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes
- Support for fail-back when primary cluster is initially down
- Support for parallel HA modes
- Removed logging of fail-back poller shutdown in
GPUdbdestructor
- Fail back to a primary cluster after failing over to a secondary cluster
- Check for a blocked table monitor port in
GPUdbTableMonitorinvocations - Configurable table monitor port
- Support for inserting Record type objects
- Builds for Mac on ARM
- Handling of connections when connection keep-alive is active
- Numeric query parameter handling to ignore tokens in quoted strings
- Warnings related to escaped regular expression codes
- OAuth2 authentication support
- Support for SQLAlchemy integration
- Upgraded internal
tabulateto 0.9.0
- Improved handling of null vectors in DataFrames
- Completed asynchronous DB API interface
- Completed synchronous DB API interface; added batch insert handling
- Python3 PEP 249 DB API interface
- Minimum required Python version is 3.8
- Project metadata moved to TOML format
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes.
- Issue with Pandas DataFrame inserting timestamp value into
datetime/timestampcolumn - Issue with
vectorcontaining integers failing insert
- Issue with
as_json()removing the password option
GPUdbSqlContextclass for more easily creating SQL-GPT contextsGPUdb.get_connection()function for connecting to a Kinetica database using credentials set as environment variables; useful for Jupyter notebooks
- Server connection timeout parameter for handling timeouts for server status checks; this operates independently of the exiting timeout for user endpoint requests
- Deprecated
GPUdb.is_kinetica_running()function
- Handling of empty dataframes & strings in
GPUdbTable.from_df()
- Constant timeout reference for rank connections
- Support for multiple column attribute overrides in
GPUdbTable.from_df()
- Increased connection timeout from 1 to 20 seconds to account for connections over high-traffic and public networks
- Improved support for JSON & standard array input as Python list
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes.
- Improved support for vector input as Python list
- Improved support for boolean array conversion
GPUdbTableoptionconvert_special_types_on_retrievalfor automatically converting array, JSON, & vector types to Python native types on retrieval
- Issue with null numeric columns
- Support for array, JSON, & vector types
GPUdbTableOptionsmemberchunk_column_max_memory
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes.
- Added error check for missing URL in
get_connection()
- Issue with Pandas DataFrame inserting timestamp value into
datetime/timestampcolumn
GPUdbSqlContextclass for more easily creating SQL-GPT contextsGPUdb.get_connection()function for connecting to a Kinetica database using credentials set as environment variables; useful for Jupyter notebooks
- Server connection timeout parameter for handling timeouts for server status checks; this operates independently of the exiting timeout for user endpoint requests
- Deprecated
GPUdb.is_kinetica_running()function
- Handling of empty dataframes & strings in
GPUdbTable.from_df() - Ability to use
gpudb_dataframe&gpudb_file_handlermodules in Python 2.7
- Constant timeout reference for rank connections
- Support for multiple column attribute overrides in
GPUdbTable.from_df()
- Increased connection timeout from 1 to 20 seconds to account for connections over high-traffic and public networks
- Special characters in comments
- New Pandas DataFrame functions
- Timeout in
get_system_propertiesto user-defined (default infinite)
- Cleaned up unauthorized access exception handling
- Dependency reference scheme modified to avoid collisions with user imports
- Support for file upload & download from KiFS
- Support for data egress in JSON format
- Multi-head I/O support for Boolean column type
- Propagated connection logging level to
GPUdbIngestor&RecordRetriever
- Multi-head I/O during a failover when using head node only
- Batch and multi-head ingestion support for JSON-formatted data
- Support for HA failover when user-specified connection URLs don't match the server-known URLs; multi-head operations will still be disabled
- Removed N+1 features & references
- Several logging-related issues
- Examples of secure/unsecure connections; improved SSL failure error message
GPUdbobject construction will error out if connection attempts fail
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes.
- Move included
tabulatelibrary to avoid version conflicts
- 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.Versionthat represents Kinetica version (the server's or client's). GPUdbproperties:current_cluster_info:GPUdb.ClusterAddressInfoobject containing information on the active cluster.server_version:GPUdb.Versioncontaining 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
tracefor 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
GPUdbTableMonitorwhich acts as a global namespace. It contains the following nested public classes that the user will use: GPUdbTableMonitor.ClientGPUdbTableMonitor.OptionsGPUdbTableMonitor.CallbackGPUdbTableMonitor.Callback.Options(and its derivativeInsertDecodedOptions)GPUdbTableMonitor.Callback.Type
- The old
GPUdbTableMonitorBase.Optionsis 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):
GPUdbTableMonitorBaseBaseTaskInsertWatcherTaskDeleteWatcherTaskUpdateWatcherTaskTableEventNotificationEventTypeNotificationEventTableEventType
- 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_namewhich returns the fully qualified table name. - GPUdbTable static helper method
get_qualified_table_namewhich 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. GPUdbread-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()
GPUdbIngestorread-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 argumentstringifiedwith default value True.GPUdb.get_all_available_full_urls()takes an optional argumentstringifiedwith default value True.- If the user gives the wrong host manager port to
GPUdbviaGPUdb.Options,GPUdbwill no longer attempt to fix it.
- The following
GPUdbproperty setters have been deprecated; they will no longer have any effect on the GPUdb object:GPUdb.connectionGPUdb.hostGPUdb.portGPUdb.host_manager_portGPUdb.gpudb_url_path
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes.
- Memory leak in underlying C-extension library
- GPUdb methods for adding custom headers per endpoint call:
add_http_header()remove_http_header()get_http_headers()
GPUdb Table Monitor API
- 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
GPUdbTableMonitorwhich acts as a global namespace. It contains the following nested public classes that the user will use: GPUdbTableMonitor.ClientGPUdbTableMonitor.OptionsGPUdbTableMonitor.CallbackGPUdbTableMonitor.Callback.Options(and its derivativeInsertDecodedOptions)GPUdbTableMonitor.Callback.Type
- The old
GPUdbTableMonitorBase.Optionsis 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):
GPUdbTableMonitorBaseBaseTaskInsertWatcherTaskDeleteWatcherTaskUpdateWatcherTaskTableEventNotificationEventTypeNotificationEventTableEventType
- The only exported class is
- Check CHANGELOG-FUNCTIONS.md for endpoint related changes.
- 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
GPUdbTableMonitorBaseA default implementation which demonstrates usage of this class is included in the classGPUdbTableMonitor. A full example is found in the directoryexamplesin the Python filetable_monitor_example_Default_impl.py. There are other variants of the example in the Python files,table_monitor_example_basic_first.pyandtable_monitor_example_basic_second.py. Several test cases are included in thetest/table_monitordirectory.
- 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_nameswhich 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 respectiveGPUdbRecordColumnobject.
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_modeof 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_verificationwhich 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_nowproperty to be applied to such columns.
- Changed GPUdbTable constructor behavior--it no longer calls /show/table
with
get_sizes = truesince that can be a relatively costly query. len() now calls /show/table as needed, even for read-only tables. - Added option
is_automatic_partitionto 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
- GPUdb class constructor parameter
skip_ssl_cert_verificationwhich disables verifying the SSL certificate for the Kinetica server for HTTPS connections.
- The following properties to GPUdbTable regarding whether the table itself is a
collection or belongs to a collection:
- GPUdbTable.is_collection
- GPUdbTable.collection_name
- Some Python3 compatibility related issues
- Lifted restrictions on columns with property date, time, datetime, or
timestamp such that no validation occurs by the client. This allows
the
init_with_nowproperty to be applied to such columns.
- Changed GPUdbTable constructor behavior--it no longer calls /show/table
with
get_sizes = truesince 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.