Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 0.3.0 #209

Merged
merged 1 commit into from
Nov 27, 2024
Merged

Release 0.3.0 #209

merged 1 commit into from
Nov 27, 2024

Conversation

muzarski
Copy link
Collaborator

@muzarski muzarski commented Nov 27, 2024

The ScyllaDB team is pleased to announce ScyllaDB CPP Rust Driver 0.3.0, an API-compatible rewrite of https://github.com/scylladb/cpp-driver as a wrapper for the Rust driver. It will fully replace the CPP driver, which is already reaching its End of Life.
The current driver version should be considered Alpha.

Some minor features still need to be included. See Limitations section in README.md.

The underlying Rust driver used version: 0.15.0.

Currently, the cpp-rust-driver does not fully utilize lazy deserialization mechanism introduced in rust-driver 0.15.0. The support for lazy deserialization, and all features
that depend on it are going to be introduced in some future release.

Changes

Starting from this release, features that are not part of original cpp-driver, but are implemented in cpp-rust-driver as an extension to original API, will be labeled as 🚀 [Extension].

Implemented API functions:

  • CassPrepared: (#185)
    • cass_prepared_parameter_name
    • cass_prepared_parameter_data_type
    • cass_prepared_parameter_data_type_by_name[_n]
  • CassResult: (#136)
    • cass_result_column_type
    • cass_result_column_data_type
  • Heartbeat/Keepalive: (#194)
    • cass_cluster_set_connection_heartbeat_interval
    • cass_cluster_set_connection_idle_timeout
  • Schema agreement: (#198)
    • cass_cluster_set_max_schema_wait_time
    • cass_cluster_set_schema_agreement_interval 🚀 [Extension]
  • Rack awareness: (#195)
    • cass_cluster_set_load_balance_rack_aware[_n]
    • cass_execution_profile_set_load_balance_rack_aware[_n]

New features / enhancements

  • Prepared statements now cache result metadata provided by the server. The metadata is NOT updated when table schema is altered. (#136, #205)

Bug fixes:

  • Fixed cass_result_first_row implementation. Previously, it would panic for RESULT:Rows response with empty rows. (#136)
  • Original cpp-driver tries to prepare an empty statement when null pointer is provided
    to cass_session_prepare. We decided to inherit this behaviour for compatibility reasons. (#194)
  • Adjusted some cluster config defaults, according to the defaults specified by cassandra.h. (#193)
  • Fixed the bug where the driver would fallthrough to default round-robin LBP for execution profiles whose LBP was not set by the user. Now, if the LBP for the execution profile is not set, the driver chooses the global LBP defined on the cluster object. (#197)
  • Fixed the bug where result metadata would be inconsistent for prepared statements when table schema was altered. (#205)

CI / developer tool improvements:

  • Adjusted to rust-driver logic, and enabled the SerialConsistencyTests suite. (#186)
  • Fixed the runner's image ubuntu version to 22.04 during CI. (#191)
  • Enabled NullStringApiArgsTest suite. (#194)
  • Added an explicit step to update apt cache during CI jobs. (#190)
  • Adjusted, and enabled 2 out of 3 tests from HeartbeatTests suite. (#202)
  • Enabled AlterDoesntUpdateColumnCount test in favor of AlterProperlyUpdatesColumnCount. It is related to the bug fix regarding prepared statement's result metadata. (#205)

Documentation:

  • Created a docs directory with a sample docs site. Work on the documentation will continue in the near future. (#134)

Others:

  • Adjusted build.rs, so bindgen generates definitions for numeric types automatically. Created modules for each source file generated by bindgen. (#188)
  • Got rid of redundant cassandra.h file in scylla-rust-wrapper. (#196)

Congrats to all contributors and thanks everyone for using our driver!


The source code of the driver can be found here:

Thank you for your attention, please do not hesitate to contact us if you have any questions, issues, feature requests, or are simply interested in our driver!

Contributors since the last release:

commits author
76 Mikołaj Uzarski
3 David Garcia
2 Karol Baryła
1 Dmitry Kropachev

@muzarski muzarski self-assigned this Nov 27, 2024
Copy link
Collaborator

@Lorak-mmk Lorak-mmk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"cass_cluster_set_schema_agreement_interval" - can you remind me what was the reason for introducing this?

@muzarski
Copy link
Collaborator Author

"cass_cluster_set_schema_agreement_interval" - can you remind me what was the reason for introducing this?

Rust-driver exposes such option - I decided that it's something user should be able to control on cpp-rust-driver's side as well. As a reminder: in rust-driver this controls how often we fetch version id from the nodes (and check for agreement) in Session::await_schema_agreement_indefinitely.

@muzarski muzarski merged commit 08bc6a5 into scylladb:master Nov 27, 2024
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants