Releases: Azure/azure-kusto-go
Version 0.10.2
Version 0.10.2
- Fixed issue with managed identity parameters
v0.10.1
Version 0.10.0
Version 0.10.0
-
[BREAKING] - The minimal go version is now 1.19
-
[BREAKING] - Moving to a connection-string based approach to creating and authenticating clients.
This change aligns the go SDK with the others, and gives the option to re-use connection strings between SDKs.
As part of this change use of go-autorest based authentication is deprecated in favor of Azure Identity.To initialize a client:
// OLD WAY - REMOVED
authConfig := auth.NewClientCredentialsConfig("clientID", "clientSecret", "tenantID")
client, err := kusto.New("endpoint", kusto.Authorization{Config: authConfig})
// NEW WAY
kcsb := kusto.NewConnectionStringBuilder(`endpoint`).WithAadAppKey("clientID", "clientSecret", "tenentID")
client, err := kusto.New(kcsb)
-
[BREAKING] - Upgraded the azblob library to 0.6.1 This solves compatibility issues with other libraries, but might cause errors to those who still depend on the old version.
-
Implicit cloud detection.
-
All of our operations now share the same HTTP client inside the kusto client object.
Using the optionWithHttpClient
will use the passed http client for all of the SDKs request, granting support for configuring proxies and other HTTP related settings. -
Fixed various goroutine leaks. Now there are automatic tests to make sure we are not leaking resources.
-
Fetching ingestion resources is now done more consistently, without blocking the user.
-
Removed the header caching mechanism from streaming ingestion, as it was using a lot of memory for no major benefit.
Version 0.9.2
Version 0.9.2
- Fixed default values for parameters not parsing correctly
- Fixed goroutine leak when streaming ingestion fails
- Fixed leaks in tests
Full Changelog: v0.9.1...v0.9.2
Version 0.9.1
Version 0.9.1
- Setting a mapping now implies the ingestion format
- Fixed possible context race
- Json parsing errors now display the failed json string
- E2E tests require fewer prerequisites
v0.9.0 - Improved performance, Column Types
What's Changed
- Deprecate AllowWrite - now it is the default like in other SDKs.
- Remove mutex from query client. Now queries can run in parallel, achieving much better performance.
- Fix Column.Type assignment. Was using string, now using types. by @jesseward
- Lint and test fixes
New Contributors
- @jesseward made their first contribution in #117
Full Changelog: v0.8.1...v0.9.0
v0.8.1 - More Client Request Options
- Added Application and User as ClientRequestProperties to set the x-ms-app and x-ms-user headers, and the matching fields in .show queries.
Version 0.8.0 - Client request properties and Query to json
Version 0.8.0
- Add all missing client request properties, and the ability to use custom ones using
CustomQueryOption
- Add the option to not parse the response when querying, but to receive the json directly -
QueryToJson
- Various lint fixes and code improvements
v0.7.0
What's Changed
- Make clients closeable
- Support port in http host
- Add retry mechanism for throttled requests
- Added custom http options for all clients
New Contributors
Full Changelog: v0.6.0...v0.7.0
New ingest clients, new convenience apis, many bug fixes
Deprecations
Ingestion.Stream
has been deprecated in favor of dedicated streaming clients -ingest.Streaming
andingest.Managed
.
This API was very limited - it required you to create a queued ingestion client, it only accepted a byte array, and had no customization options.RowIterator.Next
andRowIterator.Do
are now deprecated and replaced byRowIterator.NextRowOrError
andRowIterator.DoOnRowOrError
.
In previous versions, when encountering an error in-line with the results (also known as partial success), the SDK panicked. NowRowIterator.Next
andRowIterator.Do
will return the first error they encounter, including in-line errors or partials successes and finish.
This means that there could be extra data that will be skipped when using these APIs. Fixed #81
Addtional Ingest Clients
ingest.Streaming
andingest.Managed
were added to the SDK. Their interface is identical toingest.Ingestion
(in fact - they all share an interfaceIngestor
), and are created viaingest.NewStreaming
andingest.NewManaged
respectively.
ingest.Streaming
uses streaming ingestion to ingest data to kusto. It supports ingesting from a file or aReader
, but not a blob.
ingest.Managed
is a managed streaming ingest client. It will try to use streaming ingest, but on transient failures and other conditions will fall back to queued ingestion.
New APIs for querying
- As mentioned before, RowIterator.Next
and
RowIterator.Doare now deprecated and replaced by
RowIterator.NextRowOrErrorand
RowIterator.DoOnRowOrError. The new APIs will act the same as the old, with the following changes:
RowIterator.NextRowOrErrorwill return an additional
inlineErrorvalue, when it's non-nil it indicates an inline error. After encountering it, the iteration doesn't end and you should continue consuming the iterator.
RowIterator.DoOnRowOrErrorrequires an additional parameter of type
*errors.Error`, which indicates an inline error. It can be ignored or handled, but while returning nil the iteration will continue.
Addtional Features
- Support extracting non-primary tables from a
RowIterator
using the following methods -GetNonPrimary
,GetExtendedProperties
andGetQueryCompletionInformation
. Fixed #85 - Expose
TableFragmentType
via a Replace flag by @w1ndy in #74 - Refactor value converters and implement
ExtractValues
forRow
by @w1ndy in #75 - Better Dynamic converter by @w1ndy in #78
- Support more forms of decimal type, and accept input of big.Int for it. Fixed #86
Fixes
- Add support for gzipped errors,. Fixed #84
- Moved from the old deprecated azblob to the new supported one. This should solve some issues in uploading blobs, specifically memory leaks.
Internal Improvements
New Contributors
Full Changelog: v0.5.2...v0.6.0