google-cloud-spanner-v1 1.11.1 → 1.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 393b6cd0b867cf7d0e099c50999c58d9ea5d8b4686e41d3fe2f067f115d4a315
4
- data.tar.gz: ae9dd0b8c9a247b34db58d3710a621351b1f16de86d1b04c1fc68c768a1074ca
3
+ metadata.gz: fbb63411b71ef6508facfe6f855c160d20671c914a4b77692967b2c8e129290e
4
+ data.tar.gz: 4802a9d8212bb6bf80d0193fa52e7fa535126afae471504b66183e5dab1305b7
5
5
  SHA512:
6
- metadata.gz: 6f90100a7070def216a9f601760a33be336c70092261290161355d7ce0291d1f6bc9faed0185d1d218c6db8298f1dafd5e39f1792425276f6530f7fbec7ddf1f
7
- data.tar.gz: 2ece710c760d93cf94887a64a1366f9a4b571346973ba7dea283663e30f5754b344edea9087532fdba5f6de49fb121b02d85fe42a4b0ab78ba58d3ecf4963dfb
6
+ metadata.gz: d57dca2d35434a26bb4ea6a9e8368c7e34bb3b3d7b104ca4c3f6e5702a6d90e2ecd2d816440b8f75af1c0331a51393570497299a4c7c5554371225cdf1c86c35
7
+ data.tar.gz: 90540fc482c9b244e9fd88fd1a92d9882b6c459d8dd6ad50b14536657cf06f123b222b7c99114403960cbb150936f76a60ad973cf60b0526fedbf9a5ffd10102
@@ -388,10 +388,10 @@ module Google
388
388
  # @param session_template [::Google::Cloud::Spanner::V1::Session, ::Hash]
389
389
  # Parameters to apply to each created session.
390
390
  # @param session_count [::Integer]
391
- # Required. The number of sessions to be created in this batch call.
392
- # The API can return fewer than the requested number of sessions. If a
393
- # specific number of sessions are desired, the client can make additional
394
- # calls to `BatchCreateSessions` (adjusting
391
+ # Required. The number of sessions to be created in this batch call. At least
392
+ # one session is created. The API can return fewer than the requested number
393
+ # of sessions. If a specific number of sessions are desired, the client can
394
+ # make additional calls to `BatchCreateSessions` (adjusting
395
395
  # {::Google::Cloud::Spanner::V1::BatchCreateSessionsRequest#session_count session_count}
396
396
  # as necessary).
397
397
  #
@@ -771,7 +771,7 @@ module Google
771
771
  # @param options [::Gapic::CallOptions, ::Hash]
772
772
  # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
773
773
  #
774
- # @overload execute_sql(session: nil, transaction: nil, sql: nil, params: nil, param_types: nil, resume_token: nil, query_mode: nil, partition_token: nil, seqno: nil, query_options: nil, request_options: nil, directed_read_options: nil, data_boost_enabled: nil, last_statement: nil)
774
+ # @overload execute_sql(session: nil, transaction: nil, sql: nil, params: nil, param_types: nil, resume_token: nil, query_mode: nil, partition_token: nil, seqno: nil, query_options: nil, request_options: nil, directed_read_options: nil, data_boost_enabled: nil, last_statement: nil, routing_hint: nil)
775
775
  # Pass arguments to `execute_sql` via keyword arguments. Note that at
776
776
  # least one keyword argument is required. To specify no parameters, or to keep all
777
777
  # the default parameter values, pass an empty Hash as a request object (see above).
@@ -867,6 +867,13 @@ module Google
867
867
  # be deferred until commit time (for example, validation of unique
868
868
  # constraints). Given this, successful execution of a DML statement shouldn't
869
869
  # be assumed until a subsequent `Commit` call completes successfully.
870
+ # @param routing_hint [::Google::Cloud::Spanner::V1::RoutingHint, ::Hash]
871
+ # Optional. If present, it makes the Spanner requests location-aware.
872
+ #
873
+ # It gives the server hints that can be used to route the request
874
+ # to an appropriate server, potentially significantly decreasing latency and
875
+ # improving throughput. To achieve improved performance, most fields must be
876
+ # filled in with accurate values.
870
877
  #
871
878
  # @yield [response, operation] Access the result along with the RPC operation
872
879
  # @yieldparam response [::Google::Cloud::Spanner::V1::ResultSet]
@@ -952,7 +959,7 @@ module Google
952
959
  # @param options [::Gapic::CallOptions, ::Hash]
953
960
  # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
954
961
  #
955
- # @overload execute_streaming_sql(session: nil, transaction: nil, sql: nil, params: nil, param_types: nil, resume_token: nil, query_mode: nil, partition_token: nil, seqno: nil, query_options: nil, request_options: nil, directed_read_options: nil, data_boost_enabled: nil, last_statement: nil)
962
+ # @overload execute_streaming_sql(session: nil, transaction: nil, sql: nil, params: nil, param_types: nil, resume_token: nil, query_mode: nil, partition_token: nil, seqno: nil, query_options: nil, request_options: nil, directed_read_options: nil, data_boost_enabled: nil, last_statement: nil, routing_hint: nil)
956
963
  # Pass arguments to `execute_streaming_sql` via keyword arguments. Note that at
957
964
  # least one keyword argument is required. To specify no parameters, or to keep all
958
965
  # the default parameter values, pass an empty Hash as a request object (see above).
@@ -1048,6 +1055,13 @@ module Google
1048
1055
  # be deferred until commit time (for example, validation of unique
1049
1056
  # constraints). Given this, successful execution of a DML statement shouldn't
1050
1057
  # be assumed until a subsequent `Commit` call completes successfully.
1058
+ # @param routing_hint [::Google::Cloud::Spanner::V1::RoutingHint, ::Hash]
1059
+ # Optional. If present, it makes the Spanner requests location-aware.
1060
+ #
1061
+ # It gives the server hints that can be used to route the request
1062
+ # to an appropriate server, potentially significantly decreasing latency and
1063
+ # improving throughput. To achieve improved performance, most fields must be
1064
+ # filled in with accurate values.
1051
1065
  #
1052
1066
  # @yield [response, operation] Access the result along with the RPC operation
1053
1067
  # @yieldparam response [::Enumerable<::Google::Cloud::Spanner::V1::PartialResultSet>]
@@ -1272,7 +1286,7 @@ module Google
1272
1286
  # @param options [::Gapic::CallOptions, ::Hash]
1273
1287
  # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
1274
1288
  #
1275
- # @overload read(session: nil, transaction: nil, table: nil, index: nil, columns: nil, key_set: nil, limit: nil, resume_token: nil, partition_token: nil, request_options: nil, directed_read_options: nil, data_boost_enabled: nil, order_by: nil, lock_hint: nil)
1289
+ # @overload read(session: nil, transaction: nil, table: nil, index: nil, columns: nil, key_set: nil, limit: nil, resume_token: nil, partition_token: nil, request_options: nil, directed_read_options: nil, data_boost_enabled: nil, order_by: nil, lock_hint: nil, routing_hint: nil)
1276
1290
  # Pass arguments to `read` via keyword arguments. Note that at
1277
1291
  # least one keyword argument is required. To specify no parameters, or to keep all
1278
1292
  # the default parameter values, pass an empty Hash as a request object (see above).
@@ -1349,6 +1363,13 @@ module Google
1349
1363
  # @param lock_hint [::Google::Cloud::Spanner::V1::ReadRequest::LockHint]
1350
1364
  # Optional. Lock Hint for the request, it can only be used with read-write
1351
1365
  # transactions.
1366
+ # @param routing_hint [::Google::Cloud::Spanner::V1::RoutingHint, ::Hash]
1367
+ # Optional. If present, it makes the Spanner requests location-aware.
1368
+ #
1369
+ # It gives the server hints that can be used to route the request
1370
+ # to an appropriate server, potentially significantly decreasing latency and
1371
+ # improving throughput. To achieve improved performance, most fields must be
1372
+ # filled in with accurate values.
1352
1373
  #
1353
1374
  # @yield [response, operation] Access the result along with the RPC operation
1354
1375
  # @yieldparam response [::Google::Cloud::Spanner::V1::ResultSet]
@@ -1431,7 +1452,7 @@ module Google
1431
1452
  # @param options [::Gapic::CallOptions, ::Hash]
1432
1453
  # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional.
1433
1454
  #
1434
- # @overload streaming_read(session: nil, transaction: nil, table: nil, index: nil, columns: nil, key_set: nil, limit: nil, resume_token: nil, partition_token: nil, request_options: nil, directed_read_options: nil, data_boost_enabled: nil, order_by: nil, lock_hint: nil)
1455
+ # @overload streaming_read(session: nil, transaction: nil, table: nil, index: nil, columns: nil, key_set: nil, limit: nil, resume_token: nil, partition_token: nil, request_options: nil, directed_read_options: nil, data_boost_enabled: nil, order_by: nil, lock_hint: nil, routing_hint: nil)
1435
1456
  # Pass arguments to `streaming_read` via keyword arguments. Note that at
1436
1457
  # least one keyword argument is required. To specify no parameters, or to keep all
1437
1458
  # the default parameter values, pass an empty Hash as a request object (see above).
@@ -1508,6 +1529,13 @@ module Google
1508
1529
  # @param lock_hint [::Google::Cloud::Spanner::V1::ReadRequest::LockHint]
1509
1530
  # Optional. Lock Hint for the request, it can only be used with read-write
1510
1531
  # transactions.
1532
+ # @param routing_hint [::Google::Cloud::Spanner::V1::RoutingHint, ::Hash]
1533
+ # Optional. If present, it makes the Spanner requests location-aware.
1534
+ #
1535
+ # It gives the server hints that can be used to route the request
1536
+ # to an appropriate server, potentially significantly decreasing latency and
1537
+ # improving throughput. To achieve improved performance, most fields must be
1538
+ # filled in with accurate values.
1511
1539
  #
1512
1540
  # @yield [response, operation] Access the result along with the RPC operation
1513
1541
  # @yieldparam response [::Enumerable<::Google::Cloud::Spanner::V1::PartialResultSet>]
@@ -21,7 +21,7 @@ module Google
21
21
  module Cloud
22
22
  module Spanner
23
23
  module V1
24
- VERSION = "1.11.1"
24
+ VERSION = "1.12.1"
25
25
  end
26
26
  end
27
27
  end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: google/spanner/v1/location.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+ require 'google/protobuf/struct_pb'
8
+ require 'google/spanner/v1/type_pb'
9
+
10
+
11
+ descriptor_data = "\n google/spanner/v1/location.proto\x12\x11google.spanner.v1\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1cgoogle/spanner/v1/type.proto\"f\n\x05Range\x12\x11\n\tstart_key\x18\x01 \x01(\x0c\x12\x11\n\tlimit_key\x18\x02 \x01(\x0c\x12\x11\n\tgroup_uid\x18\x03 \x01(\x04\x12\x10\n\x08split_id\x18\x04 \x01(\x04\x12\x12\n\ngeneration\x18\x05 \x01(\x0c\"\xe6\x01\n\x06Tablet\x12\x12\n\ntablet_uid\x18\x01 \x01(\x04\x12\x16\n\x0eserver_address\x18\x02 \x01(\t\x12\x10\n\x08location\x18\x03 \x01(\t\x12,\n\x04role\x18\x04 \x01(\x0e\x32\x1e.google.spanner.v1.Tablet.Role\x12\x13\n\x0bincarnation\x18\x05 \x01(\x0c\x12\x10\n\x08\x64istance\x18\x06 \x01(\r\x12\x0c\n\x04skip\x18\x07 \x01(\x08\";\n\x04Role\x12\x14\n\x10ROLE_UNSPECIFIED\x10\x00\x12\x0e\n\nREAD_WRITE\x10\x01\x12\r\n\tREAD_ONLY\x10\x02\"p\n\x05Group\x12\x11\n\tgroup_uid\x18\x01 \x01(\x04\x12*\n\x07tablets\x18\x02 \x03(\x0b\x32\x19.google.spanner.v1.Tablet\x12\x14\n\x0cleader_index\x18\x03 \x01(\x05\x12\x12\n\ngeneration\x18\x04 \x01(\x0c\"\xd3\x04\n\tKeyRecipe\x12\x14\n\ntable_name\x18\x01 \x01(\tH\x00\x12\x14\n\nindex_name\x18\x02 \x01(\tH\x00\x12\x17\n\roperation_uid\x18\x03 \x01(\x04H\x00\x12/\n\x04part\x18\x04 \x03(\x0b\x32!.google.spanner.v1.KeyRecipe.Part\x1a\xc5\x03\n\x04Part\x12\x0b\n\x03tag\x18\x01 \x01(\r\x12\x36\n\x05order\x18\x02 \x01(\x0e\x32\'.google.spanner.v1.KeyRecipe.Part.Order\x12?\n\nnull_order\x18\x03 \x01(\x0e\x32+.google.spanner.v1.KeyRecipe.Part.NullOrder\x12%\n\x04type\x18\x04 \x01(\x0b\x32\x17.google.spanner.v1.Type\x12\x14\n\nidentifier\x18\x05 \x01(\tH\x00\x12\'\n\x05value\x18\x06 \x01(\x0b\x32\x16.google.protobuf.ValueH\x00\x12\x10\n\x06random\x18\x08 \x01(\x08H\x00\x12\x1a\n\x12struct_identifiers\x18\x07 \x03(\x05\"=\n\x05Order\x12\x15\n\x11ORDER_UNSPECIFIED\x10\x00\x12\r\n\tASCENDING\x10\x01\x12\x0e\n\nDESCENDING\x10\x02\"V\n\tNullOrder\x12\x1a\n\x16NULL_ORDER_UNSPECIFIED\x10\x00\x12\x0f\n\x0bNULLS_FIRST\x10\x01\x12\x0e\n\nNULLS_LAST\x10\x02\x12\x0c\n\x08NOT_NULL\x10\x03\x42\x0c\n\nvalue_typeB\x08\n\x06target\"U\n\nRecipeList\x12\x19\n\x11schema_generation\x18\x01 \x01(\x0c\x12,\n\x06recipe\x18\x03 \x03(\x0b\x32\x1c.google.spanner.v1.KeyRecipe\"\xa8\x01\n\x0b\x43\x61\x63heUpdate\x12\x13\n\x0b\x64\x61tabase_id\x18\x01 \x01(\x04\x12\'\n\x05range\x18\x02 \x03(\x0b\x32\x18.google.spanner.v1.Range\x12\'\n\x05group\x18\x03 \x03(\x0b\x32\x18.google.spanner.v1.Group\x12\x32\n\x0bkey_recipes\x18\x05 \x01(\x0b\x32\x1d.google.spanner.v1.RecipeList\"\xca\x02\n\x0bRoutingHint\x12\x15\n\roperation_uid\x18\x01 \x01(\x04\x12\x13\n\x0b\x64\x61tabase_id\x18\x02 \x01(\x04\x12\x19\n\x11schema_generation\x18\x03 \x01(\x0c\x12\x0b\n\x03key\x18\x04 \x01(\x0c\x12\x11\n\tlimit_key\x18\x05 \x01(\x0c\x12\x11\n\tgroup_uid\x18\x06 \x01(\x04\x12\x10\n\x08split_id\x18\x07 \x01(\x04\x12\x12\n\ntablet_uid\x18\x08 \x01(\x04\x12H\n\x12skipped_tablet_uid\x18\t \x03(\x0b\x32,.google.spanner.v1.RoutingHint.SkippedTablet\x12\x17\n\x0f\x63lient_location\x18\n \x01(\t\x1a\x38\n\rSkippedTablet\x12\x12\n\ntablet_uid\x18\x01 \x01(\x04\x12\x13\n\x0bincarnation\x18\x02 \x01(\x0c\x42\xb0\x01\n\x15\x63om.google.spanner.v1B\rLocationProtoP\x01Z5cloud.google.com/go/spanner/apiv1/spannerpb;spannerpb\xaa\x02\x17Google.Cloud.Spanner.V1\xca\x02\x17Google\\Cloud\\Spanner\\V1\xea\x02\x1aGoogle::Cloud::Spanner::V1b\x06proto3"
12
+
13
+ pool = Google::Protobuf::DescriptorPool.generated_pool
14
+
15
+ begin
16
+ pool.add_serialized_file(descriptor_data)
17
+ rescue TypeError
18
+ # Compatibility code: will be removed in the next major version.
19
+ require 'google/protobuf/descriptor_pb'
20
+ parsed = Google::Protobuf::FileDescriptorProto.decode(descriptor_data)
21
+ parsed.clear_dependency
22
+ serialized = parsed.class.encode(parsed)
23
+ file = pool.add_serialized_file(serialized)
24
+ warn "Warning: Protobuf detected an import path issue while loading generated file #{__FILE__}"
25
+ imports = [
26
+ ["google.spanner.v1.Type", "google/spanner/v1/type.proto"],
27
+ ["google.protobuf.Value", "google/protobuf/struct.proto"],
28
+ ]
29
+ imports.each do |type_name, expected_filename|
30
+ import_file = pool.lookup(type_name).file_descriptor
31
+ if import_file.name != expected_filename
32
+ warn "- #{file.name} imports #{expected_filename}, but that import was loaded as #{import_file.name}"
33
+ end
34
+ end
35
+ warn "Each proto file must use a consistent fully-qualified name."
36
+ warn "This will become an error in the next major version."
37
+ end
38
+
39
+ module Google
40
+ module Cloud
41
+ module Spanner
42
+ module V1
43
+ Range = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.Range").msgclass
44
+ Tablet = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.Tablet").msgclass
45
+ Tablet::Role = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.Tablet.Role").enummodule
46
+ Group = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.Group").msgclass
47
+ KeyRecipe = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.KeyRecipe").msgclass
48
+ KeyRecipe::Part = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.KeyRecipe.Part").msgclass
49
+ KeyRecipe::Part::Order = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.KeyRecipe.Part.Order").enummodule
50
+ KeyRecipe::Part::NullOrder = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.KeyRecipe.Part.NullOrder").enummodule
51
+ RecipeList = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.RecipeList").msgclass
52
+ CacheUpdate = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.CacheUpdate").msgclass
53
+ RoutingHint = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.RoutingHint").msgclass
54
+ RoutingHint::SkippedTablet = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.RoutingHint.SkippedTablet").msgclass
55
+ end
56
+ end
57
+ end
58
+ end
@@ -6,10 +6,11 @@ require 'google/protobuf'
6
6
 
