diff --git a/google-cloud-spanner/lib/google/cloud/spanner/snapshot.rb b/google-cloud-spanner/lib/google/cloud/spanner/snapshot.rb index 38f15bea..4b73c6bf 100644 --- a/google-cloud-spanner/lib/google/cloud/spanner/snapshot.rb +++ b/google-cloud-spanner/lib/google/cloud/spanner/snapshot.rb @@ -131,6 +131,18 @@ def timestamp # available optimizer version. # * `:optimizer_statistics_package` (String) Statistics package to # use. Empty to use the database default. + # @param [Hash] request_options Common request options. + # + # * `:priority` (Symbol) The relative priority for requests. + # The priority acts as a hint to the Cloud Spanner scheduler + # and does not guarantee priority or order of execution. + # Valid values are `:PRIORITY_LOW`, `:PRIORITY_MEDIUM`, + # `:PRIORITY_HIGH`. If priority not set then default is + # `PRIORITY_UNSPECIFIED` is equivalent to `:PRIORITY_HIGH`. + # * `:tag` (String) A per-request tag which can be applied to + # queries or reads, used for statistics collection. Tag must be a + # valid identifier of the form: `[a-zA-Z][a-zA-Z0-9_\-]` between 2 + # and 64 characters in length. # @param [Hash] call_options A hash of values to specify the custom # call options, e.g., timeout, retries, etc. Call options are # optional. The following settings can be provided: @@ -304,13 +316,17 @@ def timestamp # end # def execute_query sql, params: nil, types: nil, query_options: nil, - call_options: nil, directed_read_options: nil + request_options: nil, call_options: nil, + directed_read_options: nil ensure_session! params, types = Convert.to_input_params_and_types params, types + request_options = Convert.to_request_options request_options, + tag_type: :request_tag session.execute_query sql, params: params, types: types, transaction: tx_selector, query_options: query_options, + request_options: request_options, call_options: call_options, directed_read_options: directed_read_options || @directed_read_options end diff --git a/google-cloud-spanner/test/google/cloud/spanner/snapshot/execute_query_test.rb b/google-cloud-spanner/test/google/cloud/spanner/snapshot/execute_query_test.rb index e0e8e1bd..c4023c94 100644 --- a/google-cloud-spanner/test/google/cloud/spanner/snapshot/execute_query_test.rb +++ b/google-cloud-spanner/test/google/cloud/spanner/snapshot/execute_query_test.rb @@ -324,6 +324,39 @@ assert_results results end + describe "priority request options" do + it "can execute a query" do + mock = Minitest::Mock.new + session.service.mocked_service = mock + expect_execute_streaming_sql results_enum, session.path, "SELECT * FROM users", + transaction: tx_selector, + request_options: { priority: :PRIORITY_MEDIUM }, + options: default_options + + results = snapshot.execute_query "SELECT * FROM users", + request_options: { priority: :PRIORITY_MEDIUM } + + mock.verify + + assert_results results + end + end + + it "can execute a query with request tag" do + mock = Minitest::Mock.new + session.service.mocked_service = mock + expect_execute_streaming_sql results_enum, session.path, "SELECT * FROM users", + transaction: tx_selector, + request_options: { request_tag: "Tag-1" }, + options: default_options + + results = snapshot.execute_query "SELECT * FROM users", request_options: { tag: "Tag-1" } + + mock.verify + + assert_results results + end + def assert_results results _(results).must_be_kind_of Google::Cloud::Spanner::Results