# Changelog All notable changes to this project will be documented in this file. ## [0.24.1] - 2024-11-04 ### Added - Added `insert_all_gzipped` method, see this [PR](https://github.com/lquerel/gcp-bigquery-client/pull/110) for more details. Thanks @idobenamram. ## [0.24.0] - 2024-11-04 ### Changed - Added missing routine type `TableValuedFunction` as specified in the [reference](https://cloud.google.com/bigquery/docs/reference/rest/v2/routines#RoutineType). It also fixes the data type of `creation_time` and `last_modified_time` to String type (see https://cloud.google.com/bigquery/docs/reference/rest/v2/routines). Thanks @thevaibhav-dixit. - Added a new method `ResultSet::new_from_get_query_results_response` which creates a `ResultSet` from a `GetQueryResultsResponse`. Thanks @imor. - Breaking changes: - Return type of `JobApi::query` changed from `Result` to `Result`. - `ResultSet::new` renamed to `ResultSet::new_from_query_response`. - Rationale for the breaking changes: `JobApi::query` now returns `Result` instead of `Result`. A `ResultSet` wraps over a `QueryResponse` but callers didn't have acces to that internal object. To allow callers access to the internal object, `JobApi::query` now returns the internal object itself. This means older code which expected a `ResultSet` will break. - Upgrading to the new version: To fix broken code, you'll have to call `ResultSet::from_query_response` function. For example, if your code looked like this: ```rust let mut result_set = client .job() .query( project_id, query_request, ) .await?; ``` It should be updated to: ```rust let query_response = client .job() .query( project_id, query_request, ) .await?; let mut result_set = ResultSet::new_from_query_response(query_response); ``` Another reason for the change was making it consistent with `JobApi::get_query_results` which already returned an unwrapped object which callers needed to manually wrap inside a `ResultSet` by calling `ResultSet::new` method. ## [0.23.0] - 2024-08-10 ### Fix - Fix a root certificate issue following a breaking change in Tonic (by @imor). - Remove dependency on protoc. The generated code is now included in the repository (by @lquerel). ### Maintenance - Bump versions of `thiserror`, `hyper-util`, `tokio`, `serde`, `serde_json`, `tonic`, `tonic-build`. ## [0.22.0] - 2024-07-07 ### Added - Add partial support for BigQuery Storage Write API (by @imor). - append_rows - get_write_stream - Add GZIP support for `insert_all` (by @Deniskore). The `gzip` feature is included by default. See https://github.com/lquerel/gcp-bigquery-client/issues/74 for more information. Breaking changes: - Client::from_authenticator is now async. - ClientBuilder::build_from_authenticator is now async. ### Maintenance - Bump version of `yup_oauth2` to v11 (by @serpex). `gcp-bigquery-client` can now be used with ring or aws-lc-rs as a TLS backend. - Fix Clippy warnings produced with Rust 1.78.0 (by @imor). ## [0.21.0] - 2024-06-16 ### Maintenance - Bump version of yup_oauth2 to 10.0.1 (by @serpex). ## [0.20.0] - 2024-04-28 ### Maintenance - Re-export yup_oauth2 as suggested by @serpex. ## [0.19.0] - 2024-04-27 ### Maintenance - Re-export hyper_rustls from yup (Thanks to @DoumanAsh) - Bump versions of all dependencies to their most recent versions (including hyper and yup-oauth2) ## [0.18.1] - 2024-03-29 ### Improvement - Add support to bigquery-emulator (Thanks to @henriiik) - Add support to use the ClientBuilder to build a Client with an Authenticator (Thanks to @henriiik) ### Fix - Fix build issue with hyper-rustls (Thanks to @OmriSteiner and @nate-kelley-buster) ## [0.18.0] - 2023-10-22 ### Fix - Fix tabledata.list return type (Thank you @enricozb) ## [0.17.1] - 2023-10-01 ### Improvement - Feature/paginate through all jobs list #63 (Thank you @Shirlo) ### Fix - Apply the same fix as #54 to query_all #64 (Thank you @LawnGnome) ## [0.17.0] - 2023-07-01 ### Improvement - Add support for JSON column types. Thanks to Michael Gibson (@mchlgibs) for this contribution. ## [0.16.8] - 2023-06-11 ### Improvement - Add `get_serde` and `get_serde_by_name` methods to read columns for any types that implements `serde::de:DeserializeOwned`. Thanks to @andyquinterom for this contribution. ## [0.16.7] - 2023-04-25 ### Improvement - Update hyper-rustls version. ## [0.16.6] - 2023-03-06 ### Improvement - Fix Rows are not present when job not completed yet (Thanks @alu). ## [0.16.5] - 2023-02-05 ### Improvement - Add `format_options` field to `QueryRequest` (Thanks @JichaoS). ## [0.16.4] - 2022-12-28 ### Improvement - Update `FieldType` enum to `Geography` field type (Thanks @kiibo382). ## [0.16.3] - 2022-12-6 ### Improvement - Two new methods in the job API `query_all_with_location` and `query_all_with_job_reference` (Thanks @MikhailMS). ## [0.16.2] - 2022-11-12 ### Improvement - Example to run with bigquery-emulator (Thanks @marcoleni). ## [0.16.1] - 2022-11-09 ### Improvement - Application default credentials auth & authorized user auth (#46) (Thanks @kiibo382). ### Fix - Installed flow auth - execute the authorization code flow before returning (#45) (Thanks @kiibo382). - Avoid panic when schema doesn't exist (#44) (Thanks @lee-hen). ## [0.16.0] - 2022-11-06 ### Improvement - Better error management in [Client::from_service_account_key_file](https://github.com/lquerel/gcp-bigquery-client/issues/39) (Thanks @burmecia). ## [0.15.0] - 2022-11-02 ### Improvement - Abstraction of the Authenticator (Thanks @kiibo382). - InstalledFlowAuthenticator support (Thanks @kiibo382). - Support for BigQuery emulator (Thanks @Marcoleni) - Bump yup-oauth2 crate version. - Bump time crate version (security issue). ## [0.14.0] - 2022-09-27 ### Fix - Process list - Change numeric_id type from u64 to string (Thanks @kiibo382) ## [0.13.0] - 2022-07-11 ### Improvement - Make Client cloneable (Thanks @lee-hen). - Bump yup-oauth2 crate version. - Bump time crate version (security issue). - Change Job.query_all method signature to return a stream to support more use cases (Thanks LiHRaM). ## [0.12.2] - 2022-06-04 ### Improvement - Add query_all method to support result pagination (Thanks to @LiHRaM). ## [0.12.1] - 2022-05-21 ### Fix - Fix dependencies issues (Thanks to @MathiasKindberg). - Fix view creation (Thanks to @jeffreybolle). ## [0.12.0] - 2022-04-17 ### Improvement - Replace Chrome by Time. ## [0.11.0] - 2022-01-03 ### Fix - Fix QueryParameter type declaration (Thanks to @newapplesho). ## [0.10.2] - 2021-10-21 ### Fix - Fix 2 issues in the job API (Thanks to @nixxholas). ## [0.10.1] - 2021-10-31 ### Added - Add a BigQuery load job example in the examples directory. ## [0.10.0] - 2021-10-09 ### Added - 2 features `native-tls` and `rust-tls` to respectively use OpenSSL or Rust TLS. - Add methods `is_empty`, `len`, `clear` to `TableDataInsertAllRequest`. - Add method `add_rows` to `TableDataInsertAllRequest` (thanks @nixxholas). - Bump version for yup-oauth2 v6 (thanks @JamesHinshelwood). - Implement `Default` trait for most of the structures in the model sub-directory. - Implement `Clone` trait for most of the structures in the model sub-directory. - Implement `Display` trait for `ErrorProto` and `TableDataInsertAllResponseInsertErrors`. ## [0.9.3] - 2021-08-31 ### Fix - Fix ResultSet.get_i64 not working with some valid integer notation (e.g. 123.45E4) (Thanks to @komi1230). ## [0.9.2] - 2021-08-30 ### Fix - Fix Workload identify serialization issue (Thanks to @komi1230). ## [0.9.1] - 2021-08-16 ### Added - Workload identify support (Thanks to @komi1230). ## [0.9.0] - 2021-03-21 > Warning: this version is incompatible with the previous version. ### Added - Added dataset.delete_if_exists. - Added table.delete_if_exists. - Added new setters for dataset and table structs. ### Changed - Removed redundant parameters in dataset.create. - Removed redundant paramaters in table.create. - Improved BQError::ResponseError. - Improved the example.