7
7
  require 'google/api/field_behavior_pb'
8
8
  require 'google/protobuf/struct_pb'
9
+ require 'google/protobuf/timestamp_pb'
9
10
  require 'google/spanner/v1/keys_pb'
10
11
 
11
12
 
12
- descriptor_data = "\n google/spanner/v1/mutation.proto\x12\x11google.spanner.v1\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1cgoogle/spanner/v1/keys.proto\"\xd5\x03\n\x08Mutation\x12\x33\n\x06insert\x18\x01 \x01(\x0b\x32!.google.spanner.v1.Mutation.WriteH\x00\x12\x33\n\x06update\x18\x02 \x01(\x0b\x32!.google.spanner.v1.Mutation.WriteH\x00\x12=\n\x10insert_or_update\x18\x03 \x01(\x0b\x32!.google.spanner.v1.Mutation.WriteH\x00\x12\x34\n\x07replace\x18\x04 \x01(\x0b\x32!.google.spanner.v1.Mutation.WriteH\x00\x12\x34\n\x06\x64\x65lete\x18\x05 \x01(\x0b\x32\".google.spanner.v1.Mutation.DeleteH\x00\x1aX\n\x05Write\x12\x12\n\x05table\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x0f\n\x07\x63olumns\x18\x02 \x03(\t\x12*\n\x06values\x18\x03 \x03(\x0b\x32\x1a.google.protobuf.ListValue\x1aM\n\x06\x44\x65lete\x12\x12\n\x05table\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12/\n\x07key_set\x18\x02 \x01(\x0b\x32\x19.google.spanner.v1.KeySetB\x03\xe0\x41\x02\x42\x0b\n\toperationB\xb0\x01\n\x15\x63om.google.spanner.v1B\rMutationProtoP\x01Z5cloud.google.com/go/spanner/apiv1/spannerpb;spannerpb\xaa\x02\x17Google.Cloud.Spanner.V1\xca\x02\x17Google\\Cloud\\Spanner\\V1\xea\x02\x1aGoogle::Cloud::Spanner::V1b\x06proto3"
13
+ descriptor_data = "\n google/spanner/v1/mutation.proto\x12\x11google.spanner.v1\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/spanner/v1/keys.proto\"\xc0\x06\n\x08Mutation\x12\x33\n\x06insert\x18\x01 \x01(\x0b\x32!.google.spanner.v1.Mutation.WriteH\x00\x12\x33\n\x06update\x18\x02 \x01(\x0b\x32!.google.spanner.v1.Mutation.WriteH\x00\x12=\n\x10insert_or_update\x18\x03 \x01(\x0b\x32!.google.spanner.v1.Mutation.WriteH\x00\x12\x34\n\x07replace\x18\x04 \x01(\x0b\x32!.google.spanner.v1.Mutation.WriteH\x00\x12\x34\n\x06\x64\x65lete\x18\x05 \x01(\x0b\x32\".google.spanner.v1.Mutation.DeleteH\x00\x12\x30\n\x04send\x18\x06 \x01(\x0b\x32 .google.spanner.v1.Mutation.SendH\x00\x12.\n\x03\x61\x63k\x18\x07 \x01(\x0b\x32\x1f.google.spanner.v1.Mutation.AckH\x00\x1aX\n\x05Write\x12\x12\n\x05table\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x0f\n\x07\x63olumns\x18\x02 \x03(\t\x12*\n\x06values\x18\x03 \x03(\x0b\x32\x1a.google.protobuf.ListValue\x1aM\n\x06\x44\x65lete\x12\x12\n\x05table\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12/\n\x07key_set\x18\x02 \x01(\x0b\x32\x19.google.spanner.v1.KeySetB\x03\xe0\x41\x02\x1a\xa3\x01\n\x04Send\x12\x12\n\x05queue\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12,\n\x03key\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.ListValueB\x03\xe0\x41\x02\x12\x30\n\x0c\x64\x65liver_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\'\n\x07payload\x18\x04 \x01(\x0b\x32\x16.google.protobuf.Value\x1a\x61\n\x03\x41\x63k\x12\x12\n\x05queue\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12,\n\x03key\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.ListValueB\x03\xe0\x41\x02\x12\x18\n\x10ignore_not_found\x18\x03 \x01(\x08\x42\x0b\n\toperationB\xb0\x01\n\x15\x63om.google.spanner.v1B\rMutationProtoP\x01Z5cloud.google.com/go/spanner/apiv1/spannerpb;spannerpb\xaa\x02\x17Google.Cloud.Spanner.V1\xca\x02\x17Google\\Cloud\\Spanner\\V1\xea\x02\x1aGoogle::Cloud::Spanner::V1b\x06proto3"
13
14
 
14
15
  pool = Google::Protobuf::DescriptorPool.generated_pool
15
16
 
@@ -26,6 +27,7 @@ rescue TypeError
26
27
  imports = [
27
28
  ["google.protobuf.ListValue", "google/protobuf/struct.proto"],
28
29
  ["google.spanner.v1.KeySet", "google/spanner/v1/keys.proto"],
30
+ ["google.protobuf.Timestamp", "google/protobuf/timestamp.proto"],
29
31
  ]
30
32
  imports.each do |type_name, expected_filename|
31
33
  import_file = pool.lookup(type_name).file_descriptor
@@ -44,6 +46,8 @@ module Google
44
46
  Mutation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.Mutation").msgclass
45
47
  Mutation::Write = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.Mutation.Write").msgclass
46
48
  Mutation::Delete = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.Mutation.Delete").msgclass
49
+ Mutation::Send = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.Mutation.Send").msgclass
50
+ Mutation::Ack = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.Mutation.Ack").msgclass
47
51
  end
48
52
  end
49
53
  end
@@ -4,10 +4,11 @@
4
4
 
5
5
  require 'google/protobuf'
6
6
 
7
+ require 'google/api/field_behavior_pb'
7
8
  require 'google/protobuf/struct_pb'
8
9
 
9
10
 
10
- descriptor_data = "\n\"google/spanner/v1/query_plan.proto\x12\x11google.spanner.v1\x1a\x1cgoogle/protobuf/struct.proto\"\xf8\x04\n\x08PlanNode\x12\r\n\x05index\x18\x01 \x01(\x05\x12.\n\x04kind\x18\x02 \x01(\x0e\x32 .google.spanner.v1.PlanNode.Kind\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t\x12:\n\x0b\x63hild_links\x18\x04 \x03(\x0b\x32%.google.spanner.v1.PlanNode.ChildLink\x12M\n\x14short_representation\x18\x05 \x01(\x0b\x32/.google.spanner.v1.PlanNode.ShortRepresentation\x12)\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x30\n\x0f\x65xecution_stats\x18\x07 \x01(\x0b\x32\x17.google.protobuf.Struct\x1a@\n\tChildLink\x12\x13\n\x0b\x63hild_index\x18\x01 \x01(\x05\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x10\n\x08variable\x18\x03 \x01(\t\x1a\xb2\x01\n\x13ShortRepresentation\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\t\x12S\n\nsubqueries\x18\x02 \x03(\x0b\x32?.google.spanner.v1.PlanNode.ShortRepresentation.SubqueriesEntry\x1a\x31\n\x0fSubqueriesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\"8\n\x04Kind\x12\x14\n\x10KIND_UNSPECIFIED\x10\x00\x12\x0e\n\nRELATIONAL\x10\x01\x12\n\n\x06SCALAR\x10\x02\"<\n\tQueryPlan\x12/\n\nplan_nodes\x18\x01 \x03(\x0b\x32\x1b.google.spanner.v1.PlanNodeB\xb1\x01\n\x15\x63om.google.spanner.v1B\x0eQueryPlanProtoP\x01Z5cloud.google.com/go/spanner/apiv1/spannerpb;spannerpb\xaa\x02\x17Google.Cloud.Spanner.V1\xca\x02\x17Google\\Cloud\\Spanner\\V1\xea\x02\x1aGoogle::Cloud::Spanner::V1b\x06proto3"
11
+ descriptor_data = "\n\"google/spanner/v1/query_plan.proto\x12\x11google.spanner.v1\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xf8\x04\n\x08PlanNode\x12\r\n\x05index\x18\x01 \x01(\x05\x12.\n\x04kind\x18\x02 \x01(\x0e\x32 .google.spanner.v1.PlanNode.Kind\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t\x12:\n\x0b\x63hild_links\x18\x04 \x03(\x0b\x32%.google.spanner.v1.PlanNode.ChildLink\x12M\n\x14short_representation\x18\x05 \x01(\x0b\x32/.google.spanner.v1.PlanNode.ShortRepresentation\x12)\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x30\n\x0f\x65xecution_stats\x18\x07 \x01(\x0b\x32\x17.google.protobuf.Struct\x1a@\n\tChildLink\x12\x13\n\x0b\x63hild_index\x18\x01 \x01(\x05\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x10\n\x08variable\x18\x03 \x01(\t\x1a\xb2\x01\n\x13ShortRepresentation\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\t\x12S\n\nsubqueries\x18\x02 \x03(\x0b\x32?.google.spanner.v1.PlanNode.ShortRepresentation.SubqueriesEntry\x1a\x31\n\x0fSubqueriesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\"8\n\x04Kind\x12\x14\n\x10KIND_UNSPECIFIED\x10\x00\x12\x0e\n\nRELATIONAL\x10\x01\x12\n\n\x06SCALAR\x10\x02\"\xa4\x01\n\x12QueryAdvisorResult\x12L\n\x0cindex_advice\x18\x01 \x03(\x0b\x32\x31.google.spanner.v1.QueryAdvisorResult.IndexAdviceB\x03\xe0\x41\x01\x1a@\n\x0bIndexAdvice\x12\x10\n\x03\x64\x64l\x18\x01 \x03(\tB\x03\xe0\x41\x01\x12\x1f\n\x12improvement_factor\x18\x02 \x01(\x01\x42\x03\xe0\x41\x01\"~\n\tQueryPlan\x12/\n\nplan_nodes\x18\x01 \x03(\x0b\x32\x1b.google.spanner.v1.PlanNode\x12@\n\x0cquery_advice\x18\x02 \x01(\x0b\x32%.google.spanner.v1.QueryAdvisorResultB\x03\xe0\x41\x01\x42\xb1\x01\n\x15\x63om.google.spanner.v1B\x0eQueryPlanProtoP\x01Z5cloud.google.com/go/spanner/apiv1/spannerpb;spannerpb\xaa\x02\x17Google.Cloud.Spanner.V1\xca\x02\x17Google\\Cloud\\Spanner\\V1\xea\x02\x1aGoogle::Cloud::Spanner::V1b\x06proto3"
11
12
 
12
13
  pool = Google::Protobuf::DescriptorPool.generated_pool
13
14
 
@@ -42,6 +43,8 @@ module Google
42
43
  PlanNode::ChildLink = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.PlanNode.ChildLink").msgclass
43
44
  PlanNode::ShortRepresentation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.PlanNode.ShortRepresentation").msgclass
44
45
  PlanNode::Kind = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.PlanNode.Kind").enummodule
46
+ QueryAdvisorResult = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.QueryAdvisorResult").msgclass
47
+ QueryAdvisorResult::IndexAdvice = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.QueryAdvisorResult.IndexAdvice").msgclass
45
48
  QueryPlan = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.spanner.v1.QueryPlan").msgclass
46
49
  end
47
50
  end
@@ -6,12 +6,13 @@ require 'google/protobuf'
6
6
 
7
7
  require 'google/api/field_behavior_pb'
8
8
  require 'google/protobuf/struct_pb'
9
+ require 'google/spanner/v1/location_pb'
9
10
  require 'google/spanner/v1/query_plan_pb'
10
11
  require 'google/spanner/v1/transaction_pb'
11
12
  require 'google/spanner/v1/type_pb'
12
13
 
13
14
 
14
- descriptor_data = "\n\"google/spanner/v1/result_set.proto\x12\x11google.spanner.v1\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\"google/spanner/v1/query_plan.proto\x1a#google/spanner/v1/transaction.proto\x1a\x1cgoogle/spanner/v1/type.proto\"\xf2\x01\n\tResultSet\x12\x36\n\x08metadata\x18\x01 \x01(\x0b\x32$.google.spanner.v1.ResultSetMetadata\x12(\n\x04rows\x18\x02 \x03(\x0b\x32\x1a.google.protobuf.ListValue\x12\x30\n\x05stats\x18\x03 \x01(\x0b\x32!.google.spanner.v1.ResultSetStats\x12Q\n\x0fprecommit_token\x18\x05 \x01(\x0b\x32\x33.google.spanner.v1.MultiplexedSessionPrecommitTokenB\x03\xe0\x41\x01\"\xb7\x02\n\x10PartialResultSet\x12\x36\n\x08metadata\x18\x01 \x01(\x0b\x32$.google.spanner.v1.ResultSetMetadata\x12&\n\x06values\x18\x02 \x03(\x0b\x32\x16.google.protobuf.Value\x12\x15\n\rchunked_value\x18\x03 \x01(\x08\x12\x14\n\x0cresume_token\x18\x04 \x01(\x0c\x12\x30\n\x05stats\x18\x05 \x01(\x0b\x32!.google.spanner.v1.ResultSetStats\x12Q\n\x0fprecommit_token\x18\x08 \x01(\x0b\x32\x33.google.spanner.v1.MultiplexedSessionPrecommitTokenB\x03\xe0\x41\x01\x12\x11\n\x04last\x18\t \x01(\x08\x42\x03\xe0\x41\x01\"\xb7\x01\n\x11ResultSetMetadata\x12/\n\x08row_type\x18\x01 \x01(\x0b\x32\x1d.google.spanner.v1.StructType\x12\x33\n\x0btransaction\x18\x02 \x01(\x0b\x32\x1e.google.spanner.v1.Transaction\x12<\n\x15undeclared_parameters\x18\x03 \x01(\x0b\x32\x1d.google.spanner.v1.StructType\"\xb9\x01\n\x0eResultSetStats\x12\x30\n\nquery_plan\x18\x01 \x01(\x0b\x32\x1c.google.spanner.v1.QueryPlan\x12,\n\x0bquery_stats\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x19\n\x0frow_count_exact\x18\x03 \x01(\x03H\x00\x12\x1f\n\x15row_count_lower_bound\x18\x04 \x01(\x03H\x00\x42\x0b\n\trow_countB\xb1\x01\n\x15\x63om.google.spanner.v1B\x0eResultSetProtoP\x01Z5cloud.google.com/go/spanner/apiv1/spannerpb;spannerpb\xaa\x02\x17Google.Cloud.Spanner.V1\xca\x02\x17Google\\Cloud\\Spanner\\V1\xea\x02\x1aGoogle::Cloud::Spanner::V1b\x06proto3"
15
+ descriptor_data = "\n\"google/spanner/v1/result_set.proto\x12\x11google.spanner.v1\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a google/spanner/v1/location.proto\x1a\"google/spanner/v1/query_plan.proto\x1a#google/spanner/v1/transaction.proto\x1a\x1cgoogle/spanner/v1/type.proto\"\xf2\x01\n\tResultSet\x12\x36\n\x08metadata\x18\x01 \x01(\x0b\x32$.google.spanner.v1.ResultSetMetadata\x12(\n\x04rows\x18\x02 \x03(\x0b\x32\x1a.google.protobuf.ListValue\x12\x30\n\x05stats\x18\x03 \x01(\x0b\x32!.google.spanner.v1.ResultSetStats\x12Q\n\x0fprecommit_token\x18\x05 \x01(\x0b\x32\x33.google.spanner.v1.MultiplexedSessionPrecommitTokenB\x03\xe0\x41\x01\"\xf2\x02\n\x10PartialResultSet\x12\x36\n\x08metadata\x18\x01 \x01(\x0b\x32$.google.spanner.v1.ResultSetMetadata\x12&\n\x06values\x18\x02 \x03(\x0b\x32\x16.google.protobuf.Value\x12\x15\n\rchunked_value\x18\x03 \x01(\x08\x12\x14\n\x0cresume_token\x18\x04 \x01(\x0c\x12\x30\n\x05stats\x18\x05 \x01(\x0b\x32!.google.spanner.v1.ResultSetStats\x12Q\n\x0fprecommit_token\x18\x08 \x01(\x0b\x32\x33.google.spanner.v1.MultiplexedSessionPrecommitTokenB\x03\xe0\x41\x01\x12\x11\n\x04last\x18\t \x01(\x08\x42\x03\xe0\x41\x01\x12\x39\n\x0c\x63\x61\x63he_update\x18\n \x01(\x0b\x32\x1e.google.spanner.v1.CacheUpdateB\x03\xe0\x41\x01\"\xb7\x01\n\x11ResultSetMetadata\x12/\n\x08row_type\x18\x01 \x01(\x0b\x32\x1d.google.spanner.v1.StructType\x12\x33\n\x0btransaction\x18\x02 \x01(\x0b\x32\x1e.google.spanner.v1.Transaction\x12<\n\x15undeclared_parameters\x18\x03 \x01(\x0b\x32\x1d.google.spanner.v1.StructType\"\xb9\x01\n\x0eResultSetStats\x12\x30\n\nquery_plan\x18\x01 \x01(\x0b\x32\x1c.google.spanner.v1.QueryPlan\x12,\n\x0bquery_stats\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12\x19\n\x0frow_count_exact\x18\x03 \x01(\x03H\x00\x12\x1f\n\x15row_count_lower_bound\x18\x04 \x01(\x03H\x00\x42\x0b\n\trow_countB\xb1\x01\n\x15\x63om.google.spanner.v1B\x0eResultSetProtoP\x01Z5cloud.google.com/go/spanner/apiv1/spannerpb;spannerpb\xaa\x02\x17Google.Cloud.Spanner.V1\xca\x02\x17Google\\Cloud\\Spanner\\V1\xea\x02\x1aGoogle::Cloud::Spanner::V1b\x06proto3"
15
16
 
16
17
  pool = Google::Protobuf::DescriptorPool.generated_pool
17
18
 
@@ -28,6 +29,7 @@ rescue TypeError
28
29
  imports = [
29
30
  ["google.protobuf.ListValue", "google/protobuf/struct.proto"],
30
31
  ["google.spanner.v1.MultiplexedSessionPrecommitToken", "google/spanner/v1/transaction.proto"],
32
+ ["google.spanner.v1.CacheUpdate", "google/spanner/v1/location.proto"],
31
33
  ["google.spanner.v1.StructType", "google/spanner/v1/type.proto"],
32
34
  ["google.spanner.v1.QueryPlan", "google/spanner/v1/query_plan.proto"],
33
35
  ]
@@ -15,13 +15,14 @@ require 'google/protobuf/struct_pb'
15
15
  require 'google/protobuf/timestamp_pb'
16
16
  require 'google/rpc/status_pb'
17
17
  require 'google/spanner/v1/keys_pb'
18
+ require 'google/spanner/v1/location_pb'
18
19
  require 'google/spanner/v1/mutation_pb'
19
20
  require 'google/spanner/v1/result_set_pb'
20
21
  require 'google/spanner/v1/transaction_pb'
21
22
  require 'google/spanner/v1/type_pb'
22
23
 
23
24
 
24
- descriptor_data = "\n\x1fgoogle/spanner/v1/spanner.proto\x12\x11google.spanner.v1\x1a\'google/spanner/v1/commit_response.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto\x1a\x1cgoogle/spanner/v1/keys.proto\x1a google/spanner/v1/mutation.proto\x1a\"google/spanner/v1/result_set.proto\x1a#google/spanner/v1/transaction.proto\x1a\x1cgoogle/spanner/v1/type.proto\"\x83\x01\n\x14\x43reateSessionRequest\x12\x39\n\x08\x64\x61tabase\x18\x01 \x01(\tB\'\xe0\x41\x02\xfa\x41!\n\x1fspanner.googleapis.com/Database\x12\x30\n\x07session\x18\x02 \x01(\x0b\x32\x1a.google.spanner.v1.SessionB\x03\xe0\x41\x02\"\xa9\x01\n\x1a\x42\x61tchCreateSessionsRequest\x12\x39\n\x08\x64\x61tabase\x18\x01 \x01(\tB\'\xe0\x41\x02\xfa\x41!\n\x1fspanner.googleapis.com/Database\x12\x34\n\x10session_template\x18\x02 \x01(\x0b\x32\x1a.google.spanner.v1.Session\x12\x1a\n\rsession_count\x18\x03 \x01(\x05\x42\x03\xe0\x41\x02\"J\n\x1b\x42\x61tchCreateSessionsResponse\x12+\n\x07session\x18\x01 \x03(\x0b\x32\x1a.google.spanner.v1.Session\"\xb8\x03\n\x07Session\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x03\x12\x36\n\x06labels\x18\x02 \x03(\x0b\x32&.google.spanner.v1.Session.LabelsEntry\x12\x34\n\x0b\x63reate_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12\x42\n\x19\x61pproximate_last_use_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12\x14\n\x0c\x63reator_role\x18\x05 \x01(\t\x12\x18\n\x0bmultiplexed\x18\x06 \x01(\x08\x42\x03\xe0\x41\x01\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01:\x88\x01\xea\x41\x84\x01\n\x1espanner.googleapis.com/Session\x12Oprojects/{project}/instances/{instance}/databases/{database}/sessions/{session}*\x08sessions2\x07session\"I\n\x11GetSessionRequest\x12\x34\n\x04name\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\"\x87\x01\n\x13ListSessionsRequest\x12\x39\n\x08\x64\x61tabase\x18\x01 \x01(\tB\'\xe0\x41\x02\xfa\x41!\n\x1fspanner.googleapis.com/Database\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x04 \x01(\t\"]\n\x14ListSessionsResponse\x12,\n\x08sessions\x18\x01 \x03(\x0b\x32\x1a.google.spanner.v1.Session\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"L\n\x14\x44\x65leteSessionRequest\x12\x34\n\x04name\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\"\xdc\x01\n\x0eRequestOptions\x12<\n\x08priority\x18\x01 \x01(\x0e\x32*.google.spanner.v1.RequestOptions.Priority\x12\x13\n\x0brequest_tag\x18\x02 \x01(\t\x12\x17\n\x0ftransaction_tag\x18\x03 \x01(\t\"^\n\x08Priority\x12\x18\n\x14PRIORITY_UNSPECIFIED\x10\x00\x12\x10\n\x0cPRIORITY_LOW\x10\x01\x12\x13\n\x0fPRIORITY_MEDIUM\x10\x02\x12\x11\n\rPRIORITY_HIGH\x10\x03\"\xea\x04\n\x13\x44irectedReadOptions\x12R\n\x10include_replicas\x18\x01 \x01(\x0b\x32\x36.google.spanner.v1.DirectedReadOptions.IncludeReplicasH\x00\x12R\n\x10\x65xclude_replicas\x18\x02 \x01(\x0b\x32\x36.google.spanner.v1.DirectedReadOptions.ExcludeReplicasH\x00\x1a\xad\x01\n\x10ReplicaSelection\x12\x10\n\x08location\x18\x01 \x01(\t\x12J\n\x04type\x18\x02 \x01(\x0e\x32<.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type\";\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x0e\n\nREAD_WRITE\x10\x01\x12\r\n\tREAD_ONLY\x10\x02\x1a\x86\x01\n\x0fIncludeReplicas\x12S\n\x12replica_selections\x18\x01 \x03(\x0b\x32\x37.google.spanner.v1.DirectedReadOptions.ReplicaSelection\x12\x1e\n\x16\x61uto_failover_disabled\x18\x02 \x01(\x08\x1a\x66\n\x0f\x45xcludeReplicas\x12S\n\x12replica_selections\x18\x01 \x03(\x0b\x32\x37.google.spanner.v1.DirectedReadOptions.ReplicaSelectionB\n\n\x08replicas\"\x8d\x07\n\x11\x45xecuteSqlRequest\x12\x37\n\x07session\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\x12;\n\x0btransaction\x18\x02 \x01(\x0b\x32&.google.spanner.v1.TransactionSelector\x12\x10\n\x03sql\x18\x03 \x01(\tB\x03\xe0\x41\x02\x12\'\n\x06params\x18\x04 \x01(\x0b\x32\x17.google.protobuf.Struct\x12I\n\x0bparam_types\x18\x05 \x03(\x0b\x32\x34.google.spanner.v1.ExecuteSqlRequest.ParamTypesEntry\x12\x14\n\x0cresume_token\x18\x06 \x01(\x0c\x12\x42\n\nquery_mode\x18\x07 \x01(\x0e\x32..google.spanner.v1.ExecuteSqlRequest.QueryMode\x12\x17\n\x0fpartition_token\x18\x08 \x01(\x0c\x12\r\n\x05seqno\x18\t \x01(\x03\x12H\n\rquery_options\x18\n \x01(\x0b\x32\x31.google.spanner.v1.ExecuteSqlRequest.QueryOptions\x12:\n\x0frequest_options\x18\x0b \x01(\x0b\x32!.google.spanner.v1.RequestOptions\x12\x45\n\x15\x64irected_read_options\x18\x0f \x01(\x0b\x32&.google.spanner.v1.DirectedReadOptions\x12\x1a\n\x12\x64\x61ta_boost_enabled\x18\x10 \x01(\x08\x12\x1b\n\x0elast_statement\x18\x11 \x01(\x08\x42\x03\xe0\x41\x01\x1aO\n\x0cQueryOptions\x12\x19\n\x11optimizer_version\x18\x01 \x01(\t\x12$\n\x1coptimizer_statistics_package\x18\x02 \x01(\t\x1aJ\n\x0fParamTypesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.spanner.v1.Type:\x02\x38\x01\"W\n\tQueryMode\x12\n\n\x06NORMAL\x10\x00\x12\x08\n\x04PLAN\x10\x01\x12\x0b\n\x07PROFILE\x10\x02\x12\x0e\n\nWITH_STATS\x10\x03\x12\x17\n\x13WITH_PLAN_AND_STATS\x10\x04\"\xbe\x04\n\x16\x45xecuteBatchDmlRequest\x12\x37\n\x07session\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\x12@\n\x0btransaction\x18\x02 \x01(\x0b\x32&.google.spanner.v1.TransactionSelectorB\x03\xe0\x41\x02\x12L\n\nstatements\x18\x03 \x03(\x0b\x32\x33.google.spanner.v1.ExecuteBatchDmlRequest.StatementB\x03\xe0\x41\x02\x12\x12\n\x05seqno\x18\x04 \x01(\x03\x42\x03\xe0\x41\x02\x12:\n\x0frequest_options\x18\x05 \x01(\x0b\x32!.google.spanner.v1.RequestOptions\x12\x1c\n\x0flast_statements\x18\x06 \x01(\x08\x42\x03\xe0\x41\x01\x1a\xec\x01\n\tStatement\x12\x10\n\x03sql\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\'\n\x06params\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12X\n\x0bparam_types\x18\x03 \x03(\x0b\x32\x43.google.spanner.v1.ExecuteBatchDmlRequest.Statement.ParamTypesEntry\x1aJ\n\x0fParamTypesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.spanner.v1.Type:\x02\x38\x01\"\xc3\x01\n\x17\x45xecuteBatchDmlResponse\x12\x31\n\x0bresult_sets\x18\x01 \x03(\x0b\x32\x1c.google.spanner.v1.ResultSet\x12\"\n\x06status\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status\x12Q\n\x0fprecommit_token\x18\x03 \x01(\x0b\x32\x33.google.spanner.v1.MultiplexedSessionPrecommitTokenB\x03\xe0\x41\x01\"H\n\x10PartitionOptions\x12\x1c\n\x14partition_size_bytes\x18\x01 \x01(\x03\x12\x16\n\x0emax_partitions\x18\x02 \x01(\x03\"\xa3\x03\n\x15PartitionQueryRequest\x12\x37\n\x07session\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\x12;\n\x0btransaction\x18\x02 \x01(\x0b\x32&.google.spanner.v1.TransactionSelector\x12\x10\n\x03sql\x18\x03 \x01(\tB\x03\xe0\x41\x02\x12\'\n\x06params\x18\x04 \x01(\x0b\x32\x17.google.protobuf.Struct\x12M\n\x0bparam_types\x18\x05 \x03(\x0b\x32\x38.google.spanner.v1.PartitionQueryRequest.ParamTypesEntry\x12>\n\x11partition_options\x18\x06 \x01(\x0b\x32#.google.spanner.v1.PartitionOptions\x1aJ\n\x0fParamTypesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.spanner.v1.Type:\x02\x38\x01\"\xb1\x02\n\x14PartitionReadRequest\x12\x37\n\x07session\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\x12;\n\x0btransaction\x18\x02 \x01(\x0b\x32&.google.spanner.v1.TransactionSelector\x12\x12\n\x05table\x18\x03 \x01(\tB\x03\xe0\x41\x02\x12\r\n\x05index\x18\x04 \x01(\t\x12\x0f\n\x07\x63olumns\x18\x05 \x03(\t\x12/\n\x07key_set\x18\x06 \x01(\x0b\x32\x19.google.spanner.v1.KeySetB\x03\xe0\x41\x02\x12>\n\x11partition_options\x18\t \x01(\x0b\x32#.google.spanner.v1.PartitionOptions\"$\n\tPartition\x12\x17\n\x0fpartition_token\x18\x01 \x01(\x0c\"z\n\x11PartitionResponse\x12\x30\n\npartitions\x18\x01 \x03(\x0b\x32\x1c.google.spanner.v1.Partition\x12\x33\n\x0btransaction\x18\x02 \x01(\x0b\x32\x1e.google.spanner.v1.Transaction\"\xf6\x05\n\x0bReadRequest\x12\x37\n\x07session\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\x12;\n\x0btransaction\x18\x02 \x01(\x0b\x32&.google.spanner.v1.TransactionSelector\x12\x12\n\x05table\x18\x03 \x01(\tB\x03\xe0\x41\x02\x12\r\n\x05index\x18\x04 \x01(\t\x12\x14\n\x07\x63olumns\x18\x05 \x03(\tB\x03\xe0\x41\x02\x12/\n\x07key_set\x18\x06 \x01(\x0b\x32\x19.google.spanner.v1.KeySetB\x03\xe0\x41\x02\x12\r\n\x05limit\x18\x08 \x01(\x03\x12\x14\n\x0cresume_token\x18\t \x01(\x0c\x12\x17\n\x0fpartition_token\x18\n \x01(\x0c\x12:\n\x0frequest_options\x18\x0b \x01(\x0b\x32!.google.spanner.v1.RequestOptions\x12\x45\n\x15\x64irected_read_options\x18\x0e \x01(\x0b\x32&.google.spanner.v1.DirectedReadOptions\x12\x1a\n\x12\x64\x61ta_boost_enabled\x18\x0f \x01(\x08\x12=\n\x08order_by\x18\x10 \x01(\x0e\x32&.google.spanner.v1.ReadRequest.OrderByB\x03\xe0\x41\x01\x12?\n\tlock_hint\x18\x11 \x01(\x0e\x32\'.google.spanner.v1.ReadRequest.LockHintB\x03\xe0\x41\x01\"T\n\x07OrderBy\x12\x18\n\x14ORDER_BY_UNSPECIFIED\x10\x00\x12\x18\n\x14ORDER_BY_PRIMARY_KEY\x10\x01\x12\x15\n\x11ORDER_BY_NO_ORDER\x10\x02\"T\n\x08LockHint\x12\x19\n\x15LOCK_HINT_UNSPECIFIED\x10\x00\x12\x14\n\x10LOCK_HINT_SHARED\x10\x01\x12\x17\n\x13LOCK_HINT_EXCLUSIVE\x10\x02\"\x83\x02\n\x17\x42\x65ginTransactionRequest\x12\x37\n\x07session\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\x12;\n\x07options\x18\x02 \x01(\x0b\x32%.google.spanner.v1.TransactionOptionsB\x03\xe0\x41\x02\x12:\n\x0frequest_options\x18\x03 \x01(\x0b\x32!.google.spanner.v1.RequestOptions\x12\x36\n\x0cmutation_key\x18\x04 \x01(\x0b\x32\x1b.google.spanner.v1.MutationB\x03\xe0\x41\x01\"\xd0\x03\n\rCommitRequest\x12\x37\n\x07session\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\x12\x18\n\x0etransaction_id\x18\x02 \x01(\x0cH\x00\x12G\n\x16single_use_transaction\x18\x03 \x01(\x0b\x32%.google.spanner.v1.TransactionOptionsH\x00\x12.\n\tmutations\x18\x04 \x03(\x0b\x32\x1b.google.spanner.v1.Mutation\x12\x1b\n\x13return_commit_stats\x18\x05 \x01(\x08\x12\x38\n\x10max_commit_delay\x18\x08 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x01\x12:\n\x0frequest_options\x18\x06 \x01(\x0b\x32!.google.spanner.v1.RequestOptions\x12Q\n\x0fprecommit_token\x18\t \x01(\x0b\x32\x33.google.spanner.v1.MultiplexedSessionPrecommitTokenB\x03\xe0\x41\x01\x42\r\n\x0btransaction\"g\n\x0fRollbackRequest\x12\x37\n\x07session\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\x12\x1b\n\x0etransaction_id\x18\x02 \x01(\x0c\x42\x03\xe0\x41\x02\"\xce\x02\n\x11\x42\x61tchWriteRequest\x12\x37\n\x07session\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\x12:\n\x0frequest_options\x18\x03 \x01(\x0b\x32!.google.spanner.v1.RequestOptions\x12P\n\x0fmutation_groups\x18\x04 \x03(\x0b\x32\x32.google.spanner.v1.BatchWriteRequest.MutationGroupB\x03\xe0\x41\x02\x12,\n\x1f\x65xclude_txn_from_change_streams\x18\x05 \x01(\x08\x42\x03\xe0\x41\x01\x1a\x44\n\rMutationGroup\x12\x33\n\tmutations\x18\x01 \x03(\x0b\x32\x1b.google.spanner.v1.MutationB\x03\xe0\x41\x02\"\x7f\n\x12\x42\x61tchWriteResponse\x12\x0f\n\x07indexes\x18\x01 \x03(\x05\x12\"\n\x06status\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status\x12\x34\n\x10\x63ommit_timestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp2\x8b\x18\n\x07Spanner\x12\xa6\x01\n\rCreateSession\x12\'.google.spanner.v1.CreateSessionRequest\x1a\x1a.google.spanner.v1.Session\"P\xda\x41\x08\x64\x61tabase\x82\xd3\xe4\x93\x02?\":/v1/{database=projects/*/instances/*/databases/*}/sessions:\x01*\x12\xe0\x01\n\x13\x42\x61tchCreateSessions\x12-.google.spanner.v1.BatchCreateSessionsRequest\x1a..google.spanner.v1.BatchCreateSessionsResponse\"j\xda\x41\x16\x64\x61tabase,session_count\x82\xd3\xe4\x93\x02K\"F/v1/{database=projects/*/instances/*/databases/*}/sessions:batchCreate:\x01*\x12\x97\x01\n\nGetSession\x12$.google.spanner.v1.GetSessionRequest\x1a\x1a.google.spanner.v1.Session\"G\xda\x41\x04name\x82\xd3\xe4\x93\x02:\x12\x38/v1/{name=projects/*/instances/*/databases/*/sessions/*}\x12\xae\x01\n\x0cListSessions\x12&.google.spanner.v1.ListSessionsRequest\x1a\'.google.spanner.v1.ListSessionsResponse\"M\xda\x41\x08\x64\x61tabase\x82\xd3\xe4\x93\x02<\x12:/v1/{database=projects/*/instances/*/databases/*}/sessions\x12\x99\x01\n\rDeleteSession\x12\'.google.spanner.v1.DeleteSessionRequest\x1a\x16.google.protobuf.Empty\"G\xda\x41\x04name\x82\xd3\xe4\x93\x02:*8/v1/{name=projects/*/instances/*/databases/*/sessions/*}\x12\xa3\x01\n\nExecuteSql\x12$.google.spanner.v1.ExecuteSqlRequest\x1a\x1c.google.spanner.v1.ResultSet\"Q\x82\xd3\xe4\x93\x02K\"F/v1/{session=projects/*/instances/*/databases/*/sessions/*}:executeSql:\x01*\x12\xbe\x01\n\x13\x45xecuteStreamingSql\x12$.google.spanner.v1.ExecuteSqlRequest\x1a#.google.spanner.v1.PartialResultSet\"Z\x82\xd3\xe4\x93\x02T\"O/v1/{session=projects/*/instances/*/databases/*/sessions/*}:executeStreamingSql:\x01*0\x01\x12\xc0\x01\n\x0f\x45xecuteBatchDml\x12).google.spanner.v1.ExecuteBatchDmlRequest\x1a*.google.spanner.v1.ExecuteBatchDmlResponse\"V\x82\xd3\xe4\x93\x02P\"K/v1/{session=projects/*/instances/*/databases/*/sessions/*}:executeBatchDml:\x01*\x12\x91\x01\n\x04Read\x12\x1e.google.spanner.v1.ReadRequest\x1a\x1c.google.spanner.v1.ResultSet\"K\x82\xd3\xe4\x93\x02\x45\"@/v1/{session=projects/*/instances/*/databases/*/sessions/*}:read:\x01*\x12\xac\x01\n\rStreamingRead\x12\x1e.google.spanner.v1.ReadRequest\x1a#.google.spanner.v1.PartialResultSet\"T\x82\xd3\xe4\x93\x02N\"I/v1/{session=projects/*/instances/*/databases/*/sessions/*}:streamingRead:\x01*0\x01\x12\xc9\x01\n\x10\x42\x65ginTransaction\x12*.google.spanner.v1.BeginTransactionRequest\x1a\x1e.google.spanner.v1.Transaction\"i\xda\x41\x0fsession,options\x82\xd3\xe4\x93\x02Q\"L/v1/{session=projects/*/instances/*/databases/*/sessions/*}:beginTransaction:\x01*\x12\xeb\x01\n\x06\x43ommit\x12 .google.spanner.v1.CommitRequest\x1a!.google.spanner.v1.CommitResponse\"\x9b\x01\xda\x41 session,transaction_id,mutations\xda\x41(session,single_use_transaction,mutations\x82\xd3\xe4\x93\x02G\"B/v1/{session=projects/*/instances/*/databases/*/sessions/*}:commit:\x01*\x12\xb0\x01\n\x08Rollback\x12\".google.spanner.v1.RollbackRequest\x1a\x16.google.protobuf.Empty\"h\xda\x41\x16session,transaction_id\x82\xd3\xe4\x93\x02I\"D/v1/{session=projects/*/instances/*/databases/*/sessions/*}:rollback:\x01*\x12\xb7\x01\n\x0ePartitionQuery\x12(.google.spanner.v1.PartitionQueryRequest\x1a$.google.spanner.v1.PartitionResponse\"U\x82\xd3\xe4\x93\x02O\"J/v1/{session=projects/*/instances/*/databases/*/sessions/*}:partitionQuery:\x01*\x12\xb4\x01\n\rPartitionRead\x12\'.google.spanner.v1.PartitionReadRequest\x1a$.google.spanner.v1.PartitionResponse\"T\x82\xd3\xe4\x93\x02N\"I/v1/{session=projects/*/instances/*/databases/*/sessions/*}:partitionRead:\x01*\x12\xc8\x01\n\nBatchWrite\x12$.google.spanner.v1.BatchWriteRequest\x1a%.google.spanner.v1.BatchWriteResponse\"k\xda\x41\x17session,mutation_groups\x82\xd3\xe4\x93\x02K\"F/v1/{session=projects/*/instances/*/databases/*/sessions/*}:batchWrite:\x01*0\x01\x1aw\xca\x41\x16spanner.googleapis.com\xd2\x41[https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/spanner.dataB\x91\x02\n\x15\x63om.google.spanner.v1B\x0cSpannerProtoP\x01Z5cloud.google.com/go/spanner/apiv1/spannerpb;spannerpb\xaa\x02\x17Google.Cloud.Spanner.V1\xca\x02\x17Google\\Cloud\\Spanner\\V1\xea\x02\x1aGoogle::Cloud::Spanner::V1\xea\x41_\n\x1fspanner.googleapis.com/Database\x12<projects/{project}/instances/{instance}/databases/{database}P\x00\x62\x06proto3"
25
+ descriptor_data = "\n\x1fgoogle/spanner/v1/spanner.proto\x12\x11google.spanner.v1\x1a\'google/spanner/v1/commit_response.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto\x1a\x1cgoogle/spanner/v1/keys.proto\x1a google/spanner/v1/location.proto\x1a google/spanner/v1/mutation.proto\x1a\"google/spanner/v1/result_set.proto\x1a#google/spanner/v1/transaction.proto\x1a\x1cgoogle/spanner/v1/type.proto\"\x83\x01\n\x14\x43reateSessionRequest\x12\x39\n\x08\x64\x61tabase\x18\x01 \x01(\tB\'\xe0\x41\x02\xfa\x41!\n\x1fspanner.googleapis.com/Database\x12\x30\n\x07session\x18\x02 \x01(\x0b\x32\x1a.google.spanner.v1.SessionB\x03\xe0\x41\x02\"\xa9\x01\n\x1a\x42\x61tchCreateSessionsRequest\x12\x39\n\x08\x64\x61tabase\x18\x01 \x01(\tB\'\xe0\x41\x02\xfa\x41!\n\x1fspanner.googleapis.com/Database\x12\x34\n\x10session_template\x18\x02 \x01(\x0b\x32\x1a.google.spanner.v1.Session\x12\x1a\n\rsession_count\x18\x03 \x01(\x05\x42\x03\xe0\x41\x02\"J\n\x1b\x42\x61tchCreateSessionsResponse\x12+\n\x07session\x18\x01 \x03(\x0b\x32\x1a.google.spanner.v1.Session\"\xb8\x03\n\x07Session\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x03\x12\x36\n\x06labels\x18\x02 \x03(\x0b\x32&.google.spanner.v1.Session.LabelsEntry\x12\x34\n\x0b\x63reate_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12\x42\n\x19\x61pproximate_last_use_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12\x14\n\x0c\x63reator_role\x18\x05 \x01(\t\x12\x18\n\x0bmultiplexed\x18\x06 \x01(\x08\x42\x03\xe0\x41\x01\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01:\x88\x01\xea\x41\x84\x01\n\x1espanner.googleapis.com/Session\x12Oprojects/{project}/instances/{instance}/databases/{database}/sessions/{session}*\x08sessions2\x07session\"I\n\x11GetSessionRequest\x12\x34\n\x04name\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\"\x87\x01\n\x13ListSessionsRequest\x12\x39\n\x08\x64\x61tabase\x18\x01 \x01(\tB\'\xe0\x41\x02\xfa\x41!\n\x1fspanner.googleapis.com/Database\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x04 \x01(\t\"]\n\x14ListSessionsResponse\x12,\n\x08sessions\x18\x01 \x03(\x0b\x32\x1a.google.spanner.v1.Session\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"L\n\x14\x44\x65leteSessionRequest\x12\x34\n\x04name\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\"\xdc\x01\n\x0eRequestOptions\x12<\n\x08priority\x18\x01 \x01(\x0e\x32*.google.spanner.v1.RequestOptions.Priority\x12\x13\n\x0brequest_tag\x18\x02 \x01(\t\x12\x17\n\x0ftransaction_tag\x18\x03 \x01(\t\"^\n\x08Priority\x12\x18\n\x14PRIORITY_UNSPECIFIED\x10\x00\x12\x10\n\x0cPRIORITY_LOW\x10\x01\x12\x13\n\x0fPRIORITY_MEDIUM\x10\x02\x12\x11\n\rPRIORITY_HIGH\x10\x03\"\xea\x04\n\x13\x44irectedReadOptions\x12R\n\x10include_replicas\x18\x01 \x01(\x0b\x32\x36.google.spanner.v1.DirectedReadOptions.IncludeReplicasH\x00\x12R\n\x10\x65xclude_replicas\x18\x02 \x01(\x0b\x32\x36.google.spanner.v1.DirectedReadOptions.ExcludeReplicasH\x00\x1a\xad\x01\n\x10ReplicaSelection\x12\x10\n\x08location\x18\x01 \x01(\t\x12J\n\x04type\x18\x02 \x01(\x0e\x32<.google.spanner.v1.DirectedReadOptions.ReplicaSelection.Type\";\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x0e\n\nREAD_WRITE\x10\x01\x12\r\n\tREAD_ONLY\x10\x02\x1a\x86\x01\n\x0fIncludeReplicas\x12S\n\x12replica_selections\x18\x01 \x03(\x0b\x32\x37.google.spanner.v1.DirectedReadOptions.ReplicaSelection\x12\x1e\n\x16\x61uto_failover_disabled\x18\x02 \x01(\x08\x1a\x66\n\x0f\x45xcludeReplicas\x12S\n\x12replica_selections\x18\x01 \x03(\x0b\x32\x37.google.spanner.v1.DirectedReadOptions.ReplicaSelectionB\n\n\x08replicas\"\xc8\x07\n\x11\x45xecuteSqlRequest\x12\x37\n\x07session\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\x12;\n\x0btransaction\x18\x02 \x01(\x0b\x32&.google.spanner.v1.TransactionSelector\x12\x10\n\x03sql\x18\x03 \x01(\tB\x03\xe0\x41\x02\x12\'\n\x06params\x18\x04 \x01(\x0b\x32\x17.google.protobuf.Struct\x12I\n\x0bparam_types\x18\x05 \x03(\x0b\x32\x34.google.spanner.v1.ExecuteSqlRequest.ParamTypesEntry\x12\x14\n\x0cresume_token\x18\x06 \x01(\x0c\x12\x42\n\nquery_mode\x18\x07 \x01(\x0e\x32..google.spanner.v1.ExecuteSqlRequest.QueryMode\x12\x17\n\x0fpartition_token\x18\x08 \x01(\x0c\x12\r\n\x05seqno\x18\t \x01(\x03\x12H\n\rquery_options\x18\n \x01(\x0b\x32\x31.google.spanner.v1.ExecuteSqlRequest.QueryOptions\x12:\n\x0frequest_options\x18\x0b \x01(\x0b\x32!.google.spanner.v1.RequestOptions\x12\x45\n\x15\x64irected_read_options\x18\x0f \x01(\x0b\x32&.google.spanner.v1.DirectedReadOptions\x12\x1a\n\x12\x64\x61ta_boost_enabled\x18\x10 \x01(\x08\x12\x1b\n\x0elast_statement\x18\x11 \x01(\x08\x42\x03\xe0\x41\x01\x12\x39\n\x0crouting_hint\x18\x12 \x01(\x0b\x32\x1e.google.spanner.v1.RoutingHintB\x03\xe0\x41\x01\x1aO\n\x0cQueryOptions\x12\x19\n\x11optimizer_version\x18\x01 \x01(\t\x12$\n\x1coptimizer_statistics_package\x18\x02 \x01(\t\x1aJ\n\x0fParamTypesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.spanner.v1.Type:\x02\x38\x01\"W\n\tQueryMode\x12\n\n\x06NORMAL\x10\x00\x12\x08\n\x04PLAN\x10\x01\x12\x0b\n\x07PROFILE\x10\x02\x12\x0e\n\nWITH_STATS\x10\x03\x12\x17\n\x13WITH_PLAN_AND_STATS\x10\x04\"\xbe\x04\n\x16\x45xecuteBatchDmlRequest\x12\x37\n\x07session\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\x12@\n\x0btransaction\x18\x02 \x01(\x0b\x32&.google.spanner.v1.TransactionSelectorB\x03\xe0\x41\x02\x12L\n\nstatements\x18\x03 \x03(\x0b\x32\x33.google.spanner.v1.ExecuteBatchDmlRequest.StatementB\x03\xe0\x41\x02\x12\x12\n\x05seqno\x18\x04 \x01(\x03\x42\x03\xe0\x41\x02\x12:\n\x0frequest_options\x18\x05 \x01(\x0b\x32!.google.spanner.v1.RequestOptions\x12\x1c\n\x0flast_statements\x18\x06 \x01(\x08\x42\x03\xe0\x41\x01\x1a\xec\x01\n\tStatement\x12\x10\n\x03sql\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\'\n\x06params\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12X\n\x0bparam_types\x18\x03 \x03(\x0b\x32\x43.google.spanner.v1.ExecuteBatchDmlRequest.Statement.ParamTypesEntry\x1aJ\n\x0fParamTypesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.spanner.v1.Type:\x02\x38\x01\"\xc3\x01\n\x17\x45xecuteBatchDmlResponse\x12\x31\n\x0bresult_sets\x18\x01 \x03(\x0b\x32\x1c.google.spanner.v1.ResultSet\x12\"\n\x06status\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status\x12Q\n\x0fprecommit_token\x18\x03 \x01(\x0b\x32\x33.google.spanner.v1.MultiplexedSessionPrecommitTokenB\x03\xe0\x41\x01\"H\n\x10PartitionOptions\x12\x1c\n\x14partition_size_bytes\x18\x01 \x01(\x03\x12\x16\n\x0emax_partitions\x18\x02 \x01(\x03\"\xa3\x03\n\x15PartitionQueryRequest\x12\x37\n\x07session\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\x12;\n\x0btransaction\x18\x02 \x01(\x0b\x32&.google.spanner.v1.TransactionSelector\x12\x10\n\x03sql\x18\x03 \x01(\tB\x03\xe0\x41\x02\x12\'\n\x06params\x18\x04 \x01(\x0b\x32\x17.google.protobuf.Struct\x12M\n\x0bparam_types\x18\x05 \x03(\x0b\x32\x38.google.spanner.v1.PartitionQueryRequest.ParamTypesEntry\x12>\n\x11partition_options\x18\x06 \x01(\x0b\x32#.google.spanner.v1.PartitionOptions\x1aJ\n\x0fParamTypesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.spanner.v1.Type:\x02\x38\x01\"\xb1\x02\n\x14PartitionReadRequest\x12\x37\n\x07session\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\x12;\n\x0btransaction\x18\x02 \x01(\x0b\x32&.google.spanner.v1.TransactionSelector\x12\x12\n\x05table\x18\x03 \x01(\tB\x03\xe0\x41\x02\x12\r\n\x05index\x18\x04 \x01(\t\x12\x0f\n\x07\x63olumns\x18\x05 \x03(\t\x12/\n\x07key_set\x18\x06 \x01(\x0b\x32\x19.google.spanner.v1.KeySetB\x03\xe0\x41\x02\x12>\n\x11partition_options\x18\t \x01(\x0b\x32#.google.spanner.v1.PartitionOptions\"$\n\tPartition\x12\x17\n\x0fpartition_token\x18\x01 \x01(\x0c\"z\n\x11PartitionResponse\x12\x30\n\npartitions\x18\x01 \x03(\x0b\x32\x1c.google.spanner.v1.Partition\x12\x33\n\x0btransaction\x18\x02 \x01(\x0b\x32\x1e.google.spanner.v1.Transaction\"\xb1\x06\n\x0bReadRequest\x12\x37\n\x07session\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\x12;\n\x0btransaction\x18\x02 \x01(\x0b\x32&.google.spanner.v1.TransactionSelector\x12\x12\n\x05table\x18\x03 \x01(\tB\x03\xe0\x41\x02\x12\r\n\x05index\x18\x04 \x01(\t\x12\x14\n\x07\x63olumns\x18\x05 \x03(\tB\x03\xe0\x41\x02\x12/\n\x07key_set\x18\x06 \x01(\x0b\x32\x19.google.spanner.v1.KeySetB\x03\xe0\x41\x02\x12\r\n\x05limit\x18\x08 \x01(\x03\x12\x14\n\x0cresume_token\x18\t \x01(\x0c\x12\x17\n\x0fpartition_token\x18\n \x01(\x0c\x12:\n\x0frequest_options\x18\x0b \x01(\x0b\x32!.google.spanner.v1.RequestOptions\x12\x45\n\x15\x64irected_read_options\x18\x0e \x01(\x0b\x32&.google.spanner.v1.DirectedReadOptions\x12\x1a\n\x12\x64\x61ta_boost_enabled\x18\x0f \x01(\x08\x12=\n\x08order_by\x18\x10 \x01(\x0e\x32&.google.spanner.v1.ReadRequest.OrderByB\x03\xe0\x41\x01\x12?\n\tlock_hint\x18\x11 \x01(\x0e\x32\'.google.spanner.v1.ReadRequest.LockHintB\x03\xe0\x41\x01\x12\x39\n\x0crouting_hint\x18\x12 \x01(\x0b\x32\x1e.google.spanner.v1.RoutingHintB\x03\xe0\x41\x01\"T\n\x07OrderBy\x12\x18\n\x14ORDER_BY_UNSPECIFIED\x10\x00\x12\x18\n\x14ORDER_BY_PRIMARY_KEY\x10\x01\x12\x15\n\x11ORDER_BY_NO_ORDER\x10\x02\"T\n\x08LockHint\x12\x19\n\x15LOCK_HINT_UNSPECIFIED\x10\x00\x12\x14\n\x10LOCK_HINT_SHARED\x10\x01\x12\x17\n\x13LOCK_HINT_EXCLUSIVE\x10\x02\"\x83\x02\n\x17\x42\x65ginTransactionRequest\x12\x37\n\x07session\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\x12;\n\x07options\x18\x02 \x01(\x0b\x32%.google.spanner.v1.TransactionOptionsB\x03\xe0\x41\x02\x12:\n\x0frequest_options\x18\x03 \x01(\x0b\x32!.google.spanner.v1.RequestOptions\x12\x36\n\x0cmutation_key\x18\x04 \x01(\x0b\x32\x1b.google.spanner.v1.MutationB\x03\xe0\x41\x01\"\xd0\x03\n\rCommitRequest\x12\x37\n\x07session\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\x12\x18\n\x0etransaction_id\x18\x02 \x01(\x0cH\x00\x12G\n\x16single_use_transaction\x18\x03 \x01(\x0b\x32%.google.spanner.v1.TransactionOptionsH\x00\x12.\n\tmutations\x18\x04 \x03(\x0b\x32\x1b.google.spanner.v1.Mutation\x12\x1b\n\x13return_commit_stats\x18\x05 \x01(\x08\x12\x38\n\x10max_commit_delay\x18\x08 \x01(\x0b\x32\x19.google.protobuf.DurationB\x03\xe0\x41\x01\x12:\n\x0frequest_options\x18\x06 \x01(\x0b\x32!.google.spanner.v1.RequestOptions\x12Q\n\x0fprecommit_token\x18\t \x01(\x0b\x32\x33.google.spanner.v1.MultiplexedSessionPrecommitTokenB\x03\xe0\x41\x01\x42\r\n\x0btransaction\"g\n\x0fRollbackRequest\x12\x37\n\x07session\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\x12\x1b\n\x0etransaction_id\x18\x02 \x01(\x0c\x42\x03\xe0\x41\x02\"\xce\x02\n\x11\x42\x61tchWriteRequest\x12\x37\n\x07session\x18\x01 \x01(\tB&\xe0\x41\x02\xfa\x41 \n\x1espanner.googleapis.com/Session\x12:\n\x0frequest_options\x18\x03 \x01(\x0b\x32!.google.spanner.v1.RequestOptions\x12P\n\x0fmutation_groups\x18\x04 \x03(\x0b\x32\x32.google.spanner.v1.BatchWriteRequest.MutationGroupB\x03\xe0\x41\x02\x12,\n\x1f\x65xclude_txn_from_change_streams\x18\x05 \x01(\x08\x42\x03\xe0\x41\x01\x1a\x44\n\rMutationGroup\x12\x33\n\tmutations\x18\x01 \x03(\x0b\x32\x1b.google.spanner.v1.MutationB\x03\xe0\x41\x02\"\x7f\n\x12\x42\x61tchWriteResponse\x12\x0f\n\x07indexes\x18\x01 \x03(\x05\x12\"\n\x06status\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status\x12\x34\n\x10\x63ommit_timestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp2\x8b\x18\n\x07Spanner\x12\xa6\x01\n\rCreateSession\x12\'.google.spanner.v1.CreateSessionRequest\x1a\x1a.google.spanner.v1.Session\"P\xda\x41\x08\x64\x61tabase\x82\xd3\xe4\x93\x02?\":/v1/{database=projects/*/instances/*/databases/*}/sessions:\x01*\x12\xe0\x01\n\x13\x42\x61tchCreateSessions\x12-.google.spanner.v1.BatchCreateSessionsRequest\x1a..google.spanner.v1.BatchCreateSessionsResponse\"j\xda\x41\x16\x64\x61tabase,session_count\x82\xd3\xe4\x93\x02K\"F/v1/{database=projects/*/instances/*/databases/*}/sessions:batchCreate:\x01*\x12\x97\x01\n\nGetSession\x12$.google.spanner.v1.GetSessionRequest\x1a\x1a.google.spanner.v1.Session\"G\xda\x41\x04name\x82\xd3\xe4\x93\x02:\x12\x38/v1/{name=projects/*/instances/*/databases/*/sessions/*}\x12\xae\x01\n\x0cListSessions\x12&.google.spanner.v1.ListSessionsRequest\x1a\'.google.spanner.v1.ListSessionsResponse\"M\xda\x41\x08\x64\x61tabase\x82\xd3\xe4\x93\x02<\x12:/v1/{database=projects/*/instances/*/databases/*}/sessions\x12\x99\x01\n\rDeleteSession\x12\'.google.spanner.v1.DeleteSessionRequest\x1a\x16.google.protobuf.Empty\"G\xda\x41\x04name\x82\xd3\xe4\x93\x02:*8/v1/{name=projects/*/instances/*/databases/*/sessions/*}\x12\xa3\x01\n\nExecuteSql\x12$.google.spanner.v1.ExecuteSqlRequest\x1a\x1c.google.spanner.v1.ResultSet\"Q\x82\xd3\xe4\x93\x02K\"F/v1/{session=projects/*/instances/*/databases/*/sessions/*}:executeSql:\x01*\x12\xbe\x01\n\x13\x45xecuteStreamingSql\x12$.google.spanner.v1.ExecuteSqlRequest\x1a#.google.spanner.v1.PartialResultSet\"Z\x82\xd3\xe4\x93\x02T\"O/v1/{session=projects/*/instances/*/databases/*/sessions/*}:executeStreamingSql:\x01*0\x01\x12\xc0\x01\n\x0f\x45xecuteBatchDml\x12).google.spanner.v1.ExecuteBatchDmlRequest\x1a*.google.spanner.v1.ExecuteBatchDmlResponse\"V\x82\xd3\xe4\x93\x02P\"K/v1/{session=projects/*/instances/*/databases/*/sessions/*}:executeBatchDml:\x01*\x12\x91\x01\n\x04Read\x12\x1e.google.spanner.v1.ReadRequest\x1a\x1c.google.spanner.v1.ResultSet\"K\x82\xd3\xe4\x93\x02\x45\"@/v1/{session=projects/*/instances/*/databases/*/sessions/*}:read:\x01*\x12\xac\x01\n\rStreamingRead\x12\x1e.google.spanner.v1.ReadRequest\x1a#.google.spanner.v1.PartialResultSet\"T\x82\xd3\xe4\x93\x02N\"I/v1/{session=projects/*/instances/*/databases/*/sessions/*}:streamingRead:\x01*0\x01\x12\xc9\x01\n\x10\x42\x65ginTransaction\x12*.google.spanner.v1.BeginTransactionRequest\x1a\x1e.google.spanner.v1.Transaction\"i\xda\x41\x0fsession,options\x82\xd3\xe4\x93\x02Q\"L/v1/{session=projects/*/instances/*/databases/*/sessions/*}:beginTransaction:\x01*\x12\xeb\x01\n\x06\x43ommit\x12 .google.spanner.v1.CommitRequest\x1a!.google.spanner.v1.CommitResponse\"\x9b\x01\xda\x41 session,transaction_id,mutations\xda\x41(session,single_use_transaction,mutations\x82\xd3\xe4\x93\x02G\"B/v1/{session=projects/*/instances/*/databases/*/sessions/*}:commit:\x01*\x12\xb0\x01\n\x08Rollback\x12\".google.spanner.v1.RollbackRequest\x1a\x16.google.protobuf.Empty\"h\xda\x41\x16session,transaction_id\x82\xd3\xe4\x93\x02I\"D/v1/{session=projects/*/instances/*/databases/*/sessions/*}:rollback:\x01*\x12\xb7\x01\n\x0ePartitionQuery\x12(.google.spanner.v1.PartitionQueryRequest\x1a$.google.spanner.v1.PartitionResponse\"U\x82\xd3\xe4\x93\x02O\"J/v1/{session=projects/*/instances/*/databases/*/sessions/*}:partitionQuery:\x01*\x12\xb4\x01\n\rPartitionRead\x12\'.google.spanner.v1.PartitionReadRequest\x1a$.google.spanner.v1.PartitionResponse\"T\x82\xd3\xe4\x93\x02N\"I/v1/{session=projects/*/instances/*/databases/*/sessions/*}:partitionRead:\x01*\x12\xc8\x01\n\nBatchWrite\x12$.google.spanner.v1.BatchWriteRequest\x1a%.google.spanner.v1.BatchWriteResponse\"k\xda\x41\x17session,mutation_groups\x82\xd3\xe4\x93\x02K\"F/v1/{session=projects/*/instances/*/databases/*/sessions/*}:batchWrite:\x01*0\x01\x1aw\xca\x41\x16spanner.googleapis.com\xd2\x41[https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/spanner.dataB\x91\x02\n\x15\x63om.google.spanner.v1B\x0cSpannerProtoP\x01Z5cloud.google.com/go/spanner/apiv1/spannerpb;spannerpb\xaa\x02\x17Google.Cloud.Spanner.V1\xca\x02\x17Google\\Cloud\\Spanner\\V1\xea\x02\x1aGoogle::Cloud::Spanner::V1\xea\x41_\n\x1fspanner.googleapis.com/Database\x12<projects/{project}/instances/{instance}/databases/{database}P\x00\x62\x06proto3"
25
26
 
26
27
  pool = Google::Protobuf::DescriptorPool.generated_pool
27
28
 
@@ -39,6 +40,7 @@ rescue TypeError
39
40
  ["google.protobuf.Timestamp", "google/protobuf/timestamp.proto"],
40
41
  ["google.spanner.v1.TransactionSelector", "google/spanner/v1/transaction.proto"],
41
42
  ["google.protobuf.Struct", "google/protobuf/struct.proto"],
43
+ ["google.spanner.v1.RoutingHint", "google/spanner/v1/location.proto"],
42
44
  ["google.spanner.v1.Type", "google/spanner/v1/type.proto"],
43
45
  ["google.spanner.v1.ResultSet", "google/spanner/v1/result_set.proto"],
44
46
  ["google.rpc.Status", "google/rpc/status.proto"],
@@ -0,0 +1,417 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2025 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+
20
+ module Google
21
+ module Cloud
22
+ module Spanner
23
+ module V1
24
+ # A `Range` represents a range of keys in a database. The keys themselves
25
+ # are encoded in "sortable string format", also known as ssformat. Consult
26
+ # Spanner's open source client libraries for details on the encoding.
27
+ #
28
+ # Each range represents a contiguous range of rows, possibly from multiple
29
+ # tables/indexes. Each range is associated with a single paxos group (known as
30
+ # a "group" throughout this API), a split (which names the exact range within
31
+ # the group), and a generation that can be used to determine whether a given
32
+ # `Range` represents a newer or older location for the key range.
33
+ # @!attribute [rw] start_key
34
+ # @return [::String]
35
+ # The start key of the range, inclusive. Encoded in "sortable string format"
36
+ # (ssformat).
37
+ # @!attribute [rw] limit_key
38
+ # @return [::String]
39
+ # The limit key of the range, exclusive. Encoded in "sortable string format"
40
+ # (ssformat).
41
+ # @!attribute [rw] group_uid
42
+ # @return [::Integer]
43
+ # The UID of the paxos group where this range is stored. UIDs are unique
44
+ # within the database. References `Group.group_uid`.
45
+ # @!attribute [rw] split_id
46
+ # @return [::Integer]
47
+ # A group can store multiple ranges of keys. Each key range is named by an
48
+ # ID (the split ID). Within a group, split IDs are unique. The `split_id`
49
+ # names the exact split in `group_uid` where this range is stored.
50
+ # @!attribute [rw] generation
51
+ # @return [::String]
52
+ # `generation` indicates the freshness of the range information contained
53
+ # in this proto. Generations can be compared lexicographically; if generation
54
+ # A is greater than generation B, then the `Range` corresponding to A is
55
+ # newer than the `Range` corresponding to B, and should be used
56
+ # preferentially.
57
+ class Range
58
+ include ::Google::Protobuf::MessageExts
59
+ extend ::Google::Protobuf::MessageExts::ClassMethods
60
+ end
61
+
62
+ # A `Tablet` represents a single replica of a `Group`. A tablet is served by a
63
+ # single server at a time, and can move between servers due to server death or
64
+ # simply load balancing.
65
+ # @!attribute [rw] tablet_uid
66
+ # @return [::Integer]
67
+ # The UID of the tablet, unique within the database. Matches the
68
+ # `tablet_uids` and `leader_tablet_uid` fields in `Group`.
69
+ # @!attribute [rw] server_address
70
+ # @return [::String]
71
+ # The address of the server that is serving this tablet -- either an IP
72
+ # address or DNS hostname and a port number.
73
+ # @!attribute [rw] location
74
+ # @return [::String]
75
+ # Where this tablet is located. This is the name of a Google Cloud region,
76
+ # such as "us-central1".
77
+ # @!attribute [rw] role
78
+ # @return [::Google::Cloud::Spanner::V1::Tablet::Role]
79
+ # The role of the tablet.
80
+ # @!attribute [rw] incarnation
81
+ # @return [::String]
82
+ # `incarnation` indicates the freshness of the tablet information contained
83
+ # in this proto. Incarnations can be compared lexicographically; if
84
+ # incarnation A is greater than incarnation B, then the `Tablet`
85
+ # corresponding to A is newer than the `Tablet` corresponding to B, and
86
+ # should be used preferentially.
87
+ # @!attribute [rw] distance
88
+ # @return [::Integer]
89
+ # Distances help the client pick the closest tablet out of the list of
90
+ # tablets for a given request. Tablets with lower distances should generally
91
+ # be preferred. Tablets with the same distance are approximately equally
92
+ # close; the client can choose arbitrarily.
93
+ #
94
+ # Distances do not correspond precisely to expected latency, geographical
95
+ # distance, or anything else. Distances should be compared only between
96
+ # tablets of the same group; they are not meaningful between different
97
+ # groups.
98
+ #
99
+ # A value of zero indicates that the tablet may be in the same zone as
100
+ # the client, and have minimum network latency. A value less than or equal to
101
+ # five indicates that the tablet is thought to be in the same region as the
102
+ # client, and may have a few milliseconds of network latency. Values greater
103
+ # than five are most likely in a different region, with non-trivial network
104
+ # latency.
105
+ #
106
+ # Clients should use the following algorithm:
107
+ # * If the request is using a directed read, eliminate any tablets that
108
+ # do not match the directed read's target zone and/or replica type.
109
+ # * (Read-write transactions only) Choose leader tablet if it has an
110
+ # distance <=5.
111
+ # * Group and sort tablets by distance. Choose a random
112
+ # tablet with the lowest distance. If the request
113
+ # is not a directed read, only consider replicas with distances <=5.
114
+ # * Send the request to the fallback endpoint.
115
+ #
116
+ # The tablet picked by this algorithm may be skipped, either because it is
117
+ # marked as `skip` by the server or because the corresponding server is
118
+ # unreachable, flow controlled, etc. Skipped tablets should be added to the
119
+ # `skipped_tablet_uid` field in `RoutingHint`; the algorithm above should
120
+ # then be re-run without including the skipped tablet(s) to pick the next
121
+ # best tablet.
122
+ # @!attribute [rw] skip
123
+ # @return [::Boolean]
124
+ # If true, the tablet should not be chosen by the client. Typically, this
125
+ # signals that the tablet is unhealthy in some way. Tablets with `skip`
126
+ # set to true should be reported back to the server in
127
+ # `RoutingHint.skipped_tablet_uid`; this cues the server to send updated
128
+ # information for this tablet should it become usable again.
129
+ class Tablet
130
+ include ::Google::Protobuf::MessageExts
131
+ extend ::Google::Protobuf::MessageExts::ClassMethods
132
+
133
+ # Indicates the role of the tablet.
134
+ module Role
135
+ # Not specified.
136
+ ROLE_UNSPECIFIED = 0
137
+
138
+ # The tablet can perform reads and (if elected leader) writes.
139
+ READ_WRITE = 1
140
+
141
+ # The tablet can only perform reads.
142
+ READ_ONLY = 2
143
+ end
144
+ end
145
+
146
+ # A `Group` represents a paxos group in a database. A group is a set of
147
+ # tablets that are replicated across multiple servers. Groups may have a leader
148
+ # tablet. Groups store one (or sometimes more) ranges of keys.
149
+ # @!attribute [rw] group_uid
150
+ # @return [::Integer]
151
+ # The UID of the paxos group, unique within the database. Matches the
152
+ # `group_uid` field in `Range`.
153
+ # @!attribute [rw] tablets
154
+ # @return [::Array<::Google::Cloud::Spanner::V1::Tablet>]
155
+ # A list of tablets that are part of the group. Note that this list may not
156
+ # be exhaustive; it will only include tablets the server considers useful
157
+ # to the client. The returned list is ordered ascending by distance.
158
+ #
159
+ # Tablet UIDs reference `Tablet.tablet_uid`.
160
+ # @!attribute [rw] leader_index
161
+ # @return [::Integer]
162
+ # The last known leader tablet of the group as an index into `tablets`. May
163
+ # be negative if the group has no known leader.
164
+ # @!attribute [rw] generation
165
+ # @return [::String]
166
+ # `generation` indicates the freshness of the group information (including
167
+ # leader information) contained in this proto. Generations can be compared
168
+ # lexicographically; if generation A is greater than generation B, then the
169
+ # `Group` corresponding to A is newer than the `Group` corresponding to B,
170
+ # and should be used preferentially.
171
+ class Group
172
+ include ::Google::Protobuf::MessageExts
173
+ extend ::Google::Protobuf::MessageExts::ClassMethods
174
+ end
175
+
176
+ # A `KeyRecipe` provides the metadata required to translate reads, mutations,
177
+ # and queries into a byte array in "sortable string format" (ssformat)that can
178
+ # be used with `Range`s to route requests. Note that the client *must* tolerate
179
+ # `KeyRecipe`s that appear to be invalid, since the `KeyRecipe` format may
180
+ # change over time. Requests with invalid `KeyRecipe`s should be routed to a
181
+ # default server.
182
+ # @!attribute [rw] table_name
183
+ # @return [::String]
184
+ # A table name, matching the name from the database schema.
185
+ #
186
+ # Note: The following fields are mutually exclusive: `table_name`, `index_name`, `operation_uid`. If a field in that set is populated, all other fields in the set will automatically be cleared.
187
+ # @!attribute [rw] index_name
188
+ # @return [::String]
189
+ # An index name, matching the name from the database schema.
190
+ #
191
+ # Note: The following fields are mutually exclusive: `index_name`, `table_name`, `operation_uid`. If a field in that set is populated, all other fields in the set will automatically be cleared.
192
+ # @!attribute [rw] operation_uid
193
+ # @return [::Integer]
194
+ # The UID of a query, matching the UID from `RoutingHint`.
195
+ #
196
+ # Note: The following fields are mutually exclusive: `operation_uid`, `table_name`, `index_name`. If a field in that set is populated, all other fields in the set will automatically be cleared.
197
+ # @!attribute [rw] part
198
+ # @return [::Array<::Google::Cloud::Spanner::V1::KeyRecipe::Part>]
199
+ # Parts are in the order they should appear in the encoded key.
200
+ class KeyRecipe
201
+ include ::Google::Protobuf::MessageExts
202
+ extend ::Google::Protobuf::MessageExts::ClassMethods
203
+
204
+ # An ssformat key is composed of a sequence of tag numbers and key column
205
+ # values. `Part` represents a single tag or key column value.
206
+ # @!attribute [rw] tag
207
+ # @return [::Integer]
208
+ # If non-zero, `tag` is the only field present in this `Part`. The part
209
+ # is encoded by appending `tag` to the ssformat key.
210
+ # @!attribute [rw] order
211
+ # @return [::Google::Cloud::Spanner::V1::KeyRecipe::Part::Order]
212
+ # Whether the key column is sorted ascending or descending. Only present
213
+ # if `tag` is zero.
214
+ # @!attribute [rw] null_order
215
+ # @return [::Google::Cloud::Spanner::V1::KeyRecipe::Part::NullOrder]
216
+ # How NULLs are represented in the encoded key part. Only present if `tag`
217
+ # is zero.
218
+ # @!attribute [rw] type
219
+ # @return [::Google::Cloud::Spanner::V1::Type]
220
+ # The type of the key part. Only present if `tag` is zero.
221
+ # @!attribute [rw] identifier
222
+ # @return [::String]
223
+ # `identifier` is the name of the column or query parameter.
224
+ #
225
+ # Note: The following fields are mutually exclusive: `identifier`, `value`, `random`. If a field in that set is populated, all other fields in the set will automatically be cleared.
226
+ # @!attribute [rw] value
227
+ # @return [::Google::Protobuf::Value]
228
+ # The constant value of the key part.
229
+ # It is present when query uses a constant as a part of the key.
230
+ #
231
+ # Note: The following fields are mutually exclusive: `value`, `identifier`, `random`. If a field in that set is populated, all other fields in the set will automatically be cleared.
232
+ # @!attribute [rw] random
233
+ # @return [::Boolean]
234
+ # If true, the client is responsible to fill in the value randomly.
235
+ # It's relevant only for the INT64 type.
236
+ #
237
+ # Note: The following fields are mutually exclusive: `random`, `identifier`, `value`. If a field in that set is populated, all other fields in the set will automatically be cleared.
238
+ # @!attribute [rw] struct_identifiers
239
+ # @return [::Array<::Integer>]
240
+ # It is a repeated field to support fetching key columns from nested
241
+ # structs, such as `STRUCT` query parameters.
242
+ class Part
243
+ include ::Google::Protobuf::MessageExts
244
+ extend ::Google::Protobuf::MessageExts::ClassMethods
245
+
246
+ # The remaining fields encode column values.
247
+ module Order
248
+ # Default value, equivalent to `ASCENDING`.
249
+ ORDER_UNSPECIFIED = 0
250
+
251
+ # The key is ascending - corresponds to `ASC` in the schema definition.
252
+ ASCENDING = 1
253
+
254
+ # The key is descending - corresponds to `DESC` in the schema definition.
255
+ DESCENDING = 2
256
+ end
257
+
258
+ # The null order of the key column. This dictates where NULL values sort
259
+ # in the sorted order. Note that columns which are `NOT NULL` can have a
260
+ # special encoding.
261
+ module NullOrder
262
+ # Default value. This value is unused.
263
+ NULL_ORDER_UNSPECIFIED = 0
264
+
265
+ # NULL values sort before any non-NULL values.
266
+ NULLS_FIRST = 1
267
+
268
+ # NULL values sort after any non-NULL values.
269
+ NULLS_LAST = 2
270
+
271
+ # The column does not support NULL values.
272
+ NOT_NULL = 3
273
+ end
274
+ end
275
+ end
276
+
277
+ # A `RecipeList` contains a list of `KeyRecipe`s, which share the same
278
+ # schema generation.
279
+ # @!attribute [rw] schema_generation
280
+ # @return [::String]
281
+ # The schema generation of the recipes. To be sent to the server in
282
+ # `RoutingHint.schema_generation` whenever one of the recipes is used.
283
+ # `schema_generation` values are comparable with each other; if generation A
284
+ # compares greater than generation B, then A is a more recent schema than B.
285
+ # Clients should in general aim to cache only the latest schema generation,
286
+ # and discard more stale recipes.
287
+ # @!attribute [rw] recipe
288
+ # @return [::Array<::Google::Cloud::Spanner::V1::KeyRecipe>]
289
+ # A list of recipes to be cached.
290
+ class RecipeList
291
+ include ::Google::Protobuf::MessageExts
292
+ extend ::Google::Protobuf::MessageExts::ClassMethods
293
+ end
294
+
295
+ # A `CacheUpdate` expresses a set of changes the client should incorporate into
296
+ # its location cache. These changes may or may not be newer than what the
297
+ # client has in its cache, and should be discarded if necessary. `CacheUpdate`s
298
+ # can be obtained in response to requests that included a `RoutingHint`
299
+ # field, but may also be obtained by explicit location-fetching RPCs which may
300
+ # be added in the future.
301
+ # @!attribute [rw] database_id
302
+ # @return [::Integer]
303
+ # An internal ID for the database. Database names can be reused if a database
304
+ # is deleted and re-created. Each time the database is re-created, it will
305
+ # get a new database ID, which will never be re-used for any other database.
306
+ # @!attribute [rw] range
307
+ # @return [::Array<::Google::Cloud::Spanner::V1::Range>]
308
+ # A list of ranges to be cached.
309
+ # @!attribute [rw] group
310
+ # @return [::Array<::Google::Cloud::Spanner::V1::Group>]
311
+ # A list of groups to be cached.
312
+ # @!attribute [rw] key_recipes
313
+ # @return [::Google::Cloud::Spanner::V1::RecipeList]
314
+ # A list of recipes to be cached.
315
+ class CacheUpdate
316
+ include ::Google::Protobuf::MessageExts
317
+ extend ::Google::Protobuf::MessageExts::ClassMethods
318
+ end
319
+
320
+ # `RoutingHint` can be optionally added to location-aware Spanner
321
+ # requests. It gives the server hints that can be used to route the request to
322
+ # an appropriate server, potentially significantly decreasing latency and
323
+ # improving throughput. To achieve improved performance, most fields must be
324
+ # filled in with accurate values.
325
+ #
326
+ # The presence of a valid `RoutingHint` tells the server that the client
327
+ # is location-aware.
328
+ #
329
+ # `RoutingHint` does not change the semantics of the request; it is
330
+ # purely a performance hint; the request will perform the same actions on the
331
+ # database's data as if `RoutingHint` were not present. However, if
332
+ # the `RoutingHint` is incomplete or incorrect, the response may include
333
+ # a `CacheUpdate` the client can use to correct its location cache.
334
+ # @!attribute [rw] operation_uid
335
+ # @return [::Integer]
336
+ # A session-scoped unique ID for the operation, computed client-side.
337
+ # Requests with the same `operation_uid` should have a shared 'shape',
338
+ # meaning that some fields are expected to be the same, such as the SQL
339
+ # query, the target table/columns (for reads) etc. Requests with the same
340
+ # `operation_uid` are meant to differ only in fields like keys/key
341
+ # ranges/query parameters, transaction IDs, etc.
342
+ #
343
+ # `operation_uid` must be non-zero for `RoutingHint` to be valid.
344
+ # @!attribute [rw] database_id
345
+ # @return [::Integer]
346
+ # The database ID of the database being accessed, see
347
+ # `CacheUpdate.database_id`. Should match the cache entries that were used
348
+ # to generate the rest of the fields in this `RoutingHint`.
349
+ # @!attribute [rw] schema_generation
350
+ # @return [::String]
351
+ # The schema generation of the recipe that was used to generate `key` and
352
+ # `limit_key`. See also `RecipeList.schema_generation`.
353
+ # @!attribute [rw] key
354
+ # @return [::String]
355
+ # The key / key range that this request accesses. For operations that
356
+ # access a single key, `key` should be set and `limit_key` should be empty.
357
+ # For operations that access a key range, `key` and `limit_key` should both
358
+ # be set, to the inclusive start and exclusive end of the range respectively.
359
+ #
360
+ # The keys are encoded in "sortable string format" (ssformat), using a
361
+ # `KeyRecipe` that is appropriate for the request. See `KeyRecipe` for more
362
+ # details.
363
+ # @!attribute [rw] limit_key
364
+ # @return [::String]
365
+ # If this request targets a key range, this is the exclusive end of the
366
+ # range. See `key` for more details.
367
+ # @!attribute [rw] group_uid
368
+ # @return [::Integer]
369
+ # The group UID of the group that the client believes serves the range
370
+ # defined by `key` and `limit_key`. See `Range.group_uid` for more details.
371
+ # @!attribute [rw] split_id
372
+ # @return [::Integer]
373
+ # The split ID of the split that the client believes contains the range
374
+ # defined by `key` and `limit_key`. See `Range.split_id` for more details.
375
+ # @!attribute [rw] tablet_uid
376
+ # @return [::Integer]
377
+ # The tablet UID of the tablet from group `group_uid` that the client
378
+ # believes is best to serve this request. See `Group.local_tablet_uids` and
379
+ # `Group.leader_tablet_uid`.
380
+ # @!attribute [rw] skipped_tablet_uid
381
+ # @return [::Array<::Google::Cloud::Spanner::V1::RoutingHint::SkippedTablet>]
382
+ # If the client had multiple options for tablet selection, and some of its
383
+ # first choices were unhealthy (e.g., the server is unreachable, or
384
+ # `Tablet.skip` is true), this field will contain the tablet UIDs of those
385
+ # tablets, with their incarnations. The server may include a `CacheUpdate`
386
+ # with new locations for those tablets.
387
+ # @!attribute [rw] client_location
388
+ # @return [::String]
389
+ # If present, the client's current location. This should be the name of a
390
+ # Google Cloud zone or region, such as "us-central1".
391
+ #
392
+ # If absent, the client's location will be assumed to be the same as the
393
+ # location of the server the client ends up connected to.
394
+ #
395
+ # Locations are primarily valuable for clients that connect from regions
396
+ # other than the ones that contain the Spanner database.
397
+ class RoutingHint
398
+ include ::Google::Protobuf::MessageExts
399
+ extend ::Google::Protobuf::MessageExts::ClassMethods
400
+
401
+ # A tablet that was skipped by the client. See `Tablet.tablet_uid` and
402
+ # `Tablet.incarnation`.
403
+ # @!attribute [rw] tablet_uid
404
+ # @return [::Integer]
405
+ # The tablet UID of the tablet that was skipped. See `Tablet.tablet_uid`.
406
+ # @!attribute [rw] incarnation
407
+ # @return [::String]
408
+ # The incarnation of the tablet that was skipped. See `Tablet.incarnation`.
409
+ class SkippedTablet
410
+ include ::Google::Protobuf::MessageExts
411
+ extend ::Google::Protobuf::MessageExts::ClassMethods
412
+ end
413
+ end
414
+ end
415
+ end
416
+ end
417
+ end
@@ -29,13 +29,13 @@ module Google
29
29
  # Insert new rows in a table. If any of the rows already exist,
30
30
  # the write or transaction fails with error `ALREADY_EXISTS`.
31
31
  #
32
- # Note: The following fields are mutually exclusive: `insert`, `update`, `insert_or_update`, `replace`, `delete`. If a field in that set is populated, all other fields in the set will automatically be cleared.
32
+ # Note: The following fields are mutually exclusive: `insert`, `update`, `insert_or_update`, `replace`, `delete`, `send`, `ack`. If a field in that set is populated, all other fields in the set will automatically be cleared.
33
33
  # @!attribute [rw] update
34
34
  # @return [::Google::Cloud::Spanner::V1::Mutation::Write]
35
35
  # Update existing rows in a table. If any of the rows does not
36
36
  # already exist, the transaction fails with error `NOT_FOUND`.
37
37
  #
38
- # Note: The following fields are mutually exclusive: `update`, `insert`, `insert_or_update`, `replace`, `delete`. If a field in that set is populated, all other fields in the set will automatically be cleared.
38
+ # Note: The following fields are mutually exclusive: `update`, `insert`, `insert_or_update`, `replace`, `delete`, `send`, `ack`. If a field in that set is populated, all other fields in the set will automatically be cleared.
39
39
  # @!attribute [rw] insert_or_update
40
40
  # @return [::Google::Cloud::Spanner::V1::Mutation::Write]
41
41
  # Like {::Google::Cloud::Spanner::V1::Mutation#insert insert}, except that if the row
@@ -48,7 +48,7 @@ module Google
48
48
  # columns in the table must be given a value. This holds true even when the
49
49
  # row already exists and will therefore actually be updated.
50
50
  #
51
- # Note: The following fields are mutually exclusive: `insert_or_update`, `insert`, `update`, `replace`, `delete`. If a field in that set is populated, all other fields in the set will automatically be cleared.
51
+ # Note: The following fields are mutually exclusive: `insert_or_update`, `insert`, `update`, `replace`, `delete`, `send`, `ack`. If a field in that set is populated, all other fields in the set will automatically be cleared.
52
52
  # @!attribute [rw] replace
53
53
  # @return [::Google::Cloud::Spanner::V1::Mutation::Write]
54
54
  # Like {::Google::Cloud::Spanner::V1::Mutation#insert insert}, except that if the row
@@ -62,13 +62,23 @@ module Google
62
62
  # also deletes the child rows. Otherwise, you must delete the
63
63
  # child rows before you replace the parent row.
64
64
  #
65
- # Note: The following fields are mutually exclusive: `replace`, `insert`, `update`, `insert_or_update`, `delete`. If a field in that set is populated, all other fields in the set will automatically be cleared.
65
+ # Note: The following fields are mutually exclusive: `replace`, `insert`, `update`, `insert_or_update`, `delete`, `send`, `ack`. If a field in that set is populated, all other fields in the set will automatically be cleared.
66
66
  # @!attribute [rw] delete
67
67
  # @return [::Google::Cloud::Spanner::V1::Mutation::Delete]
68
68
  # Delete rows from a table. Succeeds whether or not the named
69
69
  # rows were present.
70
70
  #
71
- # Note: The following fields are mutually exclusive: `delete`, `insert`, `update`, `insert_or_update`, `replace`. If a field in that set is populated, all other fields in the set will automatically be cleared.
71
+ # Note: The following fields are mutually exclusive: `delete`, `insert`, `update`, `insert_or_update`, `replace`, `send`, `ack`. If a field in that set is populated, all other fields in the set will automatically be cleared.
72
+ # @!attribute [rw] send
73
+ # @return [::Google::Cloud::Spanner::V1::Mutation::Send]
74
+ # Send a message to a queue.
75
+ #
76
+ # Note: The following fields are mutually exclusive: `send`, `insert`, `update`, `insert_or_update`, `replace`, `delete`, `ack`. If a field in that set is populated, all other fields in the set will automatically be cleared.
77
+ # @!attribute [rw] ack
78
+ # @return [::Google::Cloud::Spanner::V1::Mutation::Ack]
79
+ # Ack a message from a queue.
80
+ #
81
+ # Note: The following fields are mutually exclusive: `ack`, `insert`, `update`, `insert_or_update`, `replace`, `delete`, `send`. If a field in that set is populated, all other fields in the set will automatically be cleared.
72
82
  class Mutation
73
83
  include ::Google::Protobuf::MessageExts
74
84
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -121,6 +131,46 @@ module Google
121
131
  include ::Google::Protobuf::MessageExts
122
132
  extend ::Google::Protobuf::MessageExts::ClassMethods
123
133
  end
134
+
135
+ # Arguments to {::Google::Cloud::Spanner::V1::Mutation#send send} operations.
136
+ # @!attribute [rw] queue
137
+ # @return [::String]
138
+ # Required. The queue to which the message will be sent.
139
+ # @!attribute [rw] key
140
+ # @return [::Google::Protobuf::ListValue]
141
+ # Required. The primary key of the message to be sent.
142
+ # @!attribute [rw] deliver_time
143
+ # @return [::Google::Protobuf::Timestamp]
144
+ # The time at which Spanner will begin attempting to deliver the message.
145
+ # If `deliver_time` is not set, Spanner will deliver the message
146
+ # immediately. If `deliver_time` is in the past, Spanner will replace it
147
+ # with a value closer to the current time.
148
+ # @!attribute [rw] payload
149
+ # @return [::Google::Protobuf::Value]
150
+ # The payload of the message.
151
+ class Send
152
+ include ::Google::Protobuf::MessageExts
153
+ extend ::Google::Protobuf::MessageExts::ClassMethods
154
+ end
155
+
156
+ # Arguments to {::Google::Cloud::Spanner::V1::Mutation#ack ack} operations.
157
+ # @!attribute [rw] queue
158
+ # @return [::String]
159
+ # Required. The queue where the message to be acked is stored.
160
+ # @!attribute [rw] key
161
+ # @return [::Google::Protobuf::ListValue]
162
+ # Required. The primary key of the message to be acked.
163
+ # @!attribute [rw] ignore_not_found
164
+ # @return [::Boolean]
165
+ # By default, an attempt to ack a message that does not exist will fail
166
+ # with a `NOT_FOUND` error. With `ignore_not_found` set to true, the ack
167
+ # will succeed even if the message does not exist. This is useful for
168
+ # unconditionally acking a message, even if it is missing or has already
169
+ # been acked.
170
+ class Ack
171
+ include ::Google::Protobuf::MessageExts
172
+ extend ::Google::Protobuf::MessageExts::ClassMethods
173
+ end
124
174
  end
125
175
  end
126
176
  end
@@ -135,12 +135,41 @@ module Google
135
135
  end
136
136
  end
137
137
 
138
+ # Output of query advisor analysis.
139
+ # @!attribute [rw] index_advice
140
+ # @return [::Array<::Google::Cloud::Spanner::V1::QueryAdvisorResult::IndexAdvice>]
141
+ # Optional. Index Recommendation for a query. This is an optional field and
142
+ # the recommendation will only be available when the recommendation
143
+ # guarantees significant improvement in query performance.
144
+ class QueryAdvisorResult
145
+ include ::Google::Protobuf::MessageExts
146
+ extend ::Google::Protobuf::MessageExts::ClassMethods
147
+
148
+ # Recommendation to add new indexes to run queries more efficiently.
149
+ # @!attribute [rw] ddl
150
+ # @return [::Array<::String>]
151
+ # Optional. DDL statements to add new indexes that will improve the query.
152
+ # @!attribute [rw] improvement_factor
153
+ # @return [::Float]
154
+ # Optional. Estimated latency improvement factor. For example if the query
155
+ # currently takes 500 ms to run and the estimated latency with new indexes
156
+ # is 100 ms this field will be 5.
157
+ class IndexAdvice
158
+ include ::Google::Protobuf::MessageExts
159
+ extend ::Google::Protobuf::MessageExts::ClassMethods
160
+ end
161
+ end
162
+
138
163
  # Contains an ordered list of nodes appearing in the query plan.
139
164
  # @!attribute [rw] plan_nodes
140
165
  # @return [::Array<::Google::Cloud::Spanner::V1::PlanNode>]
141
166
  # The nodes in the query plan. Plan nodes are returned in pre-order starting
142
167
  # with the plan root. Each {::Google::Cloud::Spanner::V1::PlanNode PlanNode}'s `id`
143
168
  # corresponds to its index in `plan_nodes`.
169
+ # @!attribute [rw] query_advice
170
+ # @return [::Google::Cloud::Spanner::V1::QueryAdvisorResult]
171
+ # Optional. The advise/recommendations for a query. Currently this field will
172
+ # be serving index recommendations for a query.
144
173
  class QueryPlan
145
174
  include ::Google::Protobuf::MessageExts
146
175
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -173,6 +173,14 @@ module Google
173
173
  # Optional. Indicates whether this is the last `PartialResultSet` in the
174
174
  # stream. The server might optionally set this field. Clients shouldn't rely
175
175
  # on this field being set in all cases.
176
+ # @!attribute [rw] cache_update
177
+ # @return [::Google::Cloud::Spanner::V1::CacheUpdate]
178
+ # Optional. A cache update expresses a set of changes the client should
179
+ # incorporate into its location cache. The client should discard the changes
180
+ # if they are older than the data it already has. This data can be obtained
181
+ # in response to requests that included a `RoutingHint` field, but may also
182
+ # be obtained by explicit location-fetching RPCs which may be added in the
183
+ # future.
176
184
  class PartialResultSet
177
185
  include ::Google::Protobuf::MessageExts
178
186
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -43,10 +43,10 @@ module Google
43
43
  # Parameters to apply to each created session.
44
44
  # @!attribute [rw] session_count
45
45
  # @return [::Integer]
46
- # Required. The number of sessions to be created in this batch call.
47
- # The API can return fewer than the requested number of sessions. If a
48
- # specific number of sessions are desired, the client can make additional
49
- # calls to `BatchCreateSessions` (adjusting
46
+ # Required. The number of sessions to be created in this batch call. At least
47
+ # one session is created. The API can return fewer than the requested number
48
+ # of sessions. If a specific number of sessions are desired, the client can
49
+ # make additional calls to `BatchCreateSessions` (adjusting
50
50
  # {::Google::Cloud::Spanner::V1::BatchCreateSessionsRequest#session_count session_count}
51
51
  # as necessary).
52
52
  class BatchCreateSessionsRequest
@@ -92,8 +92,8 @@ module Google
92
92
  # @!attribute [rw] multiplexed
93
93
  # @return [::Boolean]
94
94
  # Optional. If `true`, specifies a multiplexed session. Use a multiplexed
95
- # session for multiple, concurrent read-only operations. Don't use them for
96
- # read-write transactions, partitioned reads, or partitioned queries. Use
95
+ # session for multiple, concurrent operations including any combination of
96
+ # read-only and read-write transactions. Use
97
97
  # {::Google::Cloud::Spanner::V1::Spanner::Client#create_session `sessions.create`} to create
98
98
  # multiplexed sessions. Don't use
99
99
  # {::Google::Cloud::Spanner::V1::Spanner::Client#batch_create_sessions BatchCreateSessions} to
@@ -439,6 +439,14 @@ module Google
439
439
  # be deferred until commit time (for example, validation of unique
440
440
  # constraints). Given this, successful execution of a DML statement shouldn't
441
441
  # be assumed until a subsequent `Commit` call completes successfully.
442
+ # @!attribute [rw] routing_hint
443
+ # @return [::Google::Cloud::Spanner::V1::RoutingHint]
444
+ # Optional. If present, it makes the Spanner requests location-aware.
445
+ #
446
+ # It gives the server hints that can be used to route the request
447
+ # to an appropriate server, potentially significantly decreasing latency and
448
+ # improving throughput. To achieve improved performance, most fields must be
449
+ # filled in with accurate values.
442
450
  class ExecuteSqlRequest
443
451
  include ::Google::Protobuf::MessageExts
444
452
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -927,6 +935,14 @@ module Google
927
935
  # @return [::Google::Cloud::Spanner::V1::ReadRequest::LockHint]
928
936
  # Optional. Lock Hint for the request, it can only be used with read-write
929
937
  # transactions.
938
+ # @!attribute [rw] routing_hint
939
+ # @return [::Google::Cloud::Spanner::V1::RoutingHint]
940
+ # Optional. If present, it makes the Spanner requests location-aware.
941
+ #
942
+ # It gives the server hints that can be used to route the request
943
+ # to an appropriate server, potentially significantly decreasing latency and
944
+ # improving throughput. To achieve improved performance, most fields must be
945
+ # filled in with accurate values.
930
946
  class ReadRequest
931
947
  include ::Google::Protobuf::MessageExts
932
948
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -214,7 +214,9 @@ module Google
214
214
  extend ::Google::Protobuf::MessageExts::ClassMethods
215
215
  end
216
216
 
217
- # `IsolationLevel` is used when setting `isolation_level` for a transaction.
217
+ # `IsolationLevel` is used when setting the [isolation
218
+ # level](https://cloud.google.com/spanner/docs/isolation-levels) for a
219
+ # transaction.
218
220
  module IsolationLevel
219
221
  # Default value.
220
222
  #
@@ -239,7 +241,7 @@ module Google
239
241
  # `SERIALIZABLE` transactions, only write-write conflicts are detected in
240
242
  # snapshot transactions.
241
243
  #
242
- # This isolation level does not support Read-only and Partitioned DML
244
+ # This isolation level does not support read-only and partitioned DML
243
245
  # transactions.
244
246
  #
245
247
  # When `REPEATABLE_READ` is specified on a read-write transaction, the
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-cloud-spanner-v1
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.11.1
4
+ version: 1.12.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Google LLC
@@ -60,6 +60,7 @@ files:
60
60
  - lib/google/spanner/v1/change_stream_pb.rb
61
61
  - lib/google/spanner/v1/commit_response_pb.rb
62
62
  - lib/google/spanner/v1/keys_pb.rb
63
+ - lib/google/spanner/v1/location_pb.rb
63
64
  - lib/google/spanner/v1/mutation_pb.rb
64
65
  - lib/google/spanner/v1/query_plan_pb.rb
65
66
  - lib/google/spanner/v1/result_set_pb.rb
@@ -81,6 +82,7 @@ files:
81
82
  - proto_docs/google/spanner/v1/change_stream.rb
82
83
  - proto_docs/google/spanner/v1/commit_response.rb
83
84
  - proto_docs/google/spanner/v1/keys.rb
85
+ - proto_docs/google/spanner/v1/location.rb
84
86
  - proto_docs/google/spanner/v1/mutation.rb
85
87
  - proto_docs/google/spanner/v1/query_plan.rb
86
88
  - proto_docs/google/spanner/v1/result_set.rb