diff --git a/protos/google/spanner/v1/commit_response.proto b/protos/google/spanner/v1/commit_response.proto index 6e4459122..20d2850bb 100644 --- a/protos/google/spanner/v1/commit_response.proto +++ b/protos/google/spanner/v1/commit_response.proto @@ -16,7 +16,9 @@ syntax = "proto3"; package google.spanner.v1; +import "google/api/field_behavior.proto"; import "google/protobuf/timestamp.proto"; +import "google/spanner/v1/location.proto"; import "google/spanner/v1/transaction.proto"; option csharp_namespace = "Google.Cloud.Spanner.V1"; @@ -61,4 +63,12 @@ message CommitResponse { // timestamp at which all reads in the transaction ran. This timestamp is // never returned. google.protobuf.Timestamp snapshot_timestamp = 5; + + // Optional. A cache update expresses a set of changes the client should + // incorporate into its location cache. The client should discard the changes + // if they are older than the data it already has. This data can be obtained + // in response to requests that included a `RoutingHint` field, but may also + // be obtained by explicit location-fetching RPCs which may be added in the + // future. + CacheUpdate cache_update = 6 [(google.api.field_behavior) = OPTIONAL]; } diff --git a/protos/google/spanner/v1/spanner.proto b/protos/google/spanner/v1/spanner.proto index 525cc2ba4..a6796c9f1 100644 --- a/protos/google/spanner/v1/spanner.proto +++ b/protos/google/spanner/v1/spanner.proto @@ -827,7 +827,7 @@ message ExecuteSqlRequest { // be assumed until a subsequent `Commit` call completes successfully. bool last_statement = 17 [(google.api.field_behavior) = OPTIONAL]; - // Optional. If present, it makes the Spanner requests location-aware. + // Optional. Makes the Spanner requests location-aware if present. // // It gives the server hints that can be used to route the request // to an appropriate server, potentially significantly decreasing latency and @@ -1268,7 +1268,7 @@ message ReadRequest { // transactions. LockHint lock_hint = 17 [(google.api.field_behavior) = OPTIONAL]; - // Optional. If present, it makes the Spanner requests location-aware. + // Optional. Makes the Spanner requests location-aware if present. // // It gives the server hints that can be used to route the request // to an appropriate server, potentially significantly decreasing latency and @@ -1301,6 +1301,14 @@ message BeginTransactionRequest { // randomly select one of the mutations from the mutation set and send it as a // part of this request. Mutation mutation_key = 4 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Makes the Spanner requests location-aware if present. + // + // It gives the server hints that can be used to route the request + // to an appropriate server, potentially significantly decreasing latency and + // improving throughput. To achieve improved performance, most fields must be + // filled in with accurate values. + RoutingHint routing_hint = 5 [(google.api.field_behavior) = OPTIONAL]; } // The request for [Commit][google.spanner.v1.Spanner.Commit]. @@ -1355,6 +1363,14 @@ message CommitRequest { // results in a `FailedPrecondition` error. MultiplexedSessionPrecommitToken precommit_token = 9 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Makes the Spanner requests location-aware if present. + // + // It gives the server hints that can be used to route the request + // to an appropriate server, potentially significantly decreasing latency and + // improving throughput. To achieve improved performance, most fields must be + // filled in with accurate values. + RoutingHint routing_hint = 10 [(google.api.field_behavior) = OPTIONAL]; } // The request for [Rollback][google.spanner.v1.Spanner.Rollback]. diff --git a/protos/google/spanner/v1/transaction.proto b/protos/google/spanner/v1/transaction.proto index dfdf3b11a..f7cbccae8 100644 --- a/protos/google/spanner/v1/transaction.proto +++ b/protos/google/spanner/v1/transaction.proto @@ -19,6 +19,7 @@ package google.spanner.v1; import "google/api/field_behavior.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; +import "google/spanner/v1/location.proto"; option csharp_namespace = "Google.Cloud.Spanner.V1"; option go_package = "cloud.google.com/go/spanner/apiv1/spannerpb;spannerpb"; @@ -39,35 +40,46 @@ message TransactionOptions { // Default value. // // * If isolation level is + // [SERIALIZABLE][google.spanner.v1.TransactionOptions.IsolationLevel.SERIALIZABLE], + // locking semantics default to `PESSIMISTIC`. + // * If isolation level is // [REPEATABLE_READ][google.spanner.v1.TransactionOptions.IsolationLevel.REPEATABLE_READ], - // then it is an error to specify `read_lock_mode`. Locking semantics - // default to `OPTIMISTIC`. No validation checks are done for reads, - // except to validate that the data that was served at the snapshot time - // is unchanged at commit time in the following cases: - // 1. reads done as part of queries that use `SELECT FOR UPDATE` - // 2. reads done as part of statements with a `LOCK_SCANNED_RANGES` - // hint - // 3. reads done as part of DML statements - // * At all other isolation levels, if `read_lock_mode` is the default - // value, then pessimistic read locks are used. + // locking semantics default to `OPTIMISTIC`. + // * See + // [Concurrency + // control](https://cloud.google.com/spanner/docs/concurrency-control) + // for more details. READ_LOCK_MODE_UNSPECIFIED = 0; // Pessimistic lock mode. // - // Read locks are acquired immediately on read. - // Semantics described only applies to + // Lock acquisition behavior depends on the isolation level in use. In // [SERIALIZABLE][google.spanner.v1.TransactionOptions.IsolationLevel.SERIALIZABLE] - // isolation. + // isolation, reads and writes acquire necessary locks during transaction + // statement execution. In + // [REPEATABLE_READ][google.spanner.v1.TransactionOptions.IsolationLevel.REPEATABLE_READ] + // isolation, reads that explicitly request to be locked and writes + // acquire locks. + // See + // [Concurrency + // control](https://cloud.google.com/spanner/docs/concurrency-control) for + // details on the types of locks acquired at each transaction step. PESSIMISTIC = 1; // Optimistic lock mode. // - // Locks for reads within the transaction are not acquired on read. - // Instead the locks are acquired on a commit to validate that - // read/queried data has not changed since the transaction started. - // Semantics described only applies to + // Lock acquisition behavior depends on the isolation level in use. In + // both // [SERIALIZABLE][google.spanner.v1.TransactionOptions.IsolationLevel.SERIALIZABLE] - // isolation. + // and + // [REPEATABLE_READ][google.spanner.v1.TransactionOptions.IsolationLevel.REPEATABLE_READ] + // isolation, reads and writes do not acquire locks during transaction + // statement execution. + // See + // [Concurrency + // control](https://cloud.google.com/spanner/docs/concurrency-control) for + // details on how the guarantees of each isolation level are provided at + // commit time. OPTIMISTIC = 2; } @@ -264,6 +276,14 @@ message Transaction { // attempt should be passed to the [Commit][google.spanner.v1.Spanner.Commit] // request for this transaction. MultiplexedSessionPrecommitToken precommit_token = 3; + + // Optional. A cache update expresses a set of changes the client should + // incorporate into its location cache. The client should discard the changes + // if they are older than the data it already has. This data can be obtained + // in response to requests that included a `RoutingHint` field, but may also + // be obtained by explicit location-fetching RPCs which may be added in the + // future. + CacheUpdate cache_update = 5 [(google.api.field_behavior) = OPTIONAL]; } // This message is used to select the transaction in which a diff --git a/protos/protos.d.ts b/protos/protos.d.ts index 9bc6110e4..31b48e869 100644 --- a/protos/protos.d.ts +++ b/protos/protos.d.ts @@ -32620,6 +32620,9 @@ export namespace google { /** BeginTransactionRequest mutationKey */ mutationKey?: (google.spanner.v1.IMutation|null); + + /** BeginTransactionRequest routingHint */ + routingHint?: (google.spanner.v1.IRoutingHint|null); } /** Represents a BeginTransactionRequest. */ @@ -32643,6 +32646,9 @@ export namespace google { /** BeginTransactionRequest mutationKey. */ public mutationKey?: (google.spanner.v1.IMutation|null); + /** BeginTransactionRequest routingHint. */ + public routingHint?: (google.spanner.v1.IRoutingHint|null); + /** * Creates a new BeginTransactionRequest instance using the specified properties. * @param [properties] Properties to set @@ -32747,6 +32753,9 @@ export namespace google { /** CommitRequest precommitToken */ precommitToken?: (google.spanner.v1.IMultiplexedSessionPrecommitToken|null); + + /** CommitRequest routingHint */ + routingHint?: (google.spanner.v1.IRoutingHint|null); } /** Represents a CommitRequest. */ @@ -32782,6 +32791,9 @@ export namespace google { /** CommitRequest precommitToken. */ public precommitToken?: (google.spanner.v1.IMultiplexedSessionPrecommitToken|null); + /** CommitRequest routingHint. */ + public routingHint?: (google.spanner.v1.IRoutingHint|null); + /** CommitRequest transaction. */ public transaction?: ("transactionId"|"singleUseTransaction"); @@ -33304,6 +33316,9 @@ export namespace google { /** CommitResponse snapshotTimestamp */ snapshotTimestamp?: (google.protobuf.ITimestamp|null); + + /** CommitResponse cacheUpdate */ + cacheUpdate?: (google.spanner.v1.ICacheUpdate|null); } /** Represents a CommitResponse. */ @@ -33327,6 +33342,9 @@ export namespace google { /** CommitResponse snapshotTimestamp. */ public snapshotTimestamp?: (google.protobuf.ITimestamp|null); + /** CommitResponse cacheUpdate. */ + public cacheUpdate?: (google.spanner.v1.ICacheUpdate|null); + /** CommitResponse MultiplexedSessionRetry. */ public MultiplexedSessionRetry?: "precommitToken"; @@ -33508,2516 +33526,2522 @@ export namespace google { } } - /** Properties of a TransactionOptions. */ - interface ITransactionOptions { + /** Properties of a Range. */ + interface IRange { - /** TransactionOptions readWrite */ - readWrite?: (google.spanner.v1.TransactionOptions.IReadWrite|null); + /** Range startKey */ + startKey?: (Uint8Array|Buffer|string|null); - /** TransactionOptions partitionedDml */ - partitionedDml?: (google.spanner.v1.TransactionOptions.IPartitionedDml|null); + /** Range limitKey */ + limitKey?: (Uint8Array|Buffer|string|null); - /** TransactionOptions readOnly */ - readOnly?: (google.spanner.v1.TransactionOptions.IReadOnly|null); + /** Range groupUid */ + groupUid?: (number|Long|string|null); - /** TransactionOptions excludeTxnFromChangeStreams */ - excludeTxnFromChangeStreams?: (boolean|null); + /** Range splitId */ + splitId?: (number|Long|string|null); - /** TransactionOptions isolationLevel */ - isolationLevel?: (google.spanner.v1.TransactionOptions.IsolationLevel|keyof typeof google.spanner.v1.TransactionOptions.IsolationLevel|null); + /** Range generation */ + generation?: (Uint8Array|Buffer|string|null); } - /** Represents a TransactionOptions. */ - class TransactionOptions implements ITransactionOptions { + /** Represents a Range. */ + class Range implements IRange { /** - * Constructs a new TransactionOptions. + * Constructs a new Range. * @param [properties] Properties to set */ - constructor(properties?: google.spanner.v1.ITransactionOptions); - - /** TransactionOptions readWrite. */ - public readWrite?: (google.spanner.v1.TransactionOptions.IReadWrite|null); + constructor(properties?: google.spanner.v1.IRange); - /** TransactionOptions partitionedDml. */ - public partitionedDml?: (google.spanner.v1.TransactionOptions.IPartitionedDml|null); + /** Range startKey. */ + public startKey: (Uint8Array|Buffer|string); - /** TransactionOptions readOnly. */ - public readOnly?: (google.spanner.v1.TransactionOptions.IReadOnly|null); + /** Range limitKey. */ + public limitKey: (Uint8Array|Buffer|string); - /** TransactionOptions excludeTxnFromChangeStreams. */ - public excludeTxnFromChangeStreams: boolean; + /** Range groupUid. */ + public groupUid: (number|Long|string); - /** TransactionOptions isolationLevel. */ - public isolationLevel: (google.spanner.v1.TransactionOptions.IsolationLevel|keyof typeof google.spanner.v1.TransactionOptions.IsolationLevel); + /** Range splitId. */ + public splitId: (number|Long|string); - /** TransactionOptions mode. */ - public mode?: ("readWrite"|"partitionedDml"|"readOnly"); + /** Range generation. */ + public generation: (Uint8Array|Buffer|string); /** - * Creates a new TransactionOptions instance using the specified properties. + * Creates a new Range instance using the specified properties. * @param [properties] Properties to set - * @returns TransactionOptions instance + * @returns Range instance */ - public static create(properties?: google.spanner.v1.ITransactionOptions): google.spanner.v1.TransactionOptions; + public static create(properties?: google.spanner.v1.IRange): google.spanner.v1.Range; /** - * Encodes the specified TransactionOptions message. Does not implicitly {@link google.spanner.v1.TransactionOptions.verify|verify} messages. - * @param message TransactionOptions message or plain object to encode + * Encodes the specified Range message. Does not implicitly {@link google.spanner.v1.Range.verify|verify} messages. + * @param message Range message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.spanner.v1.ITransactionOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.spanner.v1.IRange, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified TransactionOptions message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionOptions.verify|verify} messages. - * @param message TransactionOptions message or plain object to encode + * Encodes the specified Range message, length delimited. Does not implicitly {@link google.spanner.v1.Range.verify|verify} messages. + * @param message Range message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.spanner.v1.ITransactionOptions, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.spanner.v1.IRange, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a TransactionOptions message from the specified reader or buffer. + * Decodes a Range message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns TransactionOptions + * @returns Range * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.TransactionOptions; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.Range; /** - * Decodes a TransactionOptions message from the specified reader or buffer, length delimited. + * Decodes a Range message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns TransactionOptions + * @returns Range * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.TransactionOptions; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.Range; /** - * Verifies a TransactionOptions message. + * Verifies a Range message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a TransactionOptions message from a plain object. Also converts values to their respective internal types. + * Creates a Range message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns TransactionOptions + * @returns Range */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.TransactionOptions; + public static fromObject(object: { [k: string]: any }): google.spanner.v1.Range; /** - * Creates a plain object from a TransactionOptions message. Also converts values to other types if specified. - * @param message TransactionOptions + * Creates a plain object from a Range message. Also converts values to other types if specified. + * @param message Range * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.spanner.v1.TransactionOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.spanner.v1.Range, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this TransactionOptions to JSON. + * Converts this Range to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for TransactionOptions + * Gets the default type url for Range * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - namespace TransactionOptions { + /** Properties of a Tablet. */ + interface ITablet { - /** Properties of a ReadWrite. */ - interface IReadWrite { + /** Tablet tabletUid */ + tabletUid?: (number|Long|string|null); - /** ReadWrite readLockMode */ - readLockMode?: (google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode|keyof typeof google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode|null); + /** Tablet serverAddress */ + serverAddress?: (string|null); - /** ReadWrite multiplexedSessionPreviousTransactionId */ - multiplexedSessionPreviousTransactionId?: (Uint8Array|Buffer|string|null); - } + /** Tablet location */ + location?: (string|null); - /** Represents a ReadWrite. */ - class ReadWrite implements IReadWrite { + /** Tablet role */ + role?: (google.spanner.v1.Tablet.Role|keyof typeof google.spanner.v1.Tablet.Role|null); - /** - * Constructs a new ReadWrite. - * @param [properties] Properties to set - */ - constructor(properties?: google.spanner.v1.TransactionOptions.IReadWrite); + /** Tablet incarnation */ + incarnation?: (Uint8Array|Buffer|string|null); - /** ReadWrite readLockMode. */ - public readLockMode: (google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode|keyof typeof google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode); + /** Tablet distance */ + distance?: (number|null); - /** ReadWrite multiplexedSessionPreviousTransactionId. */ - public multiplexedSessionPreviousTransactionId: (Uint8Array|Buffer|string); + /** Tablet skip */ + skip?: (boolean|null); + } - /** - * Creates a new ReadWrite instance using the specified properties. - * @param [properties] Properties to set - * @returns ReadWrite instance - */ - public static create(properties?: google.spanner.v1.TransactionOptions.IReadWrite): google.spanner.v1.TransactionOptions.ReadWrite; + /** Represents a Tablet. */ + class Tablet implements ITablet { - /** - * Encodes the specified ReadWrite message. Does not implicitly {@link google.spanner.v1.TransactionOptions.ReadWrite.verify|verify} messages. - * @param message ReadWrite message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.spanner.v1.TransactionOptions.IReadWrite, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Constructs a new Tablet. + * @param [properties] Properties to set + */ + constructor(properties?: google.spanner.v1.ITablet); - /** - * Encodes the specified ReadWrite message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionOptions.ReadWrite.verify|verify} messages. - * @param message ReadWrite message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.spanner.v1.TransactionOptions.IReadWrite, writer?: $protobuf.Writer): $protobuf.Writer; + /** Tablet tabletUid. */ + public tabletUid: (number|Long|string); - /** - * Decodes a ReadWrite message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReadWrite - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.TransactionOptions.ReadWrite; + /** Tablet serverAddress. */ + public serverAddress: string; - /** - * Decodes a ReadWrite message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReadWrite - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.TransactionOptions.ReadWrite; + /** Tablet location. */ + public location: string; - /** - * Verifies a ReadWrite message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** Tablet role. */ + public role: (google.spanner.v1.Tablet.Role|keyof typeof google.spanner.v1.Tablet.Role); - /** - * Creates a ReadWrite message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReadWrite - */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.TransactionOptions.ReadWrite; + /** Tablet incarnation. */ + public incarnation: (Uint8Array|Buffer|string); - /** - * Creates a plain object from a ReadWrite message. Also converts values to other types if specified. - * @param message ReadWrite - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.spanner.v1.TransactionOptions.ReadWrite, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** Tablet distance. */ + public distance: number; - /** - * Converts this ReadWrite to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; + /** Tablet skip. */ + public skip: boolean; - /** - * Gets the default type url for ReadWrite - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ - public static getTypeUrl(typeUrlPrefix?: string): string; - } + /** + * Creates a new Tablet instance using the specified properties. + * @param [properties] Properties to set + * @returns Tablet instance + */ + public static create(properties?: google.spanner.v1.ITablet): google.spanner.v1.Tablet; - namespace ReadWrite { + /** + * Encodes the specified Tablet message. Does not implicitly {@link google.spanner.v1.Tablet.verify|verify} messages. + * @param message Tablet message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.spanner.v1.ITablet, writer?: $protobuf.Writer): $protobuf.Writer; - /** ReadLockMode enum. */ - enum ReadLockMode { - READ_LOCK_MODE_UNSPECIFIED = 0, - PESSIMISTIC = 1, - OPTIMISTIC = 2 - } - } - - /** Properties of a PartitionedDml. */ - interface IPartitionedDml { - } - - /** Represents a PartitionedDml. */ - class PartitionedDml implements IPartitionedDml { - - /** - * Constructs a new PartitionedDml. - * @param [properties] Properties to set - */ - constructor(properties?: google.spanner.v1.TransactionOptions.IPartitionedDml); - - /** - * Creates a new PartitionedDml instance using the specified properties. - * @param [properties] Properties to set - * @returns PartitionedDml instance - */ - public static create(properties?: google.spanner.v1.TransactionOptions.IPartitionedDml): google.spanner.v1.TransactionOptions.PartitionedDml; + /** + * Encodes the specified Tablet message, length delimited. Does not implicitly {@link google.spanner.v1.Tablet.verify|verify} messages. + * @param message Tablet message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.spanner.v1.ITablet, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Encodes the specified PartitionedDml message. Does not implicitly {@link google.spanner.v1.TransactionOptions.PartitionedDml.verify|verify} messages. - * @param message PartitionedDml message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.spanner.v1.TransactionOptions.IPartitionedDml, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Decodes a Tablet message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Tablet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.Tablet; - /** - * Encodes the specified PartitionedDml message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionOptions.PartitionedDml.verify|verify} messages. - * @param message PartitionedDml message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.spanner.v1.TransactionOptions.IPartitionedDml, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Decodes a Tablet message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Tablet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.Tablet; - /** - * Decodes a PartitionedDml message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns PartitionedDml - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.TransactionOptions.PartitionedDml; + /** + * Verifies a Tablet message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** - * Decodes a PartitionedDml message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns PartitionedDml - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.TransactionOptions.PartitionedDml; + /** + * Creates a Tablet message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Tablet + */ + public static fromObject(object: { [k: string]: any }): google.spanner.v1.Tablet; - /** - * Verifies a PartitionedDml message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Creates a plain object from a Tablet message. Also converts values to other types if specified. + * @param message Tablet + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.spanner.v1.Tablet, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** - * Creates a PartitionedDml message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns PartitionedDml - */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.TransactionOptions.PartitionedDml; + /** + * Converts this Tablet to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; - /** - * Creates a plain object from a PartitionedDml message. Also converts values to other types if specified. - * @param message PartitionedDml - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.spanner.v1.TransactionOptions.PartitionedDml, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** + * Gets the default type url for Tablet + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } - /** - * Converts this PartitionedDml to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; + namespace Tablet { - /** - * Gets the default type url for PartitionedDml - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ - public static getTypeUrl(typeUrlPrefix?: string): string; + /** Role enum. */ + enum Role { + ROLE_UNSPECIFIED = 0, + READ_WRITE = 1, + READ_ONLY = 2 } + } - /** Properties of a ReadOnly. */ - interface IReadOnly { - - /** ReadOnly strong */ - strong?: (boolean|null); - - /** ReadOnly minReadTimestamp */ - minReadTimestamp?: (google.protobuf.ITimestamp|null); - - /** ReadOnly maxStaleness */ - maxStaleness?: (google.protobuf.IDuration|null); - - /** ReadOnly readTimestamp */ - readTimestamp?: (google.protobuf.ITimestamp|null); - - /** ReadOnly exactStaleness */ - exactStaleness?: (google.protobuf.IDuration|null); - - /** ReadOnly returnReadTimestamp */ - returnReadTimestamp?: (boolean|null); - } + /** Properties of a Group. */ + interface IGroup { - /** Represents a ReadOnly. */ - class ReadOnly implements IReadOnly { + /** Group groupUid */ + groupUid?: (number|Long|string|null); - /** - * Constructs a new ReadOnly. - * @param [properties] Properties to set - */ - constructor(properties?: google.spanner.v1.TransactionOptions.IReadOnly); + /** Group tablets */ + tablets?: (google.spanner.v1.ITablet[]|null); - /** ReadOnly strong. */ - public strong?: (boolean|null); + /** Group leaderIndex */ + leaderIndex?: (number|null); - /** ReadOnly minReadTimestamp. */ - public minReadTimestamp?: (google.protobuf.ITimestamp|null); + /** Group generation */ + generation?: (Uint8Array|Buffer|string|null); + } - /** ReadOnly maxStaleness. */ - public maxStaleness?: (google.protobuf.IDuration|null); + /** Represents a Group. */ + class Group implements IGroup { - /** ReadOnly readTimestamp. */ - public readTimestamp?: (google.protobuf.ITimestamp|null); + /** + * Constructs a new Group. + * @param [properties] Properties to set + */ + constructor(properties?: google.spanner.v1.IGroup); - /** ReadOnly exactStaleness. */ - public exactStaleness?: (google.protobuf.IDuration|null); + /** Group groupUid. */ + public groupUid: (number|Long|string); - /** ReadOnly returnReadTimestamp. */ - public returnReadTimestamp: boolean; + /** Group tablets. */ + public tablets: google.spanner.v1.ITablet[]; - /** ReadOnly timestampBound. */ - public timestampBound?: ("strong"|"minReadTimestamp"|"maxStaleness"|"readTimestamp"|"exactStaleness"); + /** Group leaderIndex. */ + public leaderIndex: number; - /** - * Creates a new ReadOnly instance using the specified properties. - * @param [properties] Properties to set - * @returns ReadOnly instance - */ - public static create(properties?: google.spanner.v1.TransactionOptions.IReadOnly): google.spanner.v1.TransactionOptions.ReadOnly; + /** Group generation. */ + public generation: (Uint8Array|Buffer|string); - /** - * Encodes the specified ReadOnly message. Does not implicitly {@link google.spanner.v1.TransactionOptions.ReadOnly.verify|verify} messages. - * @param message ReadOnly message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.spanner.v1.TransactionOptions.IReadOnly, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Creates a new Group instance using the specified properties. + * @param [properties] Properties to set + * @returns Group instance + */ + public static create(properties?: google.spanner.v1.IGroup): google.spanner.v1.Group; - /** - * Encodes the specified ReadOnly message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionOptions.ReadOnly.verify|verify} messages. - * @param message ReadOnly message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.spanner.v1.TransactionOptions.IReadOnly, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Encodes the specified Group message. Does not implicitly {@link google.spanner.v1.Group.verify|verify} messages. + * @param message Group message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.spanner.v1.IGroup, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Decodes a ReadOnly message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns ReadOnly - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.TransactionOptions.ReadOnly; + /** + * Encodes the specified Group message, length delimited. Does not implicitly {@link google.spanner.v1.Group.verify|verify} messages. + * @param message Group message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.spanner.v1.IGroup, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Decodes a ReadOnly message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns ReadOnly - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.TransactionOptions.ReadOnly; + /** + * Decodes a Group message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Group + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.Group; - /** - * Verifies a ReadOnly message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Decodes a Group message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Group + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.Group; - /** - * Creates a ReadOnly message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns ReadOnly - */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.TransactionOptions.ReadOnly; + /** + * Verifies a Group message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - /** - * Creates a plain object from a ReadOnly message. Also converts values to other types if specified. - * @param message ReadOnly - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.spanner.v1.TransactionOptions.ReadOnly, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** + * Creates a Group message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Group + */ + public static fromObject(object: { [k: string]: any }): google.spanner.v1.Group; - /** - * Converts this ReadOnly to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; + /** + * Creates a plain object from a Group message. Also converts values to other types if specified. + * @param message Group + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.spanner.v1.Group, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** - * Gets the default type url for ReadOnly - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ - public static getTypeUrl(typeUrlPrefix?: string): string; - } + /** + * Converts this Group to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; - /** IsolationLevel enum. */ - enum IsolationLevel { - ISOLATION_LEVEL_UNSPECIFIED = 0, - SERIALIZABLE = 1, - REPEATABLE_READ = 2 - } + /** + * Gets the default type url for Group + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a Transaction. */ - interface ITransaction { + /** Properties of a KeyRecipe. */ + interface IKeyRecipe { - /** Transaction id */ - id?: (Uint8Array|Buffer|string|null); + /** KeyRecipe tableName */ + tableName?: (string|null); - /** Transaction readTimestamp */ - readTimestamp?: (google.protobuf.ITimestamp|null); + /** KeyRecipe indexName */ + indexName?: (string|null); - /** Transaction precommitToken */ - precommitToken?: (google.spanner.v1.IMultiplexedSessionPrecommitToken|null); + /** KeyRecipe operationUid */ + operationUid?: (number|Long|string|null); + + /** KeyRecipe part */ + part?: (google.spanner.v1.KeyRecipe.IPart[]|null); } - /** Represents a Transaction. */ - class Transaction implements ITransaction { + /** Represents a KeyRecipe. */ + class KeyRecipe implements IKeyRecipe { /** - * Constructs a new Transaction. + * Constructs a new KeyRecipe. * @param [properties] Properties to set */ - constructor(properties?: google.spanner.v1.ITransaction); + constructor(properties?: google.spanner.v1.IKeyRecipe); - /** Transaction id. */ - public id: (Uint8Array|Buffer|string); + /** KeyRecipe tableName. */ + public tableName?: (string|null); - /** Transaction readTimestamp. */ - public readTimestamp?: (google.protobuf.ITimestamp|null); + /** KeyRecipe indexName. */ + public indexName?: (string|null); - /** Transaction precommitToken. */ - public precommitToken?: (google.spanner.v1.IMultiplexedSessionPrecommitToken|null); + /** KeyRecipe operationUid. */ + public operationUid?: (number|Long|string|null); + + /** KeyRecipe part. */ + public part: google.spanner.v1.KeyRecipe.IPart[]; + + /** KeyRecipe target. */ + public target?: ("tableName"|"indexName"|"operationUid"); /** - * Creates a new Transaction instance using the specified properties. + * Creates a new KeyRecipe instance using the specified properties. * @param [properties] Properties to set - * @returns Transaction instance + * @returns KeyRecipe instance */ - public static create(properties?: google.spanner.v1.ITransaction): google.spanner.v1.Transaction; + public static create(properties?: google.spanner.v1.IKeyRecipe): google.spanner.v1.KeyRecipe; /** - * Encodes the specified Transaction message. Does not implicitly {@link google.spanner.v1.Transaction.verify|verify} messages. - * @param message Transaction message or plain object to encode + * Encodes the specified KeyRecipe message. Does not implicitly {@link google.spanner.v1.KeyRecipe.verify|verify} messages. + * @param message KeyRecipe message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.spanner.v1.ITransaction, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.spanner.v1.IKeyRecipe, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Transaction message, length delimited. Does not implicitly {@link google.spanner.v1.Transaction.verify|verify} messages. - * @param message Transaction message or plain object to encode + * Encodes the specified KeyRecipe message, length delimited. Does not implicitly {@link google.spanner.v1.KeyRecipe.verify|verify} messages. + * @param message KeyRecipe message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.spanner.v1.ITransaction, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.spanner.v1.IKeyRecipe, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Transaction message from the specified reader or buffer. + * Decodes a KeyRecipe message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Transaction + * @returns KeyRecipe * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.Transaction; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.KeyRecipe; /** - * Decodes a Transaction message from the specified reader or buffer, length delimited. + * Decodes a KeyRecipe message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Transaction + * @returns KeyRecipe * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.Transaction; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.KeyRecipe; /** - * Verifies a Transaction message. + * Verifies a KeyRecipe message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Transaction message from a plain object. Also converts values to their respective internal types. + * Creates a KeyRecipe message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Transaction + * @returns KeyRecipe */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.Transaction; + public static fromObject(object: { [k: string]: any }): google.spanner.v1.KeyRecipe; /** - * Creates a plain object from a Transaction message. Also converts values to other types if specified. - * @param message Transaction + * Creates a plain object from a KeyRecipe message. Also converts values to other types if specified. + * @param message KeyRecipe * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.spanner.v1.Transaction, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.spanner.v1.KeyRecipe, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Transaction to JSON. + * Converts this KeyRecipe to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for Transaction + * Gets the default type url for KeyRecipe * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a TransactionSelector. */ - interface ITransactionSelector { + namespace KeyRecipe { - /** TransactionSelector singleUse */ - singleUse?: (google.spanner.v1.ITransactionOptions|null); + /** Properties of a Part. */ + interface IPart { - /** TransactionSelector id */ - id?: (Uint8Array|Buffer|string|null); + /** Part tag */ + tag?: (number|null); - /** TransactionSelector begin */ - begin?: (google.spanner.v1.ITransactionOptions|null); - } + /** Part order */ + order?: (google.spanner.v1.KeyRecipe.Part.Order|keyof typeof google.spanner.v1.KeyRecipe.Part.Order|null); - /** Represents a TransactionSelector. */ - class TransactionSelector implements ITransactionSelector { + /** Part nullOrder */ + nullOrder?: (google.spanner.v1.KeyRecipe.Part.NullOrder|keyof typeof google.spanner.v1.KeyRecipe.Part.NullOrder|null); - /** - * Constructs a new TransactionSelector. - * @param [properties] Properties to set - */ - constructor(properties?: google.spanner.v1.ITransactionSelector); + /** Part type */ + type?: (google.spanner.v1.IType|null); - /** TransactionSelector singleUse. */ - public singleUse?: (google.spanner.v1.ITransactionOptions|null); + /** Part identifier */ + identifier?: (string|null); - /** TransactionSelector id. */ - public id?: (Uint8Array|Buffer|string|null); + /** Part value */ + value?: (google.protobuf.IValue|null); - /** TransactionSelector begin. */ - public begin?: (google.spanner.v1.ITransactionOptions|null); + /** Part random */ + random?: (boolean|null); - /** TransactionSelector selector. */ - public selector?: ("singleUse"|"id"|"begin"); + /** Part structIdentifiers */ + structIdentifiers?: (number[]|null); + } - /** - * Creates a new TransactionSelector instance using the specified properties. - * @param [properties] Properties to set - * @returns TransactionSelector instance - */ - public static create(properties?: google.spanner.v1.ITransactionSelector): google.spanner.v1.TransactionSelector; + /** Represents a Part. */ + class Part implements IPart { - /** - * Encodes the specified TransactionSelector message. Does not implicitly {@link google.spanner.v1.TransactionSelector.verify|verify} messages. - * @param message TransactionSelector message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.spanner.v1.ITransactionSelector, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Constructs a new Part. + * @param [properties] Properties to set + */ + constructor(properties?: google.spanner.v1.KeyRecipe.IPart); - /** - * Encodes the specified TransactionSelector message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionSelector.verify|verify} messages. - * @param message TransactionSelector message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.spanner.v1.ITransactionSelector, writer?: $protobuf.Writer): $protobuf.Writer; + /** Part tag. */ + public tag: number; - /** - * Decodes a TransactionSelector message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns TransactionSelector - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.TransactionSelector; + /** Part order. */ + public order: (google.spanner.v1.KeyRecipe.Part.Order|keyof typeof google.spanner.v1.KeyRecipe.Part.Order); - /** - * Decodes a TransactionSelector message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns TransactionSelector - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.TransactionSelector; + /** Part nullOrder. */ + public nullOrder: (google.spanner.v1.KeyRecipe.Part.NullOrder|keyof typeof google.spanner.v1.KeyRecipe.Part.NullOrder); - /** - * Verifies a TransactionSelector message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** Part type. */ + public type?: (google.spanner.v1.IType|null); - /** - * Creates a TransactionSelector message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns TransactionSelector - */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.TransactionSelector; + /** Part identifier. */ + public identifier?: (string|null); - /** - * Creates a plain object from a TransactionSelector message. Also converts values to other types if specified. - * @param message TransactionSelector - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.spanner.v1.TransactionSelector, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** Part value. */ + public value?: (google.protobuf.IValue|null); + + /** Part random. */ + public random?: (boolean|null); + + /** Part structIdentifiers. */ + public structIdentifiers: number[]; + + /** Part valueType. */ + public valueType?: ("identifier"|"value"|"random"); + + /** + * Creates a new Part instance using the specified properties. + * @param [properties] Properties to set + * @returns Part instance + */ + public static create(properties?: google.spanner.v1.KeyRecipe.IPart): google.spanner.v1.KeyRecipe.Part; + + /** + * Encodes the specified Part message. Does not implicitly {@link google.spanner.v1.KeyRecipe.Part.verify|verify} messages. + * @param message Part message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.spanner.v1.KeyRecipe.IPart, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Part message, length delimited. Does not implicitly {@link google.spanner.v1.KeyRecipe.Part.verify|verify} messages. + * @param message Part message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.spanner.v1.KeyRecipe.IPart, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Part message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Part + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.KeyRecipe.Part; + + /** + * Decodes a Part message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Part + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.KeyRecipe.Part; + + /** + * Verifies a Part message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Part message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Part + */ + public static fromObject(object: { [k: string]: any }): google.spanner.v1.KeyRecipe.Part; + + /** + * Creates a plain object from a Part message. Also converts values to other types if specified. + * @param message Part + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.spanner.v1.KeyRecipe.Part, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Part to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Part + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + namespace Part { - /** - * Converts this TransactionSelector to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; + /** Order enum. */ + enum Order { + ORDER_UNSPECIFIED = 0, + ASCENDING = 1, + DESCENDING = 2 + } - /** - * Gets the default type url for TransactionSelector - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ - public static getTypeUrl(typeUrlPrefix?: string): string; + /** NullOrder enum. */ + enum NullOrder { + NULL_ORDER_UNSPECIFIED = 0, + NULLS_FIRST = 1, + NULLS_LAST = 2, + NOT_NULL = 3 + } + } } - /** Properties of a MultiplexedSessionPrecommitToken. */ - interface IMultiplexedSessionPrecommitToken { + /** Properties of a RecipeList. */ + interface IRecipeList { - /** MultiplexedSessionPrecommitToken precommitToken */ - precommitToken?: (Uint8Array|Buffer|string|null); + /** RecipeList schemaGeneration */ + schemaGeneration?: (Uint8Array|Buffer|string|null); - /** MultiplexedSessionPrecommitToken seqNum */ - seqNum?: (number|null); + /** RecipeList recipe */ + recipe?: (google.spanner.v1.IKeyRecipe[]|null); } - /** Represents a MultiplexedSessionPrecommitToken. */ - class MultiplexedSessionPrecommitToken implements IMultiplexedSessionPrecommitToken { + /** Represents a RecipeList. */ + class RecipeList implements IRecipeList { /** - * Constructs a new MultiplexedSessionPrecommitToken. + * Constructs a new RecipeList. * @param [properties] Properties to set */ - constructor(properties?: google.spanner.v1.IMultiplexedSessionPrecommitToken); + constructor(properties?: google.spanner.v1.IRecipeList); - /** MultiplexedSessionPrecommitToken precommitToken. */ - public precommitToken: (Uint8Array|Buffer|string); + /** RecipeList schemaGeneration. */ + public schemaGeneration: (Uint8Array|Buffer|string); - /** MultiplexedSessionPrecommitToken seqNum. */ - public seqNum: number; + /** RecipeList recipe. */ + public recipe: google.spanner.v1.IKeyRecipe[]; /** - * Creates a new MultiplexedSessionPrecommitToken instance using the specified properties. + * Creates a new RecipeList instance using the specified properties. * @param [properties] Properties to set - * @returns MultiplexedSessionPrecommitToken instance + * @returns RecipeList instance */ - public static create(properties?: google.spanner.v1.IMultiplexedSessionPrecommitToken): google.spanner.v1.MultiplexedSessionPrecommitToken; + public static create(properties?: google.spanner.v1.IRecipeList): google.spanner.v1.RecipeList; /** - * Encodes the specified MultiplexedSessionPrecommitToken message. Does not implicitly {@link google.spanner.v1.MultiplexedSessionPrecommitToken.verify|verify} messages. - * @param message MultiplexedSessionPrecommitToken message or plain object to encode + * Encodes the specified RecipeList message. Does not implicitly {@link google.spanner.v1.RecipeList.verify|verify} messages. + * @param message RecipeList message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.spanner.v1.IMultiplexedSessionPrecommitToken, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.spanner.v1.IRecipeList, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified MultiplexedSessionPrecommitToken message, length delimited. Does not implicitly {@link google.spanner.v1.MultiplexedSessionPrecommitToken.verify|verify} messages. - * @param message MultiplexedSessionPrecommitToken message or plain object to encode + * Encodes the specified RecipeList message, length delimited. Does not implicitly {@link google.spanner.v1.RecipeList.verify|verify} messages. + * @param message RecipeList message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.spanner.v1.IMultiplexedSessionPrecommitToken, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.spanner.v1.IRecipeList, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a MultiplexedSessionPrecommitToken message from the specified reader or buffer. + * Decodes a RecipeList message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns MultiplexedSessionPrecommitToken + * @returns RecipeList * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.MultiplexedSessionPrecommitToken; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.RecipeList; /** - * Decodes a MultiplexedSessionPrecommitToken message from the specified reader or buffer, length delimited. + * Decodes a RecipeList message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns MultiplexedSessionPrecommitToken + * @returns RecipeList * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.MultiplexedSessionPrecommitToken; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.RecipeList; /** - * Verifies a MultiplexedSessionPrecommitToken message. + * Verifies a RecipeList message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a MultiplexedSessionPrecommitToken message from a plain object. Also converts values to their respective internal types. + * Creates a RecipeList message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns MultiplexedSessionPrecommitToken + * @returns RecipeList */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.MultiplexedSessionPrecommitToken; + public static fromObject(object: { [k: string]: any }): google.spanner.v1.RecipeList; /** - * Creates a plain object from a MultiplexedSessionPrecommitToken message. Also converts values to other types if specified. - * @param message MultiplexedSessionPrecommitToken + * Creates a plain object from a RecipeList message. Also converts values to other types if specified. + * @param message RecipeList * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.spanner.v1.MultiplexedSessionPrecommitToken, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.spanner.v1.RecipeList, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this MultiplexedSessionPrecommitToken to JSON. + * Converts this RecipeList to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for MultiplexedSessionPrecommitToken + * Gets the default type url for RecipeList * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a KeyRange. */ - interface IKeyRange { + /** Properties of a CacheUpdate. */ + interface ICacheUpdate { - /** KeyRange startClosed */ - startClosed?: (google.protobuf.IListValue|null); + /** CacheUpdate databaseId */ + databaseId?: (number|Long|string|null); - /** KeyRange startOpen */ - startOpen?: (google.protobuf.IListValue|null); + /** CacheUpdate range */ + range?: (google.spanner.v1.IRange[]|null); - /** KeyRange endClosed */ - endClosed?: (google.protobuf.IListValue|null); + /** CacheUpdate group */ + group?: (google.spanner.v1.IGroup[]|null); - /** KeyRange endOpen */ - endOpen?: (google.protobuf.IListValue|null); + /** CacheUpdate keyRecipes */ + keyRecipes?: (google.spanner.v1.IRecipeList|null); } - /** Represents a KeyRange. */ - class KeyRange implements IKeyRange { + /** Represents a CacheUpdate. */ + class CacheUpdate implements ICacheUpdate { /** - * Constructs a new KeyRange. + * Constructs a new CacheUpdate. * @param [properties] Properties to set */ - constructor(properties?: google.spanner.v1.IKeyRange); - - /** KeyRange startClosed. */ - public startClosed?: (google.protobuf.IListValue|null); - - /** KeyRange startOpen. */ - public startOpen?: (google.protobuf.IListValue|null); + constructor(properties?: google.spanner.v1.ICacheUpdate); - /** KeyRange endClosed. */ - public endClosed?: (google.protobuf.IListValue|null); + /** CacheUpdate databaseId. */ + public databaseId: (number|Long|string); - /** KeyRange endOpen. */ - public endOpen?: (google.protobuf.IListValue|null); + /** CacheUpdate range. */ + public range: google.spanner.v1.IRange[]; - /** KeyRange startKeyType. */ - public startKeyType?: ("startClosed"|"startOpen"); + /** CacheUpdate group. */ + public group: google.spanner.v1.IGroup[]; - /** KeyRange endKeyType. */ - public endKeyType?: ("endClosed"|"endOpen"); + /** CacheUpdate keyRecipes. */ + public keyRecipes?: (google.spanner.v1.IRecipeList|null); /** - * Creates a new KeyRange instance using the specified properties. + * Creates a new CacheUpdate instance using the specified properties. * @param [properties] Properties to set - * @returns KeyRange instance + * @returns CacheUpdate instance */ - public static create(properties?: google.spanner.v1.IKeyRange): google.spanner.v1.KeyRange; + public static create(properties?: google.spanner.v1.ICacheUpdate): google.spanner.v1.CacheUpdate; /** - * Encodes the specified KeyRange message. Does not implicitly {@link google.spanner.v1.KeyRange.verify|verify} messages. - * @param message KeyRange message or plain object to encode + * Encodes the specified CacheUpdate message. Does not implicitly {@link google.spanner.v1.CacheUpdate.verify|verify} messages. + * @param message CacheUpdate message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.spanner.v1.IKeyRange, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.spanner.v1.ICacheUpdate, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified KeyRange message, length delimited. Does not implicitly {@link google.spanner.v1.KeyRange.verify|verify} messages. - * @param message KeyRange message or plain object to encode + * Encodes the specified CacheUpdate message, length delimited. Does not implicitly {@link google.spanner.v1.CacheUpdate.verify|verify} messages. + * @param message CacheUpdate message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.spanner.v1.IKeyRange, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.spanner.v1.ICacheUpdate, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a KeyRange message from the specified reader or buffer. + * Decodes a CacheUpdate message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns KeyRange + * @returns CacheUpdate * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.KeyRange; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.CacheUpdate; /** - * Decodes a KeyRange message from the specified reader or buffer, length delimited. + * Decodes a CacheUpdate message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns KeyRange + * @returns CacheUpdate * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.KeyRange; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.CacheUpdate; /** - * Verifies a KeyRange message. + * Verifies a CacheUpdate message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a KeyRange message from a plain object. Also converts values to their respective internal types. + * Creates a CacheUpdate message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns KeyRange + * @returns CacheUpdate */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.KeyRange; + public static fromObject(object: { [k: string]: any }): google.spanner.v1.CacheUpdate; /** - * Creates a plain object from a KeyRange message. Also converts values to other types if specified. - * @param message KeyRange + * Creates a plain object from a CacheUpdate message. Also converts values to other types if specified. + * @param message CacheUpdate * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.spanner.v1.KeyRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.spanner.v1.CacheUpdate, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this KeyRange to JSON. + * Converts this CacheUpdate to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for KeyRange + * Gets the default type url for CacheUpdate * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a KeySet. */ - interface IKeySet { + /** Properties of a RoutingHint. */ + interface IRoutingHint { - /** KeySet keys */ - keys?: (google.protobuf.IListValue[]|null); + /** RoutingHint operationUid */ + operationUid?: (number|Long|string|null); - /** KeySet ranges */ - ranges?: (google.spanner.v1.IKeyRange[]|null); + /** RoutingHint databaseId */ + databaseId?: (number|Long|string|null); - /** KeySet all */ - all?: (boolean|null); + /** RoutingHint schemaGeneration */ + schemaGeneration?: (Uint8Array|Buffer|string|null); + + /** RoutingHint key */ + key?: (Uint8Array|Buffer|string|null); + + /** RoutingHint limitKey */ + limitKey?: (Uint8Array|Buffer|string|null); + + /** RoutingHint groupUid */ + groupUid?: (number|Long|string|null); + + /** RoutingHint splitId */ + splitId?: (number|Long|string|null); + + /** RoutingHint tabletUid */ + tabletUid?: (number|Long|string|null); + + /** RoutingHint skippedTabletUid */ + skippedTabletUid?: (google.spanner.v1.RoutingHint.ISkippedTablet[]|null); + + /** RoutingHint clientLocation */ + clientLocation?: (string|null); } - /** Represents a KeySet. */ - class KeySet implements IKeySet { + /** Represents a RoutingHint. */ + class RoutingHint implements IRoutingHint { + + /** + * Constructs a new RoutingHint. + * @param [properties] Properties to set + */ + constructor(properties?: google.spanner.v1.IRoutingHint); + + /** RoutingHint operationUid. */ + public operationUid: (number|Long|string); + + /** RoutingHint databaseId. */ + public databaseId: (number|Long|string); + + /** RoutingHint schemaGeneration. */ + public schemaGeneration: (Uint8Array|Buffer|string); + + /** RoutingHint key. */ + public key: (Uint8Array|Buffer|string); + + /** RoutingHint limitKey. */ + public limitKey: (Uint8Array|Buffer|string); - /** - * Constructs a new KeySet. - * @param [properties] Properties to set - */ - constructor(properties?: google.spanner.v1.IKeySet); + /** RoutingHint groupUid. */ + public groupUid: (number|Long|string); - /** KeySet keys. */ - public keys: google.protobuf.IListValue[]; + /** RoutingHint splitId. */ + public splitId: (number|Long|string); - /** KeySet ranges. */ - public ranges: google.spanner.v1.IKeyRange[]; + /** RoutingHint tabletUid. */ + public tabletUid: (number|Long|string); - /** KeySet all. */ - public all: boolean; + /** RoutingHint skippedTabletUid. */ + public skippedTabletUid: google.spanner.v1.RoutingHint.ISkippedTablet[]; + + /** RoutingHint clientLocation. */ + public clientLocation: string; /** - * Creates a new KeySet instance using the specified properties. + * Creates a new RoutingHint instance using the specified properties. * @param [properties] Properties to set - * @returns KeySet instance + * @returns RoutingHint instance */ - public static create(properties?: google.spanner.v1.IKeySet): google.spanner.v1.KeySet; + public static create(properties?: google.spanner.v1.IRoutingHint): google.spanner.v1.RoutingHint; /** - * Encodes the specified KeySet message. Does not implicitly {@link google.spanner.v1.KeySet.verify|verify} messages. - * @param message KeySet message or plain object to encode + * Encodes the specified RoutingHint message. Does not implicitly {@link google.spanner.v1.RoutingHint.verify|verify} messages. + * @param message RoutingHint message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.spanner.v1.IKeySet, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.spanner.v1.IRoutingHint, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified KeySet message, length delimited. Does not implicitly {@link google.spanner.v1.KeySet.verify|verify} messages. - * @param message KeySet message or plain object to encode + * Encodes the specified RoutingHint message, length delimited. Does not implicitly {@link google.spanner.v1.RoutingHint.verify|verify} messages. + * @param message RoutingHint message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.spanner.v1.IKeySet, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.spanner.v1.IRoutingHint, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a KeySet message from the specified reader or buffer. + * Decodes a RoutingHint message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns KeySet + * @returns RoutingHint * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.KeySet; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.RoutingHint; /** - * Decodes a KeySet message from the specified reader or buffer, length delimited. + * Decodes a RoutingHint message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns KeySet + * @returns RoutingHint * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.KeySet; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.RoutingHint; /** - * Verifies a KeySet message. + * Verifies a RoutingHint message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a KeySet message from a plain object. Also converts values to their respective internal types. + * Creates a RoutingHint message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns KeySet + * @returns RoutingHint */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.KeySet; + public static fromObject(object: { [k: string]: any }): google.spanner.v1.RoutingHint; /** - * Creates a plain object from a KeySet message. Also converts values to other types if specified. - * @param message KeySet + * Creates a plain object from a RoutingHint message. Also converts values to other types if specified. + * @param message RoutingHint * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.spanner.v1.KeySet, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.spanner.v1.RoutingHint, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this KeySet to JSON. + * Converts this RoutingHint to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for KeySet + * Gets the default type url for RoutingHint * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a Range. */ - interface IRange { + namespace RoutingHint { - /** Range startKey */ - startKey?: (Uint8Array|Buffer|string|null); + /** Properties of a SkippedTablet. */ + interface ISkippedTablet { - /** Range limitKey */ - limitKey?: (Uint8Array|Buffer|string|null); + /** SkippedTablet tabletUid */ + tabletUid?: (number|Long|string|null); - /** Range groupUid */ - groupUid?: (number|Long|string|null); + /** SkippedTablet incarnation */ + incarnation?: (Uint8Array|Buffer|string|null); + } - /** Range splitId */ - splitId?: (number|Long|string|null); + /** Represents a SkippedTablet. */ + class SkippedTablet implements ISkippedTablet { - /** Range generation */ - generation?: (Uint8Array|Buffer|string|null); + /** + * Constructs a new SkippedTablet. + * @param [properties] Properties to set + */ + constructor(properties?: google.spanner.v1.RoutingHint.ISkippedTablet); + + /** SkippedTablet tabletUid. */ + public tabletUid: (number|Long|string); + + /** SkippedTablet incarnation. */ + public incarnation: (Uint8Array|Buffer|string); + + /** + * Creates a new SkippedTablet instance using the specified properties. + * @param [properties] Properties to set + * @returns SkippedTablet instance + */ + public static create(properties?: google.spanner.v1.RoutingHint.ISkippedTablet): google.spanner.v1.RoutingHint.SkippedTablet; + + /** + * Encodes the specified SkippedTablet message. Does not implicitly {@link google.spanner.v1.RoutingHint.SkippedTablet.verify|verify} messages. + * @param message SkippedTablet message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.spanner.v1.RoutingHint.ISkippedTablet, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified SkippedTablet message, length delimited. Does not implicitly {@link google.spanner.v1.RoutingHint.SkippedTablet.verify|verify} messages. + * @param message SkippedTablet message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.spanner.v1.RoutingHint.ISkippedTablet, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a SkippedTablet message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns SkippedTablet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.RoutingHint.SkippedTablet; + + /** + * Decodes a SkippedTablet message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns SkippedTablet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.RoutingHint.SkippedTablet; + + /** + * Verifies a SkippedTablet message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a SkippedTablet message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns SkippedTablet + */ + public static fromObject(object: { [k: string]: any }): google.spanner.v1.RoutingHint.SkippedTablet; + + /** + * Creates a plain object from a SkippedTablet message. Also converts values to other types if specified. + * @param message SkippedTablet + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.spanner.v1.RoutingHint.SkippedTablet, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this SkippedTablet to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for SkippedTablet + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } } - /** Represents a Range. */ - class Range implements IRange { + /** Properties of a Type. */ + interface IType { + + /** Type code */ + code?: (google.spanner.v1.TypeCode|keyof typeof google.spanner.v1.TypeCode|null); + + /** Type arrayElementType */ + arrayElementType?: (google.spanner.v1.IType|null); + + /** Type structType */ + structType?: (google.spanner.v1.IStructType|null); + + /** Type typeAnnotation */ + typeAnnotation?: (google.spanner.v1.TypeAnnotationCode|keyof typeof google.spanner.v1.TypeAnnotationCode|null); + + /** Type protoTypeFqn */ + protoTypeFqn?: (string|null); + } + + /** Represents a Type. */ + class Type implements IType { /** - * Constructs a new Range. + * Constructs a new Type. * @param [properties] Properties to set */ - constructor(properties?: google.spanner.v1.IRange); + constructor(properties?: google.spanner.v1.IType); - /** Range startKey. */ - public startKey: (Uint8Array|Buffer|string); + /** Type code. */ + public code: (google.spanner.v1.TypeCode|keyof typeof google.spanner.v1.TypeCode); - /** Range limitKey. */ - public limitKey: (Uint8Array|Buffer|string); + /** Type arrayElementType. */ + public arrayElementType?: (google.spanner.v1.IType|null); - /** Range groupUid. */ - public groupUid: (number|Long|string); + /** Type structType. */ + public structType?: (google.spanner.v1.IStructType|null); - /** Range splitId. */ - public splitId: (number|Long|string); + /** Type typeAnnotation. */ + public typeAnnotation: (google.spanner.v1.TypeAnnotationCode|keyof typeof google.spanner.v1.TypeAnnotationCode); - /** Range generation. */ - public generation: (Uint8Array|Buffer|string); + /** Type protoTypeFqn. */ + public protoTypeFqn: string; /** - * Creates a new Range instance using the specified properties. + * Creates a new Type instance using the specified properties. * @param [properties] Properties to set - * @returns Range instance + * @returns Type instance */ - public static create(properties?: google.spanner.v1.IRange): google.spanner.v1.Range; + public static create(properties?: google.spanner.v1.IType): google.spanner.v1.Type; /** - * Encodes the specified Range message. Does not implicitly {@link google.spanner.v1.Range.verify|verify} messages. - * @param message Range message or plain object to encode + * Encodes the specified Type message. Does not implicitly {@link google.spanner.v1.Type.verify|verify} messages. + * @param message Type message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.spanner.v1.IRange, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.spanner.v1.IType, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Range message, length delimited. Does not implicitly {@link google.spanner.v1.Range.verify|verify} messages. - * @param message Range message or plain object to encode + * Encodes the specified Type message, length delimited. Does not implicitly {@link google.spanner.v1.Type.verify|verify} messages. + * @param message Type message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.spanner.v1.IRange, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.spanner.v1.IType, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Range message from the specified reader or buffer. + * Decodes a Type message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Range + * @returns Type * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.Range; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.Type; /** - * Decodes a Range message from the specified reader or buffer, length delimited. + * Decodes a Type message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Range + * @returns Type * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.Range; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.Type; /** - * Verifies a Range message. + * Verifies a Type message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Range message from a plain object. Also converts values to their respective internal types. + * Creates a Type message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Range + * @returns Type */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.Range; + public static fromObject(object: { [k: string]: any }): google.spanner.v1.Type; /** - * Creates a plain object from a Range message. Also converts values to other types if specified. - * @param message Range + * Creates a plain object from a Type message. Also converts values to other types if specified. + * @param message Type * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.spanner.v1.Range, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.spanner.v1.Type, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Range to JSON. + * Converts this Type to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for Range + * Gets the default type url for Type * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a Tablet. */ - interface ITablet { - - /** Tablet tabletUid */ - tabletUid?: (number|Long|string|null); - - /** Tablet serverAddress */ - serverAddress?: (string|null); - - /** Tablet location */ - location?: (string|null); - - /** Tablet role */ - role?: (google.spanner.v1.Tablet.Role|keyof typeof google.spanner.v1.Tablet.Role|null); - - /** Tablet incarnation */ - incarnation?: (Uint8Array|Buffer|string|null); - - /** Tablet distance */ - distance?: (number|null); + /** Properties of a StructType. */ + interface IStructType { - /** Tablet skip */ - skip?: (boolean|null); + /** StructType fields */ + fields?: (google.spanner.v1.StructType.IField[]|null); } - /** Represents a Tablet. */ - class Tablet implements ITablet { + /** Represents a StructType. */ + class StructType implements IStructType { /** - * Constructs a new Tablet. + * Constructs a new StructType. * @param [properties] Properties to set */ - constructor(properties?: google.spanner.v1.ITablet); - - /** Tablet tabletUid. */ - public tabletUid: (number|Long|string); - - /** Tablet serverAddress. */ - public serverAddress: string; - - /** Tablet location. */ - public location: string; - - /** Tablet role. */ - public role: (google.spanner.v1.Tablet.Role|keyof typeof google.spanner.v1.Tablet.Role); - - /** Tablet incarnation. */ - public incarnation: (Uint8Array|Buffer|string); - - /** Tablet distance. */ - public distance: number; + constructor(properties?: google.spanner.v1.IStructType); - /** Tablet skip. */ - public skip: boolean; + /** StructType fields. */ + public fields: google.spanner.v1.StructType.IField[]; /** - * Creates a new Tablet instance using the specified properties. + * Creates a new StructType instance using the specified properties. * @param [properties] Properties to set - * @returns Tablet instance + * @returns StructType instance */ - public static create(properties?: google.spanner.v1.ITablet): google.spanner.v1.Tablet; + public static create(properties?: google.spanner.v1.IStructType): google.spanner.v1.StructType; /** - * Encodes the specified Tablet message. Does not implicitly {@link google.spanner.v1.Tablet.verify|verify} messages. - * @param message Tablet message or plain object to encode + * Encodes the specified StructType message. Does not implicitly {@link google.spanner.v1.StructType.verify|verify} messages. + * @param message StructType message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.spanner.v1.ITablet, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.spanner.v1.IStructType, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Tablet message, length delimited. Does not implicitly {@link google.spanner.v1.Tablet.verify|verify} messages. - * @param message Tablet message or plain object to encode + * Encodes the specified StructType message, length delimited. Does not implicitly {@link google.spanner.v1.StructType.verify|verify} messages. + * @param message StructType message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.spanner.v1.ITablet, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.spanner.v1.IStructType, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Tablet message from the specified reader or buffer. + * Decodes a StructType message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Tablet + * @returns StructType * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.Tablet; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.StructType; /** - * Decodes a Tablet message from the specified reader or buffer, length delimited. + * Decodes a StructType message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Tablet + * @returns StructType * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.Tablet; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.StructType; /** - * Verifies a Tablet message. + * Verifies a StructType message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Tablet message from a plain object. Also converts values to their respective internal types. + * Creates a StructType message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Tablet + * @returns StructType */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.Tablet; + public static fromObject(object: { [k: string]: any }): google.spanner.v1.StructType; /** - * Creates a plain object from a Tablet message. Also converts values to other types if specified. - * @param message Tablet + * Creates a plain object from a StructType message. Also converts values to other types if specified. + * @param message StructType * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.spanner.v1.Tablet, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.spanner.v1.StructType, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Tablet to JSON. + * Converts this StructType to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for Tablet + * Gets the default type url for StructType * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - namespace Tablet { + namespace StructType { + + /** Properties of a Field. */ + interface IField { + + /** Field name */ + name?: (string|null); + + /** Field type */ + type?: (google.spanner.v1.IType|null); + } + + /** Represents a Field. */ + class Field implements IField { + + /** + * Constructs a new Field. + * @param [properties] Properties to set + */ + constructor(properties?: google.spanner.v1.StructType.IField); + + /** Field name. */ + public name: string; + + /** Field type. */ + public type?: (google.spanner.v1.IType|null); + + /** + * Creates a new Field instance using the specified properties. + * @param [properties] Properties to set + * @returns Field instance + */ + public static create(properties?: google.spanner.v1.StructType.IField): google.spanner.v1.StructType.Field; + + /** + * Encodes the specified Field message. Does not implicitly {@link google.spanner.v1.StructType.Field.verify|verify} messages. + * @param message Field message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.spanner.v1.StructType.IField, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Encodes the specified Field message, length delimited. Does not implicitly {@link google.spanner.v1.StructType.Field.verify|verify} messages. + * @param message Field message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.spanner.v1.StructType.IField, writer?: $protobuf.Writer): $protobuf.Writer; + + /** + * Decodes a Field message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns Field + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.StructType.Field; + + /** + * Decodes a Field message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns Field + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.StructType.Field; + + /** + * Verifies a Field message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a Field message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns Field + */ + public static fromObject(object: { [k: string]: any }): google.spanner.v1.StructType.Field; + + /** + * Creates a plain object from a Field message. Also converts values to other types if specified. + * @param message Field + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.spanner.v1.StructType.Field, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this Field to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for Field + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + } + + /** TypeCode enum. */ + enum TypeCode { + TYPE_CODE_UNSPECIFIED = 0, + BOOL = 1, + INT64 = 2, + FLOAT64 = 3, + FLOAT32 = 15, + TIMESTAMP = 4, + DATE = 5, + STRING = 6, + BYTES = 7, + ARRAY = 8, + STRUCT = 9, + NUMERIC = 10, + JSON = 11, + PROTO = 13, + ENUM = 14, + INTERVAL = 16, + UUID = 17 + } - /** Role enum. */ - enum Role { - ROLE_UNSPECIFIED = 0, - READ_WRITE = 1, - READ_ONLY = 2 - } + /** TypeAnnotationCode enum. */ + enum TypeAnnotationCode { + TYPE_ANNOTATION_CODE_UNSPECIFIED = 0, + PG_NUMERIC = 2, + PG_JSONB = 3, + PG_OID = 4 } - /** Properties of a Group. */ - interface IGroup { + /** Properties of a TransactionOptions. */ + interface ITransactionOptions { - /** Group groupUid */ - groupUid?: (number|Long|string|null); + /** TransactionOptions readWrite */ + readWrite?: (google.spanner.v1.TransactionOptions.IReadWrite|null); - /** Group tablets */ - tablets?: (google.spanner.v1.ITablet[]|null); + /** TransactionOptions partitionedDml */ + partitionedDml?: (google.spanner.v1.TransactionOptions.IPartitionedDml|null); - /** Group leaderIndex */ - leaderIndex?: (number|null); + /** TransactionOptions readOnly */ + readOnly?: (google.spanner.v1.TransactionOptions.IReadOnly|null); - /** Group generation */ - generation?: (Uint8Array|Buffer|string|null); + /** TransactionOptions excludeTxnFromChangeStreams */ + excludeTxnFromChangeStreams?: (boolean|null); + + /** TransactionOptions isolationLevel */ + isolationLevel?: (google.spanner.v1.TransactionOptions.IsolationLevel|keyof typeof google.spanner.v1.TransactionOptions.IsolationLevel|null); } - /** Represents a Group. */ - class Group implements IGroup { + /** Represents a TransactionOptions. */ + class TransactionOptions implements ITransactionOptions { /** - * Constructs a new Group. + * Constructs a new TransactionOptions. * @param [properties] Properties to set */ - constructor(properties?: google.spanner.v1.IGroup); + constructor(properties?: google.spanner.v1.ITransactionOptions); - /** Group groupUid. */ - public groupUid: (number|Long|string); + /** TransactionOptions readWrite. */ + public readWrite?: (google.spanner.v1.TransactionOptions.IReadWrite|null); - /** Group tablets. */ - public tablets: google.spanner.v1.ITablet[]; + /** TransactionOptions partitionedDml. */ + public partitionedDml?: (google.spanner.v1.TransactionOptions.IPartitionedDml|null); - /** Group leaderIndex. */ - public leaderIndex: number; + /** TransactionOptions readOnly. */ + public readOnly?: (google.spanner.v1.TransactionOptions.IReadOnly|null); - /** Group generation. */ - public generation: (Uint8Array|Buffer|string); + /** TransactionOptions excludeTxnFromChangeStreams. */ + public excludeTxnFromChangeStreams: boolean; + + /** TransactionOptions isolationLevel. */ + public isolationLevel: (google.spanner.v1.TransactionOptions.IsolationLevel|keyof typeof google.spanner.v1.TransactionOptions.IsolationLevel); + + /** TransactionOptions mode. */ + public mode?: ("readWrite"|"partitionedDml"|"readOnly"); /** - * Creates a new Group instance using the specified properties. + * Creates a new TransactionOptions instance using the specified properties. * @param [properties] Properties to set - * @returns Group instance + * @returns TransactionOptions instance */ - public static create(properties?: google.spanner.v1.IGroup): google.spanner.v1.Group; + public static create(properties?: google.spanner.v1.ITransactionOptions): google.spanner.v1.TransactionOptions; /** - * Encodes the specified Group message. Does not implicitly {@link google.spanner.v1.Group.verify|verify} messages. - * @param message Group message or plain object to encode + * Encodes the specified TransactionOptions message. Does not implicitly {@link google.spanner.v1.TransactionOptions.verify|verify} messages. + * @param message TransactionOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.spanner.v1.IGroup, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.spanner.v1.ITransactionOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Group message, length delimited. Does not implicitly {@link google.spanner.v1.Group.verify|verify} messages. - * @param message Group message or plain object to encode + * Encodes the specified TransactionOptions message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionOptions.verify|verify} messages. + * @param message TransactionOptions message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.spanner.v1.IGroup, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.spanner.v1.ITransactionOptions, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Group message from the specified reader or buffer. + * Decodes a TransactionOptions message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Group + * @returns TransactionOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.Group; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.TransactionOptions; /** - * Decodes a Group message from the specified reader or buffer, length delimited. + * Decodes a TransactionOptions message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Group + * @returns TransactionOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.Group; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.TransactionOptions; /** - * Verifies a Group message. + * Verifies a TransactionOptions message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Group message from a plain object. Also converts values to their respective internal types. + * Creates a TransactionOptions message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Group + * @returns TransactionOptions */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.Group; + public static fromObject(object: { [k: string]: any }): google.spanner.v1.TransactionOptions; /** - * Creates a plain object from a Group message. Also converts values to other types if specified. - * @param message Group + * Creates a plain object from a TransactionOptions message. Also converts values to other types if specified. + * @param message TransactionOptions * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.spanner.v1.Group, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.spanner.v1.TransactionOptions, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Group to JSON. + * Converts this TransactionOptions to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for Group + * Gets the default type url for TransactionOptions * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a KeyRecipe. */ - interface IKeyRecipe { + namespace TransactionOptions { - /** KeyRecipe tableName */ - tableName?: (string|null); + /** Properties of a ReadWrite. */ + interface IReadWrite { - /** KeyRecipe indexName */ - indexName?: (string|null); + /** ReadWrite readLockMode */ + readLockMode?: (google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode|keyof typeof google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode|null); - /** KeyRecipe operationUid */ - operationUid?: (number|Long|string|null); + /** ReadWrite multiplexedSessionPreviousTransactionId */ + multiplexedSessionPreviousTransactionId?: (Uint8Array|Buffer|string|null); + } - /** KeyRecipe part */ - part?: (google.spanner.v1.KeyRecipe.IPart[]|null); - } + /** Represents a ReadWrite. */ + class ReadWrite implements IReadWrite { - /** Represents a KeyRecipe. */ - class KeyRecipe implements IKeyRecipe { + /** + * Constructs a new ReadWrite. + * @param [properties] Properties to set + */ + constructor(properties?: google.spanner.v1.TransactionOptions.IReadWrite); - /** - * Constructs a new KeyRecipe. - * @param [properties] Properties to set - */ - constructor(properties?: google.spanner.v1.IKeyRecipe); + /** ReadWrite readLockMode. */ + public readLockMode: (google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode|keyof typeof google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode); - /** KeyRecipe tableName. */ - public tableName?: (string|null); + /** ReadWrite multiplexedSessionPreviousTransactionId. */ + public multiplexedSessionPreviousTransactionId: (Uint8Array|Buffer|string); - /** KeyRecipe indexName. */ - public indexName?: (string|null); + /** + * Creates a new ReadWrite instance using the specified properties. + * @param [properties] Properties to set + * @returns ReadWrite instance + */ + public static create(properties?: google.spanner.v1.TransactionOptions.IReadWrite): google.spanner.v1.TransactionOptions.ReadWrite; - /** KeyRecipe operationUid. */ - public operationUid?: (number|Long|string|null); + /** + * Encodes the specified ReadWrite message. Does not implicitly {@link google.spanner.v1.TransactionOptions.ReadWrite.verify|verify} messages. + * @param message ReadWrite message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.spanner.v1.TransactionOptions.IReadWrite, writer?: $protobuf.Writer): $protobuf.Writer; - /** KeyRecipe part. */ - public part: google.spanner.v1.KeyRecipe.IPart[]; + /** + * Encodes the specified ReadWrite message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionOptions.ReadWrite.verify|verify} messages. + * @param message ReadWrite message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.spanner.v1.TransactionOptions.IReadWrite, writer?: $protobuf.Writer): $protobuf.Writer; - /** KeyRecipe target. */ - public target?: ("tableName"|"indexName"|"operationUid"); + /** + * Decodes a ReadWrite message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns ReadWrite + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.TransactionOptions.ReadWrite; - /** - * Creates a new KeyRecipe instance using the specified properties. - * @param [properties] Properties to set - * @returns KeyRecipe instance - */ - public static create(properties?: google.spanner.v1.IKeyRecipe): google.spanner.v1.KeyRecipe; + /** + * Decodes a ReadWrite message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns ReadWrite + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.TransactionOptions.ReadWrite; - /** - * Encodes the specified KeyRecipe message. Does not implicitly {@link google.spanner.v1.KeyRecipe.verify|verify} messages. - * @param message KeyRecipe message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.spanner.v1.IKeyRecipe, writer?: $protobuf.Writer): $protobuf.Writer; + /** + * Verifies a ReadWrite message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); + + /** + * Creates a ReadWrite message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns ReadWrite + */ + public static fromObject(object: { [k: string]: any }): google.spanner.v1.TransactionOptions.ReadWrite; + + /** + * Creates a plain object from a ReadWrite message. Also converts values to other types if specified. + * @param message ReadWrite + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.spanner.v1.TransactionOptions.ReadWrite, options?: $protobuf.IConversionOptions): { [k: string]: any }; + + /** + * Converts this ReadWrite to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; + + /** + * Gets the default type url for ReadWrite + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } + + namespace ReadWrite { + + /** ReadLockMode enum. */ + enum ReadLockMode { + READ_LOCK_MODE_UNSPECIFIED = 0, + PESSIMISTIC = 1, + OPTIMISTIC = 2 + } + } + + /** Properties of a PartitionedDml. */ + interface IPartitionedDml { + } - /** - * Encodes the specified KeyRecipe message, length delimited. Does not implicitly {@link google.spanner.v1.KeyRecipe.verify|verify} messages. - * @param message KeyRecipe message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.spanner.v1.IKeyRecipe, writer?: $protobuf.Writer): $protobuf.Writer; + /** Represents a PartitionedDml. */ + class PartitionedDml implements IPartitionedDml { - /** - * Decodes a KeyRecipe message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns KeyRecipe - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.KeyRecipe; + /** + * Constructs a new PartitionedDml. + * @param [properties] Properties to set + */ + constructor(properties?: google.spanner.v1.TransactionOptions.IPartitionedDml); - /** - * Decodes a KeyRecipe message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns KeyRecipe - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.KeyRecipe; + /** + * Creates a new PartitionedDml instance using the specified properties. + * @param [properties] Properties to set + * @returns PartitionedDml instance + */ + public static create(properties?: google.spanner.v1.TransactionOptions.IPartitionedDml): google.spanner.v1.TransactionOptions.PartitionedDml; - /** - * Verifies a KeyRecipe message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); + /** + * Encodes the specified PartitionedDml message. Does not implicitly {@link google.spanner.v1.TransactionOptions.PartitionedDml.verify|verify} messages. + * @param message PartitionedDml message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encode(message: google.spanner.v1.TransactionOptions.IPartitionedDml, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Creates a KeyRecipe message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns KeyRecipe - */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.KeyRecipe; + /** + * Encodes the specified PartitionedDml message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionOptions.PartitionedDml.verify|verify} messages. + * @param message PartitionedDml message or plain object to encode + * @param [writer] Writer to encode to + * @returns Writer + */ + public static encodeDelimited(message: google.spanner.v1.TransactionOptions.IPartitionedDml, writer?: $protobuf.Writer): $protobuf.Writer; - /** - * Creates a plain object from a KeyRecipe message. Also converts values to other types if specified. - * @param message KeyRecipe - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.spanner.v1.KeyRecipe, options?: $protobuf.IConversionOptions): { [k: string]: any }; + /** + * Decodes a PartitionedDml message from the specified reader or buffer. + * @param reader Reader or buffer to decode from + * @param [length] Message length if known beforehand + * @returns PartitionedDml + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.TransactionOptions.PartitionedDml; - /** - * Converts this KeyRecipe to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; + /** + * Decodes a PartitionedDml message from the specified reader or buffer, length delimited. + * @param reader Reader or buffer to decode from + * @returns PartitionedDml + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.TransactionOptions.PartitionedDml; - /** - * Gets the default type url for KeyRecipe - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ - public static getTypeUrl(typeUrlPrefix?: string): string; - } + /** + * Verifies a PartitionedDml message. + * @param message Plain object to verify + * @returns `null` if valid, otherwise the reason why it is not + */ + public static verify(message: { [k: string]: any }): (string|null); - namespace KeyRecipe { + /** + * Creates a PartitionedDml message from a plain object. Also converts values to their respective internal types. + * @param object Plain object + * @returns PartitionedDml + */ + public static fromObject(object: { [k: string]: any }): google.spanner.v1.TransactionOptions.PartitionedDml; - /** Properties of a Part. */ - interface IPart { + /** + * Creates a plain object from a PartitionedDml message. Also converts values to other types if specified. + * @param message PartitionedDml + * @param [options] Conversion options + * @returns Plain object + */ + public static toObject(message: google.spanner.v1.TransactionOptions.PartitionedDml, options?: $protobuf.IConversionOptions): { [k: string]: any }; - /** Part tag */ - tag?: (number|null); + /** + * Converts this PartitionedDml to JSON. + * @returns JSON object + */ + public toJSON(): { [k: string]: any }; - /** Part order */ - order?: (google.spanner.v1.KeyRecipe.Part.Order|keyof typeof google.spanner.v1.KeyRecipe.Part.Order|null); + /** + * Gets the default type url for PartitionedDml + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } - /** Part nullOrder */ - nullOrder?: (google.spanner.v1.KeyRecipe.Part.NullOrder|keyof typeof google.spanner.v1.KeyRecipe.Part.NullOrder|null); + /** Properties of a ReadOnly. */ + interface IReadOnly { - /** Part type */ - type?: (google.spanner.v1.IType|null); + /** ReadOnly strong */ + strong?: (boolean|null); - /** Part identifier */ - identifier?: (string|null); + /** ReadOnly minReadTimestamp */ + minReadTimestamp?: (google.protobuf.ITimestamp|null); - /** Part value */ - value?: (google.protobuf.IValue|null); + /** ReadOnly maxStaleness */ + maxStaleness?: (google.protobuf.IDuration|null); - /** Part random */ - random?: (boolean|null); + /** ReadOnly readTimestamp */ + readTimestamp?: (google.protobuf.ITimestamp|null); - /** Part structIdentifiers */ - structIdentifiers?: (number[]|null); + /** ReadOnly exactStaleness */ + exactStaleness?: (google.protobuf.IDuration|null); + + /** ReadOnly returnReadTimestamp */ + returnReadTimestamp?: (boolean|null); } - /** Represents a Part. */ - class Part implements IPart { + /** Represents a ReadOnly. */ + class ReadOnly implements IReadOnly { /** - * Constructs a new Part. + * Constructs a new ReadOnly. * @param [properties] Properties to set */ - constructor(properties?: google.spanner.v1.KeyRecipe.IPart); - - /** Part tag. */ - public tag: number; - - /** Part order. */ - public order: (google.spanner.v1.KeyRecipe.Part.Order|keyof typeof google.spanner.v1.KeyRecipe.Part.Order); + constructor(properties?: google.spanner.v1.TransactionOptions.IReadOnly); - /** Part nullOrder. */ - public nullOrder: (google.spanner.v1.KeyRecipe.Part.NullOrder|keyof typeof google.spanner.v1.KeyRecipe.Part.NullOrder); + /** ReadOnly strong. */ + public strong?: (boolean|null); - /** Part type. */ - public type?: (google.spanner.v1.IType|null); + /** ReadOnly minReadTimestamp. */ + public minReadTimestamp?: (google.protobuf.ITimestamp|null); - /** Part identifier. */ - public identifier?: (string|null); + /** ReadOnly maxStaleness. */ + public maxStaleness?: (google.protobuf.IDuration|null); - /** Part value. */ - public value?: (google.protobuf.IValue|null); + /** ReadOnly readTimestamp. */ + public readTimestamp?: (google.protobuf.ITimestamp|null); - /** Part random. */ - public random?: (boolean|null); + /** ReadOnly exactStaleness. */ + public exactStaleness?: (google.protobuf.IDuration|null); - /** Part structIdentifiers. */ - public structIdentifiers: number[]; + /** ReadOnly returnReadTimestamp. */ + public returnReadTimestamp: boolean; - /** Part valueType. */ - public valueType?: ("identifier"|"value"|"random"); + /** ReadOnly timestampBound. */ + public timestampBound?: ("strong"|"minReadTimestamp"|"maxStaleness"|"readTimestamp"|"exactStaleness"); /** - * Creates a new Part instance using the specified properties. + * Creates a new ReadOnly instance using the specified properties. * @param [properties] Properties to set - * @returns Part instance + * @returns ReadOnly instance */ - public static create(properties?: google.spanner.v1.KeyRecipe.IPart): google.spanner.v1.KeyRecipe.Part; + public static create(properties?: google.spanner.v1.TransactionOptions.IReadOnly): google.spanner.v1.TransactionOptions.ReadOnly; /** - * Encodes the specified Part message. Does not implicitly {@link google.spanner.v1.KeyRecipe.Part.verify|verify} messages. - * @param message Part message or plain object to encode + * Encodes the specified ReadOnly message. Does not implicitly {@link google.spanner.v1.TransactionOptions.ReadOnly.verify|verify} messages. + * @param message ReadOnly message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.spanner.v1.KeyRecipe.IPart, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.spanner.v1.TransactionOptions.IReadOnly, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Part message, length delimited. Does not implicitly {@link google.spanner.v1.KeyRecipe.Part.verify|verify} messages. - * @param message Part message or plain object to encode + * Encodes the specified ReadOnly message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionOptions.ReadOnly.verify|verify} messages. + * @param message ReadOnly message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.spanner.v1.KeyRecipe.IPart, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.spanner.v1.TransactionOptions.IReadOnly, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Part message from the specified reader or buffer. + * Decodes a ReadOnly message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Part + * @returns ReadOnly * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.KeyRecipe.Part; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.TransactionOptions.ReadOnly; /** - * Decodes a Part message from the specified reader or buffer, length delimited. + * Decodes a ReadOnly message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Part + * @returns ReadOnly * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.KeyRecipe.Part; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.TransactionOptions.ReadOnly; /** - * Verifies a Part message. + * Verifies a ReadOnly message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Part message from a plain object. Also converts values to their respective internal types. + * Creates a ReadOnly message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Part + * @returns ReadOnly */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.KeyRecipe.Part; + public static fromObject(object: { [k: string]: any }): google.spanner.v1.TransactionOptions.ReadOnly; /** - * Creates a plain object from a Part message. Also converts values to other types if specified. - * @param message Part + * Creates a plain object from a ReadOnly message. Also converts values to other types if specified. + * @param message ReadOnly * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.spanner.v1.KeyRecipe.Part, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.spanner.v1.TransactionOptions.ReadOnly, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Part to JSON. + * Converts this ReadOnly to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for Part + * Gets the default type url for ReadOnly * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - namespace Part { - - /** Order enum. */ - enum Order { - ORDER_UNSPECIFIED = 0, - ASCENDING = 1, - DESCENDING = 2 - } - - /** NullOrder enum. */ - enum NullOrder { - NULL_ORDER_UNSPECIFIED = 0, - NULLS_FIRST = 1, - NULLS_LAST = 2, - NOT_NULL = 3 - } + /** IsolationLevel enum. */ + enum IsolationLevel { + ISOLATION_LEVEL_UNSPECIFIED = 0, + SERIALIZABLE = 1, + REPEATABLE_READ = 2 } } - /** Properties of a RecipeList. */ - interface IRecipeList { + /** Properties of a Transaction. */ + interface ITransaction { - /** RecipeList schemaGeneration */ - schemaGeneration?: (Uint8Array|Buffer|string|null); + /** Transaction id */ + id?: (Uint8Array|Buffer|string|null); - /** RecipeList recipe */ - recipe?: (google.spanner.v1.IKeyRecipe[]|null); + /** Transaction readTimestamp */ + readTimestamp?: (google.protobuf.ITimestamp|null); + + /** Transaction precommitToken */ + precommitToken?: (google.spanner.v1.IMultiplexedSessionPrecommitToken|null); + + /** Transaction cacheUpdate */ + cacheUpdate?: (google.spanner.v1.ICacheUpdate|null); } - /** Represents a RecipeList. */ - class RecipeList implements IRecipeList { + /** Represents a Transaction. */ + class Transaction implements ITransaction { /** - * Constructs a new RecipeList. + * Constructs a new Transaction. * @param [properties] Properties to set */ - constructor(properties?: google.spanner.v1.IRecipeList); + constructor(properties?: google.spanner.v1.ITransaction); - /** RecipeList schemaGeneration. */ - public schemaGeneration: (Uint8Array|Buffer|string); + /** Transaction id. */ + public id: (Uint8Array|Buffer|string); - /** RecipeList recipe. */ - public recipe: google.spanner.v1.IKeyRecipe[]; + /** Transaction readTimestamp. */ + public readTimestamp?: (google.protobuf.ITimestamp|null); + + /** Transaction precommitToken. */ + public precommitToken?: (google.spanner.v1.IMultiplexedSessionPrecommitToken|null); + + /** Transaction cacheUpdate. */ + public cacheUpdate?: (google.spanner.v1.ICacheUpdate|null); /** - * Creates a new RecipeList instance using the specified properties. + * Creates a new Transaction instance using the specified properties. * @param [properties] Properties to set - * @returns RecipeList instance + * @returns Transaction instance */ - public static create(properties?: google.spanner.v1.IRecipeList): google.spanner.v1.RecipeList; + public static create(properties?: google.spanner.v1.ITransaction): google.spanner.v1.Transaction; /** - * Encodes the specified RecipeList message. Does not implicitly {@link google.spanner.v1.RecipeList.verify|verify} messages. - * @param message RecipeList message or plain object to encode + * Encodes the specified Transaction message. Does not implicitly {@link google.spanner.v1.Transaction.verify|verify} messages. + * @param message Transaction message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.spanner.v1.IRecipeList, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.spanner.v1.ITransaction, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified RecipeList message, length delimited. Does not implicitly {@link google.spanner.v1.RecipeList.verify|verify} messages. - * @param message RecipeList message or plain object to encode + * Encodes the specified Transaction message, length delimited. Does not implicitly {@link google.spanner.v1.Transaction.verify|verify} messages. + * @param message Transaction message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.spanner.v1.IRecipeList, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.spanner.v1.ITransaction, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a RecipeList message from the specified reader or buffer. + * Decodes a Transaction message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns RecipeList + * @returns Transaction * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.RecipeList; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.Transaction; /** - * Decodes a RecipeList message from the specified reader or buffer, length delimited. + * Decodes a Transaction message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns RecipeList + * @returns Transaction * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.RecipeList; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.Transaction; /** - * Verifies a RecipeList message. + * Verifies a Transaction message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a RecipeList message from a plain object. Also converts values to their respective internal types. + * Creates a Transaction message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns RecipeList + * @returns Transaction */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.RecipeList; + public static fromObject(object: { [k: string]: any }): google.spanner.v1.Transaction; /** - * Creates a plain object from a RecipeList message. Also converts values to other types if specified. - * @param message RecipeList + * Creates a plain object from a Transaction message. Also converts values to other types if specified. + * @param message Transaction * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.spanner.v1.RecipeList, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.spanner.v1.Transaction, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this RecipeList to JSON. + * Converts this Transaction to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for RecipeList + * Gets the default type url for Transaction * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a CacheUpdate. */ - interface ICacheUpdate { - - /** CacheUpdate databaseId */ - databaseId?: (number|Long|string|null); + /** Properties of a TransactionSelector. */ + interface ITransactionSelector { - /** CacheUpdate range */ - range?: (google.spanner.v1.IRange[]|null); + /** TransactionSelector singleUse */ + singleUse?: (google.spanner.v1.ITransactionOptions|null); - /** CacheUpdate group */ - group?: (google.spanner.v1.IGroup[]|null); + /** TransactionSelector id */ + id?: (Uint8Array|Buffer|string|null); - /** CacheUpdate keyRecipes */ - keyRecipes?: (google.spanner.v1.IRecipeList|null); + /** TransactionSelector begin */ + begin?: (google.spanner.v1.ITransactionOptions|null); } - /** Represents a CacheUpdate. */ - class CacheUpdate implements ICacheUpdate { + /** Represents a TransactionSelector. */ + class TransactionSelector implements ITransactionSelector { /** - * Constructs a new CacheUpdate. + * Constructs a new TransactionSelector. * @param [properties] Properties to set */ - constructor(properties?: google.spanner.v1.ICacheUpdate); + constructor(properties?: google.spanner.v1.ITransactionSelector); - /** CacheUpdate databaseId. */ - public databaseId: (number|Long|string); + /** TransactionSelector singleUse. */ + public singleUse?: (google.spanner.v1.ITransactionOptions|null); - /** CacheUpdate range. */ - public range: google.spanner.v1.IRange[]; + /** TransactionSelector id. */ + public id?: (Uint8Array|Buffer|string|null); - /** CacheUpdate group. */ - public group: google.spanner.v1.IGroup[]; + /** TransactionSelector begin. */ + public begin?: (google.spanner.v1.ITransactionOptions|null); - /** CacheUpdate keyRecipes. */ - public keyRecipes?: (google.spanner.v1.IRecipeList|null); + /** TransactionSelector selector. */ + public selector?: ("singleUse"|"id"|"begin"); /** - * Creates a new CacheUpdate instance using the specified properties. + * Creates a new TransactionSelector instance using the specified properties. * @param [properties] Properties to set - * @returns CacheUpdate instance + * @returns TransactionSelector instance */ - public static create(properties?: google.spanner.v1.ICacheUpdate): google.spanner.v1.CacheUpdate; + public static create(properties?: google.spanner.v1.ITransactionSelector): google.spanner.v1.TransactionSelector; /** - * Encodes the specified CacheUpdate message. Does not implicitly {@link google.spanner.v1.CacheUpdate.verify|verify} messages. - * @param message CacheUpdate message or plain object to encode + * Encodes the specified TransactionSelector message. Does not implicitly {@link google.spanner.v1.TransactionSelector.verify|verify} messages. + * @param message TransactionSelector message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.spanner.v1.ICacheUpdate, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.spanner.v1.ITransactionSelector, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified CacheUpdate message, length delimited. Does not implicitly {@link google.spanner.v1.CacheUpdate.verify|verify} messages. - * @param message CacheUpdate message or plain object to encode + * Encodes the specified TransactionSelector message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionSelector.verify|verify} messages. + * @param message TransactionSelector message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.spanner.v1.ICacheUpdate, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.spanner.v1.ITransactionSelector, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a CacheUpdate message from the specified reader or buffer. + * Decodes a TransactionSelector message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns CacheUpdate + * @returns TransactionSelector * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.CacheUpdate; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.TransactionSelector; /** - * Decodes a CacheUpdate message from the specified reader or buffer, length delimited. + * Decodes a TransactionSelector message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns CacheUpdate + * @returns TransactionSelector * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.CacheUpdate; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.TransactionSelector; /** - * Verifies a CacheUpdate message. + * Verifies a TransactionSelector message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a CacheUpdate message from a plain object. Also converts values to their respective internal types. + * Creates a TransactionSelector message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns CacheUpdate + * @returns TransactionSelector */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.CacheUpdate; + public static fromObject(object: { [k: string]: any }): google.spanner.v1.TransactionSelector; /** - * Creates a plain object from a CacheUpdate message. Also converts values to other types if specified. - * @param message CacheUpdate + * Creates a plain object from a TransactionSelector message. Also converts values to other types if specified. + * @param message TransactionSelector * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.spanner.v1.CacheUpdate, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.spanner.v1.TransactionSelector, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this CacheUpdate to JSON. + * Converts this TransactionSelector to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; - /** - * Gets the default type url for CacheUpdate - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ - public static getTypeUrl(typeUrlPrefix?: string): string; - } - - /** Properties of a RoutingHint. */ - interface IRoutingHint { - - /** RoutingHint operationUid */ - operationUid?: (number|Long|string|null); - - /** RoutingHint databaseId */ - databaseId?: (number|Long|string|null); - - /** RoutingHint schemaGeneration */ - schemaGeneration?: (Uint8Array|Buffer|string|null); - - /** RoutingHint key */ - key?: (Uint8Array|Buffer|string|null); - - /** RoutingHint limitKey */ - limitKey?: (Uint8Array|Buffer|string|null); - - /** RoutingHint groupUid */ - groupUid?: (number|Long|string|null); - - /** RoutingHint splitId */ - splitId?: (number|Long|string|null); - - /** RoutingHint tabletUid */ - tabletUid?: (number|Long|string|null); - - /** RoutingHint skippedTabletUid */ - skippedTabletUid?: (google.spanner.v1.RoutingHint.ISkippedTablet[]|null); - - /** RoutingHint clientLocation */ - clientLocation?: (string|null); - } - - /** Represents a RoutingHint. */ - class RoutingHint implements IRoutingHint { - - /** - * Constructs a new RoutingHint. - * @param [properties] Properties to set - */ - constructor(properties?: google.spanner.v1.IRoutingHint); - - /** RoutingHint operationUid. */ - public operationUid: (number|Long|string); - - /** RoutingHint databaseId. */ - public databaseId: (number|Long|string); - - /** RoutingHint schemaGeneration. */ - public schemaGeneration: (Uint8Array|Buffer|string); + /** + * Gets the default type url for TransactionSelector + * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns The default type url + */ + public static getTypeUrl(typeUrlPrefix?: string): string; + } - /** RoutingHint key. */ - public key: (Uint8Array|Buffer|string); + /** Properties of a MultiplexedSessionPrecommitToken. */ + interface IMultiplexedSessionPrecommitToken { - /** RoutingHint limitKey. */ - public limitKey: (Uint8Array|Buffer|string); + /** MultiplexedSessionPrecommitToken precommitToken */ + precommitToken?: (Uint8Array|Buffer|string|null); - /** RoutingHint groupUid. */ - public groupUid: (number|Long|string); + /** MultiplexedSessionPrecommitToken seqNum */ + seqNum?: (number|null); + } - /** RoutingHint splitId. */ - public splitId: (number|Long|string); + /** Represents a MultiplexedSessionPrecommitToken. */ + class MultiplexedSessionPrecommitToken implements IMultiplexedSessionPrecommitToken { - /** RoutingHint tabletUid. */ - public tabletUid: (number|Long|string); + /** + * Constructs a new MultiplexedSessionPrecommitToken. + * @param [properties] Properties to set + */ + constructor(properties?: google.spanner.v1.IMultiplexedSessionPrecommitToken); - /** RoutingHint skippedTabletUid. */ - public skippedTabletUid: google.spanner.v1.RoutingHint.ISkippedTablet[]; + /** MultiplexedSessionPrecommitToken precommitToken. */ + public precommitToken: (Uint8Array|Buffer|string); - /** RoutingHint clientLocation. */ - public clientLocation: string; + /** MultiplexedSessionPrecommitToken seqNum. */ + public seqNum: number; /** - * Creates a new RoutingHint instance using the specified properties. + * Creates a new MultiplexedSessionPrecommitToken instance using the specified properties. * @param [properties] Properties to set - * @returns RoutingHint instance + * @returns MultiplexedSessionPrecommitToken instance */ - public static create(properties?: google.spanner.v1.IRoutingHint): google.spanner.v1.RoutingHint; + public static create(properties?: google.spanner.v1.IMultiplexedSessionPrecommitToken): google.spanner.v1.MultiplexedSessionPrecommitToken; /** - * Encodes the specified RoutingHint message. Does not implicitly {@link google.spanner.v1.RoutingHint.verify|verify} messages. - * @param message RoutingHint message or plain object to encode + * Encodes the specified MultiplexedSessionPrecommitToken message. Does not implicitly {@link google.spanner.v1.MultiplexedSessionPrecommitToken.verify|verify} messages. + * @param message MultiplexedSessionPrecommitToken message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.spanner.v1.IRoutingHint, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.spanner.v1.IMultiplexedSessionPrecommitToken, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified RoutingHint message, length delimited. Does not implicitly {@link google.spanner.v1.RoutingHint.verify|verify} messages. - * @param message RoutingHint message or plain object to encode + * Encodes the specified MultiplexedSessionPrecommitToken message, length delimited. Does not implicitly {@link google.spanner.v1.MultiplexedSessionPrecommitToken.verify|verify} messages. + * @param message MultiplexedSessionPrecommitToken message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.spanner.v1.IRoutingHint, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.spanner.v1.IMultiplexedSessionPrecommitToken, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a RoutingHint message from the specified reader or buffer. + * Decodes a MultiplexedSessionPrecommitToken message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns RoutingHint + * @returns MultiplexedSessionPrecommitToken * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.RoutingHint; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.MultiplexedSessionPrecommitToken; /** - * Decodes a RoutingHint message from the specified reader or buffer, length delimited. + * Decodes a MultiplexedSessionPrecommitToken message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns RoutingHint + * @returns MultiplexedSessionPrecommitToken * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.RoutingHint; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.MultiplexedSessionPrecommitToken; /** - * Verifies a RoutingHint message. + * Verifies a MultiplexedSessionPrecommitToken message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a RoutingHint message from a plain object. Also converts values to their respective internal types. + * Creates a MultiplexedSessionPrecommitToken message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns RoutingHint + * @returns MultiplexedSessionPrecommitToken */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.RoutingHint; + public static fromObject(object: { [k: string]: any }): google.spanner.v1.MultiplexedSessionPrecommitToken; /** - * Creates a plain object from a RoutingHint message. Also converts values to other types if specified. - * @param message RoutingHint + * Creates a plain object from a MultiplexedSessionPrecommitToken message. Also converts values to other types if specified. + * @param message MultiplexedSessionPrecommitToken * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.spanner.v1.RoutingHint, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.spanner.v1.MultiplexedSessionPrecommitToken, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this RoutingHint to JSON. + * Converts this MultiplexedSessionPrecommitToken to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for RoutingHint + * Gets the default type url for MultiplexedSessionPrecommitToken * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - namespace RoutingHint { - - /** Properties of a SkippedTablet. */ - interface ISkippedTablet { - - /** SkippedTablet tabletUid */ - tabletUid?: (number|Long|string|null); - - /** SkippedTablet incarnation */ - incarnation?: (Uint8Array|Buffer|string|null); - } - - /** Represents a SkippedTablet. */ - class SkippedTablet implements ISkippedTablet { - - /** - * Constructs a new SkippedTablet. - * @param [properties] Properties to set - */ - constructor(properties?: google.spanner.v1.RoutingHint.ISkippedTablet); - - /** SkippedTablet tabletUid. */ - public tabletUid: (number|Long|string); - - /** SkippedTablet incarnation. */ - public incarnation: (Uint8Array|Buffer|string); - - /** - * Creates a new SkippedTablet instance using the specified properties. - * @param [properties] Properties to set - * @returns SkippedTablet instance - */ - public static create(properties?: google.spanner.v1.RoutingHint.ISkippedTablet): google.spanner.v1.RoutingHint.SkippedTablet; - - /** - * Encodes the specified SkippedTablet message. Does not implicitly {@link google.spanner.v1.RoutingHint.SkippedTablet.verify|verify} messages. - * @param message SkippedTablet message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.spanner.v1.RoutingHint.ISkippedTablet, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified SkippedTablet message, length delimited. Does not implicitly {@link google.spanner.v1.RoutingHint.SkippedTablet.verify|verify} messages. - * @param message SkippedTablet message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.spanner.v1.RoutingHint.ISkippedTablet, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a SkippedTablet message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns SkippedTablet - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.RoutingHint.SkippedTablet; - - /** - * Decodes a SkippedTablet message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns SkippedTablet - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.RoutingHint.SkippedTablet; - - /** - * Verifies a SkippedTablet message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a SkippedTablet message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns SkippedTablet - */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.RoutingHint.SkippedTablet; - - /** - * Creates a plain object from a SkippedTablet message. Also converts values to other types if specified. - * @param message SkippedTablet - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.spanner.v1.RoutingHint.SkippedTablet, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this SkippedTablet to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - - /** - * Gets the default type url for SkippedTablet - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ - public static getTypeUrl(typeUrlPrefix?: string): string; - } - } - - /** Properties of a Type. */ - interface IType { - - /** Type code */ - code?: (google.spanner.v1.TypeCode|keyof typeof google.spanner.v1.TypeCode|null); + /** Properties of a KeyRange. */ + interface IKeyRange { - /** Type arrayElementType */ - arrayElementType?: (google.spanner.v1.IType|null); + /** KeyRange startClosed */ + startClosed?: (google.protobuf.IListValue|null); - /** Type structType */ - structType?: (google.spanner.v1.IStructType|null); + /** KeyRange startOpen */ + startOpen?: (google.protobuf.IListValue|null); - /** Type typeAnnotation */ - typeAnnotation?: (google.spanner.v1.TypeAnnotationCode|keyof typeof google.spanner.v1.TypeAnnotationCode|null); + /** KeyRange endClosed */ + endClosed?: (google.protobuf.IListValue|null); - /** Type protoTypeFqn */ - protoTypeFqn?: (string|null); + /** KeyRange endOpen */ + endOpen?: (google.protobuf.IListValue|null); } - /** Represents a Type. */ - class Type implements IType { + /** Represents a KeyRange. */ + class KeyRange implements IKeyRange { /** - * Constructs a new Type. + * Constructs a new KeyRange. * @param [properties] Properties to set */ - constructor(properties?: google.spanner.v1.IType); + constructor(properties?: google.spanner.v1.IKeyRange); - /** Type code. */ - public code: (google.spanner.v1.TypeCode|keyof typeof google.spanner.v1.TypeCode); + /** KeyRange startClosed. */ + public startClosed?: (google.protobuf.IListValue|null); - /** Type arrayElementType. */ - public arrayElementType?: (google.spanner.v1.IType|null); + /** KeyRange startOpen. */ + public startOpen?: (google.protobuf.IListValue|null); - /** Type structType. */ - public structType?: (google.spanner.v1.IStructType|null); + /** KeyRange endClosed. */ + public endClosed?: (google.protobuf.IListValue|null); - /** Type typeAnnotation. */ - public typeAnnotation: (google.spanner.v1.TypeAnnotationCode|keyof typeof google.spanner.v1.TypeAnnotationCode); + /** KeyRange endOpen. */ + public endOpen?: (google.protobuf.IListValue|null); - /** Type protoTypeFqn. */ - public protoTypeFqn: string; + /** KeyRange startKeyType. */ + public startKeyType?: ("startClosed"|"startOpen"); + + /** KeyRange endKeyType. */ + public endKeyType?: ("endClosed"|"endOpen"); /** - * Creates a new Type instance using the specified properties. + * Creates a new KeyRange instance using the specified properties. * @param [properties] Properties to set - * @returns Type instance + * @returns KeyRange instance */ - public static create(properties?: google.spanner.v1.IType): google.spanner.v1.Type; + public static create(properties?: google.spanner.v1.IKeyRange): google.spanner.v1.KeyRange; - /** - * Encodes the specified Type message. Does not implicitly {@link google.spanner.v1.Type.verify|verify} messages. - * @param message Type message or plain object to encode + /** + * Encodes the specified KeyRange message. Does not implicitly {@link google.spanner.v1.KeyRange.verify|verify} messages. + * @param message KeyRange message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.spanner.v1.IType, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.spanner.v1.IKeyRange, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified Type message, length delimited. Does not implicitly {@link google.spanner.v1.Type.verify|verify} messages. - * @param message Type message or plain object to encode + * Encodes the specified KeyRange message, length delimited. Does not implicitly {@link google.spanner.v1.KeyRange.verify|verify} messages. + * @param message KeyRange message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.spanner.v1.IType, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.spanner.v1.IKeyRange, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a Type message from the specified reader or buffer. + * Decodes a KeyRange message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns Type + * @returns KeyRange * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.Type; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.KeyRange; /** - * Decodes a Type message from the specified reader or buffer, length delimited. + * Decodes a KeyRange message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns Type + * @returns KeyRange * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.Type; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.KeyRange; /** - * Verifies a Type message. + * Verifies a KeyRange message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a Type message from a plain object. Also converts values to their respective internal types. + * Creates a KeyRange message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns Type + * @returns KeyRange */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.Type; + public static fromObject(object: { [k: string]: any }): google.spanner.v1.KeyRange; /** - * Creates a plain object from a Type message. Also converts values to other types if specified. - * @param message Type + * Creates a plain object from a KeyRange message. Also converts values to other types if specified. + * @param message KeyRange * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.spanner.v1.Type, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.spanner.v1.KeyRange, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this Type to JSON. + * Converts this KeyRange to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for Type + * Gets the default type url for KeyRange * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - /** Properties of a StructType. */ - interface IStructType { + /** Properties of a KeySet. */ + interface IKeySet { - /** StructType fields */ - fields?: (google.spanner.v1.StructType.IField[]|null); + /** KeySet keys */ + keys?: (google.protobuf.IListValue[]|null); + + /** KeySet ranges */ + ranges?: (google.spanner.v1.IKeyRange[]|null); + + /** KeySet all */ + all?: (boolean|null); } - /** Represents a StructType. */ - class StructType implements IStructType { + /** Represents a KeySet. */ + class KeySet implements IKeySet { /** - * Constructs a new StructType. + * Constructs a new KeySet. * @param [properties] Properties to set */ - constructor(properties?: google.spanner.v1.IStructType); + constructor(properties?: google.spanner.v1.IKeySet); - /** StructType fields. */ - public fields: google.spanner.v1.StructType.IField[]; + /** KeySet keys. */ + public keys: google.protobuf.IListValue[]; + + /** KeySet ranges. */ + public ranges: google.spanner.v1.IKeyRange[]; + + /** KeySet all. */ + public all: boolean; /** - * Creates a new StructType instance using the specified properties. + * Creates a new KeySet instance using the specified properties. * @param [properties] Properties to set - * @returns StructType instance + * @returns KeySet instance */ - public static create(properties?: google.spanner.v1.IStructType): google.spanner.v1.StructType; + public static create(properties?: google.spanner.v1.IKeySet): google.spanner.v1.KeySet; /** - * Encodes the specified StructType message. Does not implicitly {@link google.spanner.v1.StructType.verify|verify} messages. - * @param message StructType message or plain object to encode + * Encodes the specified KeySet message. Does not implicitly {@link google.spanner.v1.KeySet.verify|verify} messages. + * @param message KeySet message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encode(message: google.spanner.v1.IStructType, writer?: $protobuf.Writer): $protobuf.Writer; + public static encode(message: google.spanner.v1.IKeySet, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Encodes the specified StructType message, length delimited. Does not implicitly {@link google.spanner.v1.StructType.verify|verify} messages. - * @param message StructType message or plain object to encode + * Encodes the specified KeySet message, length delimited. Does not implicitly {@link google.spanner.v1.KeySet.verify|verify} messages. + * @param message KeySet message or plain object to encode * @param [writer] Writer to encode to * @returns Writer */ - public static encodeDelimited(message: google.spanner.v1.IStructType, writer?: $protobuf.Writer): $protobuf.Writer; + public static encodeDelimited(message: google.spanner.v1.IKeySet, writer?: $protobuf.Writer): $protobuf.Writer; /** - * Decodes a StructType message from the specified reader or buffer. + * Decodes a KeySet message from the specified reader or buffer. * @param reader Reader or buffer to decode from * @param [length] Message length if known beforehand - * @returns StructType + * @returns KeySet * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.StructType; + public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.KeySet; /** - * Decodes a StructType message from the specified reader or buffer, length delimited. + * Decodes a KeySet message from the specified reader or buffer, length delimited. * @param reader Reader or buffer to decode from - * @returns StructType + * @returns KeySet * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.StructType; + public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.KeySet; /** - * Verifies a StructType message. + * Verifies a KeySet message. * @param message Plain object to verify * @returns `null` if valid, otherwise the reason why it is not */ public static verify(message: { [k: string]: any }): (string|null); /** - * Creates a StructType message from a plain object. Also converts values to their respective internal types. + * Creates a KeySet message from a plain object. Also converts values to their respective internal types. * @param object Plain object - * @returns StructType + * @returns KeySet */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.StructType; + public static fromObject(object: { [k: string]: any }): google.spanner.v1.KeySet; /** - * Creates a plain object from a StructType message. Also converts values to other types if specified. - * @param message StructType + * Creates a plain object from a KeySet message. Also converts values to other types if specified. + * @param message KeySet * @param [options] Conversion options * @returns Plain object */ - public static toObject(message: google.spanner.v1.StructType, options?: $protobuf.IConversionOptions): { [k: string]: any }; + public static toObject(message: google.spanner.v1.KeySet, options?: $protobuf.IConversionOptions): { [k: string]: any }; /** - * Converts this StructType to JSON. + * Converts this KeySet to JSON. * @returns JSON object */ public toJSON(): { [k: string]: any }; /** - * Gets the default type url for StructType + * Gets the default type url for KeySet * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns The default type url */ public static getTypeUrl(typeUrlPrefix?: string): string; } - namespace StructType { - - /** Properties of a Field. */ - interface IField { - - /** Field name */ - name?: (string|null); - - /** Field type */ - type?: (google.spanner.v1.IType|null); - } - - /** Represents a Field. */ - class Field implements IField { - - /** - * Constructs a new Field. - * @param [properties] Properties to set - */ - constructor(properties?: google.spanner.v1.StructType.IField); - - /** Field name. */ - public name: string; - - /** Field type. */ - public type?: (google.spanner.v1.IType|null); - - /** - * Creates a new Field instance using the specified properties. - * @param [properties] Properties to set - * @returns Field instance - */ - public static create(properties?: google.spanner.v1.StructType.IField): google.spanner.v1.StructType.Field; - - /** - * Encodes the specified Field message. Does not implicitly {@link google.spanner.v1.StructType.Field.verify|verify} messages. - * @param message Field message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encode(message: google.spanner.v1.StructType.IField, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Encodes the specified Field message, length delimited. Does not implicitly {@link google.spanner.v1.StructType.Field.verify|verify} messages. - * @param message Field message or plain object to encode - * @param [writer] Writer to encode to - * @returns Writer - */ - public static encodeDelimited(message: google.spanner.v1.StructType.IField, writer?: $protobuf.Writer): $protobuf.Writer; - - /** - * Decodes a Field message from the specified reader or buffer. - * @param reader Reader or buffer to decode from - * @param [length] Message length if known beforehand - * @returns Field - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.spanner.v1.StructType.Field; - - /** - * Decodes a Field message from the specified reader or buffer, length delimited. - * @param reader Reader or buffer to decode from - * @returns Field - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.spanner.v1.StructType.Field; - - /** - * Verifies a Field message. - * @param message Plain object to verify - * @returns `null` if valid, otherwise the reason why it is not - */ - public static verify(message: { [k: string]: any }): (string|null); - - /** - * Creates a Field message from a plain object. Also converts values to their respective internal types. - * @param object Plain object - * @returns Field - */ - public static fromObject(object: { [k: string]: any }): google.spanner.v1.StructType.Field; - - /** - * Creates a plain object from a Field message. Also converts values to other types if specified. - * @param message Field - * @param [options] Conversion options - * @returns Plain object - */ - public static toObject(message: google.spanner.v1.StructType.Field, options?: $protobuf.IConversionOptions): { [k: string]: any }; - - /** - * Converts this Field to JSON. - * @returns JSON object - */ - public toJSON(): { [k: string]: any }; - - /** - * Gets the default type url for Field - * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns The default type url - */ - public static getTypeUrl(typeUrlPrefix?: string): string; - } - } - - /** TypeCode enum. */ - enum TypeCode { - TYPE_CODE_UNSPECIFIED = 0, - BOOL = 1, - INT64 = 2, - FLOAT64 = 3, - FLOAT32 = 15, - TIMESTAMP = 4, - DATE = 5, - STRING = 6, - BYTES = 7, - ARRAY = 8, - STRUCT = 9, - NUMERIC = 10, - JSON = 11, - PROTO = 13, - ENUM = 14, - INTERVAL = 16, - UUID = 17 - } - - /** TypeAnnotationCode enum. */ - enum TypeAnnotationCode { - TYPE_ANNOTATION_CODE_UNSPECIFIED = 0, - PG_NUMERIC = 2, - PG_JSONB = 3, - PG_OID = 4 - } - /** Properties of a Mutation. */ interface IMutation { diff --git a/protos/protos.js b/protos/protos.js index 9d0cbed84..afcb4762e 100644 --- a/protos/protos.js +++ b/protos/protos.js @@ -84717,6 +84717,7 @@ * @property {google.spanner.v1.ITransactionOptions|null} [options] BeginTransactionRequest options * @property {google.spanner.v1.IRequestOptions|null} [requestOptions] BeginTransactionRequest requestOptions * @property {google.spanner.v1.IMutation|null} [mutationKey] BeginTransactionRequest mutationKey + * @property {google.spanner.v1.IRoutingHint|null} [routingHint] BeginTransactionRequest routingHint */ /** @@ -84766,6 +84767,14 @@ */ BeginTransactionRequest.prototype.mutationKey = null; + /** + * BeginTransactionRequest routingHint. + * @member {google.spanner.v1.IRoutingHint|null|undefined} routingHint + * @memberof google.spanner.v1.BeginTransactionRequest + * @instance + */ + BeginTransactionRequest.prototype.routingHint = null; + /** * Creates a new BeginTransactionRequest instance using the specified properties. * @function create @@ -84798,6 +84807,8 @@ $root.google.spanner.v1.RequestOptions.encode(message.requestOptions, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); if (message.mutationKey != null && Object.hasOwnProperty.call(message, "mutationKey")) $root.google.spanner.v1.Mutation.encode(message.mutationKey, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.routingHint != null && Object.hasOwnProperty.call(message, "routingHint")) + $root.google.spanner.v1.RoutingHint.encode(message.routingHint, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); return writer; }; @@ -84850,6 +84861,10 @@ message.mutationKey = $root.google.spanner.v1.Mutation.decode(reader, reader.uint32()); break; } + case 5: { + message.routingHint = $root.google.spanner.v1.RoutingHint.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -84903,6 +84918,11 @@ if (error) return "mutationKey." + error; } + if (message.routingHint != null && message.hasOwnProperty("routingHint")) { + var error = $root.google.spanner.v1.RoutingHint.verify(message.routingHint); + if (error) + return "routingHint." + error; + } return null; }; @@ -84935,6 +84955,11 @@ throw TypeError(".google.spanner.v1.BeginTransactionRequest.mutationKey: object expected"); message.mutationKey = $root.google.spanner.v1.Mutation.fromObject(object.mutationKey); } + if (object.routingHint != null) { + if (typeof object.routingHint !== "object") + throw TypeError(".google.spanner.v1.BeginTransactionRequest.routingHint: object expected"); + message.routingHint = $root.google.spanner.v1.RoutingHint.fromObject(object.routingHint); + } return message; }; @@ -84956,6 +84981,7 @@ object.options = null; object.requestOptions = null; object.mutationKey = null; + object.routingHint = null; } if (message.session != null && message.hasOwnProperty("session")) object.session = message.session; @@ -84965,6 +84991,8 @@ object.requestOptions = $root.google.spanner.v1.RequestOptions.toObject(message.requestOptions, options); if (message.mutationKey != null && message.hasOwnProperty("mutationKey")) object.mutationKey = $root.google.spanner.v1.Mutation.toObject(message.mutationKey, options); + if (message.routingHint != null && message.hasOwnProperty("routingHint")) + object.routingHint = $root.google.spanner.v1.RoutingHint.toObject(message.routingHint, options); return object; }; @@ -85011,6 +85039,7 @@ * @property {google.protobuf.IDuration|null} [maxCommitDelay] CommitRequest maxCommitDelay * @property {google.spanner.v1.IRequestOptions|null} [requestOptions] CommitRequest requestOptions * @property {google.spanner.v1.IMultiplexedSessionPrecommitToken|null} [precommitToken] CommitRequest precommitToken + * @property {google.spanner.v1.IRoutingHint|null} [routingHint] CommitRequest routingHint */ /** @@ -85093,6 +85122,14 @@ */ CommitRequest.prototype.precommitToken = null; + /** + * CommitRequest routingHint. + * @member {google.spanner.v1.IRoutingHint|null|undefined} routingHint + * @memberof google.spanner.v1.CommitRequest + * @instance + */ + CommitRequest.prototype.routingHint = null; + // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -85148,6 +85185,8 @@ $root.google.protobuf.Duration.encode(message.maxCommitDelay, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim(); if (message.precommitToken != null && Object.hasOwnProperty.call(message, "precommitToken")) $root.google.spanner.v1.MultiplexedSessionPrecommitToken.encode(message.precommitToken, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.routingHint != null && Object.hasOwnProperty.call(message, "routingHint")) + $root.google.spanner.v1.RoutingHint.encode(message.routingHint, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim(); return writer; }; @@ -85218,6 +85257,10 @@ message.precommitToken = $root.google.spanner.v1.MultiplexedSessionPrecommitToken.decode(reader, reader.uint32()); break; } + case 10: { + message.routingHint = $root.google.spanner.v1.RoutingHint.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -85299,6 +85342,11 @@ if (error) return "precommitToken." + error; } + if (message.routingHint != null && message.hasOwnProperty("routingHint")) { + var error = $root.google.spanner.v1.RoutingHint.verify(message.routingHint); + if (error) + return "routingHint." + error; + } return null; }; @@ -85353,6 +85401,11 @@ throw TypeError(".google.spanner.v1.CommitRequest.precommitToken: object expected"); message.precommitToken = $root.google.spanner.v1.MultiplexedSessionPrecommitToken.fromObject(object.precommitToken); } + if (object.routingHint != null) { + if (typeof object.routingHint !== "object") + throw TypeError(".google.spanner.v1.CommitRequest.routingHint: object expected"); + message.routingHint = $root.google.spanner.v1.RoutingHint.fromObject(object.routingHint); + } return message; }; @@ -85377,6 +85430,7 @@ object.requestOptions = null; object.maxCommitDelay = null; object.precommitToken = null; + object.routingHint = null; } if (message.session != null && message.hasOwnProperty("session")) object.session = message.session; @@ -85403,6 +85457,8 @@ object.maxCommitDelay = $root.google.protobuf.Duration.toObject(message.maxCommitDelay, options); if (message.precommitToken != null && message.hasOwnProperty("precommitToken")) object.precommitToken = $root.google.spanner.v1.MultiplexedSessionPrecommitToken.toObject(message.precommitToken, options); + if (message.routingHint != null && message.hasOwnProperty("routingHint")) + object.routingHint = $root.google.spanner.v1.RoutingHint.toObject(message.routingHint, options); return object; }; @@ -86498,6 +86554,7 @@ * @property {google.spanner.v1.CommitResponse.ICommitStats|null} [commitStats] CommitResponse commitStats * @property {google.spanner.v1.IMultiplexedSessionPrecommitToken|null} [precommitToken] CommitResponse precommitToken * @property {google.protobuf.ITimestamp|null} [snapshotTimestamp] CommitResponse snapshotTimestamp + * @property {google.spanner.v1.ICacheUpdate|null} [cacheUpdate] CommitResponse cacheUpdate */ /** @@ -86547,6 +86604,14 @@ */ CommitResponse.prototype.snapshotTimestamp = null; + /** + * CommitResponse cacheUpdate. + * @member {google.spanner.v1.ICacheUpdate|null|undefined} cacheUpdate + * @memberof google.spanner.v1.CommitResponse + * @instance + */ + CommitResponse.prototype.cacheUpdate = null; + // OneOf field names bound to virtual getters and setters var $oneOfFields; @@ -86593,6 +86658,8 @@ $root.google.spanner.v1.MultiplexedSessionPrecommitToken.encode(message.precommitToken, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); if (message.snapshotTimestamp != null && Object.hasOwnProperty.call(message, "snapshotTimestamp")) $root.google.protobuf.Timestamp.encode(message.snapshotTimestamp, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.cacheUpdate != null && Object.hasOwnProperty.call(message, "cacheUpdate")) + $root.google.spanner.v1.CacheUpdate.encode(message.cacheUpdate, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); return writer; }; @@ -86645,6 +86712,10 @@ message.snapshotTimestamp = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); break; } + case 6: { + message.cacheUpdate = $root.google.spanner.v1.CacheUpdate.decode(reader, reader.uint32()); + break; + } default: reader.skipType(tag & 7); break; @@ -86704,6 +86775,11 @@ if (error) return "snapshotTimestamp." + error; } + if (message.cacheUpdate != null && message.hasOwnProperty("cacheUpdate")) { + var error = $root.google.spanner.v1.CacheUpdate.verify(message.cacheUpdate); + if (error) + return "cacheUpdate." + error; + } return null; }; @@ -86739,6 +86815,11 @@ throw TypeError(".google.spanner.v1.CommitResponse.snapshotTimestamp: object expected"); message.snapshotTimestamp = $root.google.protobuf.Timestamp.fromObject(object.snapshotTimestamp); } + if (object.cacheUpdate != null) { + if (typeof object.cacheUpdate !== "object") + throw TypeError(".google.spanner.v1.CommitResponse.cacheUpdate: object expected"); + message.cacheUpdate = $root.google.spanner.v1.CacheUpdate.fromObject(object.cacheUpdate); + } return message; }; @@ -86759,6 +86840,7 @@ object.commitTimestamp = null; object.commitStats = null; object.snapshotTimestamp = null; + object.cacheUpdate = null; } if (message.commitTimestamp != null && message.hasOwnProperty("commitTimestamp")) object.commitTimestamp = $root.google.protobuf.Timestamp.toObject(message.commitTimestamp, options); @@ -86771,6 +86853,8 @@ } if (message.snapshotTimestamp != null && message.hasOwnProperty("snapshotTimestamp")) object.snapshotTimestamp = $root.google.protobuf.Timestamp.toObject(message.snapshotTimestamp, options); + if (message.cacheUpdate != null && message.hasOwnProperty("cacheUpdate")) + object.cacheUpdate = $root.google.spanner.v1.CacheUpdate.toObject(message.cacheUpdate, options); return object; }; @@ -87022,28 +87106,28 @@ return CommitResponse; })(); - v1.TransactionOptions = (function() { + v1.Range = (function() { /** - * Properties of a TransactionOptions. + * Properties of a Range. * @memberof google.spanner.v1 - * @interface ITransactionOptions - * @property {google.spanner.v1.TransactionOptions.IReadWrite|null} [readWrite] TransactionOptions readWrite - * @property {google.spanner.v1.TransactionOptions.IPartitionedDml|null} [partitionedDml] TransactionOptions partitionedDml - * @property {google.spanner.v1.TransactionOptions.IReadOnly|null} [readOnly] TransactionOptions readOnly - * @property {boolean|null} [excludeTxnFromChangeStreams] TransactionOptions excludeTxnFromChangeStreams - * @property {google.spanner.v1.TransactionOptions.IsolationLevel|null} [isolationLevel] TransactionOptions isolationLevel + * @interface IRange + * @property {Uint8Array|null} [startKey] Range startKey + * @property {Uint8Array|null} [limitKey] Range limitKey + * @property {number|Long|null} [groupUid] Range groupUid + * @property {number|Long|null} [splitId] Range splitId + * @property {Uint8Array|null} [generation] Range generation */ /** - * Constructs a new TransactionOptions. + * Constructs a new Range. * @memberof google.spanner.v1 - * @classdesc Represents a TransactionOptions. - * @implements ITransactionOptions + * @classdesc Represents a Range. + * @implements IRange * @constructor - * @param {google.spanner.v1.ITransactionOptions=} [properties] Properties to set + * @param {google.spanner.v1.IRange=} [properties] Properties to set */ - function TransactionOptions(properties) { + function Range(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -87051,147 +87135,133 @@ } /** - * TransactionOptions readWrite. - * @member {google.spanner.v1.TransactionOptions.IReadWrite|null|undefined} readWrite - * @memberof google.spanner.v1.TransactionOptions - * @instance - */ - TransactionOptions.prototype.readWrite = null; - - /** - * TransactionOptions partitionedDml. - * @member {google.spanner.v1.TransactionOptions.IPartitionedDml|null|undefined} partitionedDml - * @memberof google.spanner.v1.TransactionOptions + * Range startKey. + * @member {Uint8Array} startKey + * @memberof google.spanner.v1.Range * @instance */ - TransactionOptions.prototype.partitionedDml = null; + Range.prototype.startKey = $util.newBuffer([]); /** - * TransactionOptions readOnly. - * @member {google.spanner.v1.TransactionOptions.IReadOnly|null|undefined} readOnly - * @memberof google.spanner.v1.TransactionOptions + * Range limitKey. + * @member {Uint8Array} limitKey + * @memberof google.spanner.v1.Range * @instance */ - TransactionOptions.prototype.readOnly = null; + Range.prototype.limitKey = $util.newBuffer([]); /** - * TransactionOptions excludeTxnFromChangeStreams. - * @member {boolean} excludeTxnFromChangeStreams - * @memberof google.spanner.v1.TransactionOptions + * Range groupUid. + * @member {number|Long} groupUid + * @memberof google.spanner.v1.Range * @instance */ - TransactionOptions.prototype.excludeTxnFromChangeStreams = false; + Range.prototype.groupUid = $util.Long ? $util.Long.fromBits(0,0,true) : 0; /** - * TransactionOptions isolationLevel. - * @member {google.spanner.v1.TransactionOptions.IsolationLevel} isolationLevel - * @memberof google.spanner.v1.TransactionOptions + * Range splitId. + * @member {number|Long} splitId + * @memberof google.spanner.v1.Range * @instance */ - TransactionOptions.prototype.isolationLevel = 0; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + Range.prototype.splitId = $util.Long ? $util.Long.fromBits(0,0,true) : 0; /** - * TransactionOptions mode. - * @member {"readWrite"|"partitionedDml"|"readOnly"|undefined} mode - * @memberof google.spanner.v1.TransactionOptions + * Range generation. + * @member {Uint8Array} generation + * @memberof google.spanner.v1.Range * @instance */ - Object.defineProperty(TransactionOptions.prototype, "mode", { - get: $util.oneOfGetter($oneOfFields = ["readWrite", "partitionedDml", "readOnly"]), - set: $util.oneOfSetter($oneOfFields) - }); + Range.prototype.generation = $util.newBuffer([]); /** - * Creates a new TransactionOptions instance using the specified properties. + * Creates a new Range instance using the specified properties. * @function create - * @memberof google.spanner.v1.TransactionOptions + * @memberof google.spanner.v1.Range * @static - * @param {google.spanner.v1.ITransactionOptions=} [properties] Properties to set - * @returns {google.spanner.v1.TransactionOptions} TransactionOptions instance + * @param {google.spanner.v1.IRange=} [properties] Properties to set + * @returns {google.spanner.v1.Range} Range instance */ - TransactionOptions.create = function create(properties) { - return new TransactionOptions(properties); + Range.create = function create(properties) { + return new Range(properties); }; /** - * Encodes the specified TransactionOptions message. Does not implicitly {@link google.spanner.v1.TransactionOptions.verify|verify} messages. + * Encodes the specified Range message. Does not implicitly {@link google.spanner.v1.Range.verify|verify} messages. * @function encode - * @memberof google.spanner.v1.TransactionOptions + * @memberof google.spanner.v1.Range * @static - * @param {google.spanner.v1.ITransactionOptions} message TransactionOptions message or plain object to encode + * @param {google.spanner.v1.IRange} message Range message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TransactionOptions.encode = function encode(message, writer) { + Range.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.readWrite != null && Object.hasOwnProperty.call(message, "readWrite")) - $root.google.spanner.v1.TransactionOptions.ReadWrite.encode(message.readWrite, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.readOnly != null && Object.hasOwnProperty.call(message, "readOnly")) - $root.google.spanner.v1.TransactionOptions.ReadOnly.encode(message.readOnly, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.partitionedDml != null && Object.hasOwnProperty.call(message, "partitionedDml")) - $root.google.spanner.v1.TransactionOptions.PartitionedDml.encode(message.partitionedDml, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.excludeTxnFromChangeStreams != null && Object.hasOwnProperty.call(message, "excludeTxnFromChangeStreams")) - writer.uint32(/* id 5, wireType 0 =*/40).bool(message.excludeTxnFromChangeStreams); - if (message.isolationLevel != null && Object.hasOwnProperty.call(message, "isolationLevel")) - writer.uint32(/* id 6, wireType 0 =*/48).int32(message.isolationLevel); + if (message.startKey != null && Object.hasOwnProperty.call(message, "startKey")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.startKey); + if (message.limitKey != null && Object.hasOwnProperty.call(message, "limitKey")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.limitKey); + if (message.groupUid != null && Object.hasOwnProperty.call(message, "groupUid")) + writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.groupUid); + if (message.splitId != null && Object.hasOwnProperty.call(message, "splitId")) + writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.splitId); + if (message.generation != null && Object.hasOwnProperty.call(message, "generation")) + writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.generation); return writer; }; /** - * Encodes the specified TransactionOptions message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionOptions.verify|verify} messages. + * Encodes the specified Range message, length delimited. Does not implicitly {@link google.spanner.v1.Range.verify|verify} messages. * @function encodeDelimited - * @memberof google.spanner.v1.TransactionOptions + * @memberof google.spanner.v1.Range * @static - * @param {google.spanner.v1.ITransactionOptions} message TransactionOptions message or plain object to encode + * @param {google.spanner.v1.IRange} message Range message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TransactionOptions.encodeDelimited = function encodeDelimited(message, writer) { + Range.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a TransactionOptions message from the specified reader or buffer. + * Decodes a Range message from the specified reader or buffer. * @function decode - * @memberof google.spanner.v1.TransactionOptions + * @memberof google.spanner.v1.Range * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.TransactionOptions} TransactionOptions + * @returns {google.spanner.v1.Range} Range * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - TransactionOptions.decode = function decode(reader, length, error) { + Range.decode = function decode(reader, length, error) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.TransactionOptions(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.Range(); while (reader.pos < end) { var tag = reader.uint32(); if (tag === error) break; switch (tag >>> 3) { case 1: { - message.readWrite = $root.google.spanner.v1.TransactionOptions.ReadWrite.decode(reader, reader.uint32()); + message.startKey = reader.bytes(); break; } - case 3: { - message.partitionedDml = $root.google.spanner.v1.TransactionOptions.PartitionedDml.decode(reader, reader.uint32()); + case 2: { + message.limitKey = reader.bytes(); break; } - case 2: { - message.readOnly = $root.google.spanner.v1.TransactionOptions.ReadOnly.decode(reader, reader.uint32()); + case 3: { + message.groupUid = reader.uint64(); break; } - case 5: { - message.excludeTxnFromChangeStreams = reader.bool(); + case 4: { + message.splitId = reader.uint64(); break; } - case 6: { - message.isolationLevel = reader.int32(); + case 5: { + message.generation = reader.bytes(); break; } default: @@ -87203,1074 +87273,621 @@ }; /** - * Decodes a TransactionOptions message from the specified reader or buffer, length delimited. + * Decodes a Range message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.spanner.v1.TransactionOptions + * @memberof google.spanner.v1.Range * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.TransactionOptions} TransactionOptions + * @returns {google.spanner.v1.Range} Range * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - TransactionOptions.decodeDelimited = function decodeDelimited(reader) { + Range.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a TransactionOptions message. + * Verifies a Range message. * @function verify - * @memberof google.spanner.v1.TransactionOptions + * @memberof google.spanner.v1.Range * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - TransactionOptions.verify = function verify(message) { + Range.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.readWrite != null && message.hasOwnProperty("readWrite")) { - properties.mode = 1; - { - var error = $root.google.spanner.v1.TransactionOptions.ReadWrite.verify(message.readWrite); - if (error) - return "readWrite." + error; - } - } - if (message.partitionedDml != null && message.hasOwnProperty("partitionedDml")) { - if (properties.mode === 1) - return "mode: multiple values"; - properties.mode = 1; - { - var error = $root.google.spanner.v1.TransactionOptions.PartitionedDml.verify(message.partitionedDml); - if (error) - return "partitionedDml." + error; - } - } - if (message.readOnly != null && message.hasOwnProperty("readOnly")) { - if (properties.mode === 1) - return "mode: multiple values"; - properties.mode = 1; - { - var error = $root.google.spanner.v1.TransactionOptions.ReadOnly.verify(message.readOnly); - if (error) - return "readOnly." + error; - } - } - if (message.excludeTxnFromChangeStreams != null && message.hasOwnProperty("excludeTxnFromChangeStreams")) - if (typeof message.excludeTxnFromChangeStreams !== "boolean") - return "excludeTxnFromChangeStreams: boolean expected"; - if (message.isolationLevel != null && message.hasOwnProperty("isolationLevel")) - switch (message.isolationLevel) { - default: - return "isolationLevel: enum value expected"; - case 0: - case 1: - case 2: - break; - } + if (message.startKey != null && message.hasOwnProperty("startKey")) + if (!(message.startKey && typeof message.startKey.length === "number" || $util.isString(message.startKey))) + return "startKey: buffer expected"; + if (message.limitKey != null && message.hasOwnProperty("limitKey")) + if (!(message.limitKey && typeof message.limitKey.length === "number" || $util.isString(message.limitKey))) + return "limitKey: buffer expected"; + if (message.groupUid != null && message.hasOwnProperty("groupUid")) + if (!$util.isInteger(message.groupUid) && !(message.groupUid && $util.isInteger(message.groupUid.low) && $util.isInteger(message.groupUid.high))) + return "groupUid: integer|Long expected"; + if (message.splitId != null && message.hasOwnProperty("splitId")) + if (!$util.isInteger(message.splitId) && !(message.splitId && $util.isInteger(message.splitId.low) && $util.isInteger(message.splitId.high))) + return "splitId: integer|Long expected"; + if (message.generation != null && message.hasOwnProperty("generation")) + if (!(message.generation && typeof message.generation.length === "number" || $util.isString(message.generation))) + return "generation: buffer expected"; return null; }; /** - * Creates a TransactionOptions message from a plain object. Also converts values to their respective internal types. + * Creates a Range message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.spanner.v1.TransactionOptions + * @memberof google.spanner.v1.Range * @static * @param {Object.} object Plain object - * @returns {google.spanner.v1.TransactionOptions} TransactionOptions + * @returns {google.spanner.v1.Range} Range */ - TransactionOptions.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.TransactionOptions) + Range.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.Range) return object; - var message = new $root.google.spanner.v1.TransactionOptions(); - if (object.readWrite != null) { - if (typeof object.readWrite !== "object") - throw TypeError(".google.spanner.v1.TransactionOptions.readWrite: object expected"); - message.readWrite = $root.google.spanner.v1.TransactionOptions.ReadWrite.fromObject(object.readWrite); - } - if (object.partitionedDml != null) { - if (typeof object.partitionedDml !== "object") - throw TypeError(".google.spanner.v1.TransactionOptions.partitionedDml: object expected"); - message.partitionedDml = $root.google.spanner.v1.TransactionOptions.PartitionedDml.fromObject(object.partitionedDml); - } - if (object.readOnly != null) { - if (typeof object.readOnly !== "object") - throw TypeError(".google.spanner.v1.TransactionOptions.readOnly: object expected"); - message.readOnly = $root.google.spanner.v1.TransactionOptions.ReadOnly.fromObject(object.readOnly); - } - if (object.excludeTxnFromChangeStreams != null) - message.excludeTxnFromChangeStreams = Boolean(object.excludeTxnFromChangeStreams); - switch (object.isolationLevel) { - default: - if (typeof object.isolationLevel === "number") { - message.isolationLevel = object.isolationLevel; - break; - } - break; - case "ISOLATION_LEVEL_UNSPECIFIED": - case 0: - message.isolationLevel = 0; - break; - case "SERIALIZABLE": - case 1: - message.isolationLevel = 1; - break; - case "REPEATABLE_READ": - case 2: - message.isolationLevel = 2; - break; - } + var message = new $root.google.spanner.v1.Range(); + if (object.startKey != null) + if (typeof object.startKey === "string") + $util.base64.decode(object.startKey, message.startKey = $util.newBuffer($util.base64.length(object.startKey)), 0); + else if (object.startKey.length >= 0) + message.startKey = object.startKey; + if (object.limitKey != null) + if (typeof object.limitKey === "string") + $util.base64.decode(object.limitKey, message.limitKey = $util.newBuffer($util.base64.length(object.limitKey)), 0); + else if (object.limitKey.length >= 0) + message.limitKey = object.limitKey; + if (object.groupUid != null) + if ($util.Long) + (message.groupUid = $util.Long.fromValue(object.groupUid)).unsigned = true; + else if (typeof object.groupUid === "string") + message.groupUid = parseInt(object.groupUid, 10); + else if (typeof object.groupUid === "number") + message.groupUid = object.groupUid; + else if (typeof object.groupUid === "object") + message.groupUid = new $util.LongBits(object.groupUid.low >>> 0, object.groupUid.high >>> 0).toNumber(true); + if (object.splitId != null) + if ($util.Long) + (message.splitId = $util.Long.fromValue(object.splitId)).unsigned = true; + else if (typeof object.splitId === "string") + message.splitId = parseInt(object.splitId, 10); + else if (typeof object.splitId === "number") + message.splitId = object.splitId; + else if (typeof object.splitId === "object") + message.splitId = new $util.LongBits(object.splitId.low >>> 0, object.splitId.high >>> 0).toNumber(true); + if (object.generation != null) + if (typeof object.generation === "string") + $util.base64.decode(object.generation, message.generation = $util.newBuffer($util.base64.length(object.generation)), 0); + else if (object.generation.length >= 0) + message.generation = object.generation; return message; }; /** - * Creates a plain object from a TransactionOptions message. Also converts values to other types if specified. + * Creates a plain object from a Range message. Also converts values to other types if specified. * @function toObject - * @memberof google.spanner.v1.TransactionOptions + * @memberof google.spanner.v1.Range * @static - * @param {google.spanner.v1.TransactionOptions} message TransactionOptions + * @param {google.spanner.v1.Range} message Range * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - TransactionOptions.toObject = function toObject(message, options) { + Range.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { - object.excludeTxnFromChangeStreams = false; - object.isolationLevel = options.enums === String ? "ISOLATION_LEVEL_UNSPECIFIED" : 0; - } - if (message.readWrite != null && message.hasOwnProperty("readWrite")) { - object.readWrite = $root.google.spanner.v1.TransactionOptions.ReadWrite.toObject(message.readWrite, options); - if (options.oneofs) - object.mode = "readWrite"; - } - if (message.readOnly != null && message.hasOwnProperty("readOnly")) { - object.readOnly = $root.google.spanner.v1.TransactionOptions.ReadOnly.toObject(message.readOnly, options); - if (options.oneofs) - object.mode = "readOnly"; - } - if (message.partitionedDml != null && message.hasOwnProperty("partitionedDml")) { - object.partitionedDml = $root.google.spanner.v1.TransactionOptions.PartitionedDml.toObject(message.partitionedDml, options); - if (options.oneofs) - object.mode = "partitionedDml"; + if (options.bytes === String) + object.startKey = ""; + else { + object.startKey = []; + if (options.bytes !== Array) + object.startKey = $util.newBuffer(object.startKey); + } + if (options.bytes === String) + object.limitKey = ""; + else { + object.limitKey = []; + if (options.bytes !== Array) + object.limitKey = $util.newBuffer(object.limitKey); + } + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.groupUid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.groupUid = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.splitId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.splitId = options.longs === String ? "0" : 0; + if (options.bytes === String) + object.generation = ""; + else { + object.generation = []; + if (options.bytes !== Array) + object.generation = $util.newBuffer(object.generation); + } } - if (message.excludeTxnFromChangeStreams != null && message.hasOwnProperty("excludeTxnFromChangeStreams")) - object.excludeTxnFromChangeStreams = message.excludeTxnFromChangeStreams; - if (message.isolationLevel != null && message.hasOwnProperty("isolationLevel")) - object.isolationLevel = options.enums === String ? $root.google.spanner.v1.TransactionOptions.IsolationLevel[message.isolationLevel] === undefined ? message.isolationLevel : $root.google.spanner.v1.TransactionOptions.IsolationLevel[message.isolationLevel] : message.isolationLevel; + if (message.startKey != null && message.hasOwnProperty("startKey")) + object.startKey = options.bytes === String ? $util.base64.encode(message.startKey, 0, message.startKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.startKey) : message.startKey; + if (message.limitKey != null && message.hasOwnProperty("limitKey")) + object.limitKey = options.bytes === String ? $util.base64.encode(message.limitKey, 0, message.limitKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.limitKey) : message.limitKey; + if (message.groupUid != null && message.hasOwnProperty("groupUid")) + if (typeof message.groupUid === "number") + object.groupUid = options.longs === String ? String(message.groupUid) : message.groupUid; + else + object.groupUid = options.longs === String ? $util.Long.prototype.toString.call(message.groupUid) : options.longs === Number ? new $util.LongBits(message.groupUid.low >>> 0, message.groupUid.high >>> 0).toNumber(true) : message.groupUid; + if (message.splitId != null && message.hasOwnProperty("splitId")) + if (typeof message.splitId === "number") + object.splitId = options.longs === String ? String(message.splitId) : message.splitId; + else + object.splitId = options.longs === String ? $util.Long.prototype.toString.call(message.splitId) : options.longs === Number ? new $util.LongBits(message.splitId.low >>> 0, message.splitId.high >>> 0).toNumber(true) : message.splitId; + if (message.generation != null && message.hasOwnProperty("generation")) + object.generation = options.bytes === String ? $util.base64.encode(message.generation, 0, message.generation.length) : options.bytes === Array ? Array.prototype.slice.call(message.generation) : message.generation; return object; }; /** - * Converts this TransactionOptions to JSON. + * Converts this Range to JSON. * @function toJSON - * @memberof google.spanner.v1.TransactionOptions + * @memberof google.spanner.v1.Range * @instance * @returns {Object.} JSON object */ - TransactionOptions.prototype.toJSON = function toJSON() { + Range.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for TransactionOptions + * Gets the default type url for Range * @function getTypeUrl - * @memberof google.spanner.v1.TransactionOptions + * @memberof google.spanner.v1.Range * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - TransactionOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + Range.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.spanner.v1.TransactionOptions"; + return typeUrlPrefix + "/google.spanner.v1.Range"; }; - TransactionOptions.ReadWrite = (function() { + return Range; + })(); - /** - * Properties of a ReadWrite. - * @memberof google.spanner.v1.TransactionOptions - * @interface IReadWrite - * @property {google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode|null} [readLockMode] ReadWrite readLockMode - * @property {Uint8Array|null} [multiplexedSessionPreviousTransactionId] ReadWrite multiplexedSessionPreviousTransactionId - */ + v1.Tablet = (function() { - /** - * Constructs a new ReadWrite. - * @memberof google.spanner.v1.TransactionOptions - * @classdesc Represents a ReadWrite. - * @implements IReadWrite - * @constructor - * @param {google.spanner.v1.TransactionOptions.IReadWrite=} [properties] Properties to set - */ - function ReadWrite(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Properties of a Tablet. + * @memberof google.spanner.v1 + * @interface ITablet + * @property {number|Long|null} [tabletUid] Tablet tabletUid + * @property {string|null} [serverAddress] Tablet serverAddress + * @property {string|null} [location] Tablet location + * @property {google.spanner.v1.Tablet.Role|null} [role] Tablet role + * @property {Uint8Array|null} [incarnation] Tablet incarnation + * @property {number|null} [distance] Tablet distance + * @property {boolean|null} [skip] Tablet skip + */ - /** - * ReadWrite readLockMode. - * @member {google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode} readLockMode - * @memberof google.spanner.v1.TransactionOptions.ReadWrite - * @instance - */ - ReadWrite.prototype.readLockMode = 0; + /** + * Constructs a new Tablet. + * @memberof google.spanner.v1 + * @classdesc Represents a Tablet. + * @implements ITablet + * @constructor + * @param {google.spanner.v1.ITablet=} [properties] Properties to set + */ + function Tablet(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * ReadWrite multiplexedSessionPreviousTransactionId. - * @member {Uint8Array} multiplexedSessionPreviousTransactionId - * @memberof google.spanner.v1.TransactionOptions.ReadWrite - * @instance - */ - ReadWrite.prototype.multiplexedSessionPreviousTransactionId = $util.newBuffer([]); + /** + * Tablet tabletUid. + * @member {number|Long} tabletUid + * @memberof google.spanner.v1.Tablet + * @instance + */ + Tablet.prototype.tabletUid = $util.Long ? $util.Long.fromBits(0,0,true) : 0; - /** - * Creates a new ReadWrite instance using the specified properties. - * @function create - * @memberof google.spanner.v1.TransactionOptions.ReadWrite - * @static - * @param {google.spanner.v1.TransactionOptions.IReadWrite=} [properties] Properties to set - * @returns {google.spanner.v1.TransactionOptions.ReadWrite} ReadWrite instance - */ - ReadWrite.create = function create(properties) { - return new ReadWrite(properties); - }; + /** + * Tablet serverAddress. + * @member {string} serverAddress + * @memberof google.spanner.v1.Tablet + * @instance + */ + Tablet.prototype.serverAddress = ""; - /** - * Encodes the specified ReadWrite message. Does not implicitly {@link google.spanner.v1.TransactionOptions.ReadWrite.verify|verify} messages. - * @function encode - * @memberof google.spanner.v1.TransactionOptions.ReadWrite - * @static - * @param {google.spanner.v1.TransactionOptions.IReadWrite} message ReadWrite message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ReadWrite.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.readLockMode != null && Object.hasOwnProperty.call(message, "readLockMode")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.readLockMode); - if (message.multiplexedSessionPreviousTransactionId != null && Object.hasOwnProperty.call(message, "multiplexedSessionPreviousTransactionId")) - writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.multiplexedSessionPreviousTransactionId); - return writer; - }; + /** + * Tablet location. + * @member {string} location + * @memberof google.spanner.v1.Tablet + * @instance + */ + Tablet.prototype.location = ""; - /** - * Encodes the specified ReadWrite message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionOptions.ReadWrite.verify|verify} messages. - * @function encodeDelimited - * @memberof google.spanner.v1.TransactionOptions.ReadWrite - * @static - * @param {google.spanner.v1.TransactionOptions.IReadWrite} message ReadWrite message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ReadWrite.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Tablet role. + * @member {google.spanner.v1.Tablet.Role} role + * @memberof google.spanner.v1.Tablet + * @instance + */ + Tablet.prototype.role = 0; - /** - * Decodes a ReadWrite message from the specified reader or buffer. - * @function decode - * @memberof google.spanner.v1.TransactionOptions.ReadWrite - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.TransactionOptions.ReadWrite} ReadWrite - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ReadWrite.decode = function decode(reader, length, error) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.TransactionOptions.ReadWrite(); - while (reader.pos < end) { - var tag = reader.uint32(); - if (tag === error) + /** + * Tablet incarnation. + * @member {Uint8Array} incarnation + * @memberof google.spanner.v1.Tablet + * @instance + */ + Tablet.prototype.incarnation = $util.newBuffer([]); + + /** + * Tablet distance. + * @member {number} distance + * @memberof google.spanner.v1.Tablet + * @instance + */ + Tablet.prototype.distance = 0; + + /** + * Tablet skip. + * @member {boolean} skip + * @memberof google.spanner.v1.Tablet + * @instance + */ + Tablet.prototype.skip = false; + + /** + * Creates a new Tablet instance using the specified properties. + * @function create + * @memberof google.spanner.v1.Tablet + * @static + * @param {google.spanner.v1.ITablet=} [properties] Properties to set + * @returns {google.spanner.v1.Tablet} Tablet instance + */ + Tablet.create = function create(properties) { + return new Tablet(properties); + }; + + /** + * Encodes the specified Tablet message. Does not implicitly {@link google.spanner.v1.Tablet.verify|verify} messages. + * @function encode + * @memberof google.spanner.v1.Tablet + * @static + * @param {google.spanner.v1.ITablet} message Tablet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Tablet.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.tabletUid != null && Object.hasOwnProperty.call(message, "tabletUid")) + writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.tabletUid); + if (message.serverAddress != null && Object.hasOwnProperty.call(message, "serverAddress")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.serverAddress); + if (message.location != null && Object.hasOwnProperty.call(message, "location")) + writer.uint32(/* id 3, wireType 2 =*/26).string(message.location); + if (message.role != null && Object.hasOwnProperty.call(message, "role")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.role); + if (message.incarnation != null && Object.hasOwnProperty.call(message, "incarnation")) + writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.incarnation); + if (message.distance != null && Object.hasOwnProperty.call(message, "distance")) + writer.uint32(/* id 6, wireType 0 =*/48).uint32(message.distance); + if (message.skip != null && Object.hasOwnProperty.call(message, "skip")) + writer.uint32(/* id 7, wireType 0 =*/56).bool(message.skip); + return writer; + }; + + /** + * Encodes the specified Tablet message, length delimited. Does not implicitly {@link google.spanner.v1.Tablet.verify|verify} messages. + * @function encodeDelimited + * @memberof google.spanner.v1.Tablet + * @static + * @param {google.spanner.v1.ITablet} message Tablet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Tablet.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Tablet message from the specified reader or buffer. + * @function decode + * @memberof google.spanner.v1.Tablet + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.spanner.v1.Tablet} Tablet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Tablet.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.Tablet(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.tabletUid = reader.uint64(); break; - switch (tag >>> 3) { - case 1: { - message.readLockMode = reader.int32(); - break; - } - case 2: { - message.multiplexedSessionPreviousTransactionId = reader.bytes(); - break; - } - default: - reader.skipType(tag & 7); + } + case 2: { + message.serverAddress = reader.string(); + break; + } + case 3: { + message.location = reader.string(); + break; + } + case 4: { + message.role = reader.int32(); + break; + } + case 5: { + message.incarnation = reader.bytes(); + break; + } + case 6: { + message.distance = reader.uint32(); + break; + } + case 7: { + message.skip = reader.bool(); break; } + default: + reader.skipType(tag & 7); + break; } - return message; - }; + } + return message; + }; - /** - * Decodes a ReadWrite message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.spanner.v1.TransactionOptions.ReadWrite - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.TransactionOptions.ReadWrite} ReadWrite - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ReadWrite.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a ReadWrite message. - * @function verify - * @memberof google.spanner.v1.TransactionOptions.ReadWrite - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - ReadWrite.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.readLockMode != null && message.hasOwnProperty("readLockMode")) - switch (message.readLockMode) { - default: - return "readLockMode: enum value expected"; - case 0: - case 1: - case 2: - break; - } - if (message.multiplexedSessionPreviousTransactionId != null && message.hasOwnProperty("multiplexedSessionPreviousTransactionId")) - if (!(message.multiplexedSessionPreviousTransactionId && typeof message.multiplexedSessionPreviousTransactionId.length === "number" || $util.isString(message.multiplexedSessionPreviousTransactionId))) - return "multiplexedSessionPreviousTransactionId: buffer expected"; - return null; - }; + /** + * Decodes a Tablet message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.spanner.v1.Tablet + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.spanner.v1.Tablet} Tablet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Tablet.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Creates a ReadWrite message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.spanner.v1.TransactionOptions.ReadWrite - * @static - * @param {Object.} object Plain object - * @returns {google.spanner.v1.TransactionOptions.ReadWrite} ReadWrite - */ - ReadWrite.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.TransactionOptions.ReadWrite) - return object; - var message = new $root.google.spanner.v1.TransactionOptions.ReadWrite(); - switch (object.readLockMode) { + /** + * Verifies a Tablet message. + * @function verify + * @memberof google.spanner.v1.Tablet + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Tablet.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.tabletUid != null && message.hasOwnProperty("tabletUid")) + if (!$util.isInteger(message.tabletUid) && !(message.tabletUid && $util.isInteger(message.tabletUid.low) && $util.isInteger(message.tabletUid.high))) + return "tabletUid: integer|Long expected"; + if (message.serverAddress != null && message.hasOwnProperty("serverAddress")) + if (!$util.isString(message.serverAddress)) + return "serverAddress: string expected"; + if (message.location != null && message.hasOwnProperty("location")) + if (!$util.isString(message.location)) + return "location: string expected"; + if (message.role != null && message.hasOwnProperty("role")) + switch (message.role) { default: - if (typeof object.readLockMode === "number") { - message.readLockMode = object.readLockMode; - break; - } - break; - case "READ_LOCK_MODE_UNSPECIFIED": + return "role: enum value expected"; case 0: - message.readLockMode = 0; - break; - case "PESSIMISTIC": case 1: - message.readLockMode = 1; - break; - case "OPTIMISTIC": case 2: - message.readLockMode = 2; break; } - if (object.multiplexedSessionPreviousTransactionId != null) - if (typeof object.multiplexedSessionPreviousTransactionId === "string") - $util.base64.decode(object.multiplexedSessionPreviousTransactionId, message.multiplexedSessionPreviousTransactionId = $util.newBuffer($util.base64.length(object.multiplexedSessionPreviousTransactionId)), 0); - else if (object.multiplexedSessionPreviousTransactionId.length >= 0) - message.multiplexedSessionPreviousTransactionId = object.multiplexedSessionPreviousTransactionId; - return message; - }; + if (message.incarnation != null && message.hasOwnProperty("incarnation")) + if (!(message.incarnation && typeof message.incarnation.length === "number" || $util.isString(message.incarnation))) + return "incarnation: buffer expected"; + if (message.distance != null && message.hasOwnProperty("distance")) + if (!$util.isInteger(message.distance)) + return "distance: integer expected"; + if (message.skip != null && message.hasOwnProperty("skip")) + if (typeof message.skip !== "boolean") + return "skip: boolean expected"; + return null; + }; - /** - * Creates a plain object from a ReadWrite message. Also converts values to other types if specified. - * @function toObject - * @memberof google.spanner.v1.TransactionOptions.ReadWrite - * @static - * @param {google.spanner.v1.TransactionOptions.ReadWrite} message ReadWrite - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - ReadWrite.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.readLockMode = options.enums === String ? "READ_LOCK_MODE_UNSPECIFIED" : 0; - if (options.bytes === String) - object.multiplexedSessionPreviousTransactionId = ""; - else { - object.multiplexedSessionPreviousTransactionId = []; - if (options.bytes !== Array) - object.multiplexedSessionPreviousTransactionId = $util.newBuffer(object.multiplexedSessionPreviousTransactionId); - } - } - if (message.readLockMode != null && message.hasOwnProperty("readLockMode")) - object.readLockMode = options.enums === String ? $root.google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode[message.readLockMode] === undefined ? message.readLockMode : $root.google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode[message.readLockMode] : message.readLockMode; - if (message.multiplexedSessionPreviousTransactionId != null && message.hasOwnProperty("multiplexedSessionPreviousTransactionId")) - object.multiplexedSessionPreviousTransactionId = options.bytes === String ? $util.base64.encode(message.multiplexedSessionPreviousTransactionId, 0, message.multiplexedSessionPreviousTransactionId.length) : options.bytes === Array ? Array.prototype.slice.call(message.multiplexedSessionPreviousTransactionId) : message.multiplexedSessionPreviousTransactionId; + /** + * Creates a Tablet message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.spanner.v1.Tablet + * @static + * @param {Object.} object Plain object + * @returns {google.spanner.v1.Tablet} Tablet + */ + Tablet.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.Tablet) return object; - }; - - /** - * Converts this ReadWrite to JSON. - * @function toJSON - * @memberof google.spanner.v1.TransactionOptions.ReadWrite - * @instance - * @returns {Object.} JSON object - */ - ReadWrite.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for ReadWrite - * @function getTypeUrl - * @memberof google.spanner.v1.TransactionOptions.ReadWrite - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - ReadWrite.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; + var message = new $root.google.spanner.v1.Tablet(); + if (object.tabletUid != null) + if ($util.Long) + (message.tabletUid = $util.Long.fromValue(object.tabletUid)).unsigned = true; + else if (typeof object.tabletUid === "string") + message.tabletUid = parseInt(object.tabletUid, 10); + else if (typeof object.tabletUid === "number") + message.tabletUid = object.tabletUid; + else if (typeof object.tabletUid === "object") + message.tabletUid = new $util.LongBits(object.tabletUid.low >>> 0, object.tabletUid.high >>> 0).toNumber(true); + if (object.serverAddress != null) + message.serverAddress = String(object.serverAddress); + if (object.location != null) + message.location = String(object.location); + switch (object.role) { + default: + if (typeof object.role === "number") { + message.role = object.role; + break; } - return typeUrlPrefix + "/google.spanner.v1.TransactionOptions.ReadWrite"; - }; - - /** - * ReadLockMode enum. - * @name google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode - * @enum {number} - * @property {number} READ_LOCK_MODE_UNSPECIFIED=0 READ_LOCK_MODE_UNSPECIFIED value - * @property {number} PESSIMISTIC=1 PESSIMISTIC value - * @property {number} OPTIMISTIC=2 OPTIMISTIC value - */ - ReadWrite.ReadLockMode = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "READ_LOCK_MODE_UNSPECIFIED"] = 0; - values[valuesById[1] = "PESSIMISTIC"] = 1; - values[valuesById[2] = "OPTIMISTIC"] = 2; - return values; - })(); - - return ReadWrite; - })(); - - TransactionOptions.PartitionedDml = (function() { - - /** - * Properties of a PartitionedDml. - * @memberof google.spanner.v1.TransactionOptions - * @interface IPartitionedDml - */ - - /** - * Constructs a new PartitionedDml. - * @memberof google.spanner.v1.TransactionOptions - * @classdesc Represents a PartitionedDml. - * @implements IPartitionedDml - * @constructor - * @param {google.spanner.v1.TransactionOptions.IPartitionedDml=} [properties] Properties to set - */ - function PartitionedDml(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; + break; + case "ROLE_UNSPECIFIED": + case 0: + message.role = 0; + break; + case "READ_WRITE": + case 1: + message.role = 1; + break; + case "READ_ONLY": + case 2: + message.role = 2; + break; } + if (object.incarnation != null) + if (typeof object.incarnation === "string") + $util.base64.decode(object.incarnation, message.incarnation = $util.newBuffer($util.base64.length(object.incarnation)), 0); + else if (object.incarnation.length >= 0) + message.incarnation = object.incarnation; + if (object.distance != null) + message.distance = object.distance >>> 0; + if (object.skip != null) + message.skip = Boolean(object.skip); + return message; + }; - /** - * Creates a new PartitionedDml instance using the specified properties. - * @function create - * @memberof google.spanner.v1.TransactionOptions.PartitionedDml - * @static - * @param {google.spanner.v1.TransactionOptions.IPartitionedDml=} [properties] Properties to set - * @returns {google.spanner.v1.TransactionOptions.PartitionedDml} PartitionedDml instance - */ - PartitionedDml.create = function create(properties) { - return new PartitionedDml(properties); - }; - - /** - * Encodes the specified PartitionedDml message. Does not implicitly {@link google.spanner.v1.TransactionOptions.PartitionedDml.verify|verify} messages. - * @function encode - * @memberof google.spanner.v1.TransactionOptions.PartitionedDml - * @static - * @param {google.spanner.v1.TransactionOptions.IPartitionedDml} message PartitionedDml message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PartitionedDml.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - return writer; - }; - - /** - * Encodes the specified PartitionedDml message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionOptions.PartitionedDml.verify|verify} messages. - * @function encodeDelimited - * @memberof google.spanner.v1.TransactionOptions.PartitionedDml - * @static - * @param {google.spanner.v1.TransactionOptions.IPartitionedDml} message PartitionedDml message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - PartitionedDml.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a PartitionedDml message from the specified reader or buffer. - * @function decode - * @memberof google.spanner.v1.TransactionOptions.PartitionedDml - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.TransactionOptions.PartitionedDml} PartitionedDml - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PartitionedDml.decode = function decode(reader, length, error) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.TransactionOptions.PartitionedDml(); - while (reader.pos < end) { - var tag = reader.uint32(); - if (tag === error) - break; - switch (tag >>> 3) { - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a PartitionedDml message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.spanner.v1.TransactionOptions.PartitionedDml - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.TransactionOptions.PartitionedDml} PartitionedDml - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - PartitionedDml.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a PartitionedDml message. - * @function verify - * @memberof google.spanner.v1.TransactionOptions.PartitionedDml - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - PartitionedDml.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - return null; - }; - - /** - * Creates a PartitionedDml message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.spanner.v1.TransactionOptions.PartitionedDml - * @static - * @param {Object.} object Plain object - * @returns {google.spanner.v1.TransactionOptions.PartitionedDml} PartitionedDml - */ - PartitionedDml.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.TransactionOptions.PartitionedDml) - return object; - return new $root.google.spanner.v1.TransactionOptions.PartitionedDml(); - }; - - /** - * Creates a plain object from a PartitionedDml message. Also converts values to other types if specified. - * @function toObject - * @memberof google.spanner.v1.TransactionOptions.PartitionedDml - * @static - * @param {google.spanner.v1.TransactionOptions.PartitionedDml} message PartitionedDml - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - PartitionedDml.toObject = function toObject() { - return {}; - }; - - /** - * Converts this PartitionedDml to JSON. - * @function toJSON - * @memberof google.spanner.v1.TransactionOptions.PartitionedDml - * @instance - * @returns {Object.} JSON object - */ - PartitionedDml.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for PartitionedDml - * @function getTypeUrl - * @memberof google.spanner.v1.TransactionOptions.PartitionedDml - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - PartitionedDml.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/google.spanner.v1.TransactionOptions.PartitionedDml"; - }; - - return PartitionedDml; - })(); - - TransactionOptions.ReadOnly = (function() { - - /** - * Properties of a ReadOnly. - * @memberof google.spanner.v1.TransactionOptions - * @interface IReadOnly - * @property {boolean|null} [strong] ReadOnly strong - * @property {google.protobuf.ITimestamp|null} [minReadTimestamp] ReadOnly minReadTimestamp - * @property {google.protobuf.IDuration|null} [maxStaleness] ReadOnly maxStaleness - * @property {google.protobuf.ITimestamp|null} [readTimestamp] ReadOnly readTimestamp - * @property {google.protobuf.IDuration|null} [exactStaleness] ReadOnly exactStaleness - * @property {boolean|null} [returnReadTimestamp] ReadOnly returnReadTimestamp - */ - - /** - * Constructs a new ReadOnly. - * @memberof google.spanner.v1.TransactionOptions - * @classdesc Represents a ReadOnly. - * @implements IReadOnly - * @constructor - * @param {google.spanner.v1.TransactionOptions.IReadOnly=} [properties] Properties to set - */ - function ReadOnly(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * ReadOnly strong. - * @member {boolean|null|undefined} strong - * @memberof google.spanner.v1.TransactionOptions.ReadOnly - * @instance - */ - ReadOnly.prototype.strong = null; - - /** - * ReadOnly minReadTimestamp. - * @member {google.protobuf.ITimestamp|null|undefined} minReadTimestamp - * @memberof google.spanner.v1.TransactionOptions.ReadOnly - * @instance - */ - ReadOnly.prototype.minReadTimestamp = null; - - /** - * ReadOnly maxStaleness. - * @member {google.protobuf.IDuration|null|undefined} maxStaleness - * @memberof google.spanner.v1.TransactionOptions.ReadOnly - * @instance - */ - ReadOnly.prototype.maxStaleness = null; - - /** - * ReadOnly readTimestamp. - * @member {google.protobuf.ITimestamp|null|undefined} readTimestamp - * @memberof google.spanner.v1.TransactionOptions.ReadOnly - * @instance - */ - ReadOnly.prototype.readTimestamp = null; - - /** - * ReadOnly exactStaleness. - * @member {google.protobuf.IDuration|null|undefined} exactStaleness - * @memberof google.spanner.v1.TransactionOptions.ReadOnly - * @instance - */ - ReadOnly.prototype.exactStaleness = null; - - /** - * ReadOnly returnReadTimestamp. - * @member {boolean} returnReadTimestamp - * @memberof google.spanner.v1.TransactionOptions.ReadOnly - * @instance - */ - ReadOnly.prototype.returnReadTimestamp = false; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; - - /** - * ReadOnly timestampBound. - * @member {"strong"|"minReadTimestamp"|"maxStaleness"|"readTimestamp"|"exactStaleness"|undefined} timestampBound - * @memberof google.spanner.v1.TransactionOptions.ReadOnly - * @instance - */ - Object.defineProperty(ReadOnly.prototype, "timestampBound", { - get: $util.oneOfGetter($oneOfFields = ["strong", "minReadTimestamp", "maxStaleness", "readTimestamp", "exactStaleness"]), - set: $util.oneOfSetter($oneOfFields) - }); - - /** - * Creates a new ReadOnly instance using the specified properties. - * @function create - * @memberof google.spanner.v1.TransactionOptions.ReadOnly - * @static - * @param {google.spanner.v1.TransactionOptions.IReadOnly=} [properties] Properties to set - * @returns {google.spanner.v1.TransactionOptions.ReadOnly} ReadOnly instance - */ - ReadOnly.create = function create(properties) { - return new ReadOnly(properties); - }; - - /** - * Encodes the specified ReadOnly message. Does not implicitly {@link google.spanner.v1.TransactionOptions.ReadOnly.verify|verify} messages. - * @function encode - * @memberof google.spanner.v1.TransactionOptions.ReadOnly - * @static - * @param {google.spanner.v1.TransactionOptions.IReadOnly} message ReadOnly message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ReadOnly.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.strong != null && Object.hasOwnProperty.call(message, "strong")) - writer.uint32(/* id 1, wireType 0 =*/8).bool(message.strong); - if (message.minReadTimestamp != null && Object.hasOwnProperty.call(message, "minReadTimestamp")) - $root.google.protobuf.Timestamp.encode(message.minReadTimestamp, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.maxStaleness != null && Object.hasOwnProperty.call(message, "maxStaleness")) - $root.google.protobuf.Duration.encode(message.maxStaleness, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.readTimestamp != null && Object.hasOwnProperty.call(message, "readTimestamp")) - $root.google.protobuf.Timestamp.encode(message.readTimestamp, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.exactStaleness != null && Object.hasOwnProperty.call(message, "exactStaleness")) - $root.google.protobuf.Duration.encode(message.exactStaleness, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - if (message.returnReadTimestamp != null && Object.hasOwnProperty.call(message, "returnReadTimestamp")) - writer.uint32(/* id 6, wireType 0 =*/48).bool(message.returnReadTimestamp); - return writer; - }; - - /** - * Encodes the specified ReadOnly message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionOptions.ReadOnly.verify|verify} messages. - * @function encodeDelimited - * @memberof google.spanner.v1.TransactionOptions.ReadOnly - * @static - * @param {google.spanner.v1.TransactionOptions.IReadOnly} message ReadOnly message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - ReadOnly.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a ReadOnly message from the specified reader or buffer. - * @function decode - * @memberof google.spanner.v1.TransactionOptions.ReadOnly - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.TransactionOptions.ReadOnly} ReadOnly - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ReadOnly.decode = function decode(reader, length, error) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.TransactionOptions.ReadOnly(); - while (reader.pos < end) { - var tag = reader.uint32(); - if (tag === error) - break; - switch (tag >>> 3) { - case 1: { - message.strong = reader.bool(); - break; - } - case 2: { - message.minReadTimestamp = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); - break; - } - case 3: { - message.maxStaleness = $root.google.protobuf.Duration.decode(reader, reader.uint32()); - break; - } - case 4: { - message.readTimestamp = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); - break; - } - case 5: { - message.exactStaleness = $root.google.protobuf.Duration.decode(reader, reader.uint32()); - break; - } - case 6: { - message.returnReadTimestamp = reader.bool(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a ReadOnly message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.spanner.v1.TransactionOptions.ReadOnly - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.TransactionOptions.ReadOnly} ReadOnly - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - ReadOnly.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a ReadOnly message. - * @function verify - * @memberof google.spanner.v1.TransactionOptions.ReadOnly - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - ReadOnly.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - var properties = {}; - if (message.strong != null && message.hasOwnProperty("strong")) { - properties.timestampBound = 1; - if (typeof message.strong !== "boolean") - return "strong: boolean expected"; - } - if (message.minReadTimestamp != null && message.hasOwnProperty("minReadTimestamp")) { - if (properties.timestampBound === 1) - return "timestampBound: multiple values"; - properties.timestampBound = 1; - { - var error = $root.google.protobuf.Timestamp.verify(message.minReadTimestamp); - if (error) - return "minReadTimestamp." + error; - } - } - if (message.maxStaleness != null && message.hasOwnProperty("maxStaleness")) { - if (properties.timestampBound === 1) - return "timestampBound: multiple values"; - properties.timestampBound = 1; - { - var error = $root.google.protobuf.Duration.verify(message.maxStaleness); - if (error) - return "maxStaleness." + error; - } - } - if (message.readTimestamp != null && message.hasOwnProperty("readTimestamp")) { - if (properties.timestampBound === 1) - return "timestampBound: multiple values"; - properties.timestampBound = 1; - { - var error = $root.google.protobuf.Timestamp.verify(message.readTimestamp); - if (error) - return "readTimestamp." + error; - } - } - if (message.exactStaleness != null && message.hasOwnProperty("exactStaleness")) { - if (properties.timestampBound === 1) - return "timestampBound: multiple values"; - properties.timestampBound = 1; - { - var error = $root.google.protobuf.Duration.verify(message.exactStaleness); - if (error) - return "exactStaleness." + error; - } - } - if (message.returnReadTimestamp != null && message.hasOwnProperty("returnReadTimestamp")) - if (typeof message.returnReadTimestamp !== "boolean") - return "returnReadTimestamp: boolean expected"; - return null; - }; - - /** - * Creates a ReadOnly message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.spanner.v1.TransactionOptions.ReadOnly - * @static - * @param {Object.} object Plain object - * @returns {google.spanner.v1.TransactionOptions.ReadOnly} ReadOnly - */ - ReadOnly.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.TransactionOptions.ReadOnly) - return object; - var message = new $root.google.spanner.v1.TransactionOptions.ReadOnly(); - if (object.strong != null) - message.strong = Boolean(object.strong); - if (object.minReadTimestamp != null) { - if (typeof object.minReadTimestamp !== "object") - throw TypeError(".google.spanner.v1.TransactionOptions.ReadOnly.minReadTimestamp: object expected"); - message.minReadTimestamp = $root.google.protobuf.Timestamp.fromObject(object.minReadTimestamp); - } - if (object.maxStaleness != null) { - if (typeof object.maxStaleness !== "object") - throw TypeError(".google.spanner.v1.TransactionOptions.ReadOnly.maxStaleness: object expected"); - message.maxStaleness = $root.google.protobuf.Duration.fromObject(object.maxStaleness); - } - if (object.readTimestamp != null) { - if (typeof object.readTimestamp !== "object") - throw TypeError(".google.spanner.v1.TransactionOptions.ReadOnly.readTimestamp: object expected"); - message.readTimestamp = $root.google.protobuf.Timestamp.fromObject(object.readTimestamp); - } - if (object.exactStaleness != null) { - if (typeof object.exactStaleness !== "object") - throw TypeError(".google.spanner.v1.TransactionOptions.ReadOnly.exactStaleness: object expected"); - message.exactStaleness = $root.google.protobuf.Duration.fromObject(object.exactStaleness); - } - if (object.returnReadTimestamp != null) - message.returnReadTimestamp = Boolean(object.returnReadTimestamp); - return message; - }; - - /** - * Creates a plain object from a ReadOnly message. Also converts values to other types if specified. - * @function toObject - * @memberof google.spanner.v1.TransactionOptions.ReadOnly - * @static - * @param {google.spanner.v1.TransactionOptions.ReadOnly} message ReadOnly - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - ReadOnly.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - object.returnReadTimestamp = false; - if (message.strong != null && message.hasOwnProperty("strong")) { - object.strong = message.strong; - if (options.oneofs) - object.timestampBound = "strong"; - } - if (message.minReadTimestamp != null && message.hasOwnProperty("minReadTimestamp")) { - object.minReadTimestamp = $root.google.protobuf.Timestamp.toObject(message.minReadTimestamp, options); - if (options.oneofs) - object.timestampBound = "minReadTimestamp"; - } - if (message.maxStaleness != null && message.hasOwnProperty("maxStaleness")) { - object.maxStaleness = $root.google.protobuf.Duration.toObject(message.maxStaleness, options); - if (options.oneofs) - object.timestampBound = "maxStaleness"; - } - if (message.readTimestamp != null && message.hasOwnProperty("readTimestamp")) { - object.readTimestamp = $root.google.protobuf.Timestamp.toObject(message.readTimestamp, options); - if (options.oneofs) - object.timestampBound = "readTimestamp"; - } - if (message.exactStaleness != null && message.hasOwnProperty("exactStaleness")) { - object.exactStaleness = $root.google.protobuf.Duration.toObject(message.exactStaleness, options); - if (options.oneofs) - object.timestampBound = "exactStaleness"; + /** + * Creates a plain object from a Tablet message. Also converts values to other types if specified. + * @function toObject + * @memberof google.spanner.v1.Tablet + * @static + * @param {google.spanner.v1.Tablet} message Tablet + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Tablet.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.tabletUid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.tabletUid = options.longs === String ? "0" : 0; + object.serverAddress = ""; + object.location = ""; + object.role = options.enums === String ? "ROLE_UNSPECIFIED" : 0; + if (options.bytes === String) + object.incarnation = ""; + else { + object.incarnation = []; + if (options.bytes !== Array) + object.incarnation = $util.newBuffer(object.incarnation); } - if (message.returnReadTimestamp != null && message.hasOwnProperty("returnReadTimestamp")) - object.returnReadTimestamp = message.returnReadTimestamp; - return object; - }; - - /** - * Converts this ReadOnly to JSON. - * @function toJSON - * @memberof google.spanner.v1.TransactionOptions.ReadOnly - * @instance - * @returns {Object.} JSON object - */ - ReadOnly.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + object.distance = 0; + object.skip = false; + } + if (message.tabletUid != null && message.hasOwnProperty("tabletUid")) + if (typeof message.tabletUid === "number") + object.tabletUid = options.longs === String ? String(message.tabletUid) : message.tabletUid; + else + object.tabletUid = options.longs === String ? $util.Long.prototype.toString.call(message.tabletUid) : options.longs === Number ? new $util.LongBits(message.tabletUid.low >>> 0, message.tabletUid.high >>> 0).toNumber(true) : message.tabletUid; + if (message.serverAddress != null && message.hasOwnProperty("serverAddress")) + object.serverAddress = message.serverAddress; + if (message.location != null && message.hasOwnProperty("location")) + object.location = message.location; + if (message.role != null && message.hasOwnProperty("role")) + object.role = options.enums === String ? $root.google.spanner.v1.Tablet.Role[message.role] === undefined ? message.role : $root.google.spanner.v1.Tablet.Role[message.role] : message.role; + if (message.incarnation != null && message.hasOwnProperty("incarnation")) + object.incarnation = options.bytes === String ? $util.base64.encode(message.incarnation, 0, message.incarnation.length) : options.bytes === Array ? Array.prototype.slice.call(message.incarnation) : message.incarnation; + if (message.distance != null && message.hasOwnProperty("distance")) + object.distance = message.distance; + if (message.skip != null && message.hasOwnProperty("skip")) + object.skip = message.skip; + return object; + }; - /** - * Gets the default type url for ReadOnly - * @function getTypeUrl - * @memberof google.spanner.v1.TransactionOptions.ReadOnly - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - ReadOnly.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/google.spanner.v1.TransactionOptions.ReadOnly"; - }; + /** + * Converts this Tablet to JSON. + * @function toJSON + * @memberof google.spanner.v1.Tablet + * @instance + * @returns {Object.} JSON object + */ + Tablet.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - return ReadOnly; - })(); + /** + * Gets the default type url for Tablet + * @function getTypeUrl + * @memberof google.spanner.v1.Tablet + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Tablet.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.spanner.v1.Tablet"; + }; /** - * IsolationLevel enum. - * @name google.spanner.v1.TransactionOptions.IsolationLevel + * Role enum. + * @name google.spanner.v1.Tablet.Role * @enum {number} - * @property {number} ISOLATION_LEVEL_UNSPECIFIED=0 ISOLATION_LEVEL_UNSPECIFIED value - * @property {number} SERIALIZABLE=1 SERIALIZABLE value - * @property {number} REPEATABLE_READ=2 REPEATABLE_READ value + * @property {number} ROLE_UNSPECIFIED=0 ROLE_UNSPECIFIED value + * @property {number} READ_WRITE=1 READ_WRITE value + * @property {number} READ_ONLY=2 READ_ONLY value */ - TransactionOptions.IsolationLevel = (function() { + Tablet.Role = (function() { var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "ISOLATION_LEVEL_UNSPECIFIED"] = 0; - values[valuesById[1] = "SERIALIZABLE"] = 1; - values[valuesById[2] = "REPEATABLE_READ"] = 2; + values[valuesById[0] = "ROLE_UNSPECIFIED"] = 0; + values[valuesById[1] = "READ_WRITE"] = 1; + values[valuesById[2] = "READ_ONLY"] = 2; return values; })(); - return TransactionOptions; + return Tablet; })(); - v1.Transaction = (function() { + v1.Group = (function() { /** - * Properties of a Transaction. + * Properties of a Group. * @memberof google.spanner.v1 - * @interface ITransaction - * @property {Uint8Array|null} [id] Transaction id - * @property {google.protobuf.ITimestamp|null} [readTimestamp] Transaction readTimestamp - * @property {google.spanner.v1.IMultiplexedSessionPrecommitToken|null} [precommitToken] Transaction precommitToken + * @interface IGroup + * @property {number|Long|null} [groupUid] Group groupUid + * @property {Array.|null} [tablets] Group tablets + * @property {number|null} [leaderIndex] Group leaderIndex + * @property {Uint8Array|null} [generation] Group generation */ /** - * Constructs a new Transaction. + * Constructs a new Group. * @memberof google.spanner.v1 - * @classdesc Represents a Transaction. - * @implements ITransaction + * @classdesc Represents a Group. + * @implements IGroup * @constructor - * @param {google.spanner.v1.ITransaction=} [properties] Properties to set + * @param {google.spanner.v1.IGroup=} [properties] Properties to set */ - function Transaction(properties) { + function Group(properties) { + this.tablets = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -88278,105 +87895,122 @@ } /** - * Transaction id. - * @member {Uint8Array} id - * @memberof google.spanner.v1.Transaction + * Group groupUid. + * @member {number|Long} groupUid + * @memberof google.spanner.v1.Group * @instance */ - Transaction.prototype.id = $util.newBuffer([]); + Group.prototype.groupUid = $util.Long ? $util.Long.fromBits(0,0,true) : 0; /** - * Transaction readTimestamp. - * @member {google.protobuf.ITimestamp|null|undefined} readTimestamp - * @memberof google.spanner.v1.Transaction + * Group tablets. + * @member {Array.} tablets + * @memberof google.spanner.v1.Group * @instance */ - Transaction.prototype.readTimestamp = null; + Group.prototype.tablets = $util.emptyArray; /** - * Transaction precommitToken. - * @member {google.spanner.v1.IMultiplexedSessionPrecommitToken|null|undefined} precommitToken - * @memberof google.spanner.v1.Transaction + * Group leaderIndex. + * @member {number} leaderIndex + * @memberof google.spanner.v1.Group * @instance */ - Transaction.prototype.precommitToken = null; + Group.prototype.leaderIndex = 0; /** - * Creates a new Transaction instance using the specified properties. + * Group generation. + * @member {Uint8Array} generation + * @memberof google.spanner.v1.Group + * @instance + */ + Group.prototype.generation = $util.newBuffer([]); + + /** + * Creates a new Group instance using the specified properties. * @function create - * @memberof google.spanner.v1.Transaction + * @memberof google.spanner.v1.Group * @static - * @param {google.spanner.v1.ITransaction=} [properties] Properties to set - * @returns {google.spanner.v1.Transaction} Transaction instance + * @param {google.spanner.v1.IGroup=} [properties] Properties to set + * @returns {google.spanner.v1.Group} Group instance */ - Transaction.create = function create(properties) { - return new Transaction(properties); + Group.create = function create(properties) { + return new Group(properties); }; /** - * Encodes the specified Transaction message. Does not implicitly {@link google.spanner.v1.Transaction.verify|verify} messages. + * Encodes the specified Group message. Does not implicitly {@link google.spanner.v1.Group.verify|verify} messages. * @function encode - * @memberof google.spanner.v1.Transaction + * @memberof google.spanner.v1.Group * @static - * @param {google.spanner.v1.ITransaction} message Transaction message or plain object to encode + * @param {google.spanner.v1.IGroup} message Group message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Transaction.encode = function encode(message, writer) { + Group.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.id != null && Object.hasOwnProperty.call(message, "id")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.id); - if (message.readTimestamp != null && Object.hasOwnProperty.call(message, "readTimestamp")) - $root.google.protobuf.Timestamp.encode(message.readTimestamp, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.precommitToken != null && Object.hasOwnProperty.call(message, "precommitToken")) - $root.google.spanner.v1.MultiplexedSessionPrecommitToken.encode(message.precommitToken, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.groupUid != null && Object.hasOwnProperty.call(message, "groupUid")) + writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.groupUid); + if (message.tablets != null && message.tablets.length) + for (var i = 0; i < message.tablets.length; ++i) + $root.google.spanner.v1.Tablet.encode(message.tablets[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.leaderIndex != null && Object.hasOwnProperty.call(message, "leaderIndex")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.leaderIndex); + if (message.generation != null && Object.hasOwnProperty.call(message, "generation")) + writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.generation); return writer; }; /** - * Encodes the specified Transaction message, length delimited. Does not implicitly {@link google.spanner.v1.Transaction.verify|verify} messages. + * Encodes the specified Group message, length delimited. Does not implicitly {@link google.spanner.v1.Group.verify|verify} messages. * @function encodeDelimited - * @memberof google.spanner.v1.Transaction + * @memberof google.spanner.v1.Group * @static - * @param {google.spanner.v1.ITransaction} message Transaction message or plain object to encode + * @param {google.spanner.v1.IGroup} message Group message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Transaction.encodeDelimited = function encodeDelimited(message, writer) { + Group.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Transaction message from the specified reader or buffer. + * Decodes a Group message from the specified reader or buffer. * @function decode - * @memberof google.spanner.v1.Transaction + * @memberof google.spanner.v1.Group * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.Transaction} Transaction + * @returns {google.spanner.v1.Group} Group * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Transaction.decode = function decode(reader, length, error) { + Group.decode = function decode(reader, length, error) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.Transaction(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.Group(); while (reader.pos < end) { var tag = reader.uint32(); if (tag === error) break; switch (tag >>> 3) { case 1: { - message.id = reader.bytes(); + message.groupUid = reader.uint64(); break; } case 2: { - message.readTimestamp = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + if (!(message.tablets && message.tablets.length)) + message.tablets = []; + message.tablets.push($root.google.spanner.v1.Tablet.decode(reader, reader.uint32())); break; } case 3: { - message.precommitToken = $root.google.spanner.v1.MultiplexedSessionPrecommitToken.decode(reader, reader.uint32()); + message.leaderIndex = reader.int32(); + break; + } + case 4: { + message.generation = reader.bytes(); break; } default: @@ -88388,160 +88022,192 @@ }; /** - * Decodes a Transaction message from the specified reader or buffer, length delimited. + * Decodes a Group message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.spanner.v1.Transaction + * @memberof google.spanner.v1.Group * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.Transaction} Transaction + * @returns {google.spanner.v1.Group} Group * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Transaction.decodeDelimited = function decodeDelimited(reader) { + Group.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Transaction message. + * Verifies a Group message. * @function verify - * @memberof google.spanner.v1.Transaction + * @memberof google.spanner.v1.Group * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Transaction.verify = function verify(message) { + Group.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.id != null && message.hasOwnProperty("id")) - if (!(message.id && typeof message.id.length === "number" || $util.isString(message.id))) - return "id: buffer expected"; - if (message.readTimestamp != null && message.hasOwnProperty("readTimestamp")) { - var error = $root.google.protobuf.Timestamp.verify(message.readTimestamp); - if (error) - return "readTimestamp." + error; - } - if (message.precommitToken != null && message.hasOwnProperty("precommitToken")) { - var error = $root.google.spanner.v1.MultiplexedSessionPrecommitToken.verify(message.precommitToken); - if (error) - return "precommitToken." + error; + if (message.groupUid != null && message.hasOwnProperty("groupUid")) + if (!$util.isInteger(message.groupUid) && !(message.groupUid && $util.isInteger(message.groupUid.low) && $util.isInteger(message.groupUid.high))) + return "groupUid: integer|Long expected"; + if (message.tablets != null && message.hasOwnProperty("tablets")) { + if (!Array.isArray(message.tablets)) + return "tablets: array expected"; + for (var i = 0; i < message.tablets.length; ++i) { + var error = $root.google.spanner.v1.Tablet.verify(message.tablets[i]); + if (error) + return "tablets." + error; + } } + if (message.leaderIndex != null && message.hasOwnProperty("leaderIndex")) + if (!$util.isInteger(message.leaderIndex)) + return "leaderIndex: integer expected"; + if (message.generation != null && message.hasOwnProperty("generation")) + if (!(message.generation && typeof message.generation.length === "number" || $util.isString(message.generation))) + return "generation: buffer expected"; return null; }; /** - * Creates a Transaction message from a plain object. Also converts values to their respective internal types. + * Creates a Group message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.spanner.v1.Transaction + * @memberof google.spanner.v1.Group * @static * @param {Object.} object Plain object - * @returns {google.spanner.v1.Transaction} Transaction + * @returns {google.spanner.v1.Group} Group */ - Transaction.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.Transaction) + Group.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.Group) return object; - var message = new $root.google.spanner.v1.Transaction(); - if (object.id != null) - if (typeof object.id === "string") - $util.base64.decode(object.id, message.id = $util.newBuffer($util.base64.length(object.id)), 0); - else if (object.id.length >= 0) - message.id = object.id; - if (object.readTimestamp != null) { - if (typeof object.readTimestamp !== "object") - throw TypeError(".google.spanner.v1.Transaction.readTimestamp: object expected"); - message.readTimestamp = $root.google.protobuf.Timestamp.fromObject(object.readTimestamp); - } - if (object.precommitToken != null) { - if (typeof object.precommitToken !== "object") - throw TypeError(".google.spanner.v1.Transaction.precommitToken: object expected"); - message.precommitToken = $root.google.spanner.v1.MultiplexedSessionPrecommitToken.fromObject(object.precommitToken); + var message = new $root.google.spanner.v1.Group(); + if (object.groupUid != null) + if ($util.Long) + (message.groupUid = $util.Long.fromValue(object.groupUid)).unsigned = true; + else if (typeof object.groupUid === "string") + message.groupUid = parseInt(object.groupUid, 10); + else if (typeof object.groupUid === "number") + message.groupUid = object.groupUid; + else if (typeof object.groupUid === "object") + message.groupUid = new $util.LongBits(object.groupUid.low >>> 0, object.groupUid.high >>> 0).toNumber(true); + if (object.tablets) { + if (!Array.isArray(object.tablets)) + throw TypeError(".google.spanner.v1.Group.tablets: array expected"); + message.tablets = []; + for (var i = 0; i < object.tablets.length; ++i) { + if (typeof object.tablets[i] !== "object") + throw TypeError(".google.spanner.v1.Group.tablets: object expected"); + message.tablets[i] = $root.google.spanner.v1.Tablet.fromObject(object.tablets[i]); + } } + if (object.leaderIndex != null) + message.leaderIndex = object.leaderIndex | 0; + if (object.generation != null) + if (typeof object.generation === "string") + $util.base64.decode(object.generation, message.generation = $util.newBuffer($util.base64.length(object.generation)), 0); + else if (object.generation.length >= 0) + message.generation = object.generation; return message; }; /** - * Creates a plain object from a Transaction message. Also converts values to other types if specified. + * Creates a plain object from a Group message. Also converts values to other types if specified. * @function toObject - * @memberof google.spanner.v1.Transaction + * @memberof google.spanner.v1.Group * @static - * @param {google.spanner.v1.Transaction} message Transaction + * @param {google.spanner.v1.Group} message Group * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Transaction.toObject = function toObject(message, options) { + Group.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; + if (options.arrays || options.defaults) + object.tablets = []; if (options.defaults) { + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.groupUid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.groupUid = options.longs === String ? "0" : 0; + object.leaderIndex = 0; if (options.bytes === String) - object.id = ""; + object.generation = ""; else { - object.id = []; + object.generation = []; if (options.bytes !== Array) - object.id = $util.newBuffer(object.id); + object.generation = $util.newBuffer(object.generation); } - object.readTimestamp = null; - object.precommitToken = null; } - if (message.id != null && message.hasOwnProperty("id")) - object.id = options.bytes === String ? $util.base64.encode(message.id, 0, message.id.length) : options.bytes === Array ? Array.prototype.slice.call(message.id) : message.id; - if (message.readTimestamp != null && message.hasOwnProperty("readTimestamp")) - object.readTimestamp = $root.google.protobuf.Timestamp.toObject(message.readTimestamp, options); - if (message.precommitToken != null && message.hasOwnProperty("precommitToken")) - object.precommitToken = $root.google.spanner.v1.MultiplexedSessionPrecommitToken.toObject(message.precommitToken, options); + if (message.groupUid != null && message.hasOwnProperty("groupUid")) + if (typeof message.groupUid === "number") + object.groupUid = options.longs === String ? String(message.groupUid) : message.groupUid; + else + object.groupUid = options.longs === String ? $util.Long.prototype.toString.call(message.groupUid) : options.longs === Number ? new $util.LongBits(message.groupUid.low >>> 0, message.groupUid.high >>> 0).toNumber(true) : message.groupUid; + if (message.tablets && message.tablets.length) { + object.tablets = []; + for (var j = 0; j < message.tablets.length; ++j) + object.tablets[j] = $root.google.spanner.v1.Tablet.toObject(message.tablets[j], options); + } + if (message.leaderIndex != null && message.hasOwnProperty("leaderIndex")) + object.leaderIndex = message.leaderIndex; + if (message.generation != null && message.hasOwnProperty("generation")) + object.generation = options.bytes === String ? $util.base64.encode(message.generation, 0, message.generation.length) : options.bytes === Array ? Array.prototype.slice.call(message.generation) : message.generation; return object; }; /** - * Converts this Transaction to JSON. + * Converts this Group to JSON. * @function toJSON - * @memberof google.spanner.v1.Transaction + * @memberof google.spanner.v1.Group * @instance * @returns {Object.} JSON object */ - Transaction.prototype.toJSON = function toJSON() { + Group.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for Transaction + * Gets the default type url for Group * @function getTypeUrl - * @memberof google.spanner.v1.Transaction + * @memberof google.spanner.v1.Group * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - Transaction.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + Group.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.spanner.v1.Transaction"; + return typeUrlPrefix + "/google.spanner.v1.Group"; }; - return Transaction; + return Group; })(); - v1.TransactionSelector = (function() { + v1.KeyRecipe = (function() { /** - * Properties of a TransactionSelector. + * Properties of a KeyRecipe. * @memberof google.spanner.v1 - * @interface ITransactionSelector - * @property {google.spanner.v1.ITransactionOptions|null} [singleUse] TransactionSelector singleUse - * @property {Uint8Array|null} [id] TransactionSelector id - * @property {google.spanner.v1.ITransactionOptions|null} [begin] TransactionSelector begin + * @interface IKeyRecipe + * @property {string|null} [tableName] KeyRecipe tableName + * @property {string|null} [indexName] KeyRecipe indexName + * @property {number|Long|null} [operationUid] KeyRecipe operationUid + * @property {Array.|null} [part] KeyRecipe part */ /** - * Constructs a new TransactionSelector. + * Constructs a new KeyRecipe. * @memberof google.spanner.v1 - * @classdesc Represents a TransactionSelector. - * @implements ITransactionSelector + * @classdesc Represents a KeyRecipe. + * @implements IKeyRecipe * @constructor - * @param {google.spanner.v1.ITransactionSelector=} [properties] Properties to set + * @param {google.spanner.v1.IKeyRecipe=} [properties] Properties to set */ - function TransactionSelector(properties) { + function KeyRecipe(properties) { + this.part = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -88549,119 +88215,136 @@ } /** - * TransactionSelector singleUse. - * @member {google.spanner.v1.ITransactionOptions|null|undefined} singleUse - * @memberof google.spanner.v1.TransactionSelector + * KeyRecipe tableName. + * @member {string|null|undefined} tableName + * @memberof google.spanner.v1.KeyRecipe * @instance */ - TransactionSelector.prototype.singleUse = null; + KeyRecipe.prototype.tableName = null; /** - * TransactionSelector id. - * @member {Uint8Array|null|undefined} id - * @memberof google.spanner.v1.TransactionSelector + * KeyRecipe indexName. + * @member {string|null|undefined} indexName + * @memberof google.spanner.v1.KeyRecipe * @instance */ - TransactionSelector.prototype.id = null; + KeyRecipe.prototype.indexName = null; /** - * TransactionSelector begin. - * @member {google.spanner.v1.ITransactionOptions|null|undefined} begin - * @memberof google.spanner.v1.TransactionSelector + * KeyRecipe operationUid. + * @member {number|Long|null|undefined} operationUid + * @memberof google.spanner.v1.KeyRecipe * @instance */ - TransactionSelector.prototype.begin = null; + KeyRecipe.prototype.operationUid = null; + + /** + * KeyRecipe part. + * @member {Array.} part + * @memberof google.spanner.v1.KeyRecipe + * @instance + */ + KeyRecipe.prototype.part = $util.emptyArray; // OneOf field names bound to virtual getters and setters var $oneOfFields; /** - * TransactionSelector selector. - * @member {"singleUse"|"id"|"begin"|undefined} selector - * @memberof google.spanner.v1.TransactionSelector + * KeyRecipe target. + * @member {"tableName"|"indexName"|"operationUid"|undefined} target + * @memberof google.spanner.v1.KeyRecipe * @instance */ - Object.defineProperty(TransactionSelector.prototype, "selector", { - get: $util.oneOfGetter($oneOfFields = ["singleUse", "id", "begin"]), + Object.defineProperty(KeyRecipe.prototype, "target", { + get: $util.oneOfGetter($oneOfFields = ["tableName", "indexName", "operationUid"]), set: $util.oneOfSetter($oneOfFields) }); /** - * Creates a new TransactionSelector instance using the specified properties. + * Creates a new KeyRecipe instance using the specified properties. * @function create - * @memberof google.spanner.v1.TransactionSelector - * @static - * @param {google.spanner.v1.ITransactionSelector=} [properties] Properties to set - * @returns {google.spanner.v1.TransactionSelector} TransactionSelector instance + * @memberof google.spanner.v1.KeyRecipe + * @static + * @param {google.spanner.v1.IKeyRecipe=} [properties] Properties to set + * @returns {google.spanner.v1.KeyRecipe} KeyRecipe instance */ - TransactionSelector.create = function create(properties) { - return new TransactionSelector(properties); + KeyRecipe.create = function create(properties) { + return new KeyRecipe(properties); }; /** - * Encodes the specified TransactionSelector message. Does not implicitly {@link google.spanner.v1.TransactionSelector.verify|verify} messages. + * Encodes the specified KeyRecipe message. Does not implicitly {@link google.spanner.v1.KeyRecipe.verify|verify} messages. * @function encode - * @memberof google.spanner.v1.TransactionSelector + * @memberof google.spanner.v1.KeyRecipe * @static - * @param {google.spanner.v1.ITransactionSelector} message TransactionSelector message or plain object to encode + * @param {google.spanner.v1.IKeyRecipe} message KeyRecipe message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TransactionSelector.encode = function encode(message, writer) { + KeyRecipe.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.singleUse != null && Object.hasOwnProperty.call(message, "singleUse")) - $root.google.spanner.v1.TransactionOptions.encode(message.singleUse, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.id != null && Object.hasOwnProperty.call(message, "id")) - writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.id); - if (message.begin != null && Object.hasOwnProperty.call(message, "begin")) - $root.google.spanner.v1.TransactionOptions.encode(message.begin, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.tableName != null && Object.hasOwnProperty.call(message, "tableName")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.tableName); + if (message.indexName != null && Object.hasOwnProperty.call(message, "indexName")) + writer.uint32(/* id 2, wireType 2 =*/18).string(message.indexName); + if (message.operationUid != null && Object.hasOwnProperty.call(message, "operationUid")) + writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.operationUid); + if (message.part != null && message.part.length) + for (var i = 0; i < message.part.length; ++i) + $root.google.spanner.v1.KeyRecipe.Part.encode(message.part[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); return writer; }; /** - * Encodes the specified TransactionSelector message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionSelector.verify|verify} messages. + * Encodes the specified KeyRecipe message, length delimited. Does not implicitly {@link google.spanner.v1.KeyRecipe.verify|verify} messages. * @function encodeDelimited - * @memberof google.spanner.v1.TransactionSelector + * @memberof google.spanner.v1.KeyRecipe * @static - * @param {google.spanner.v1.ITransactionSelector} message TransactionSelector message or plain object to encode + * @param {google.spanner.v1.IKeyRecipe} message KeyRecipe message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - TransactionSelector.encodeDelimited = function encodeDelimited(message, writer) { + KeyRecipe.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a TransactionSelector message from the specified reader or buffer. + * Decodes a KeyRecipe message from the specified reader or buffer. * @function decode - * @memberof google.spanner.v1.TransactionSelector + * @memberof google.spanner.v1.KeyRecipe * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.TransactionSelector} TransactionSelector + * @returns {google.spanner.v1.KeyRecipe} KeyRecipe * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - TransactionSelector.decode = function decode(reader, length, error) { + KeyRecipe.decode = function decode(reader, length, error) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.TransactionSelector(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.KeyRecipe(); while (reader.pos < end) { var tag = reader.uint32(); if (tag === error) break; switch (tag >>> 3) { case 1: { - message.singleUse = $root.google.spanner.v1.TransactionOptions.decode(reader, reader.uint32()); + message.tableName = reader.string(); break; } case 2: { - message.id = reader.bytes(); + message.indexName = reader.string(); break; } case 3: { - message.begin = $root.google.spanner.v1.TransactionOptions.decode(reader, reader.uint32()); + message.operationUid = reader.uint64(); + break; + } + case 4: { + if (!(message.part && message.part.length)) + message.part = []; + message.part.push($root.google.spanner.v1.KeyRecipe.Part.decode(reader, reader.uint32())); break; } default: @@ -88673,555 +88356,808 @@ }; /** - * Decodes a TransactionSelector message from the specified reader or buffer, length delimited. + * Decodes a KeyRecipe message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.spanner.v1.TransactionSelector + * @memberof google.spanner.v1.KeyRecipe * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.TransactionSelector} TransactionSelector + * @returns {google.spanner.v1.KeyRecipe} KeyRecipe * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - TransactionSelector.decodeDelimited = function decodeDelimited(reader) { + KeyRecipe.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a TransactionSelector message. + * Verifies a KeyRecipe message. * @function verify - * @memberof google.spanner.v1.TransactionSelector + * @memberof google.spanner.v1.KeyRecipe * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - TransactionSelector.verify = function verify(message) { + KeyRecipe.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; var properties = {}; - if (message.singleUse != null && message.hasOwnProperty("singleUse")) { - properties.selector = 1; - { - var error = $root.google.spanner.v1.TransactionOptions.verify(message.singleUse); - if (error) - return "singleUse." + error; - } + if (message.tableName != null && message.hasOwnProperty("tableName")) { + properties.target = 1; + if (!$util.isString(message.tableName)) + return "tableName: string expected"; } - if (message.id != null && message.hasOwnProperty("id")) { - if (properties.selector === 1) - return "selector: multiple values"; - properties.selector = 1; - if (!(message.id && typeof message.id.length === "number" || $util.isString(message.id))) - return "id: buffer expected"; + if (message.indexName != null && message.hasOwnProperty("indexName")) { + if (properties.target === 1) + return "target: multiple values"; + properties.target = 1; + if (!$util.isString(message.indexName)) + return "indexName: string expected"; } - if (message.begin != null && message.hasOwnProperty("begin")) { - if (properties.selector === 1) - return "selector: multiple values"; - properties.selector = 1; - { - var error = $root.google.spanner.v1.TransactionOptions.verify(message.begin); + if (message.operationUid != null && message.hasOwnProperty("operationUid")) { + if (properties.target === 1) + return "target: multiple values"; + properties.target = 1; + if (!$util.isInteger(message.operationUid) && !(message.operationUid && $util.isInteger(message.operationUid.low) && $util.isInteger(message.operationUid.high))) + return "operationUid: integer|Long expected"; + } + if (message.part != null && message.hasOwnProperty("part")) { + if (!Array.isArray(message.part)) + return "part: array expected"; + for (var i = 0; i < message.part.length; ++i) { + var error = $root.google.spanner.v1.KeyRecipe.Part.verify(message.part[i]); if (error) - return "begin." + error; + return "part." + error; } } return null; }; /** - * Creates a TransactionSelector message from a plain object. Also converts values to their respective internal types. + * Creates a KeyRecipe message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.spanner.v1.TransactionSelector + * @memberof google.spanner.v1.KeyRecipe * @static * @param {Object.} object Plain object - * @returns {google.spanner.v1.TransactionSelector} TransactionSelector + * @returns {google.spanner.v1.KeyRecipe} KeyRecipe */ - TransactionSelector.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.TransactionSelector) + KeyRecipe.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.KeyRecipe) return object; - var message = new $root.google.spanner.v1.TransactionSelector(); - if (object.singleUse != null) { - if (typeof object.singleUse !== "object") - throw TypeError(".google.spanner.v1.TransactionSelector.singleUse: object expected"); - message.singleUse = $root.google.spanner.v1.TransactionOptions.fromObject(object.singleUse); - } - if (object.id != null) - if (typeof object.id === "string") - $util.base64.decode(object.id, message.id = $util.newBuffer($util.base64.length(object.id)), 0); - else if (object.id.length >= 0) - message.id = object.id; - if (object.begin != null) { - if (typeof object.begin !== "object") - throw TypeError(".google.spanner.v1.TransactionSelector.begin: object expected"); - message.begin = $root.google.spanner.v1.TransactionOptions.fromObject(object.begin); + var message = new $root.google.spanner.v1.KeyRecipe(); + if (object.tableName != null) + message.tableName = String(object.tableName); + if (object.indexName != null) + message.indexName = String(object.indexName); + if (object.operationUid != null) + if ($util.Long) + (message.operationUid = $util.Long.fromValue(object.operationUid)).unsigned = true; + else if (typeof object.operationUid === "string") + message.operationUid = parseInt(object.operationUid, 10); + else if (typeof object.operationUid === "number") + message.operationUid = object.operationUid; + else if (typeof object.operationUid === "object") + message.operationUid = new $util.LongBits(object.operationUid.low >>> 0, object.operationUid.high >>> 0).toNumber(true); + if (object.part) { + if (!Array.isArray(object.part)) + throw TypeError(".google.spanner.v1.KeyRecipe.part: array expected"); + message.part = []; + for (var i = 0; i < object.part.length; ++i) { + if (typeof object.part[i] !== "object") + throw TypeError(".google.spanner.v1.KeyRecipe.part: object expected"); + message.part[i] = $root.google.spanner.v1.KeyRecipe.Part.fromObject(object.part[i]); + } } return message; }; /** - * Creates a plain object from a TransactionSelector message. Also converts values to other types if specified. + * Creates a plain object from a KeyRecipe message. Also converts values to other types if specified. * @function toObject - * @memberof google.spanner.v1.TransactionSelector + * @memberof google.spanner.v1.KeyRecipe * @static - * @param {google.spanner.v1.TransactionSelector} message TransactionSelector + * @param {google.spanner.v1.KeyRecipe} message KeyRecipe * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - TransactionSelector.toObject = function toObject(message, options) { + KeyRecipe.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (message.singleUse != null && message.hasOwnProperty("singleUse")) { - object.singleUse = $root.google.spanner.v1.TransactionOptions.toObject(message.singleUse, options); + if (options.arrays || options.defaults) + object.part = []; + if (message.tableName != null && message.hasOwnProperty("tableName")) { + object.tableName = message.tableName; if (options.oneofs) - object.selector = "singleUse"; + object.target = "tableName"; } - if (message.id != null && message.hasOwnProperty("id")) { - object.id = options.bytes === String ? $util.base64.encode(message.id, 0, message.id.length) : options.bytes === Array ? Array.prototype.slice.call(message.id) : message.id; + if (message.indexName != null && message.hasOwnProperty("indexName")) { + object.indexName = message.indexName; if (options.oneofs) - object.selector = "id"; + object.target = "indexName"; } - if (message.begin != null && message.hasOwnProperty("begin")) { - object.begin = $root.google.spanner.v1.TransactionOptions.toObject(message.begin, options); + if (message.operationUid != null && message.hasOwnProperty("operationUid")) { + if (typeof message.operationUid === "number") + object.operationUid = options.longs === String ? String(message.operationUid) : message.operationUid; + else + object.operationUid = options.longs === String ? $util.Long.prototype.toString.call(message.operationUid) : options.longs === Number ? new $util.LongBits(message.operationUid.low >>> 0, message.operationUid.high >>> 0).toNumber(true) : message.operationUid; if (options.oneofs) - object.selector = "begin"; + object.target = "operationUid"; + } + if (message.part && message.part.length) { + object.part = []; + for (var j = 0; j < message.part.length; ++j) + object.part[j] = $root.google.spanner.v1.KeyRecipe.Part.toObject(message.part[j], options); + } + return object; + }; + + /** + * Converts this KeyRecipe to JSON. + * @function toJSON + * @memberof google.spanner.v1.KeyRecipe + * @instance + * @returns {Object.} JSON object + */ + KeyRecipe.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for KeyRecipe + * @function getTypeUrl + * @memberof google.spanner.v1.KeyRecipe + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + KeyRecipe.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.spanner.v1.KeyRecipe"; + }; + + KeyRecipe.Part = (function() { + + /** + * Properties of a Part. + * @memberof google.spanner.v1.KeyRecipe + * @interface IPart + * @property {number|null} [tag] Part tag + * @property {google.spanner.v1.KeyRecipe.Part.Order|null} [order] Part order + * @property {google.spanner.v1.KeyRecipe.Part.NullOrder|null} [nullOrder] Part nullOrder + * @property {google.spanner.v1.IType|null} [type] Part type + * @property {string|null} [identifier] Part identifier + * @property {google.protobuf.IValue|null} [value] Part value + * @property {boolean|null} [random] Part random + * @property {Array.|null} [structIdentifiers] Part structIdentifiers + */ + + /** + * Constructs a new Part. + * @memberof google.spanner.v1.KeyRecipe + * @classdesc Represents a Part. + * @implements IPart + * @constructor + * @param {google.spanner.v1.KeyRecipe.IPart=} [properties] Properties to set + */ + function Part(properties) { + this.structIdentifiers = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; } - return object; - }; - /** - * Converts this TransactionSelector to JSON. - * @function toJSON - * @memberof google.spanner.v1.TransactionSelector - * @instance - * @returns {Object.} JSON object - */ - TransactionSelector.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Part tag. + * @member {number} tag + * @memberof google.spanner.v1.KeyRecipe.Part + * @instance + */ + Part.prototype.tag = 0; - /** - * Gets the default type url for TransactionSelector - * @function getTypeUrl - * @memberof google.spanner.v1.TransactionSelector - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - TransactionSelector.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/google.spanner.v1.TransactionSelector"; - }; + /** + * Part order. + * @member {google.spanner.v1.KeyRecipe.Part.Order} order + * @memberof google.spanner.v1.KeyRecipe.Part + * @instance + */ + Part.prototype.order = 0; - return TransactionSelector; - })(); + /** + * Part nullOrder. + * @member {google.spanner.v1.KeyRecipe.Part.NullOrder} nullOrder + * @memberof google.spanner.v1.KeyRecipe.Part + * @instance + */ + Part.prototype.nullOrder = 0; - v1.MultiplexedSessionPrecommitToken = (function() { + /** + * Part type. + * @member {google.spanner.v1.IType|null|undefined} type + * @memberof google.spanner.v1.KeyRecipe.Part + * @instance + */ + Part.prototype.type = null; - /** - * Properties of a MultiplexedSessionPrecommitToken. - * @memberof google.spanner.v1 - * @interface IMultiplexedSessionPrecommitToken - * @property {Uint8Array|null} [precommitToken] MultiplexedSessionPrecommitToken precommitToken - * @property {number|null} [seqNum] MultiplexedSessionPrecommitToken seqNum - */ + /** + * Part identifier. + * @member {string|null|undefined} identifier + * @memberof google.spanner.v1.KeyRecipe.Part + * @instance + */ + Part.prototype.identifier = null; - /** - * Constructs a new MultiplexedSessionPrecommitToken. - * @memberof google.spanner.v1 - * @classdesc Represents a MultiplexedSessionPrecommitToken. - * @implements IMultiplexedSessionPrecommitToken - * @constructor - * @param {google.spanner.v1.IMultiplexedSessionPrecommitToken=} [properties] Properties to set - */ - function MultiplexedSessionPrecommitToken(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * Part value. + * @member {google.protobuf.IValue|null|undefined} value + * @memberof google.spanner.v1.KeyRecipe.Part + * @instance + */ + Part.prototype.value = null; - /** - * MultiplexedSessionPrecommitToken precommitToken. - * @member {Uint8Array} precommitToken - * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken - * @instance - */ - MultiplexedSessionPrecommitToken.prototype.precommitToken = $util.newBuffer([]); + /** + * Part random. + * @member {boolean|null|undefined} random + * @memberof google.spanner.v1.KeyRecipe.Part + * @instance + */ + Part.prototype.random = null; - /** - * MultiplexedSessionPrecommitToken seqNum. - * @member {number} seqNum - * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken - * @instance - */ - MultiplexedSessionPrecommitToken.prototype.seqNum = 0; + /** + * Part structIdentifiers. + * @member {Array.} structIdentifiers + * @memberof google.spanner.v1.KeyRecipe.Part + * @instance + */ + Part.prototype.structIdentifiers = $util.emptyArray; - /** - * Creates a new MultiplexedSessionPrecommitToken instance using the specified properties. - * @function create - * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken - * @static - * @param {google.spanner.v1.IMultiplexedSessionPrecommitToken=} [properties] Properties to set - * @returns {google.spanner.v1.MultiplexedSessionPrecommitToken} MultiplexedSessionPrecommitToken instance - */ - MultiplexedSessionPrecommitToken.create = function create(properties) { - return new MultiplexedSessionPrecommitToken(properties); - }; + // OneOf field names bound to virtual getters and setters + var $oneOfFields; - /** - * Encodes the specified MultiplexedSessionPrecommitToken message. Does not implicitly {@link google.spanner.v1.MultiplexedSessionPrecommitToken.verify|verify} messages. - * @function encode - * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken - * @static - * @param {google.spanner.v1.IMultiplexedSessionPrecommitToken} message MultiplexedSessionPrecommitToken message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - MultiplexedSessionPrecommitToken.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.precommitToken != null && Object.hasOwnProperty.call(message, "precommitToken")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.precommitToken); - if (message.seqNum != null && Object.hasOwnProperty.call(message, "seqNum")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.seqNum); - return writer; - }; + /** + * Part valueType. + * @member {"identifier"|"value"|"random"|undefined} valueType + * @memberof google.spanner.v1.KeyRecipe.Part + * @instance + */ + Object.defineProperty(Part.prototype, "valueType", { + get: $util.oneOfGetter($oneOfFields = ["identifier", "value", "random"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new Part instance using the specified properties. + * @function create + * @memberof google.spanner.v1.KeyRecipe.Part + * @static + * @param {google.spanner.v1.KeyRecipe.IPart=} [properties] Properties to set + * @returns {google.spanner.v1.KeyRecipe.Part} Part instance + */ + Part.create = function create(properties) { + return new Part(properties); + }; + + /** + * Encodes the specified Part message. Does not implicitly {@link google.spanner.v1.KeyRecipe.Part.verify|verify} messages. + * @function encode + * @memberof google.spanner.v1.KeyRecipe.Part + * @static + * @param {google.spanner.v1.KeyRecipe.IPart} message Part message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Part.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.tag != null && Object.hasOwnProperty.call(message, "tag")) + writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.tag); + if (message.order != null && Object.hasOwnProperty.call(message, "order")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.order); + if (message.nullOrder != null && Object.hasOwnProperty.call(message, "nullOrder")) + writer.uint32(/* id 3, wireType 0 =*/24).int32(message.nullOrder); + if (message.type != null && Object.hasOwnProperty.call(message, "type")) + $root.google.spanner.v1.Type.encode(message.type, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.identifier != null && Object.hasOwnProperty.call(message, "identifier")) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.identifier); + if (message.value != null && Object.hasOwnProperty.call(message, "value")) + $root.google.protobuf.Value.encode(message.value, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); + if (message.structIdentifiers != null && message.structIdentifiers.length) { + writer.uint32(/* id 7, wireType 2 =*/58).fork(); + for (var i = 0; i < message.structIdentifiers.length; ++i) + writer.int32(message.structIdentifiers[i]); + writer.ldelim(); + } + if (message.random != null && Object.hasOwnProperty.call(message, "random")) + writer.uint32(/* id 8, wireType 0 =*/64).bool(message.random); + return writer; + }; + + /** + * Encodes the specified Part message, length delimited. Does not implicitly {@link google.spanner.v1.KeyRecipe.Part.verify|verify} messages. + * @function encodeDelimited + * @memberof google.spanner.v1.KeyRecipe.Part + * @static + * @param {google.spanner.v1.KeyRecipe.IPart} message Part message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Part.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Part message from the specified reader or buffer. + * @function decode + * @memberof google.spanner.v1.KeyRecipe.Part + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.spanner.v1.KeyRecipe.Part} Part + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Part.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.KeyRecipe.Part(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.tag = reader.uint32(); + break; + } + case 2: { + message.order = reader.int32(); + break; + } + case 3: { + message.nullOrder = reader.int32(); + break; + } + case 4: { + message.type = $root.google.spanner.v1.Type.decode(reader, reader.uint32()); + break; + } + case 5: { + message.identifier = reader.string(); + break; + } + case 6: { + message.value = $root.google.protobuf.Value.decode(reader, reader.uint32()); + break; + } + case 8: { + message.random = reader.bool(); + break; + } + case 7: { + if (!(message.structIdentifiers && message.structIdentifiers.length)) + message.structIdentifiers = []; + if ((tag & 7) === 2) { + var end2 = reader.uint32() + reader.pos; + while (reader.pos < end2) + message.structIdentifiers.push(reader.int32()); + } else + message.structIdentifiers.push(reader.int32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; - /** - * Encodes the specified MultiplexedSessionPrecommitToken message, length delimited. Does not implicitly {@link google.spanner.v1.MultiplexedSessionPrecommitToken.verify|verify} messages. - * @function encodeDelimited - * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken - * @static - * @param {google.spanner.v1.IMultiplexedSessionPrecommitToken} message MultiplexedSessionPrecommitToken message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - MultiplexedSessionPrecommitToken.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Decodes a Part message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.spanner.v1.KeyRecipe.Part + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.spanner.v1.KeyRecipe.Part} Part + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Part.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Decodes a MultiplexedSessionPrecommitToken message from the specified reader or buffer. - * @function decode - * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.MultiplexedSessionPrecommitToken} MultiplexedSessionPrecommitToken - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - MultiplexedSessionPrecommitToken.decode = function decode(reader, length, error) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.MultiplexedSessionPrecommitToken(); - while (reader.pos < end) { - var tag = reader.uint32(); - if (tag === error) - break; - switch (tag >>> 3) { - case 1: { - message.precommitToken = reader.bytes(); + /** + * Verifies a Part message. + * @function verify + * @memberof google.spanner.v1.KeyRecipe.Part + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Part.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.tag != null && message.hasOwnProperty("tag")) + if (!$util.isInteger(message.tag)) + return "tag: integer expected"; + if (message.order != null && message.hasOwnProperty("order")) + switch (message.order) { + default: + return "order: enum value expected"; + case 0: + case 1: + case 2: break; } - case 2: { - message.seqNum = reader.int32(); + if (message.nullOrder != null && message.hasOwnProperty("nullOrder")) + switch (message.nullOrder) { + default: + return "nullOrder: enum value expected"; + case 0: + case 1: + case 2: + case 3: + break; + } + if (message.type != null && message.hasOwnProperty("type")) { + var error = $root.google.spanner.v1.Type.verify(message.type); + if (error) + return "type." + error; + } + if (message.identifier != null && message.hasOwnProperty("identifier")) { + properties.valueType = 1; + if (!$util.isString(message.identifier)) + return "identifier: string expected"; + } + if (message.value != null && message.hasOwnProperty("value")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + { + var error = $root.google.protobuf.Value.verify(message.value); + if (error) + return "value." + error; + } + } + if (message.random != null && message.hasOwnProperty("random")) { + if (properties.valueType === 1) + return "valueType: multiple values"; + properties.valueType = 1; + if (typeof message.random !== "boolean") + return "random: boolean expected"; + } + if (message.structIdentifiers != null && message.hasOwnProperty("structIdentifiers")) { + if (!Array.isArray(message.structIdentifiers)) + return "structIdentifiers: array expected"; + for (var i = 0; i < message.structIdentifiers.length; ++i) + if (!$util.isInteger(message.structIdentifiers[i])) + return "structIdentifiers: integer[] expected"; + } + return null; + }; + + /** + * Creates a Part message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.spanner.v1.KeyRecipe.Part + * @static + * @param {Object.} object Plain object + * @returns {google.spanner.v1.KeyRecipe.Part} Part + */ + Part.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.KeyRecipe.Part) + return object; + var message = new $root.google.spanner.v1.KeyRecipe.Part(); + if (object.tag != null) + message.tag = object.tag >>> 0; + switch (object.order) { + default: + if (typeof object.order === "number") { + message.order = object.order; break; } + break; + case "ORDER_UNSPECIFIED": + case 0: + message.order = 0; + break; + case "ASCENDING": + case 1: + message.order = 1; + break; + case "DESCENDING": + case 2: + message.order = 2; + break; + } + switch (object.nullOrder) { default: - reader.skipType(tag & 7); + if (typeof object.nullOrder === "number") { + message.nullOrder = object.nullOrder; + break; + } + break; + case "NULL_ORDER_UNSPECIFIED": + case 0: + message.nullOrder = 0; + break; + case "NULLS_FIRST": + case 1: + message.nullOrder = 1; + break; + case "NULLS_LAST": + case 2: + message.nullOrder = 2; + break; + case "NOT_NULL": + case 3: + message.nullOrder = 3; break; } - } - return message; - }; - - /** - * Decodes a MultiplexedSessionPrecommitToken message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.MultiplexedSessionPrecommitToken} MultiplexedSessionPrecommitToken - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - MultiplexedSessionPrecommitToken.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a MultiplexedSessionPrecommitToken message. - * @function verify - * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - MultiplexedSessionPrecommitToken.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.precommitToken != null && message.hasOwnProperty("precommitToken")) - if (!(message.precommitToken && typeof message.precommitToken.length === "number" || $util.isString(message.precommitToken))) - return "precommitToken: buffer expected"; - if (message.seqNum != null && message.hasOwnProperty("seqNum")) - if (!$util.isInteger(message.seqNum)) - return "seqNum: integer expected"; - return null; - }; + if (object.type != null) { + if (typeof object.type !== "object") + throw TypeError(".google.spanner.v1.KeyRecipe.Part.type: object expected"); + message.type = $root.google.spanner.v1.Type.fromObject(object.type); + } + if (object.identifier != null) + message.identifier = String(object.identifier); + if (object.value != null) { + if (typeof object.value !== "object") + throw TypeError(".google.spanner.v1.KeyRecipe.Part.value: object expected"); + message.value = $root.google.protobuf.Value.fromObject(object.value); + } + if (object.random != null) + message.random = Boolean(object.random); + if (object.structIdentifiers) { + if (!Array.isArray(object.structIdentifiers)) + throw TypeError(".google.spanner.v1.KeyRecipe.Part.structIdentifiers: array expected"); + message.structIdentifiers = []; + for (var i = 0; i < object.structIdentifiers.length; ++i) + message.structIdentifiers[i] = object.structIdentifiers[i] | 0; + } + return message; + }; - /** - * Creates a MultiplexedSessionPrecommitToken message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken - * @static - * @param {Object.} object Plain object - * @returns {google.spanner.v1.MultiplexedSessionPrecommitToken} MultiplexedSessionPrecommitToken - */ - MultiplexedSessionPrecommitToken.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.MultiplexedSessionPrecommitToken) + /** + * Creates a plain object from a Part message. Also converts values to other types if specified. + * @function toObject + * @memberof google.spanner.v1.KeyRecipe.Part + * @static + * @param {google.spanner.v1.KeyRecipe.Part} message Part + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Part.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.structIdentifiers = []; + if (options.defaults) { + object.tag = 0; + object.order = options.enums === String ? "ORDER_UNSPECIFIED" : 0; + object.nullOrder = options.enums === String ? "NULL_ORDER_UNSPECIFIED" : 0; + object.type = null; + } + if (message.tag != null && message.hasOwnProperty("tag")) + object.tag = message.tag; + if (message.order != null && message.hasOwnProperty("order")) + object.order = options.enums === String ? $root.google.spanner.v1.KeyRecipe.Part.Order[message.order] === undefined ? message.order : $root.google.spanner.v1.KeyRecipe.Part.Order[message.order] : message.order; + if (message.nullOrder != null && message.hasOwnProperty("nullOrder")) + object.nullOrder = options.enums === String ? $root.google.spanner.v1.KeyRecipe.Part.NullOrder[message.nullOrder] === undefined ? message.nullOrder : $root.google.spanner.v1.KeyRecipe.Part.NullOrder[message.nullOrder] : message.nullOrder; + if (message.type != null && message.hasOwnProperty("type")) + object.type = $root.google.spanner.v1.Type.toObject(message.type, options); + if (message.identifier != null && message.hasOwnProperty("identifier")) { + object.identifier = message.identifier; + if (options.oneofs) + object.valueType = "identifier"; + } + if (message.value != null && message.hasOwnProperty("value")) { + object.value = $root.google.protobuf.Value.toObject(message.value, options); + if (options.oneofs) + object.valueType = "value"; + } + if (message.structIdentifiers && message.structIdentifiers.length) { + object.structIdentifiers = []; + for (var j = 0; j < message.structIdentifiers.length; ++j) + object.structIdentifiers[j] = message.structIdentifiers[j]; + } + if (message.random != null && message.hasOwnProperty("random")) { + object.random = message.random; + if (options.oneofs) + object.valueType = "random"; + } return object; - var message = new $root.google.spanner.v1.MultiplexedSessionPrecommitToken(); - if (object.precommitToken != null) - if (typeof object.precommitToken === "string") - $util.base64.decode(object.precommitToken, message.precommitToken = $util.newBuffer($util.base64.length(object.precommitToken)), 0); - else if (object.precommitToken.length >= 0) - message.precommitToken = object.precommitToken; - if (object.seqNum != null) - message.seqNum = object.seqNum | 0; - return message; - }; + }; - /** - * Creates a plain object from a MultiplexedSessionPrecommitToken message. Also converts values to other types if specified. - * @function toObject - * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken - * @static - * @param {google.spanner.v1.MultiplexedSessionPrecommitToken} message MultiplexedSessionPrecommitToken - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - MultiplexedSessionPrecommitToken.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - if (options.bytes === String) - object.precommitToken = ""; - else { - object.precommitToken = []; - if (options.bytes !== Array) - object.precommitToken = $util.newBuffer(object.precommitToken); + /** + * Converts this Part to JSON. + * @function toJSON + * @memberof google.spanner.v1.KeyRecipe.Part + * @instance + * @returns {Object.} JSON object + */ + Part.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for Part + * @function getTypeUrl + * @memberof google.spanner.v1.KeyRecipe.Part + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Part.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; } - object.seqNum = 0; - } - if (message.precommitToken != null && message.hasOwnProperty("precommitToken")) - object.precommitToken = options.bytes === String ? $util.base64.encode(message.precommitToken, 0, message.precommitToken.length) : options.bytes === Array ? Array.prototype.slice.call(message.precommitToken) : message.precommitToken; - if (message.seqNum != null && message.hasOwnProperty("seqNum")) - object.seqNum = message.seqNum; - return object; - }; + return typeUrlPrefix + "/google.spanner.v1.KeyRecipe.Part"; + }; - /** - * Converts this MultiplexedSessionPrecommitToken to JSON. - * @function toJSON - * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken - * @instance - * @returns {Object.} JSON object - */ - MultiplexedSessionPrecommitToken.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Order enum. + * @name google.spanner.v1.KeyRecipe.Part.Order + * @enum {number} + * @property {number} ORDER_UNSPECIFIED=0 ORDER_UNSPECIFIED value + * @property {number} ASCENDING=1 ASCENDING value + * @property {number} DESCENDING=2 DESCENDING value + */ + Part.Order = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "ORDER_UNSPECIFIED"] = 0; + values[valuesById[1] = "ASCENDING"] = 1; + values[valuesById[2] = "DESCENDING"] = 2; + return values; + })(); - /** - * Gets the default type url for MultiplexedSessionPrecommitToken - * @function getTypeUrl - * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - MultiplexedSessionPrecommitToken.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/google.spanner.v1.MultiplexedSessionPrecommitToken"; - }; + /** + * NullOrder enum. + * @name google.spanner.v1.KeyRecipe.Part.NullOrder + * @enum {number} + * @property {number} NULL_ORDER_UNSPECIFIED=0 NULL_ORDER_UNSPECIFIED value + * @property {number} NULLS_FIRST=1 NULLS_FIRST value + * @property {number} NULLS_LAST=2 NULLS_LAST value + * @property {number} NOT_NULL=3 NOT_NULL value + */ + Part.NullOrder = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "NULL_ORDER_UNSPECIFIED"] = 0; + values[valuesById[1] = "NULLS_FIRST"] = 1; + values[valuesById[2] = "NULLS_LAST"] = 2; + values[valuesById[3] = "NOT_NULL"] = 3; + return values; + })(); - return MultiplexedSessionPrecommitToken; - })(); + return Part; + })(); - v1.KeyRange = (function() { + return KeyRecipe; + })(); - /** - * Properties of a KeyRange. - * @memberof google.spanner.v1 - * @interface IKeyRange - * @property {google.protobuf.IListValue|null} [startClosed] KeyRange startClosed - * @property {google.protobuf.IListValue|null} [startOpen] KeyRange startOpen - * @property {google.protobuf.IListValue|null} [endClosed] KeyRange endClosed - * @property {google.protobuf.IListValue|null} [endOpen] KeyRange endOpen - */ + v1.RecipeList = (function() { /** - * Constructs a new KeyRange. + * Properties of a RecipeList. * @memberof google.spanner.v1 - * @classdesc Represents a KeyRange. - * @implements IKeyRange - * @constructor - * @param {google.spanner.v1.IKeyRange=} [properties] Properties to set - */ - function KeyRange(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * KeyRange startClosed. - * @member {google.protobuf.IListValue|null|undefined} startClosed - * @memberof google.spanner.v1.KeyRange - * @instance - */ - KeyRange.prototype.startClosed = null; - - /** - * KeyRange startOpen. - * @member {google.protobuf.IListValue|null|undefined} startOpen - * @memberof google.spanner.v1.KeyRange - * @instance - */ - KeyRange.prototype.startOpen = null; - - /** - * KeyRange endClosed. - * @member {google.protobuf.IListValue|null|undefined} endClosed - * @memberof google.spanner.v1.KeyRange - * @instance - */ - KeyRange.prototype.endClosed = null; - - /** - * KeyRange endOpen. - * @member {google.protobuf.IListValue|null|undefined} endOpen - * @memberof google.spanner.v1.KeyRange - * @instance + * @interface IRecipeList + * @property {Uint8Array|null} [schemaGeneration] RecipeList schemaGeneration + * @property {Array.|null} [recipe] RecipeList recipe */ - KeyRange.prototype.endOpen = null; - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + /** + * Constructs a new RecipeList. + * @memberof google.spanner.v1 + * @classdesc Represents a RecipeList. + * @implements IRecipeList + * @constructor + * @param {google.spanner.v1.IRecipeList=} [properties] Properties to set + */ + function RecipeList(properties) { + this.recipe = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } /** - * KeyRange startKeyType. - * @member {"startClosed"|"startOpen"|undefined} startKeyType - * @memberof google.spanner.v1.KeyRange + * RecipeList schemaGeneration. + * @member {Uint8Array} schemaGeneration + * @memberof google.spanner.v1.RecipeList * @instance */ - Object.defineProperty(KeyRange.prototype, "startKeyType", { - get: $util.oneOfGetter($oneOfFields = ["startClosed", "startOpen"]), - set: $util.oneOfSetter($oneOfFields) - }); + RecipeList.prototype.schemaGeneration = $util.newBuffer([]); /** - * KeyRange endKeyType. - * @member {"endClosed"|"endOpen"|undefined} endKeyType - * @memberof google.spanner.v1.KeyRange + * RecipeList recipe. + * @member {Array.} recipe + * @memberof google.spanner.v1.RecipeList * @instance */ - Object.defineProperty(KeyRange.prototype, "endKeyType", { - get: $util.oneOfGetter($oneOfFields = ["endClosed", "endOpen"]), - set: $util.oneOfSetter($oneOfFields) - }); + RecipeList.prototype.recipe = $util.emptyArray; /** - * Creates a new KeyRange instance using the specified properties. + * Creates a new RecipeList instance using the specified properties. * @function create - * @memberof google.spanner.v1.KeyRange + * @memberof google.spanner.v1.RecipeList * @static - * @param {google.spanner.v1.IKeyRange=} [properties] Properties to set - * @returns {google.spanner.v1.KeyRange} KeyRange instance + * @param {google.spanner.v1.IRecipeList=} [properties] Properties to set + * @returns {google.spanner.v1.RecipeList} RecipeList instance */ - KeyRange.create = function create(properties) { - return new KeyRange(properties); + RecipeList.create = function create(properties) { + return new RecipeList(properties); }; /** - * Encodes the specified KeyRange message. Does not implicitly {@link google.spanner.v1.KeyRange.verify|verify} messages. + * Encodes the specified RecipeList message. Does not implicitly {@link google.spanner.v1.RecipeList.verify|verify} messages. * @function encode - * @memberof google.spanner.v1.KeyRange + * @memberof google.spanner.v1.RecipeList * @static - * @param {google.spanner.v1.IKeyRange} message KeyRange message or plain object to encode + * @param {google.spanner.v1.IRecipeList} message RecipeList message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - KeyRange.encode = function encode(message, writer) { + RecipeList.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.startClosed != null && Object.hasOwnProperty.call(message, "startClosed")) - $root.google.protobuf.ListValue.encode(message.startClosed, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.startOpen != null && Object.hasOwnProperty.call(message, "startOpen")) - $root.google.protobuf.ListValue.encode(message.startOpen, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.endClosed != null && Object.hasOwnProperty.call(message, "endClosed")) - $root.google.protobuf.ListValue.encode(message.endClosed, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.endOpen != null && Object.hasOwnProperty.call(message, "endOpen")) - $root.google.protobuf.ListValue.encode(message.endOpen, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.schemaGeneration != null && Object.hasOwnProperty.call(message, "schemaGeneration")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.schemaGeneration); + if (message.recipe != null && message.recipe.length) + for (var i = 0; i < message.recipe.length; ++i) + $root.google.spanner.v1.KeyRecipe.encode(message.recipe[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; /** - * Encodes the specified KeyRange message, length delimited. Does not implicitly {@link google.spanner.v1.KeyRange.verify|verify} messages. + * Encodes the specified RecipeList message, length delimited. Does not implicitly {@link google.spanner.v1.RecipeList.verify|verify} messages. * @function encodeDelimited - * @memberof google.spanner.v1.KeyRange + * @memberof google.spanner.v1.RecipeList * @static - * @param {google.spanner.v1.IKeyRange} message KeyRange message or plain object to encode + * @param {google.spanner.v1.IRecipeList} message RecipeList message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - KeyRange.encodeDelimited = function encodeDelimited(message, writer) { + RecipeList.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a KeyRange message from the specified reader or buffer. + * Decodes a RecipeList message from the specified reader or buffer. * @function decode - * @memberof google.spanner.v1.KeyRange + * @memberof google.spanner.v1.RecipeList * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.KeyRange} KeyRange + * @returns {google.spanner.v1.RecipeList} RecipeList * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - KeyRange.decode = function decode(reader, length, error) { + RecipeList.decode = function decode(reader, length, error) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.KeyRange(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.RecipeList(); while (reader.pos < end) { var tag = reader.uint32(); if (tag === error) break; switch (tag >>> 3) { case 1: { - message.startClosed = $root.google.protobuf.ListValue.decode(reader, reader.uint32()); - break; - } - case 2: { - message.startOpen = $root.google.protobuf.ListValue.decode(reader, reader.uint32()); + message.schemaGeneration = reader.bytes(); break; } case 3: { - message.endClosed = $root.google.protobuf.ListValue.decode(reader, reader.uint32()); - break; - } - case 4: { - message.endOpen = $root.google.protobuf.ListValue.decode(reader, reader.uint32()); + if (!(message.recipe && message.recipe.length)) + message.recipe = []; + message.recipe.push($root.google.spanner.v1.KeyRecipe.decode(reader, reader.uint32())); break; } default: @@ -89233,194 +89169,162 @@ }; /** - * Decodes a KeyRange message from the specified reader or buffer, length delimited. + * Decodes a RecipeList message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.spanner.v1.KeyRange + * @memberof google.spanner.v1.RecipeList * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.KeyRange} KeyRange + * @returns {google.spanner.v1.RecipeList} RecipeList * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - KeyRange.decodeDelimited = function decodeDelimited(reader) { + RecipeList.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a KeyRange message. + * Verifies a RecipeList message. * @function verify - * @memberof google.spanner.v1.KeyRange + * @memberof google.spanner.v1.RecipeList * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - KeyRange.verify = function verify(message) { + RecipeList.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.startClosed != null && message.hasOwnProperty("startClosed")) { - properties.startKeyType = 1; - { - var error = $root.google.protobuf.ListValue.verify(message.startClosed); - if (error) - return "startClosed." + error; - } - } - if (message.startOpen != null && message.hasOwnProperty("startOpen")) { - if (properties.startKeyType === 1) - return "startKeyType: multiple values"; - properties.startKeyType = 1; - { - var error = $root.google.protobuf.ListValue.verify(message.startOpen); - if (error) - return "startOpen." + error; - } - } - if (message.endClosed != null && message.hasOwnProperty("endClosed")) { - properties.endKeyType = 1; - { - var error = $root.google.protobuf.ListValue.verify(message.endClosed); - if (error) - return "endClosed." + error; - } - } - if (message.endOpen != null && message.hasOwnProperty("endOpen")) { - if (properties.endKeyType === 1) - return "endKeyType: multiple values"; - properties.endKeyType = 1; - { - var error = $root.google.protobuf.ListValue.verify(message.endOpen); + if (message.schemaGeneration != null && message.hasOwnProperty("schemaGeneration")) + if (!(message.schemaGeneration && typeof message.schemaGeneration.length === "number" || $util.isString(message.schemaGeneration))) + return "schemaGeneration: buffer expected"; + if (message.recipe != null && message.hasOwnProperty("recipe")) { + if (!Array.isArray(message.recipe)) + return "recipe: array expected"; + for (var i = 0; i < message.recipe.length; ++i) { + var error = $root.google.spanner.v1.KeyRecipe.verify(message.recipe[i]); if (error) - return "endOpen." + error; + return "recipe." + error; } } return null; }; /** - * Creates a KeyRange message from a plain object. Also converts values to their respective internal types. + * Creates a RecipeList message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.spanner.v1.KeyRange + * @memberof google.spanner.v1.RecipeList * @static * @param {Object.} object Plain object - * @returns {google.spanner.v1.KeyRange} KeyRange + * @returns {google.spanner.v1.RecipeList} RecipeList */ - KeyRange.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.KeyRange) + RecipeList.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.RecipeList) return object; - var message = new $root.google.spanner.v1.KeyRange(); - if (object.startClosed != null) { - if (typeof object.startClosed !== "object") - throw TypeError(".google.spanner.v1.KeyRange.startClosed: object expected"); - message.startClosed = $root.google.protobuf.ListValue.fromObject(object.startClosed); - } - if (object.startOpen != null) { - if (typeof object.startOpen !== "object") - throw TypeError(".google.spanner.v1.KeyRange.startOpen: object expected"); - message.startOpen = $root.google.protobuf.ListValue.fromObject(object.startOpen); - } - if (object.endClosed != null) { - if (typeof object.endClosed !== "object") - throw TypeError(".google.spanner.v1.KeyRange.endClosed: object expected"); - message.endClosed = $root.google.protobuf.ListValue.fromObject(object.endClosed); - } - if (object.endOpen != null) { - if (typeof object.endOpen !== "object") - throw TypeError(".google.spanner.v1.KeyRange.endOpen: object expected"); - message.endOpen = $root.google.protobuf.ListValue.fromObject(object.endOpen); + var message = new $root.google.spanner.v1.RecipeList(); + if (object.schemaGeneration != null) + if (typeof object.schemaGeneration === "string") + $util.base64.decode(object.schemaGeneration, message.schemaGeneration = $util.newBuffer($util.base64.length(object.schemaGeneration)), 0); + else if (object.schemaGeneration.length >= 0) + message.schemaGeneration = object.schemaGeneration; + if (object.recipe) { + if (!Array.isArray(object.recipe)) + throw TypeError(".google.spanner.v1.RecipeList.recipe: array expected"); + message.recipe = []; + for (var i = 0; i < object.recipe.length; ++i) { + if (typeof object.recipe[i] !== "object") + throw TypeError(".google.spanner.v1.RecipeList.recipe: object expected"); + message.recipe[i] = $root.google.spanner.v1.KeyRecipe.fromObject(object.recipe[i]); + } } return message; }; /** - * Creates a plain object from a KeyRange message. Also converts values to other types if specified. + * Creates a plain object from a RecipeList message. Also converts values to other types if specified. * @function toObject - * @memberof google.spanner.v1.KeyRange + * @memberof google.spanner.v1.RecipeList * @static - * @param {google.spanner.v1.KeyRange} message KeyRange + * @param {google.spanner.v1.RecipeList} message RecipeList * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - KeyRange.toObject = function toObject(message, options) { + RecipeList.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (message.startClosed != null && message.hasOwnProperty("startClosed")) { - object.startClosed = $root.google.protobuf.ListValue.toObject(message.startClosed, options); - if (options.oneofs) - object.startKeyType = "startClosed"; - } - if (message.startOpen != null && message.hasOwnProperty("startOpen")) { - object.startOpen = $root.google.protobuf.ListValue.toObject(message.startOpen, options); - if (options.oneofs) - object.startKeyType = "startOpen"; - } - if (message.endClosed != null && message.hasOwnProperty("endClosed")) { - object.endClosed = $root.google.protobuf.ListValue.toObject(message.endClosed, options); - if (options.oneofs) - object.endKeyType = "endClosed"; - } - if (message.endOpen != null && message.hasOwnProperty("endOpen")) { - object.endOpen = $root.google.protobuf.ListValue.toObject(message.endOpen, options); - if (options.oneofs) - object.endKeyType = "endOpen"; + if (options.arrays || options.defaults) + object.recipe = []; + if (options.defaults) + if (options.bytes === String) + object.schemaGeneration = ""; + else { + object.schemaGeneration = []; + if (options.bytes !== Array) + object.schemaGeneration = $util.newBuffer(object.schemaGeneration); + } + if (message.schemaGeneration != null && message.hasOwnProperty("schemaGeneration")) + object.schemaGeneration = options.bytes === String ? $util.base64.encode(message.schemaGeneration, 0, message.schemaGeneration.length) : options.bytes === Array ? Array.prototype.slice.call(message.schemaGeneration) : message.schemaGeneration; + if (message.recipe && message.recipe.length) { + object.recipe = []; + for (var j = 0; j < message.recipe.length; ++j) + object.recipe[j] = $root.google.spanner.v1.KeyRecipe.toObject(message.recipe[j], options); } return object; }; /** - * Converts this KeyRange to JSON. + * Converts this RecipeList to JSON. * @function toJSON - * @memberof google.spanner.v1.KeyRange + * @memberof google.spanner.v1.RecipeList * @instance * @returns {Object.} JSON object */ - KeyRange.prototype.toJSON = function toJSON() { + RecipeList.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for KeyRange + * Gets the default type url for RecipeList * @function getTypeUrl - * @memberof google.spanner.v1.KeyRange + * @memberof google.spanner.v1.RecipeList * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - KeyRange.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + RecipeList.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.spanner.v1.KeyRange"; + return typeUrlPrefix + "/google.spanner.v1.RecipeList"; }; - return KeyRange; + return RecipeList; })(); - v1.KeySet = (function() { + v1.CacheUpdate = (function() { /** - * Properties of a KeySet. + * Properties of a CacheUpdate. * @memberof google.spanner.v1 - * @interface IKeySet - * @property {Array.|null} [keys] KeySet keys - * @property {Array.|null} [ranges] KeySet ranges - * @property {boolean|null} [all] KeySet all + * @interface ICacheUpdate + * @property {number|Long|null} [databaseId] CacheUpdate databaseId + * @property {Array.|null} [range] CacheUpdate range + * @property {Array.|null} [group] CacheUpdate group + * @property {google.spanner.v1.IRecipeList|null} [keyRecipes] CacheUpdate keyRecipes */ /** - * Constructs a new KeySet. + * Constructs a new CacheUpdate. * @memberof google.spanner.v1 - * @classdesc Represents a KeySet. - * @implements IKeySet + * @classdesc Represents a CacheUpdate. + * @implements ICacheUpdate * @constructor - * @param {google.spanner.v1.IKeySet=} [properties] Properties to set + * @param {google.spanner.v1.ICacheUpdate=} [properties] Properties to set */ - function KeySet(properties) { - this.keys = []; - this.ranges = []; + function CacheUpdate(properties) { + this.range = []; + this.group = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -89428,111 +89332,125 @@ } /** - * KeySet keys. - * @member {Array.} keys - * @memberof google.spanner.v1.KeySet + * CacheUpdate databaseId. + * @member {number|Long} databaseId + * @memberof google.spanner.v1.CacheUpdate * @instance */ - KeySet.prototype.keys = $util.emptyArray; + CacheUpdate.prototype.databaseId = $util.Long ? $util.Long.fromBits(0,0,true) : 0; /** - * KeySet ranges. - * @member {Array.} ranges - * @memberof google.spanner.v1.KeySet + * CacheUpdate range. + * @member {Array.} range + * @memberof google.spanner.v1.CacheUpdate * @instance */ - KeySet.prototype.ranges = $util.emptyArray; + CacheUpdate.prototype.range = $util.emptyArray; /** - * KeySet all. - * @member {boolean} all - * @memberof google.spanner.v1.KeySet + * CacheUpdate group. + * @member {Array.} group + * @memberof google.spanner.v1.CacheUpdate * @instance */ - KeySet.prototype.all = false; + CacheUpdate.prototype.group = $util.emptyArray; /** - * Creates a new KeySet instance using the specified properties. + * CacheUpdate keyRecipes. + * @member {google.spanner.v1.IRecipeList|null|undefined} keyRecipes + * @memberof google.spanner.v1.CacheUpdate + * @instance + */ + CacheUpdate.prototype.keyRecipes = null; + + /** + * Creates a new CacheUpdate instance using the specified properties. * @function create - * @memberof google.spanner.v1.KeySet + * @memberof google.spanner.v1.CacheUpdate * @static - * @param {google.spanner.v1.IKeySet=} [properties] Properties to set - * @returns {google.spanner.v1.KeySet} KeySet instance + * @param {google.spanner.v1.ICacheUpdate=} [properties] Properties to set + * @returns {google.spanner.v1.CacheUpdate} CacheUpdate instance */ - KeySet.create = function create(properties) { - return new KeySet(properties); + CacheUpdate.create = function create(properties) { + return new CacheUpdate(properties); }; /** - * Encodes the specified KeySet message. Does not implicitly {@link google.spanner.v1.KeySet.verify|verify} messages. + * Encodes the specified CacheUpdate message. Does not implicitly {@link google.spanner.v1.CacheUpdate.verify|verify} messages. * @function encode - * @memberof google.spanner.v1.KeySet + * @memberof google.spanner.v1.CacheUpdate * @static - * @param {google.spanner.v1.IKeySet} message KeySet message or plain object to encode + * @param {google.spanner.v1.ICacheUpdate} message CacheUpdate message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - KeySet.encode = function encode(message, writer) { + CacheUpdate.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.keys != null && message.keys.length) - for (var i = 0; i < message.keys.length; ++i) - $root.google.protobuf.ListValue.encode(message.keys[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); - if (message.ranges != null && message.ranges.length) - for (var i = 0; i < message.ranges.length; ++i) - $root.google.spanner.v1.KeyRange.encode(message.ranges[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.all != null && Object.hasOwnProperty.call(message, "all")) - writer.uint32(/* id 3, wireType 0 =*/24).bool(message.all); + if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) + writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.databaseId); + if (message.range != null && message.range.length) + for (var i = 0; i < message.range.length; ++i) + $root.google.spanner.v1.Range.encode(message.range[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.group != null && message.group.length) + for (var i = 0; i < message.group.length; ++i) + $root.google.spanner.v1.Group.encode(message.group[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.keyRecipes != null && Object.hasOwnProperty.call(message, "keyRecipes")) + $root.google.spanner.v1.RecipeList.encode(message.keyRecipes, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); return writer; }; /** - * Encodes the specified KeySet message, length delimited. Does not implicitly {@link google.spanner.v1.KeySet.verify|verify} messages. + * Encodes the specified CacheUpdate message, length delimited. Does not implicitly {@link google.spanner.v1.CacheUpdate.verify|verify} messages. * @function encodeDelimited - * @memberof google.spanner.v1.KeySet + * @memberof google.spanner.v1.CacheUpdate * @static - * @param {google.spanner.v1.IKeySet} message KeySet message or plain object to encode + * @param {google.spanner.v1.ICacheUpdate} message CacheUpdate message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - KeySet.encodeDelimited = function encodeDelimited(message, writer) { + CacheUpdate.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a KeySet message from the specified reader or buffer. + * Decodes a CacheUpdate message from the specified reader or buffer. * @function decode - * @memberof google.spanner.v1.KeySet + * @memberof google.spanner.v1.CacheUpdate * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.KeySet} KeySet + * @returns {google.spanner.v1.CacheUpdate} CacheUpdate * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - KeySet.decode = function decode(reader, length, error) { + CacheUpdate.decode = function decode(reader, length, error) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.KeySet(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.CacheUpdate(); while (reader.pos < end) { var tag = reader.uint32(); if (tag === error) break; switch (tag >>> 3) { case 1: { - if (!(message.keys && message.keys.length)) - message.keys = []; - message.keys.push($root.google.protobuf.ListValue.decode(reader, reader.uint32())); + message.databaseId = reader.uint64(); break; } case 2: { - if (!(message.ranges && message.ranges.length)) - message.ranges = []; - message.ranges.push($root.google.spanner.v1.KeyRange.decode(reader, reader.uint32())); + if (!(message.range && message.range.length)) + message.range = []; + message.range.push($root.google.spanner.v1.Range.decode(reader, reader.uint32())); break; } case 3: { - message.all = reader.bool(); + if (!(message.group && message.group.length)) + message.group = []; + message.group.push($root.google.spanner.v1.Group.decode(reader, reader.uint32())); + break; + } + case 5: { + message.keyRecipes = $root.google.spanner.v1.RecipeList.decode(reader, reader.uint32()); break; } default: @@ -89544,178 +89462,212 @@ }; /** - * Decodes a KeySet message from the specified reader or buffer, length delimited. + * Decodes a CacheUpdate message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.spanner.v1.KeySet + * @memberof google.spanner.v1.CacheUpdate * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.KeySet} KeySet + * @returns {google.spanner.v1.CacheUpdate} CacheUpdate * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - KeySet.decodeDelimited = function decodeDelimited(reader) { + CacheUpdate.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a KeySet message. + * Verifies a CacheUpdate message. * @function verify - * @memberof google.spanner.v1.KeySet + * @memberof google.spanner.v1.CacheUpdate * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - KeySet.verify = function verify(message) { + CacheUpdate.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.keys != null && message.hasOwnProperty("keys")) { - if (!Array.isArray(message.keys)) - return "keys: array expected"; - for (var i = 0; i < message.keys.length; ++i) { - var error = $root.google.protobuf.ListValue.verify(message.keys[i]); + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (!$util.isInteger(message.databaseId) && !(message.databaseId && $util.isInteger(message.databaseId.low) && $util.isInteger(message.databaseId.high))) + return "databaseId: integer|Long expected"; + if (message.range != null && message.hasOwnProperty("range")) { + if (!Array.isArray(message.range)) + return "range: array expected"; + for (var i = 0; i < message.range.length; ++i) { + var error = $root.google.spanner.v1.Range.verify(message.range[i]); if (error) - return "keys." + error; + return "range." + error; } } - if (message.ranges != null && message.hasOwnProperty("ranges")) { - if (!Array.isArray(message.ranges)) - return "ranges: array expected"; - for (var i = 0; i < message.ranges.length; ++i) { - var error = $root.google.spanner.v1.KeyRange.verify(message.ranges[i]); + if (message.group != null && message.hasOwnProperty("group")) { + if (!Array.isArray(message.group)) + return "group: array expected"; + for (var i = 0; i < message.group.length; ++i) { + var error = $root.google.spanner.v1.Group.verify(message.group[i]); if (error) - return "ranges." + error; + return "group." + error; } } - if (message.all != null && message.hasOwnProperty("all")) - if (typeof message.all !== "boolean") - return "all: boolean expected"; + if (message.keyRecipes != null && message.hasOwnProperty("keyRecipes")) { + var error = $root.google.spanner.v1.RecipeList.verify(message.keyRecipes); + if (error) + return "keyRecipes." + error; + } return null; }; /** - * Creates a KeySet message from a plain object. Also converts values to their respective internal types. + * Creates a CacheUpdate message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.spanner.v1.KeySet + * @memberof google.spanner.v1.CacheUpdate * @static * @param {Object.} object Plain object - * @returns {google.spanner.v1.KeySet} KeySet + * @returns {google.spanner.v1.CacheUpdate} CacheUpdate */ - KeySet.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.KeySet) + CacheUpdate.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.CacheUpdate) return object; - var message = new $root.google.spanner.v1.KeySet(); - if (object.keys) { - if (!Array.isArray(object.keys)) - throw TypeError(".google.spanner.v1.KeySet.keys: array expected"); - message.keys = []; - for (var i = 0; i < object.keys.length; ++i) { - if (typeof object.keys[i] !== "object") - throw TypeError(".google.spanner.v1.KeySet.keys: object expected"); - message.keys[i] = $root.google.protobuf.ListValue.fromObject(object.keys[i]); + var message = new $root.google.spanner.v1.CacheUpdate(); + if (object.databaseId != null) + if ($util.Long) + (message.databaseId = $util.Long.fromValue(object.databaseId)).unsigned = true; + else if (typeof object.databaseId === "string") + message.databaseId = parseInt(object.databaseId, 10); + else if (typeof object.databaseId === "number") + message.databaseId = object.databaseId; + else if (typeof object.databaseId === "object") + message.databaseId = new $util.LongBits(object.databaseId.low >>> 0, object.databaseId.high >>> 0).toNumber(true); + if (object.range) { + if (!Array.isArray(object.range)) + throw TypeError(".google.spanner.v1.CacheUpdate.range: array expected"); + message.range = []; + for (var i = 0; i < object.range.length; ++i) { + if (typeof object.range[i] !== "object") + throw TypeError(".google.spanner.v1.CacheUpdate.range: object expected"); + message.range[i] = $root.google.spanner.v1.Range.fromObject(object.range[i]); } } - if (object.ranges) { - if (!Array.isArray(object.ranges)) - throw TypeError(".google.spanner.v1.KeySet.ranges: array expected"); - message.ranges = []; - for (var i = 0; i < object.ranges.length; ++i) { - if (typeof object.ranges[i] !== "object") - throw TypeError(".google.spanner.v1.KeySet.ranges: object expected"); - message.ranges[i] = $root.google.spanner.v1.KeyRange.fromObject(object.ranges[i]); + if (object.group) { + if (!Array.isArray(object.group)) + throw TypeError(".google.spanner.v1.CacheUpdate.group: array expected"); + message.group = []; + for (var i = 0; i < object.group.length; ++i) { + if (typeof object.group[i] !== "object") + throw TypeError(".google.spanner.v1.CacheUpdate.group: object expected"); + message.group[i] = $root.google.spanner.v1.Group.fromObject(object.group[i]); } } - if (object.all != null) - message.all = Boolean(object.all); + if (object.keyRecipes != null) { + if (typeof object.keyRecipes !== "object") + throw TypeError(".google.spanner.v1.CacheUpdate.keyRecipes: object expected"); + message.keyRecipes = $root.google.spanner.v1.RecipeList.fromObject(object.keyRecipes); + } return message; }; /** - * Creates a plain object from a KeySet message. Also converts values to other types if specified. + * Creates a plain object from a CacheUpdate message. Also converts values to other types if specified. * @function toObject - * @memberof google.spanner.v1.KeySet + * @memberof google.spanner.v1.CacheUpdate * @static - * @param {google.spanner.v1.KeySet} message KeySet + * @param {google.spanner.v1.CacheUpdate} message CacheUpdate * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - KeySet.toObject = function toObject(message, options) { + CacheUpdate.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.arrays || options.defaults) { - object.keys = []; - object.ranges = []; + object.range = []; + object.group = []; } - if (options.defaults) - object.all = false; - if (message.keys && message.keys.length) { - object.keys = []; - for (var j = 0; j < message.keys.length; ++j) - object.keys[j] = $root.google.protobuf.ListValue.toObject(message.keys[j], options); + if (options.defaults) { + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.databaseId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.databaseId = options.longs === String ? "0" : 0; + object.keyRecipes = null; } - if (message.ranges && message.ranges.length) { - object.ranges = []; - for (var j = 0; j < message.ranges.length; ++j) - object.ranges[j] = $root.google.spanner.v1.KeyRange.toObject(message.ranges[j], options); + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (typeof message.databaseId === "number") + object.databaseId = options.longs === String ? String(message.databaseId) : message.databaseId; + else + object.databaseId = options.longs === String ? $util.Long.prototype.toString.call(message.databaseId) : options.longs === Number ? new $util.LongBits(message.databaseId.low >>> 0, message.databaseId.high >>> 0).toNumber(true) : message.databaseId; + if (message.range && message.range.length) { + object.range = []; + for (var j = 0; j < message.range.length; ++j) + object.range[j] = $root.google.spanner.v1.Range.toObject(message.range[j], options); } - if (message.all != null && message.hasOwnProperty("all")) - object.all = message.all; + if (message.group && message.group.length) { + object.group = []; + for (var j = 0; j < message.group.length; ++j) + object.group[j] = $root.google.spanner.v1.Group.toObject(message.group[j], options); + } + if (message.keyRecipes != null && message.hasOwnProperty("keyRecipes")) + object.keyRecipes = $root.google.spanner.v1.RecipeList.toObject(message.keyRecipes, options); return object; }; /** - * Converts this KeySet to JSON. + * Converts this CacheUpdate to JSON. * @function toJSON - * @memberof google.spanner.v1.KeySet + * @memberof google.spanner.v1.CacheUpdate * @instance * @returns {Object.} JSON object */ - KeySet.prototype.toJSON = function toJSON() { + CacheUpdate.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for KeySet + * Gets the default type url for CacheUpdate * @function getTypeUrl - * @memberof google.spanner.v1.KeySet + * @memberof google.spanner.v1.CacheUpdate * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - KeySet.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + CacheUpdate.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.spanner.v1.KeySet"; + return typeUrlPrefix + "/google.spanner.v1.CacheUpdate"; }; - return KeySet; + return CacheUpdate; })(); - v1.Range = (function() { + v1.RoutingHint = (function() { /** - * Properties of a Range. + * Properties of a RoutingHint. * @memberof google.spanner.v1 - * @interface IRange - * @property {Uint8Array|null} [startKey] Range startKey - * @property {Uint8Array|null} [limitKey] Range limitKey - * @property {number|Long|null} [groupUid] Range groupUid - * @property {number|Long|null} [splitId] Range splitId - * @property {Uint8Array|null} [generation] Range generation + * @interface IRoutingHint + * @property {number|Long|null} [operationUid] RoutingHint operationUid + * @property {number|Long|null} [databaseId] RoutingHint databaseId + * @property {Uint8Array|null} [schemaGeneration] RoutingHint schemaGeneration + * @property {Uint8Array|null} [key] RoutingHint key + * @property {Uint8Array|null} [limitKey] RoutingHint limitKey + * @property {number|Long|null} [groupUid] RoutingHint groupUid + * @property {number|Long|null} [splitId] RoutingHint splitId + * @property {number|Long|null} [tabletUid] RoutingHint tabletUid + * @property {Array.|null} [skippedTabletUid] RoutingHint skippedTabletUid + * @property {string|null} [clientLocation] RoutingHint clientLocation */ /** - * Constructs a new Range. + * Constructs a new RoutingHint. * @memberof google.spanner.v1 - * @classdesc Represents a Range. - * @implements IRange + * @classdesc Represents a RoutingHint. + * @implements IRoutingHint * @constructor - * @param {google.spanner.v1.IRange=} [properties] Properties to set + * @param {google.spanner.v1.IRoutingHint=} [properties] Properties to set */ - function Range(properties) { + function RoutingHint(properties) { + this.skippedTabletUid = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -89723,133 +89675,206 @@ } /** - * Range startKey. - * @member {Uint8Array} startKey - * @memberof google.spanner.v1.Range + * RoutingHint operationUid. + * @member {number|Long} operationUid + * @memberof google.spanner.v1.RoutingHint * @instance */ - Range.prototype.startKey = $util.newBuffer([]); + RoutingHint.prototype.operationUid = $util.Long ? $util.Long.fromBits(0,0,true) : 0; /** - * Range limitKey. + * RoutingHint databaseId. + * @member {number|Long} databaseId + * @memberof google.spanner.v1.RoutingHint + * @instance + */ + RoutingHint.prototype.databaseId = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * RoutingHint schemaGeneration. + * @member {Uint8Array} schemaGeneration + * @memberof google.spanner.v1.RoutingHint + * @instance + */ + RoutingHint.prototype.schemaGeneration = $util.newBuffer([]); + + /** + * RoutingHint key. + * @member {Uint8Array} key + * @memberof google.spanner.v1.RoutingHint + * @instance + */ + RoutingHint.prototype.key = $util.newBuffer([]); + + /** + * RoutingHint limitKey. * @member {Uint8Array} limitKey - * @memberof google.spanner.v1.Range + * @memberof google.spanner.v1.RoutingHint * @instance */ - Range.prototype.limitKey = $util.newBuffer([]); + RoutingHint.prototype.limitKey = $util.newBuffer([]); /** - * Range groupUid. + * RoutingHint groupUid. * @member {number|Long} groupUid - * @memberof google.spanner.v1.Range + * @memberof google.spanner.v1.RoutingHint * @instance */ - Range.prototype.groupUid = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + RoutingHint.prototype.groupUid = $util.Long ? $util.Long.fromBits(0,0,true) : 0; /** - * Range splitId. + * RoutingHint splitId. * @member {number|Long} splitId - * @memberof google.spanner.v1.Range + * @memberof google.spanner.v1.RoutingHint * @instance */ - Range.prototype.splitId = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + RoutingHint.prototype.splitId = $util.Long ? $util.Long.fromBits(0,0,true) : 0; /** - * Range generation. - * @member {Uint8Array} generation - * @memberof google.spanner.v1.Range + * RoutingHint tabletUid. + * @member {number|Long} tabletUid + * @memberof google.spanner.v1.RoutingHint * @instance */ - Range.prototype.generation = $util.newBuffer([]); + RoutingHint.prototype.tabletUid = $util.Long ? $util.Long.fromBits(0,0,true) : 0; /** - * Creates a new Range instance using the specified properties. + * RoutingHint skippedTabletUid. + * @member {Array.} skippedTabletUid + * @memberof google.spanner.v1.RoutingHint + * @instance + */ + RoutingHint.prototype.skippedTabletUid = $util.emptyArray; + + /** + * RoutingHint clientLocation. + * @member {string} clientLocation + * @memberof google.spanner.v1.RoutingHint + * @instance + */ + RoutingHint.prototype.clientLocation = ""; + + /** + * Creates a new RoutingHint instance using the specified properties. * @function create - * @memberof google.spanner.v1.Range + * @memberof google.spanner.v1.RoutingHint * @static - * @param {google.spanner.v1.IRange=} [properties] Properties to set - * @returns {google.spanner.v1.Range} Range instance + * @param {google.spanner.v1.IRoutingHint=} [properties] Properties to set + * @returns {google.spanner.v1.RoutingHint} RoutingHint instance */ - Range.create = function create(properties) { - return new Range(properties); + RoutingHint.create = function create(properties) { + return new RoutingHint(properties); }; /** - * Encodes the specified Range message. Does not implicitly {@link google.spanner.v1.Range.verify|verify} messages. + * Encodes the specified RoutingHint message. Does not implicitly {@link google.spanner.v1.RoutingHint.verify|verify} messages. * @function encode - * @memberof google.spanner.v1.Range + * @memberof google.spanner.v1.RoutingHint * @static - * @param {google.spanner.v1.IRange} message Range message or plain object to encode + * @param {google.spanner.v1.IRoutingHint} message RoutingHint message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Range.encode = function encode(message, writer) { + RoutingHint.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.startKey != null && Object.hasOwnProperty.call(message, "startKey")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.startKey); + if (message.operationUid != null && Object.hasOwnProperty.call(message, "operationUid")) + writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.operationUid); + if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) + writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.databaseId); + if (message.schemaGeneration != null && Object.hasOwnProperty.call(message, "schemaGeneration")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.schemaGeneration); + if (message.key != null && Object.hasOwnProperty.call(message, "key")) + writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.key); if (message.limitKey != null && Object.hasOwnProperty.call(message, "limitKey")) - writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.limitKey); + writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.limitKey); if (message.groupUid != null && Object.hasOwnProperty.call(message, "groupUid")) - writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.groupUid); + writer.uint32(/* id 6, wireType 0 =*/48).uint64(message.groupUid); if (message.splitId != null && Object.hasOwnProperty.call(message, "splitId")) - writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.splitId); - if (message.generation != null && Object.hasOwnProperty.call(message, "generation")) - writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.generation); + writer.uint32(/* id 7, wireType 0 =*/56).uint64(message.splitId); + if (message.tabletUid != null && Object.hasOwnProperty.call(message, "tabletUid")) + writer.uint32(/* id 8, wireType 0 =*/64).uint64(message.tabletUid); + if (message.skippedTabletUid != null && message.skippedTabletUid.length) + for (var i = 0; i < message.skippedTabletUid.length; ++i) + $root.google.spanner.v1.RoutingHint.SkippedTablet.encode(message.skippedTabletUid[i], writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); + if (message.clientLocation != null && Object.hasOwnProperty.call(message, "clientLocation")) + writer.uint32(/* id 10, wireType 2 =*/82).string(message.clientLocation); return writer; }; /** - * Encodes the specified Range message, length delimited. Does not implicitly {@link google.spanner.v1.Range.verify|verify} messages. + * Encodes the specified RoutingHint message, length delimited. Does not implicitly {@link google.spanner.v1.RoutingHint.verify|verify} messages. * @function encodeDelimited - * @memberof google.spanner.v1.Range + * @memberof google.spanner.v1.RoutingHint * @static - * @param {google.spanner.v1.IRange} message Range message or plain object to encode + * @param {google.spanner.v1.IRoutingHint} message RoutingHint message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Range.encodeDelimited = function encodeDelimited(message, writer) { + RoutingHint.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Range message from the specified reader or buffer. + * Decodes a RoutingHint message from the specified reader or buffer. * @function decode - * @memberof google.spanner.v1.Range + * @memberof google.spanner.v1.RoutingHint * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.Range} Range + * @returns {google.spanner.v1.RoutingHint} RoutingHint * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Range.decode = function decode(reader, length, error) { + RoutingHint.decode = function decode(reader, length, error) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.Range(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.RoutingHint(); while (reader.pos < end) { var tag = reader.uint32(); if (tag === error) break; switch (tag >>> 3) { case 1: { - message.startKey = reader.bytes(); + message.operationUid = reader.uint64(); break; } case 2: { - message.limitKey = reader.bytes(); + message.databaseId = reader.uint64(); break; } case 3: { - message.groupUid = reader.uint64(); + message.schemaGeneration = reader.bytes(); break; } case 4: { + message.key = reader.bytes(); + break; + } + case 5: { + message.limitKey = reader.bytes(); + break; + } + case 6: { + message.groupUid = reader.uint64(); + break; + } + case 7: { message.splitId = reader.uint64(); break; } - case 5: { - message.generation = reader.bytes(); + case 8: { + message.tabletUid = reader.uint64(); + break; + } + case 9: { + if (!(message.skippedTabletUid && message.skippedTabletUid.length)) + message.skippedTabletUid = []; + message.skippedTabletUid.push($root.google.spanner.v1.RoutingHint.SkippedTablet.decode(reader, reader.uint32())); + break; + } + case 10: { + message.clientLocation = reader.string(); break; } default: @@ -89861,216 +89886,566 @@ }; /** - * Decodes a Range message from the specified reader or buffer, length delimited. + * Decodes a RoutingHint message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.spanner.v1.Range + * @memberof google.spanner.v1.RoutingHint * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.Range} Range + * @returns {google.spanner.v1.RoutingHint} RoutingHint * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Range.decodeDelimited = function decodeDelimited(reader) { + RoutingHint.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Range message. - * @function verify - * @memberof google.spanner.v1.Range - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not + * Verifies a RoutingHint message. + * @function verify + * @memberof google.spanner.v1.RoutingHint + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + RoutingHint.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.operationUid != null && message.hasOwnProperty("operationUid")) + if (!$util.isInteger(message.operationUid) && !(message.operationUid && $util.isInteger(message.operationUid.low) && $util.isInteger(message.operationUid.high))) + return "operationUid: integer|Long expected"; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (!$util.isInteger(message.databaseId) && !(message.databaseId && $util.isInteger(message.databaseId.low) && $util.isInteger(message.databaseId.high))) + return "databaseId: integer|Long expected"; + if (message.schemaGeneration != null && message.hasOwnProperty("schemaGeneration")) + if (!(message.schemaGeneration && typeof message.schemaGeneration.length === "number" || $util.isString(message.schemaGeneration))) + return "schemaGeneration: buffer expected"; + if (message.key != null && message.hasOwnProperty("key")) + if (!(message.key && typeof message.key.length === "number" || $util.isString(message.key))) + return "key: buffer expected"; + if (message.limitKey != null && message.hasOwnProperty("limitKey")) + if (!(message.limitKey && typeof message.limitKey.length === "number" || $util.isString(message.limitKey))) + return "limitKey: buffer expected"; + if (message.groupUid != null && message.hasOwnProperty("groupUid")) + if (!$util.isInteger(message.groupUid) && !(message.groupUid && $util.isInteger(message.groupUid.low) && $util.isInteger(message.groupUid.high))) + return "groupUid: integer|Long expected"; + if (message.splitId != null && message.hasOwnProperty("splitId")) + if (!$util.isInteger(message.splitId) && !(message.splitId && $util.isInteger(message.splitId.low) && $util.isInteger(message.splitId.high))) + return "splitId: integer|Long expected"; + if (message.tabletUid != null && message.hasOwnProperty("tabletUid")) + if (!$util.isInteger(message.tabletUid) && !(message.tabletUid && $util.isInteger(message.tabletUid.low) && $util.isInteger(message.tabletUid.high))) + return "tabletUid: integer|Long expected"; + if (message.skippedTabletUid != null && message.hasOwnProperty("skippedTabletUid")) { + if (!Array.isArray(message.skippedTabletUid)) + return "skippedTabletUid: array expected"; + for (var i = 0; i < message.skippedTabletUid.length; ++i) { + var error = $root.google.spanner.v1.RoutingHint.SkippedTablet.verify(message.skippedTabletUid[i]); + if (error) + return "skippedTabletUid." + error; + } + } + if (message.clientLocation != null && message.hasOwnProperty("clientLocation")) + if (!$util.isString(message.clientLocation)) + return "clientLocation: string expected"; + return null; + }; + + /** + * Creates a RoutingHint message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.spanner.v1.RoutingHint + * @static + * @param {Object.} object Plain object + * @returns {google.spanner.v1.RoutingHint} RoutingHint + */ + RoutingHint.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.RoutingHint) + return object; + var message = new $root.google.spanner.v1.RoutingHint(); + if (object.operationUid != null) + if ($util.Long) + (message.operationUid = $util.Long.fromValue(object.operationUid)).unsigned = true; + else if (typeof object.operationUid === "string") + message.operationUid = parseInt(object.operationUid, 10); + else if (typeof object.operationUid === "number") + message.operationUid = object.operationUid; + else if (typeof object.operationUid === "object") + message.operationUid = new $util.LongBits(object.operationUid.low >>> 0, object.operationUid.high >>> 0).toNumber(true); + if (object.databaseId != null) + if ($util.Long) + (message.databaseId = $util.Long.fromValue(object.databaseId)).unsigned = true; + else if (typeof object.databaseId === "string") + message.databaseId = parseInt(object.databaseId, 10); + else if (typeof object.databaseId === "number") + message.databaseId = object.databaseId; + else if (typeof object.databaseId === "object") + message.databaseId = new $util.LongBits(object.databaseId.low >>> 0, object.databaseId.high >>> 0).toNumber(true); + if (object.schemaGeneration != null) + if (typeof object.schemaGeneration === "string") + $util.base64.decode(object.schemaGeneration, message.schemaGeneration = $util.newBuffer($util.base64.length(object.schemaGeneration)), 0); + else if (object.schemaGeneration.length >= 0) + message.schemaGeneration = object.schemaGeneration; + if (object.key != null) + if (typeof object.key === "string") + $util.base64.decode(object.key, message.key = $util.newBuffer($util.base64.length(object.key)), 0); + else if (object.key.length >= 0) + message.key = object.key; + if (object.limitKey != null) + if (typeof object.limitKey === "string") + $util.base64.decode(object.limitKey, message.limitKey = $util.newBuffer($util.base64.length(object.limitKey)), 0); + else if (object.limitKey.length >= 0) + message.limitKey = object.limitKey; + if (object.groupUid != null) + if ($util.Long) + (message.groupUid = $util.Long.fromValue(object.groupUid)).unsigned = true; + else if (typeof object.groupUid === "string") + message.groupUid = parseInt(object.groupUid, 10); + else if (typeof object.groupUid === "number") + message.groupUid = object.groupUid; + else if (typeof object.groupUid === "object") + message.groupUid = new $util.LongBits(object.groupUid.low >>> 0, object.groupUid.high >>> 0).toNumber(true); + if (object.splitId != null) + if ($util.Long) + (message.splitId = $util.Long.fromValue(object.splitId)).unsigned = true; + else if (typeof object.splitId === "string") + message.splitId = parseInt(object.splitId, 10); + else if (typeof object.splitId === "number") + message.splitId = object.splitId; + else if (typeof object.splitId === "object") + message.splitId = new $util.LongBits(object.splitId.low >>> 0, object.splitId.high >>> 0).toNumber(true); + if (object.tabletUid != null) + if ($util.Long) + (message.tabletUid = $util.Long.fromValue(object.tabletUid)).unsigned = true; + else if (typeof object.tabletUid === "string") + message.tabletUid = parseInt(object.tabletUid, 10); + else if (typeof object.tabletUid === "number") + message.tabletUid = object.tabletUid; + else if (typeof object.tabletUid === "object") + message.tabletUid = new $util.LongBits(object.tabletUid.low >>> 0, object.tabletUid.high >>> 0).toNumber(true); + if (object.skippedTabletUid) { + if (!Array.isArray(object.skippedTabletUid)) + throw TypeError(".google.spanner.v1.RoutingHint.skippedTabletUid: array expected"); + message.skippedTabletUid = []; + for (var i = 0; i < object.skippedTabletUid.length; ++i) { + if (typeof object.skippedTabletUid[i] !== "object") + throw TypeError(".google.spanner.v1.RoutingHint.skippedTabletUid: object expected"); + message.skippedTabletUid[i] = $root.google.spanner.v1.RoutingHint.SkippedTablet.fromObject(object.skippedTabletUid[i]); + } + } + if (object.clientLocation != null) + message.clientLocation = String(object.clientLocation); + return message; + }; + + /** + * Creates a plain object from a RoutingHint message. Also converts values to other types if specified. + * @function toObject + * @memberof google.spanner.v1.RoutingHint + * @static + * @param {google.spanner.v1.RoutingHint} message RoutingHint + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + RoutingHint.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.skippedTabletUid = []; + if (options.defaults) { + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.operationUid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.operationUid = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.databaseId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.databaseId = options.longs === String ? "0" : 0; + if (options.bytes === String) + object.schemaGeneration = ""; + else { + object.schemaGeneration = []; + if (options.bytes !== Array) + object.schemaGeneration = $util.newBuffer(object.schemaGeneration); + } + if (options.bytes === String) + object.key = ""; + else { + object.key = []; + if (options.bytes !== Array) + object.key = $util.newBuffer(object.key); + } + if (options.bytes === String) + object.limitKey = ""; + else { + object.limitKey = []; + if (options.bytes !== Array) + object.limitKey = $util.newBuffer(object.limitKey); + } + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.groupUid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.groupUid = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.splitId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.splitId = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.tabletUid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.tabletUid = options.longs === String ? "0" : 0; + object.clientLocation = ""; + } + if (message.operationUid != null && message.hasOwnProperty("operationUid")) + if (typeof message.operationUid === "number") + object.operationUid = options.longs === String ? String(message.operationUid) : message.operationUid; + else + object.operationUid = options.longs === String ? $util.Long.prototype.toString.call(message.operationUid) : options.longs === Number ? new $util.LongBits(message.operationUid.low >>> 0, message.operationUid.high >>> 0).toNumber(true) : message.operationUid; + if (message.databaseId != null && message.hasOwnProperty("databaseId")) + if (typeof message.databaseId === "number") + object.databaseId = options.longs === String ? String(message.databaseId) : message.databaseId; + else + object.databaseId = options.longs === String ? $util.Long.prototype.toString.call(message.databaseId) : options.longs === Number ? new $util.LongBits(message.databaseId.low >>> 0, message.databaseId.high >>> 0).toNumber(true) : message.databaseId; + if (message.schemaGeneration != null && message.hasOwnProperty("schemaGeneration")) + object.schemaGeneration = options.bytes === String ? $util.base64.encode(message.schemaGeneration, 0, message.schemaGeneration.length) : options.bytes === Array ? Array.prototype.slice.call(message.schemaGeneration) : message.schemaGeneration; + if (message.key != null && message.hasOwnProperty("key")) + object.key = options.bytes === String ? $util.base64.encode(message.key, 0, message.key.length) : options.bytes === Array ? Array.prototype.slice.call(message.key) : message.key; + if (message.limitKey != null && message.hasOwnProperty("limitKey")) + object.limitKey = options.bytes === String ? $util.base64.encode(message.limitKey, 0, message.limitKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.limitKey) : message.limitKey; + if (message.groupUid != null && message.hasOwnProperty("groupUid")) + if (typeof message.groupUid === "number") + object.groupUid = options.longs === String ? String(message.groupUid) : message.groupUid; + else + object.groupUid = options.longs === String ? $util.Long.prototype.toString.call(message.groupUid) : options.longs === Number ? new $util.LongBits(message.groupUid.low >>> 0, message.groupUid.high >>> 0).toNumber(true) : message.groupUid; + if (message.splitId != null && message.hasOwnProperty("splitId")) + if (typeof message.splitId === "number") + object.splitId = options.longs === String ? String(message.splitId) : message.splitId; + else + object.splitId = options.longs === String ? $util.Long.prototype.toString.call(message.splitId) : options.longs === Number ? new $util.LongBits(message.splitId.low >>> 0, message.splitId.high >>> 0).toNumber(true) : message.splitId; + if (message.tabletUid != null && message.hasOwnProperty("tabletUid")) + if (typeof message.tabletUid === "number") + object.tabletUid = options.longs === String ? String(message.tabletUid) : message.tabletUid; + else + object.tabletUid = options.longs === String ? $util.Long.prototype.toString.call(message.tabletUid) : options.longs === Number ? new $util.LongBits(message.tabletUid.low >>> 0, message.tabletUid.high >>> 0).toNumber(true) : message.tabletUid; + if (message.skippedTabletUid && message.skippedTabletUid.length) { + object.skippedTabletUid = []; + for (var j = 0; j < message.skippedTabletUid.length; ++j) + object.skippedTabletUid[j] = $root.google.spanner.v1.RoutingHint.SkippedTablet.toObject(message.skippedTabletUid[j], options); + } + if (message.clientLocation != null && message.hasOwnProperty("clientLocation")) + object.clientLocation = message.clientLocation; + return object; + }; + + /** + * Converts this RoutingHint to JSON. + * @function toJSON + * @memberof google.spanner.v1.RoutingHint + * @instance + * @returns {Object.} JSON object */ - Range.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.startKey != null && message.hasOwnProperty("startKey")) - if (!(message.startKey && typeof message.startKey.length === "number" || $util.isString(message.startKey))) - return "startKey: buffer expected"; - if (message.limitKey != null && message.hasOwnProperty("limitKey")) - if (!(message.limitKey && typeof message.limitKey.length === "number" || $util.isString(message.limitKey))) - return "limitKey: buffer expected"; - if (message.groupUid != null && message.hasOwnProperty("groupUid")) - if (!$util.isInteger(message.groupUid) && !(message.groupUid && $util.isInteger(message.groupUid.low) && $util.isInteger(message.groupUid.high))) - return "groupUid: integer|Long expected"; - if (message.splitId != null && message.hasOwnProperty("splitId")) - if (!$util.isInteger(message.splitId) && !(message.splitId && $util.isInteger(message.splitId.low) && $util.isInteger(message.splitId.high))) - return "splitId: integer|Long expected"; - if (message.generation != null && message.hasOwnProperty("generation")) - if (!(message.generation && typeof message.generation.length === "number" || $util.isString(message.generation))) - return "generation: buffer expected"; - return null; + RoutingHint.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Creates a Range message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.spanner.v1.Range + * Gets the default type url for RoutingHint + * @function getTypeUrl + * @memberof google.spanner.v1.RoutingHint * @static - * @param {Object.} object Plain object - * @returns {google.spanner.v1.Range} Range + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url */ - Range.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.Range) - return object; - var message = new $root.google.spanner.v1.Range(); - if (object.startKey != null) - if (typeof object.startKey === "string") - $util.base64.decode(object.startKey, message.startKey = $util.newBuffer($util.base64.length(object.startKey)), 0); - else if (object.startKey.length >= 0) - message.startKey = object.startKey; - if (object.limitKey != null) - if (typeof object.limitKey === "string") - $util.base64.decode(object.limitKey, message.limitKey = $util.newBuffer($util.base64.length(object.limitKey)), 0); - else if (object.limitKey.length >= 0) - message.limitKey = object.limitKey; - if (object.groupUid != null) - if ($util.Long) - (message.groupUid = $util.Long.fromValue(object.groupUid)).unsigned = true; - else if (typeof object.groupUid === "string") - message.groupUid = parseInt(object.groupUid, 10); - else if (typeof object.groupUid === "number") - message.groupUid = object.groupUid; - else if (typeof object.groupUid === "object") - message.groupUid = new $util.LongBits(object.groupUid.low >>> 0, object.groupUid.high >>> 0).toNumber(true); - if (object.splitId != null) - if ($util.Long) - (message.splitId = $util.Long.fromValue(object.splitId)).unsigned = true; - else if (typeof object.splitId === "string") - message.splitId = parseInt(object.splitId, 10); - else if (typeof object.splitId === "number") - message.splitId = object.splitId; - else if (typeof object.splitId === "object") - message.splitId = new $util.LongBits(object.splitId.low >>> 0, object.splitId.high >>> 0).toNumber(true); - if (object.generation != null) - if (typeof object.generation === "string") - $util.base64.decode(object.generation, message.generation = $util.newBuffer($util.base64.length(object.generation)), 0); - else if (object.generation.length >= 0) - message.generation = object.generation; - return message; + RoutingHint.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.spanner.v1.RoutingHint"; }; - /** - * Creates a plain object from a Range message. Also converts values to other types if specified. - * @function toObject - * @memberof google.spanner.v1.Range - * @static - * @param {google.spanner.v1.Range} message Range - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - Range.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - if (options.bytes === String) - object.startKey = ""; - else { - object.startKey = []; - if (options.bytes !== Array) - object.startKey = $util.newBuffer(object.startKey); - } - if (options.bytes === String) - object.limitKey = ""; - else { - object.limitKey = []; - if (options.bytes !== Array) - object.limitKey = $util.newBuffer(object.limitKey); - } - if ($util.Long) { - var long = new $util.Long(0, 0, true); - object.groupUid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.groupUid = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, true); - object.splitId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.splitId = options.longs === String ? "0" : 0; - if (options.bytes === String) - object.generation = ""; - else { - object.generation = []; - if (options.bytes !== Array) - object.generation = $util.newBuffer(object.generation); + RoutingHint.SkippedTablet = (function() { + + /** + * Properties of a SkippedTablet. + * @memberof google.spanner.v1.RoutingHint + * @interface ISkippedTablet + * @property {number|Long|null} [tabletUid] SkippedTablet tabletUid + * @property {Uint8Array|null} [incarnation] SkippedTablet incarnation + */ + + /** + * Constructs a new SkippedTablet. + * @memberof google.spanner.v1.RoutingHint + * @classdesc Represents a SkippedTablet. + * @implements ISkippedTablet + * @constructor + * @param {google.spanner.v1.RoutingHint.ISkippedTablet=} [properties] Properties to set + */ + function SkippedTablet(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * SkippedTablet tabletUid. + * @member {number|Long} tabletUid + * @memberof google.spanner.v1.RoutingHint.SkippedTablet + * @instance + */ + SkippedTablet.prototype.tabletUid = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * SkippedTablet incarnation. + * @member {Uint8Array} incarnation + * @memberof google.spanner.v1.RoutingHint.SkippedTablet + * @instance + */ + SkippedTablet.prototype.incarnation = $util.newBuffer([]); + + /** + * Creates a new SkippedTablet instance using the specified properties. + * @function create + * @memberof google.spanner.v1.RoutingHint.SkippedTablet + * @static + * @param {google.spanner.v1.RoutingHint.ISkippedTablet=} [properties] Properties to set + * @returns {google.spanner.v1.RoutingHint.SkippedTablet} SkippedTablet instance + */ + SkippedTablet.create = function create(properties) { + return new SkippedTablet(properties); + }; + + /** + * Encodes the specified SkippedTablet message. Does not implicitly {@link google.spanner.v1.RoutingHint.SkippedTablet.verify|verify} messages. + * @function encode + * @memberof google.spanner.v1.RoutingHint.SkippedTablet + * @static + * @param {google.spanner.v1.RoutingHint.ISkippedTablet} message SkippedTablet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SkippedTablet.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.tabletUid != null && Object.hasOwnProperty.call(message, "tabletUid")) + writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.tabletUid); + if (message.incarnation != null && Object.hasOwnProperty.call(message, "incarnation")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.incarnation); + return writer; + }; + + /** + * Encodes the specified SkippedTablet message, length delimited. Does not implicitly {@link google.spanner.v1.RoutingHint.SkippedTablet.verify|verify} messages. + * @function encodeDelimited + * @memberof google.spanner.v1.RoutingHint.SkippedTablet + * @static + * @param {google.spanner.v1.RoutingHint.ISkippedTablet} message SkippedTablet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SkippedTablet.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a SkippedTablet message from the specified reader or buffer. + * @function decode + * @memberof google.spanner.v1.RoutingHint.SkippedTablet + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.spanner.v1.RoutingHint.SkippedTablet} SkippedTablet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SkippedTablet.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.RoutingHint.SkippedTablet(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.tabletUid = reader.uint64(); + break; + } + case 2: { + message.incarnation = reader.bytes(); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a SkippedTablet message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.spanner.v1.RoutingHint.SkippedTablet + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.spanner.v1.RoutingHint.SkippedTablet} SkippedTablet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SkippedTablet.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a SkippedTablet message. + * @function verify + * @memberof google.spanner.v1.RoutingHint.SkippedTablet + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SkippedTablet.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.tabletUid != null && message.hasOwnProperty("tabletUid")) + if (!$util.isInteger(message.tabletUid) && !(message.tabletUid && $util.isInteger(message.tabletUid.low) && $util.isInteger(message.tabletUid.high))) + return "tabletUid: integer|Long expected"; + if (message.incarnation != null && message.hasOwnProperty("incarnation")) + if (!(message.incarnation && typeof message.incarnation.length === "number" || $util.isString(message.incarnation))) + return "incarnation: buffer expected"; + return null; + }; + + /** + * Creates a SkippedTablet message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.spanner.v1.RoutingHint.SkippedTablet + * @static + * @param {Object.} object Plain object + * @returns {google.spanner.v1.RoutingHint.SkippedTablet} SkippedTablet + */ + SkippedTablet.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.RoutingHint.SkippedTablet) + return object; + var message = new $root.google.spanner.v1.RoutingHint.SkippedTablet(); + if (object.tabletUid != null) + if ($util.Long) + (message.tabletUid = $util.Long.fromValue(object.tabletUid)).unsigned = true; + else if (typeof object.tabletUid === "string") + message.tabletUid = parseInt(object.tabletUid, 10); + else if (typeof object.tabletUid === "number") + message.tabletUid = object.tabletUid; + else if (typeof object.tabletUid === "object") + message.tabletUid = new $util.LongBits(object.tabletUid.low >>> 0, object.tabletUid.high >>> 0).toNumber(true); + if (object.incarnation != null) + if (typeof object.incarnation === "string") + $util.base64.decode(object.incarnation, message.incarnation = $util.newBuffer($util.base64.length(object.incarnation)), 0); + else if (object.incarnation.length >= 0) + message.incarnation = object.incarnation; + return message; + }; + + /** + * Creates a plain object from a SkippedTablet message. Also converts values to other types if specified. + * @function toObject + * @memberof google.spanner.v1.RoutingHint.SkippedTablet + * @static + * @param {google.spanner.v1.RoutingHint.SkippedTablet} message SkippedTablet + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + SkippedTablet.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.tabletUid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.tabletUid = options.longs === String ? "0" : 0; + if (options.bytes === String) + object.incarnation = ""; + else { + object.incarnation = []; + if (options.bytes !== Array) + object.incarnation = $util.newBuffer(object.incarnation); + } } - } - if (message.startKey != null && message.hasOwnProperty("startKey")) - object.startKey = options.bytes === String ? $util.base64.encode(message.startKey, 0, message.startKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.startKey) : message.startKey; - if (message.limitKey != null && message.hasOwnProperty("limitKey")) - object.limitKey = options.bytes === String ? $util.base64.encode(message.limitKey, 0, message.limitKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.limitKey) : message.limitKey; - if (message.groupUid != null && message.hasOwnProperty("groupUid")) - if (typeof message.groupUid === "number") - object.groupUid = options.longs === String ? String(message.groupUid) : message.groupUid; - else - object.groupUid = options.longs === String ? $util.Long.prototype.toString.call(message.groupUid) : options.longs === Number ? new $util.LongBits(message.groupUid.low >>> 0, message.groupUid.high >>> 0).toNumber(true) : message.groupUid; - if (message.splitId != null && message.hasOwnProperty("splitId")) - if (typeof message.splitId === "number") - object.splitId = options.longs === String ? String(message.splitId) : message.splitId; - else - object.splitId = options.longs === String ? $util.Long.prototype.toString.call(message.splitId) : options.longs === Number ? new $util.LongBits(message.splitId.low >>> 0, message.splitId.high >>> 0).toNumber(true) : message.splitId; - if (message.generation != null && message.hasOwnProperty("generation")) - object.generation = options.bytes === String ? $util.base64.encode(message.generation, 0, message.generation.length) : options.bytes === Array ? Array.prototype.slice.call(message.generation) : message.generation; - return object; - }; + if (message.tabletUid != null && message.hasOwnProperty("tabletUid")) + if (typeof message.tabletUid === "number") + object.tabletUid = options.longs === String ? String(message.tabletUid) : message.tabletUid; + else + object.tabletUid = options.longs === String ? $util.Long.prototype.toString.call(message.tabletUid) : options.longs === Number ? new $util.LongBits(message.tabletUid.low >>> 0, message.tabletUid.high >>> 0).toNumber(true) : message.tabletUid; + if (message.incarnation != null && message.hasOwnProperty("incarnation")) + object.incarnation = options.bytes === String ? $util.base64.encode(message.incarnation, 0, message.incarnation.length) : options.bytes === Array ? Array.prototype.slice.call(message.incarnation) : message.incarnation; + return object; + }; - /** - * Converts this Range to JSON. - * @function toJSON - * @memberof google.spanner.v1.Range - * @instance - * @returns {Object.} JSON object - */ - Range.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Converts this SkippedTablet to JSON. + * @function toJSON + * @memberof google.spanner.v1.RoutingHint.SkippedTablet + * @instance + * @returns {Object.} JSON object + */ + SkippedTablet.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * Gets the default type url for Range - * @function getTypeUrl - * @memberof google.spanner.v1.Range - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - Range.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/google.spanner.v1.Range"; - }; + /** + * Gets the default type url for SkippedTablet + * @function getTypeUrl + * @memberof google.spanner.v1.RoutingHint.SkippedTablet + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + SkippedTablet.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.spanner.v1.RoutingHint.SkippedTablet"; + }; - return Range; + return SkippedTablet; + })(); + + return RoutingHint; })(); - v1.Tablet = (function() { + v1.Type = (function() { /** - * Properties of a Tablet. + * Properties of a Type. * @memberof google.spanner.v1 - * @interface ITablet - * @property {number|Long|null} [tabletUid] Tablet tabletUid - * @property {string|null} [serverAddress] Tablet serverAddress - * @property {string|null} [location] Tablet location - * @property {google.spanner.v1.Tablet.Role|null} [role] Tablet role - * @property {Uint8Array|null} [incarnation] Tablet incarnation - * @property {number|null} [distance] Tablet distance - * @property {boolean|null} [skip] Tablet skip + * @interface IType + * @property {google.spanner.v1.TypeCode|null} [code] Type code + * @property {google.spanner.v1.IType|null} [arrayElementType] Type arrayElementType + * @property {google.spanner.v1.IStructType|null} [structType] Type structType + * @property {google.spanner.v1.TypeAnnotationCode|null} [typeAnnotation] Type typeAnnotation + * @property {string|null} [protoTypeFqn] Type protoTypeFqn */ /** - * Constructs a new Tablet. + * Constructs a new Type. * @memberof google.spanner.v1 - * @classdesc Represents a Tablet. - * @implements ITablet + * @classdesc Represents a Type. + * @implements IType * @constructor - * @param {google.spanner.v1.ITablet=} [properties] Properties to set + * @param {google.spanner.v1.IType=} [properties] Properties to set */ - function Tablet(properties) { + function Type(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -90078,161 +90453,133 @@ } /** - * Tablet tabletUid. - * @member {number|Long} tabletUid - * @memberof google.spanner.v1.Tablet - * @instance - */ - Tablet.prototype.tabletUid = $util.Long ? $util.Long.fromBits(0,0,true) : 0; - - /** - * Tablet serverAddress. - * @member {string} serverAddress - * @memberof google.spanner.v1.Tablet - * @instance - */ - Tablet.prototype.serverAddress = ""; - - /** - * Tablet location. - * @member {string} location - * @memberof google.spanner.v1.Tablet + * Type code. + * @member {google.spanner.v1.TypeCode} code + * @memberof google.spanner.v1.Type * @instance */ - Tablet.prototype.location = ""; + Type.prototype.code = 0; /** - * Tablet role. - * @member {google.spanner.v1.Tablet.Role} role - * @memberof google.spanner.v1.Tablet + * Type arrayElementType. + * @member {google.spanner.v1.IType|null|undefined} arrayElementType + * @memberof google.spanner.v1.Type * @instance */ - Tablet.prototype.role = 0; + Type.prototype.arrayElementType = null; /** - * Tablet incarnation. - * @member {Uint8Array} incarnation - * @memberof google.spanner.v1.Tablet + * Type structType. + * @member {google.spanner.v1.IStructType|null|undefined} structType + * @memberof google.spanner.v1.Type * @instance */ - Tablet.prototype.incarnation = $util.newBuffer([]); + Type.prototype.structType = null; /** - * Tablet distance. - * @member {number} distance - * @memberof google.spanner.v1.Tablet + * Type typeAnnotation. + * @member {google.spanner.v1.TypeAnnotationCode} typeAnnotation + * @memberof google.spanner.v1.Type * @instance */ - Tablet.prototype.distance = 0; + Type.prototype.typeAnnotation = 0; /** - * Tablet skip. - * @member {boolean} skip - * @memberof google.spanner.v1.Tablet + * Type protoTypeFqn. + * @member {string} protoTypeFqn + * @memberof google.spanner.v1.Type * @instance */ - Tablet.prototype.skip = false; + Type.prototype.protoTypeFqn = ""; /** - * Creates a new Tablet instance using the specified properties. + * Creates a new Type instance using the specified properties. * @function create - * @memberof google.spanner.v1.Tablet + * @memberof google.spanner.v1.Type * @static - * @param {google.spanner.v1.ITablet=} [properties] Properties to set - * @returns {google.spanner.v1.Tablet} Tablet instance + * @param {google.spanner.v1.IType=} [properties] Properties to set + * @returns {google.spanner.v1.Type} Type instance */ - Tablet.create = function create(properties) { - return new Tablet(properties); + Type.create = function create(properties) { + return new Type(properties); }; /** - * Encodes the specified Tablet message. Does not implicitly {@link google.spanner.v1.Tablet.verify|verify} messages. + * Encodes the specified Type message. Does not implicitly {@link google.spanner.v1.Type.verify|verify} messages. * @function encode - * @memberof google.spanner.v1.Tablet + * @memberof google.spanner.v1.Type * @static - * @param {google.spanner.v1.ITablet} message Tablet message or plain object to encode + * @param {google.spanner.v1.IType} message Type message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Tablet.encode = function encode(message, writer) { + Type.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.tabletUid != null && Object.hasOwnProperty.call(message, "tabletUid")) - writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.tabletUid); - if (message.serverAddress != null && Object.hasOwnProperty.call(message, "serverAddress")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.serverAddress); - if (message.location != null && Object.hasOwnProperty.call(message, "location")) - writer.uint32(/* id 3, wireType 2 =*/26).string(message.location); - if (message.role != null && Object.hasOwnProperty.call(message, "role")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.role); - if (message.incarnation != null && Object.hasOwnProperty.call(message, "incarnation")) - writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.incarnation); - if (message.distance != null && Object.hasOwnProperty.call(message, "distance")) - writer.uint32(/* id 6, wireType 0 =*/48).uint32(message.distance); - if (message.skip != null && Object.hasOwnProperty.call(message, "skip")) - writer.uint32(/* id 7, wireType 0 =*/56).bool(message.skip); + if (message.code != null && Object.hasOwnProperty.call(message, "code")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.code); + if (message.arrayElementType != null && Object.hasOwnProperty.call(message, "arrayElementType")) + $root.google.spanner.v1.Type.encode(message.arrayElementType, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.structType != null && Object.hasOwnProperty.call(message, "structType")) + $root.google.spanner.v1.StructType.encode(message.structType, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.typeAnnotation != null && Object.hasOwnProperty.call(message, "typeAnnotation")) + writer.uint32(/* id 4, wireType 0 =*/32).int32(message.typeAnnotation); + if (message.protoTypeFqn != null && Object.hasOwnProperty.call(message, "protoTypeFqn")) + writer.uint32(/* id 5, wireType 2 =*/42).string(message.protoTypeFqn); return writer; }; /** - * Encodes the specified Tablet message, length delimited. Does not implicitly {@link google.spanner.v1.Tablet.verify|verify} messages. + * Encodes the specified Type message, length delimited. Does not implicitly {@link google.spanner.v1.Type.verify|verify} messages. * @function encodeDelimited - * @memberof google.spanner.v1.Tablet + * @memberof google.spanner.v1.Type * @static - * @param {google.spanner.v1.ITablet} message Tablet message or plain object to encode + * @param {google.spanner.v1.IType} message Type message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Tablet.encodeDelimited = function encodeDelimited(message, writer) { + Type.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Tablet message from the specified reader or buffer. + * Decodes a Type message from the specified reader or buffer. * @function decode - * @memberof google.spanner.v1.Tablet + * @memberof google.spanner.v1.Type * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.Tablet} Tablet + * @returns {google.spanner.v1.Type} Type * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Tablet.decode = function decode(reader, length, error) { + Type.decode = function decode(reader, length, error) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.Tablet(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.Type(); while (reader.pos < end) { var tag = reader.uint32(); if (tag === error) break; switch (tag >>> 3) { case 1: { - message.tabletUid = reader.uint64(); + message.code = reader.int32(); break; } case 2: { - message.serverAddress = reader.string(); + message.arrayElementType = $root.google.spanner.v1.Type.decode(reader, reader.uint32()); break; } case 3: { - message.location = reader.string(); + message.structType = $root.google.spanner.v1.StructType.decode(reader, reader.uint32()); break; } case 4: { - message.role = reader.int32(); + message.typeAnnotation = reader.int32(); break; } case 5: { - message.incarnation = reader.bytes(); - break; - } - case 6: { - message.distance = reader.uint32(); - break; - } - case 7: { - message.skip = reader.bool(); + message.protoTypeFqn = reader.string(); break; } default: @@ -90244,238 +90591,289 @@ }; /** - * Decodes a Tablet message from the specified reader or buffer, length delimited. + * Decodes a Type message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.spanner.v1.Tablet + * @memberof google.spanner.v1.Type * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.Tablet} Tablet + * @returns {google.spanner.v1.Type} Type * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Tablet.decodeDelimited = function decodeDelimited(reader) { + Type.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Tablet message. + * Verifies a Type message. * @function verify - * @memberof google.spanner.v1.Tablet + * @memberof google.spanner.v1.Type * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Tablet.verify = function verify(message) { + Type.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.tabletUid != null && message.hasOwnProperty("tabletUid")) - if (!$util.isInteger(message.tabletUid) && !(message.tabletUid && $util.isInteger(message.tabletUid.low) && $util.isInteger(message.tabletUid.high))) - return "tabletUid: integer|Long expected"; - if (message.serverAddress != null && message.hasOwnProperty("serverAddress")) - if (!$util.isString(message.serverAddress)) - return "serverAddress: string expected"; - if (message.location != null && message.hasOwnProperty("location")) - if (!$util.isString(message.location)) - return "location: string expected"; - if (message.role != null && message.hasOwnProperty("role")) - switch (message.role) { + if (message.code != null && message.hasOwnProperty("code")) + switch (message.code) { default: - return "role: enum value expected"; + return "code: enum value expected"; case 0: case 1: case 2: + case 3: + case 15: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 13: + case 14: + case 16: + case 17: break; } - if (message.incarnation != null && message.hasOwnProperty("incarnation")) - if (!(message.incarnation && typeof message.incarnation.length === "number" || $util.isString(message.incarnation))) - return "incarnation: buffer expected"; - if (message.distance != null && message.hasOwnProperty("distance")) - if (!$util.isInteger(message.distance)) - return "distance: integer expected"; - if (message.skip != null && message.hasOwnProperty("skip")) - if (typeof message.skip !== "boolean") - return "skip: boolean expected"; + if (message.arrayElementType != null && message.hasOwnProperty("arrayElementType")) { + var error = $root.google.spanner.v1.Type.verify(message.arrayElementType); + if (error) + return "arrayElementType." + error; + } + if (message.structType != null && message.hasOwnProperty("structType")) { + var error = $root.google.spanner.v1.StructType.verify(message.structType); + if (error) + return "structType." + error; + } + if (message.typeAnnotation != null && message.hasOwnProperty("typeAnnotation")) + switch (message.typeAnnotation) { + default: + return "typeAnnotation: enum value expected"; + case 0: + case 2: + case 3: + case 4: + break; + } + if (message.protoTypeFqn != null && message.hasOwnProperty("protoTypeFqn")) + if (!$util.isString(message.protoTypeFqn)) + return "protoTypeFqn: string expected"; return null; }; /** - * Creates a Tablet message from a plain object. Also converts values to their respective internal types. + * Creates a Type message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.spanner.v1.Tablet + * @memberof google.spanner.v1.Type * @static * @param {Object.} object Plain object - * @returns {google.spanner.v1.Tablet} Tablet + * @returns {google.spanner.v1.Type} Type */ - Tablet.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.Tablet) + Type.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.Type) return object; - var message = new $root.google.spanner.v1.Tablet(); - if (object.tabletUid != null) - if ($util.Long) - (message.tabletUid = $util.Long.fromValue(object.tabletUid)).unsigned = true; - else if (typeof object.tabletUid === "string") - message.tabletUid = parseInt(object.tabletUid, 10); - else if (typeof object.tabletUid === "number") - message.tabletUid = object.tabletUid; - else if (typeof object.tabletUid === "object") - message.tabletUid = new $util.LongBits(object.tabletUid.low >>> 0, object.tabletUid.high >>> 0).toNumber(true); - if (object.serverAddress != null) - message.serverAddress = String(object.serverAddress); - if (object.location != null) - message.location = String(object.location); - switch (object.role) { + var message = new $root.google.spanner.v1.Type(); + switch (object.code) { + default: + if (typeof object.code === "number") { + message.code = object.code; + break; + } + break; + case "TYPE_CODE_UNSPECIFIED": + case 0: + message.code = 0; + break; + case "BOOL": + case 1: + message.code = 1; + break; + case "INT64": + case 2: + message.code = 2; + break; + case "FLOAT64": + case 3: + message.code = 3; + break; + case "FLOAT32": + case 15: + message.code = 15; + break; + case "TIMESTAMP": + case 4: + message.code = 4; + break; + case "DATE": + case 5: + message.code = 5; + break; + case "STRING": + case 6: + message.code = 6; + break; + case "BYTES": + case 7: + message.code = 7; + break; + case "ARRAY": + case 8: + message.code = 8; + break; + case "STRUCT": + case 9: + message.code = 9; + break; + case "NUMERIC": + case 10: + message.code = 10; + break; + case "JSON": + case 11: + message.code = 11; + break; + case "PROTO": + case 13: + message.code = 13; + break; + case "ENUM": + case 14: + message.code = 14; + break; + case "INTERVAL": + case 16: + message.code = 16; + break; + case "UUID": + case 17: + message.code = 17; + break; + } + if (object.arrayElementType != null) { + if (typeof object.arrayElementType !== "object") + throw TypeError(".google.spanner.v1.Type.arrayElementType: object expected"); + message.arrayElementType = $root.google.spanner.v1.Type.fromObject(object.arrayElementType); + } + if (object.structType != null) { + if (typeof object.structType !== "object") + throw TypeError(".google.spanner.v1.Type.structType: object expected"); + message.structType = $root.google.spanner.v1.StructType.fromObject(object.structType); + } + switch (object.typeAnnotation) { default: - if (typeof object.role === "number") { - message.role = object.role; + if (typeof object.typeAnnotation === "number") { + message.typeAnnotation = object.typeAnnotation; break; } break; - case "ROLE_UNSPECIFIED": + case "TYPE_ANNOTATION_CODE_UNSPECIFIED": case 0: - message.role = 0; - break; - case "READ_WRITE": - case 1: - message.role = 1; + message.typeAnnotation = 0; break; - case "READ_ONLY": + case "PG_NUMERIC": case 2: - message.role = 2; + message.typeAnnotation = 2; + break; + case "PG_JSONB": + case 3: + message.typeAnnotation = 3; + break; + case "PG_OID": + case 4: + message.typeAnnotation = 4; break; } - if (object.incarnation != null) - if (typeof object.incarnation === "string") - $util.base64.decode(object.incarnation, message.incarnation = $util.newBuffer($util.base64.length(object.incarnation)), 0); - else if (object.incarnation.length >= 0) - message.incarnation = object.incarnation; - if (object.distance != null) - message.distance = object.distance >>> 0; - if (object.skip != null) - message.skip = Boolean(object.skip); + if (object.protoTypeFqn != null) + message.protoTypeFqn = String(object.protoTypeFqn); return message; }; /** - * Creates a plain object from a Tablet message. Also converts values to other types if specified. + * Creates a plain object from a Type message. Also converts values to other types if specified. * @function toObject - * @memberof google.spanner.v1.Tablet + * @memberof google.spanner.v1.Type * @static - * @param {google.spanner.v1.Tablet} message Tablet + * @param {google.spanner.v1.Type} message Type * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Tablet.toObject = function toObject(message, options) { + Type.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { - if ($util.Long) { - var long = new $util.Long(0, 0, true); - object.tabletUid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.tabletUid = options.longs === String ? "0" : 0; - object.serverAddress = ""; - object.location = ""; - object.role = options.enums === String ? "ROLE_UNSPECIFIED" : 0; - if (options.bytes === String) - object.incarnation = ""; - else { - object.incarnation = []; - if (options.bytes !== Array) - object.incarnation = $util.newBuffer(object.incarnation); - } - object.distance = 0; - object.skip = false; + object.code = options.enums === String ? "TYPE_CODE_UNSPECIFIED" : 0; + object.arrayElementType = null; + object.structType = null; + object.typeAnnotation = options.enums === String ? "TYPE_ANNOTATION_CODE_UNSPECIFIED" : 0; + object.protoTypeFqn = ""; } - if (message.tabletUid != null && message.hasOwnProperty("tabletUid")) - if (typeof message.tabletUid === "number") - object.tabletUid = options.longs === String ? String(message.tabletUid) : message.tabletUid; - else - object.tabletUid = options.longs === String ? $util.Long.prototype.toString.call(message.tabletUid) : options.longs === Number ? new $util.LongBits(message.tabletUid.low >>> 0, message.tabletUid.high >>> 0).toNumber(true) : message.tabletUid; - if (message.serverAddress != null && message.hasOwnProperty("serverAddress")) - object.serverAddress = message.serverAddress; - if (message.location != null && message.hasOwnProperty("location")) - object.location = message.location; - if (message.role != null && message.hasOwnProperty("role")) - object.role = options.enums === String ? $root.google.spanner.v1.Tablet.Role[message.role] === undefined ? message.role : $root.google.spanner.v1.Tablet.Role[message.role] : message.role; - if (message.incarnation != null && message.hasOwnProperty("incarnation")) - object.incarnation = options.bytes === String ? $util.base64.encode(message.incarnation, 0, message.incarnation.length) : options.bytes === Array ? Array.prototype.slice.call(message.incarnation) : message.incarnation; - if (message.distance != null && message.hasOwnProperty("distance")) - object.distance = message.distance; - if (message.skip != null && message.hasOwnProperty("skip")) - object.skip = message.skip; + if (message.code != null && message.hasOwnProperty("code")) + object.code = options.enums === String ? $root.google.spanner.v1.TypeCode[message.code] === undefined ? message.code : $root.google.spanner.v1.TypeCode[message.code] : message.code; + if (message.arrayElementType != null && message.hasOwnProperty("arrayElementType")) + object.arrayElementType = $root.google.spanner.v1.Type.toObject(message.arrayElementType, options); + if (message.structType != null && message.hasOwnProperty("structType")) + object.structType = $root.google.spanner.v1.StructType.toObject(message.structType, options); + if (message.typeAnnotation != null && message.hasOwnProperty("typeAnnotation")) + object.typeAnnotation = options.enums === String ? $root.google.spanner.v1.TypeAnnotationCode[message.typeAnnotation] === undefined ? message.typeAnnotation : $root.google.spanner.v1.TypeAnnotationCode[message.typeAnnotation] : message.typeAnnotation; + if (message.protoTypeFqn != null && message.hasOwnProperty("protoTypeFqn")) + object.protoTypeFqn = message.protoTypeFqn; return object; }; /** - * Converts this Tablet to JSON. + * Converts this Type to JSON. * @function toJSON - * @memberof google.spanner.v1.Tablet + * @memberof google.spanner.v1.Type * @instance * @returns {Object.} JSON object */ - Tablet.prototype.toJSON = function toJSON() { + Type.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for Tablet + * Gets the default type url for Type * @function getTypeUrl - * @memberof google.spanner.v1.Tablet + * @memberof google.spanner.v1.Type * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - Tablet.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + Type.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.spanner.v1.Tablet"; + return typeUrlPrefix + "/google.spanner.v1.Type"; }; - /** - * Role enum. - * @name google.spanner.v1.Tablet.Role - * @enum {number} - * @property {number} ROLE_UNSPECIFIED=0 ROLE_UNSPECIFIED value - * @property {number} READ_WRITE=1 READ_WRITE value - * @property {number} READ_ONLY=2 READ_ONLY value - */ - Tablet.Role = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "ROLE_UNSPECIFIED"] = 0; - values[valuesById[1] = "READ_WRITE"] = 1; - values[valuesById[2] = "READ_ONLY"] = 2; - return values; - })(); - - return Tablet; + return Type; })(); - v1.Group = (function() { + v1.StructType = (function() { /** - * Properties of a Group. + * Properties of a StructType. * @memberof google.spanner.v1 - * @interface IGroup - * @property {number|Long|null} [groupUid] Group groupUid - * @property {Array.|null} [tablets] Group tablets - * @property {number|null} [leaderIndex] Group leaderIndex - * @property {Uint8Array|null} [generation] Group generation + * @interface IStructType + * @property {Array.|null} [fields] StructType fields */ /** - * Constructs a new Group. + * Constructs a new StructType. * @memberof google.spanner.v1 - * @classdesc Represents a Group. - * @implements IGroup + * @classdesc Represents a StructType. + * @implements IStructType * @constructor - * @param {google.spanner.v1.IGroup=} [properties] Properties to set + * @param {google.spanner.v1.IStructType=} [properties] Properties to set */ - function Group(properties) { - this.tablets = []; + function StructType(properties) { + this.fields = []; if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -90483,122 +90881,80 @@ } /** - * Group groupUid. - * @member {number|Long} groupUid - * @memberof google.spanner.v1.Group - * @instance - */ - Group.prototype.groupUid = $util.Long ? $util.Long.fromBits(0,0,true) : 0; - - /** - * Group tablets. - * @member {Array.} tablets - * @memberof google.spanner.v1.Group - * @instance - */ - Group.prototype.tablets = $util.emptyArray; - - /** - * Group leaderIndex. - * @member {number} leaderIndex - * @memberof google.spanner.v1.Group - * @instance - */ - Group.prototype.leaderIndex = 0; - - /** - * Group generation. - * @member {Uint8Array} generation - * @memberof google.spanner.v1.Group + * StructType fields. + * @member {Array.} fields + * @memberof google.spanner.v1.StructType * @instance */ - Group.prototype.generation = $util.newBuffer([]); + StructType.prototype.fields = $util.emptyArray; /** - * Creates a new Group instance using the specified properties. + * Creates a new StructType instance using the specified properties. * @function create - * @memberof google.spanner.v1.Group + * @memberof google.spanner.v1.StructType * @static - * @param {google.spanner.v1.IGroup=} [properties] Properties to set - * @returns {google.spanner.v1.Group} Group instance + * @param {google.spanner.v1.IStructType=} [properties] Properties to set + * @returns {google.spanner.v1.StructType} StructType instance */ - Group.create = function create(properties) { - return new Group(properties); + StructType.create = function create(properties) { + return new StructType(properties); }; /** - * Encodes the specified Group message. Does not implicitly {@link google.spanner.v1.Group.verify|verify} messages. + * Encodes the specified StructType message. Does not implicitly {@link google.spanner.v1.StructType.verify|verify} messages. * @function encode - * @memberof google.spanner.v1.Group + * @memberof google.spanner.v1.StructType * @static - * @param {google.spanner.v1.IGroup} message Group message or plain object to encode + * @param {google.spanner.v1.IStructType} message StructType message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Group.encode = function encode(message, writer) { + StructType.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.groupUid != null && Object.hasOwnProperty.call(message, "groupUid")) - writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.groupUid); - if (message.tablets != null && message.tablets.length) - for (var i = 0; i < message.tablets.length; ++i) - $root.google.spanner.v1.Tablet.encode(message.tablets[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.leaderIndex != null && Object.hasOwnProperty.call(message, "leaderIndex")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.leaderIndex); - if (message.generation != null && Object.hasOwnProperty.call(message, "generation")) - writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.generation); + if (message.fields != null && message.fields.length) + for (var i = 0; i < message.fields.length; ++i) + $root.google.spanner.v1.StructType.Field.encode(message.fields[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); return writer; }; /** - * Encodes the specified Group message, length delimited. Does not implicitly {@link google.spanner.v1.Group.verify|verify} messages. + * Encodes the specified StructType message, length delimited. Does not implicitly {@link google.spanner.v1.StructType.verify|verify} messages. * @function encodeDelimited - * @memberof google.spanner.v1.Group + * @memberof google.spanner.v1.StructType * @static - * @param {google.spanner.v1.IGroup} message Group message or plain object to encode + * @param {google.spanner.v1.IStructType} message StructType message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Group.encodeDelimited = function encodeDelimited(message, writer) { + StructType.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Group message from the specified reader or buffer. + * Decodes a StructType message from the specified reader or buffer. * @function decode - * @memberof google.spanner.v1.Group + * @memberof google.spanner.v1.StructType * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.Group} Group + * @returns {google.spanner.v1.StructType} StructType * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Group.decode = function decode(reader, length, error) { + StructType.decode = function decode(reader, length, error) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.Group(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.StructType(); while (reader.pos < end) { var tag = reader.uint32(); if (tag === error) break; switch (tag >>> 3) { case 1: { - message.groupUid = reader.uint64(); - break; - } - case 2: { - if (!(message.tablets && message.tablets.length)) - message.tablets = []; - message.tablets.push($root.google.spanner.v1.Tablet.decode(reader, reader.uint32())); - break; - } - case 3: { - message.leaderIndex = reader.int32(); - break; - } - case 4: { - message.generation = reader.bytes(); + if (!(message.fields && message.fields.length)) + message.fields = []; + message.fields.push($root.google.spanner.v1.StructType.Field.decode(reader, reader.uint32())); break; } default: @@ -90610,192 +90966,439 @@ }; /** - * Decodes a Group message from the specified reader or buffer, length delimited. + * Decodes a StructType message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.spanner.v1.Group + * @memberof google.spanner.v1.StructType * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.Group} Group + * @returns {google.spanner.v1.StructType} StructType * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Group.decodeDelimited = function decodeDelimited(reader) { + StructType.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Group message. + * Verifies a StructType message. * @function verify - * @memberof google.spanner.v1.Group + * @memberof google.spanner.v1.StructType * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Group.verify = function verify(message) { + StructType.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.groupUid != null && message.hasOwnProperty("groupUid")) - if (!$util.isInteger(message.groupUid) && !(message.groupUid && $util.isInteger(message.groupUid.low) && $util.isInteger(message.groupUid.high))) - return "groupUid: integer|Long expected"; - if (message.tablets != null && message.hasOwnProperty("tablets")) { - if (!Array.isArray(message.tablets)) - return "tablets: array expected"; - for (var i = 0; i < message.tablets.length; ++i) { - var error = $root.google.spanner.v1.Tablet.verify(message.tablets[i]); + if (message.fields != null && message.hasOwnProperty("fields")) { + if (!Array.isArray(message.fields)) + return "fields: array expected"; + for (var i = 0; i < message.fields.length; ++i) { + var error = $root.google.spanner.v1.StructType.Field.verify(message.fields[i]); + if (error) + return "fields." + error; + } + } + return null; + }; + + /** + * Creates a StructType message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.spanner.v1.StructType + * @static + * @param {Object.} object Plain object + * @returns {google.spanner.v1.StructType} StructType + */ + StructType.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.StructType) + return object; + var message = new $root.google.spanner.v1.StructType(); + if (object.fields) { + if (!Array.isArray(object.fields)) + throw TypeError(".google.spanner.v1.StructType.fields: array expected"); + message.fields = []; + for (var i = 0; i < object.fields.length; ++i) { + if (typeof object.fields[i] !== "object") + throw TypeError(".google.spanner.v1.StructType.fields: object expected"); + message.fields[i] = $root.google.spanner.v1.StructType.Field.fromObject(object.fields[i]); + } + } + return message; + }; + + /** + * Creates a plain object from a StructType message. Also converts values to other types if specified. + * @function toObject + * @memberof google.spanner.v1.StructType + * @static + * @param {google.spanner.v1.StructType} message StructType + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + StructType.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.fields = []; + if (message.fields && message.fields.length) { + object.fields = []; + for (var j = 0; j < message.fields.length; ++j) + object.fields[j] = $root.google.spanner.v1.StructType.Field.toObject(message.fields[j], options); + } + return object; + }; + + /** + * Converts this StructType to JSON. + * @function toJSON + * @memberof google.spanner.v1.StructType + * @instance + * @returns {Object.} JSON object + */ + StructType.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for StructType + * @function getTypeUrl + * @memberof google.spanner.v1.StructType + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + StructType.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.spanner.v1.StructType"; + }; + + StructType.Field = (function() { + + /** + * Properties of a Field. + * @memberof google.spanner.v1.StructType + * @interface IField + * @property {string|null} [name] Field name + * @property {google.spanner.v1.IType|null} [type] Field type + */ + + /** + * Constructs a new Field. + * @memberof google.spanner.v1.StructType + * @classdesc Represents a Field. + * @implements IField + * @constructor + * @param {google.spanner.v1.StructType.IField=} [properties] Properties to set + */ + function Field(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Field name. + * @member {string} name + * @memberof google.spanner.v1.StructType.Field + * @instance + */ + Field.prototype.name = ""; + + /** + * Field type. + * @member {google.spanner.v1.IType|null|undefined} type + * @memberof google.spanner.v1.StructType.Field + * @instance + */ + Field.prototype.type = null; + + /** + * Creates a new Field instance using the specified properties. + * @function create + * @memberof google.spanner.v1.StructType.Field + * @static + * @param {google.spanner.v1.StructType.IField=} [properties] Properties to set + * @returns {google.spanner.v1.StructType.Field} Field instance + */ + Field.create = function create(properties) { + return new Field(properties); + }; + + /** + * Encodes the specified Field message. Does not implicitly {@link google.spanner.v1.StructType.Field.verify|verify} messages. + * @function encode + * @memberof google.spanner.v1.StructType.Field + * @static + * @param {google.spanner.v1.StructType.IField} message Field message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Field.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.name != null && Object.hasOwnProperty.call(message, "name")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); + if (message.type != null && Object.hasOwnProperty.call(message, "type")) + $root.google.spanner.v1.Type.encode(message.type, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified Field message, length delimited. Does not implicitly {@link google.spanner.v1.StructType.Field.verify|verify} messages. + * @function encodeDelimited + * @memberof google.spanner.v1.StructType.Field + * @static + * @param {google.spanner.v1.StructType.IField} message Field message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Field.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Field message from the specified reader or buffer. + * @function decode + * @memberof google.spanner.v1.StructType.Field + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.spanner.v1.StructType.Field} Field + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Field.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.StructType.Field(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.name = reader.string(); + break; + } + case 2: { + message.type = $root.google.spanner.v1.Type.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Field message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.spanner.v1.StructType.Field + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.spanner.v1.StructType.Field} Field + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Field.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Field message. + * @function verify + * @memberof google.spanner.v1.StructType.Field + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Field.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.name != null && message.hasOwnProperty("name")) + if (!$util.isString(message.name)) + return "name: string expected"; + if (message.type != null && message.hasOwnProperty("type")) { + var error = $root.google.spanner.v1.Type.verify(message.type); if (error) - return "tablets." + error; + return "type." + error; } - } - if (message.leaderIndex != null && message.hasOwnProperty("leaderIndex")) - if (!$util.isInteger(message.leaderIndex)) - return "leaderIndex: integer expected"; - if (message.generation != null && message.hasOwnProperty("generation")) - if (!(message.generation && typeof message.generation.length === "number" || $util.isString(message.generation))) - return "generation: buffer expected"; - return null; - }; + return null; + }; - /** - * Creates a Group message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.spanner.v1.Group - * @static - * @param {Object.} object Plain object - * @returns {google.spanner.v1.Group} Group - */ - Group.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.Group) - return object; - var message = new $root.google.spanner.v1.Group(); - if (object.groupUid != null) - if ($util.Long) - (message.groupUid = $util.Long.fromValue(object.groupUid)).unsigned = true; - else if (typeof object.groupUid === "string") - message.groupUid = parseInt(object.groupUid, 10); - else if (typeof object.groupUid === "number") - message.groupUid = object.groupUid; - else if (typeof object.groupUid === "object") - message.groupUid = new $util.LongBits(object.groupUid.low >>> 0, object.groupUid.high >>> 0).toNumber(true); - if (object.tablets) { - if (!Array.isArray(object.tablets)) - throw TypeError(".google.spanner.v1.Group.tablets: array expected"); - message.tablets = []; - for (var i = 0; i < object.tablets.length; ++i) { - if (typeof object.tablets[i] !== "object") - throw TypeError(".google.spanner.v1.Group.tablets: object expected"); - message.tablets[i] = $root.google.spanner.v1.Tablet.fromObject(object.tablets[i]); + /** + * Creates a Field message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.spanner.v1.StructType.Field + * @static + * @param {Object.} object Plain object + * @returns {google.spanner.v1.StructType.Field} Field + */ + Field.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.StructType.Field) + return object; + var message = new $root.google.spanner.v1.StructType.Field(); + if (object.name != null) + message.name = String(object.name); + if (object.type != null) { + if (typeof object.type !== "object") + throw TypeError(".google.spanner.v1.StructType.Field.type: object expected"); + message.type = $root.google.spanner.v1.Type.fromObject(object.type); } - } - if (object.leaderIndex != null) - message.leaderIndex = object.leaderIndex | 0; - if (object.generation != null) - if (typeof object.generation === "string") - $util.base64.decode(object.generation, message.generation = $util.newBuffer($util.base64.length(object.generation)), 0); - else if (object.generation.length >= 0) - message.generation = object.generation; - return message; - }; + return message; + }; - /** - * Creates a plain object from a Group message. Also converts values to other types if specified. - * @function toObject - * @memberof google.spanner.v1.Group - * @static - * @param {google.spanner.v1.Group} message Group - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - Group.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.tablets = []; - if (options.defaults) { - if ($util.Long) { - var long = new $util.Long(0, 0, true); - object.groupUid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.groupUid = options.longs === String ? "0" : 0; - object.leaderIndex = 0; - if (options.bytes === String) - object.generation = ""; - else { - object.generation = []; - if (options.bytes !== Array) - object.generation = $util.newBuffer(object.generation); + /** + * Creates a plain object from a Field message. Also converts values to other types if specified. + * @function toObject + * @memberof google.spanner.v1.StructType.Field + * @static + * @param {google.spanner.v1.StructType.Field} message Field + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Field.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.name = ""; + object.type = null; } - } - if (message.groupUid != null && message.hasOwnProperty("groupUid")) - if (typeof message.groupUid === "number") - object.groupUid = options.longs === String ? String(message.groupUid) : message.groupUid; - else - object.groupUid = options.longs === String ? $util.Long.prototype.toString.call(message.groupUid) : options.longs === Number ? new $util.LongBits(message.groupUid.low >>> 0, message.groupUid.high >>> 0).toNumber(true) : message.groupUid; - if (message.tablets && message.tablets.length) { - object.tablets = []; - for (var j = 0; j < message.tablets.length; ++j) - object.tablets[j] = $root.google.spanner.v1.Tablet.toObject(message.tablets[j], options); - } - if (message.leaderIndex != null && message.hasOwnProperty("leaderIndex")) - object.leaderIndex = message.leaderIndex; - if (message.generation != null && message.hasOwnProperty("generation")) - object.generation = options.bytes === String ? $util.base64.encode(message.generation, 0, message.generation.length) : options.bytes === Array ? Array.prototype.slice.call(message.generation) : message.generation; - return object; - }; + if (message.name != null && message.hasOwnProperty("name")) + object.name = message.name; + if (message.type != null && message.hasOwnProperty("type")) + object.type = $root.google.spanner.v1.Type.toObject(message.type, options); + return object; + }; - /** - * Converts this Group to JSON. - * @function toJSON - * @memberof google.spanner.v1.Group - * @instance - * @returns {Object.} JSON object - */ - Group.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Converts this Field to JSON. + * @function toJSON + * @memberof google.spanner.v1.StructType.Field + * @instance + * @returns {Object.} JSON object + */ + Field.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * Gets the default type url for Group - * @function getTypeUrl - * @memberof google.spanner.v1.Group - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - Group.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/google.spanner.v1.Group"; - }; + /** + * Gets the default type url for Field + * @function getTypeUrl + * @memberof google.spanner.v1.StructType.Field + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Field.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.spanner.v1.StructType.Field"; + }; - return Group; + return Field; + })(); + + return StructType; + })(); + + /** + * TypeCode enum. + * @name google.spanner.v1.TypeCode + * @enum {number} + * @property {number} TYPE_CODE_UNSPECIFIED=0 TYPE_CODE_UNSPECIFIED value + * @property {number} BOOL=1 BOOL value + * @property {number} INT64=2 INT64 value + * @property {number} FLOAT64=3 FLOAT64 value + * @property {number} FLOAT32=15 FLOAT32 value + * @property {number} TIMESTAMP=4 TIMESTAMP value + * @property {number} DATE=5 DATE value + * @property {number} STRING=6 STRING value + * @property {number} BYTES=7 BYTES value + * @property {number} ARRAY=8 ARRAY value + * @property {number} STRUCT=9 STRUCT value + * @property {number} NUMERIC=10 NUMERIC value + * @property {number} JSON=11 JSON value + * @property {number} PROTO=13 PROTO value + * @property {number} ENUM=14 ENUM value + * @property {number} INTERVAL=16 INTERVAL value + * @property {number} UUID=17 UUID value + */ + v1.TypeCode = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "TYPE_CODE_UNSPECIFIED"] = 0; + values[valuesById[1] = "BOOL"] = 1; + values[valuesById[2] = "INT64"] = 2; + values[valuesById[3] = "FLOAT64"] = 3; + values[valuesById[15] = "FLOAT32"] = 15; + values[valuesById[4] = "TIMESTAMP"] = 4; + values[valuesById[5] = "DATE"] = 5; + values[valuesById[6] = "STRING"] = 6; + values[valuesById[7] = "BYTES"] = 7; + values[valuesById[8] = "ARRAY"] = 8; + values[valuesById[9] = "STRUCT"] = 9; + values[valuesById[10] = "NUMERIC"] = 10; + values[valuesById[11] = "JSON"] = 11; + values[valuesById[13] = "PROTO"] = 13; + values[valuesById[14] = "ENUM"] = 14; + values[valuesById[16] = "INTERVAL"] = 16; + values[valuesById[17] = "UUID"] = 17; + return values; + })(); + + /** + * TypeAnnotationCode enum. + * @name google.spanner.v1.TypeAnnotationCode + * @enum {number} + * @property {number} TYPE_ANNOTATION_CODE_UNSPECIFIED=0 TYPE_ANNOTATION_CODE_UNSPECIFIED value + * @property {number} PG_NUMERIC=2 PG_NUMERIC value + * @property {number} PG_JSONB=3 PG_JSONB value + * @property {number} PG_OID=4 PG_OID value + */ + v1.TypeAnnotationCode = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "TYPE_ANNOTATION_CODE_UNSPECIFIED"] = 0; + values[valuesById[2] = "PG_NUMERIC"] = 2; + values[valuesById[3] = "PG_JSONB"] = 3; + values[valuesById[4] = "PG_OID"] = 4; + return values; })(); - v1.KeyRecipe = (function() { + v1.TransactionOptions = (function() { /** - * Properties of a KeyRecipe. + * Properties of a TransactionOptions. * @memberof google.spanner.v1 - * @interface IKeyRecipe - * @property {string|null} [tableName] KeyRecipe tableName - * @property {string|null} [indexName] KeyRecipe indexName - * @property {number|Long|null} [operationUid] KeyRecipe operationUid - * @property {Array.|null} [part] KeyRecipe part + * @interface ITransactionOptions + * @property {google.spanner.v1.TransactionOptions.IReadWrite|null} [readWrite] TransactionOptions readWrite + * @property {google.spanner.v1.TransactionOptions.IPartitionedDml|null} [partitionedDml] TransactionOptions partitionedDml + * @property {google.spanner.v1.TransactionOptions.IReadOnly|null} [readOnly] TransactionOptions readOnly + * @property {boolean|null} [excludeTxnFromChangeStreams] TransactionOptions excludeTxnFromChangeStreams + * @property {google.spanner.v1.TransactionOptions.IsolationLevel|null} [isolationLevel] TransactionOptions isolationLevel */ /** - * Constructs a new KeyRecipe. + * Constructs a new TransactionOptions. * @memberof google.spanner.v1 - * @classdesc Represents a KeyRecipe. - * @implements IKeyRecipe + * @classdesc Represents a TransactionOptions. + * @implements ITransactionOptions * @constructor - * @param {google.spanner.v1.IKeyRecipe=} [properties] Properties to set + * @param {google.spanner.v1.ITransactionOptions=} [properties] Properties to set */ - function KeyRecipe(properties) { - this.part = []; + function TransactionOptions(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -90803,136 +91406,147 @@ } /** - * KeyRecipe tableName. - * @member {string|null|undefined} tableName - * @memberof google.spanner.v1.KeyRecipe + * TransactionOptions readWrite. + * @member {google.spanner.v1.TransactionOptions.IReadWrite|null|undefined} readWrite + * @memberof google.spanner.v1.TransactionOptions * @instance */ - KeyRecipe.prototype.tableName = null; + TransactionOptions.prototype.readWrite = null; /** - * KeyRecipe indexName. - * @member {string|null|undefined} indexName - * @memberof google.spanner.v1.KeyRecipe + * TransactionOptions partitionedDml. + * @member {google.spanner.v1.TransactionOptions.IPartitionedDml|null|undefined} partitionedDml + * @memberof google.spanner.v1.TransactionOptions * @instance */ - KeyRecipe.prototype.indexName = null; + TransactionOptions.prototype.partitionedDml = null; /** - * KeyRecipe operationUid. - * @member {number|Long|null|undefined} operationUid - * @memberof google.spanner.v1.KeyRecipe + * TransactionOptions readOnly. + * @member {google.spanner.v1.TransactionOptions.IReadOnly|null|undefined} readOnly + * @memberof google.spanner.v1.TransactionOptions * @instance */ - KeyRecipe.prototype.operationUid = null; + TransactionOptions.prototype.readOnly = null; /** - * KeyRecipe part. - * @member {Array.} part - * @memberof google.spanner.v1.KeyRecipe + * TransactionOptions excludeTxnFromChangeStreams. + * @member {boolean} excludeTxnFromChangeStreams + * @memberof google.spanner.v1.TransactionOptions * @instance */ - KeyRecipe.prototype.part = $util.emptyArray; + TransactionOptions.prototype.excludeTxnFromChangeStreams = false; + + /** + * TransactionOptions isolationLevel. + * @member {google.spanner.v1.TransactionOptions.IsolationLevel} isolationLevel + * @memberof google.spanner.v1.TransactionOptions + * @instance + */ + TransactionOptions.prototype.isolationLevel = 0; // OneOf field names bound to virtual getters and setters var $oneOfFields; /** - * KeyRecipe target. - * @member {"tableName"|"indexName"|"operationUid"|undefined} target - * @memberof google.spanner.v1.KeyRecipe + * TransactionOptions mode. + * @member {"readWrite"|"partitionedDml"|"readOnly"|undefined} mode + * @memberof google.spanner.v1.TransactionOptions * @instance */ - Object.defineProperty(KeyRecipe.prototype, "target", { - get: $util.oneOfGetter($oneOfFields = ["tableName", "indexName", "operationUid"]), + Object.defineProperty(TransactionOptions.prototype, "mode", { + get: $util.oneOfGetter($oneOfFields = ["readWrite", "partitionedDml", "readOnly"]), set: $util.oneOfSetter($oneOfFields) }); /** - * Creates a new KeyRecipe instance using the specified properties. + * Creates a new TransactionOptions instance using the specified properties. * @function create - * @memberof google.spanner.v1.KeyRecipe + * @memberof google.spanner.v1.TransactionOptions * @static - * @param {google.spanner.v1.IKeyRecipe=} [properties] Properties to set - * @returns {google.spanner.v1.KeyRecipe} KeyRecipe instance + * @param {google.spanner.v1.ITransactionOptions=} [properties] Properties to set + * @returns {google.spanner.v1.TransactionOptions} TransactionOptions instance */ - KeyRecipe.create = function create(properties) { - return new KeyRecipe(properties); + TransactionOptions.create = function create(properties) { + return new TransactionOptions(properties); }; /** - * Encodes the specified KeyRecipe message. Does not implicitly {@link google.spanner.v1.KeyRecipe.verify|verify} messages. + * Encodes the specified TransactionOptions message. Does not implicitly {@link google.spanner.v1.TransactionOptions.verify|verify} messages. * @function encode - * @memberof google.spanner.v1.KeyRecipe + * @memberof google.spanner.v1.TransactionOptions * @static - * @param {google.spanner.v1.IKeyRecipe} message KeyRecipe message or plain object to encode + * @param {google.spanner.v1.ITransactionOptions} message TransactionOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - KeyRecipe.encode = function encode(message, writer) { + TransactionOptions.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.tableName != null && Object.hasOwnProperty.call(message, "tableName")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.tableName); - if (message.indexName != null && Object.hasOwnProperty.call(message, "indexName")) - writer.uint32(/* id 2, wireType 2 =*/18).string(message.indexName); - if (message.operationUid != null && Object.hasOwnProperty.call(message, "operationUid")) - writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.operationUid); - if (message.part != null && message.part.length) - for (var i = 0; i < message.part.length; ++i) - $root.google.spanner.v1.KeyRecipe.Part.encode(message.part[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.readWrite != null && Object.hasOwnProperty.call(message, "readWrite")) + $root.google.spanner.v1.TransactionOptions.ReadWrite.encode(message.readWrite, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.readOnly != null && Object.hasOwnProperty.call(message, "readOnly")) + $root.google.spanner.v1.TransactionOptions.ReadOnly.encode(message.readOnly, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.partitionedDml != null && Object.hasOwnProperty.call(message, "partitionedDml")) + $root.google.spanner.v1.TransactionOptions.PartitionedDml.encode(message.partitionedDml, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.excludeTxnFromChangeStreams != null && Object.hasOwnProperty.call(message, "excludeTxnFromChangeStreams")) + writer.uint32(/* id 5, wireType 0 =*/40).bool(message.excludeTxnFromChangeStreams); + if (message.isolationLevel != null && Object.hasOwnProperty.call(message, "isolationLevel")) + writer.uint32(/* id 6, wireType 0 =*/48).int32(message.isolationLevel); return writer; }; /** - * Encodes the specified KeyRecipe message, length delimited. Does not implicitly {@link google.spanner.v1.KeyRecipe.verify|verify} messages. + * Encodes the specified TransactionOptions message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionOptions.verify|verify} messages. * @function encodeDelimited - * @memberof google.spanner.v1.KeyRecipe + * @memberof google.spanner.v1.TransactionOptions * @static - * @param {google.spanner.v1.IKeyRecipe} message KeyRecipe message or plain object to encode + * @param {google.spanner.v1.ITransactionOptions} message TransactionOptions message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - KeyRecipe.encodeDelimited = function encodeDelimited(message, writer) { + TransactionOptions.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a KeyRecipe message from the specified reader or buffer. + * Decodes a TransactionOptions message from the specified reader or buffer. * @function decode - * @memberof google.spanner.v1.KeyRecipe + * @memberof google.spanner.v1.TransactionOptions * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.KeyRecipe} KeyRecipe + * @returns {google.spanner.v1.TransactionOptions} TransactionOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - KeyRecipe.decode = function decode(reader, length, error) { + TransactionOptions.decode = function decode(reader, length, error) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.KeyRecipe(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.TransactionOptions(); while (reader.pos < end) { var tag = reader.uint32(); if (tag === error) break; switch (tag >>> 3) { case 1: { - message.tableName = reader.string(); + message.readWrite = $root.google.spanner.v1.TransactionOptions.ReadWrite.decode(reader, reader.uint32()); + break; + } + case 3: { + message.partitionedDml = $root.google.spanner.v1.TransactionOptions.PartitionedDml.decode(reader, reader.uint32()); break; } case 2: { - message.indexName = reader.string(); + message.readOnly = $root.google.spanner.v1.TransactionOptions.ReadOnly.decode(reader, reader.uint32()); break; } - case 3: { - message.operationUid = reader.uint64(); + case 5: { + message.excludeTxnFromChangeStreams = reader.bool(); break; } - case 4: { - if (!(message.part && message.part.length)) - message.part = []; - message.part.push($root.google.spanner.v1.KeyRecipe.Part.decode(reader, reader.uint32())); + case 6: { + message.isolationLevel = reader.int32(); break; } default: @@ -90944,195 +91558,212 @@ }; /** - * Decodes a KeyRecipe message from the specified reader or buffer, length delimited. + * Decodes a TransactionOptions message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.spanner.v1.KeyRecipe + * @memberof google.spanner.v1.TransactionOptions * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.KeyRecipe} KeyRecipe + * @returns {google.spanner.v1.TransactionOptions} TransactionOptions * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - KeyRecipe.decodeDelimited = function decodeDelimited(reader) { + TransactionOptions.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a KeyRecipe message. + * Verifies a TransactionOptions message. * @function verify - * @memberof google.spanner.v1.KeyRecipe + * @memberof google.spanner.v1.TransactionOptions * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - KeyRecipe.verify = function verify(message) { + TransactionOptions.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; var properties = {}; - if (message.tableName != null && message.hasOwnProperty("tableName")) { - properties.target = 1; - if (!$util.isString(message.tableName)) - return "tableName: string expected"; - } - if (message.indexName != null && message.hasOwnProperty("indexName")) { - if (properties.target === 1) - return "target: multiple values"; - properties.target = 1; - if (!$util.isString(message.indexName)) - return "indexName: string expected"; + if (message.readWrite != null && message.hasOwnProperty("readWrite")) { + properties.mode = 1; + { + var error = $root.google.spanner.v1.TransactionOptions.ReadWrite.verify(message.readWrite); + if (error) + return "readWrite." + error; + } } - if (message.operationUid != null && message.hasOwnProperty("operationUid")) { - if (properties.target === 1) - return "target: multiple values"; - properties.target = 1; - if (!$util.isInteger(message.operationUid) && !(message.operationUid && $util.isInteger(message.operationUid.low) && $util.isInteger(message.operationUid.high))) - return "operationUid: integer|Long expected"; + if (message.partitionedDml != null && message.hasOwnProperty("partitionedDml")) { + if (properties.mode === 1) + return "mode: multiple values"; + properties.mode = 1; + { + var error = $root.google.spanner.v1.TransactionOptions.PartitionedDml.verify(message.partitionedDml); + if (error) + return "partitionedDml." + error; + } } - if (message.part != null && message.hasOwnProperty("part")) { - if (!Array.isArray(message.part)) - return "part: array expected"; - for (var i = 0; i < message.part.length; ++i) { - var error = $root.google.spanner.v1.KeyRecipe.Part.verify(message.part[i]); + if (message.readOnly != null && message.hasOwnProperty("readOnly")) { + if (properties.mode === 1) + return "mode: multiple values"; + properties.mode = 1; + { + var error = $root.google.spanner.v1.TransactionOptions.ReadOnly.verify(message.readOnly); if (error) - return "part." + error; + return "readOnly." + error; } } + if (message.excludeTxnFromChangeStreams != null && message.hasOwnProperty("excludeTxnFromChangeStreams")) + if (typeof message.excludeTxnFromChangeStreams !== "boolean") + return "excludeTxnFromChangeStreams: boolean expected"; + if (message.isolationLevel != null && message.hasOwnProperty("isolationLevel")) + switch (message.isolationLevel) { + default: + return "isolationLevel: enum value expected"; + case 0: + case 1: + case 2: + break; + } return null; }; /** - * Creates a KeyRecipe message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.spanner.v1.KeyRecipe - * @static - * @param {Object.} object Plain object - * @returns {google.spanner.v1.KeyRecipe} KeyRecipe - */ - KeyRecipe.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.KeyRecipe) - return object; - var message = new $root.google.spanner.v1.KeyRecipe(); - if (object.tableName != null) - message.tableName = String(object.tableName); - if (object.indexName != null) - message.indexName = String(object.indexName); - if (object.operationUid != null) - if ($util.Long) - (message.operationUid = $util.Long.fromValue(object.operationUid)).unsigned = true; - else if (typeof object.operationUid === "string") - message.operationUid = parseInt(object.operationUid, 10); - else if (typeof object.operationUid === "number") - message.operationUid = object.operationUid; - else if (typeof object.operationUid === "object") - message.operationUid = new $util.LongBits(object.operationUid.low >>> 0, object.operationUid.high >>> 0).toNumber(true); - if (object.part) { - if (!Array.isArray(object.part)) - throw TypeError(".google.spanner.v1.KeyRecipe.part: array expected"); - message.part = []; - for (var i = 0; i < object.part.length; ++i) { - if (typeof object.part[i] !== "object") - throw TypeError(".google.spanner.v1.KeyRecipe.part: object expected"); - message.part[i] = $root.google.spanner.v1.KeyRecipe.Part.fromObject(object.part[i]); + * Creates a TransactionOptions message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.spanner.v1.TransactionOptions + * @static + * @param {Object.} object Plain object + * @returns {google.spanner.v1.TransactionOptions} TransactionOptions + */ + TransactionOptions.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.TransactionOptions) + return object; + var message = new $root.google.spanner.v1.TransactionOptions(); + if (object.readWrite != null) { + if (typeof object.readWrite !== "object") + throw TypeError(".google.spanner.v1.TransactionOptions.readWrite: object expected"); + message.readWrite = $root.google.spanner.v1.TransactionOptions.ReadWrite.fromObject(object.readWrite); + } + if (object.partitionedDml != null) { + if (typeof object.partitionedDml !== "object") + throw TypeError(".google.spanner.v1.TransactionOptions.partitionedDml: object expected"); + message.partitionedDml = $root.google.spanner.v1.TransactionOptions.PartitionedDml.fromObject(object.partitionedDml); + } + if (object.readOnly != null) { + if (typeof object.readOnly !== "object") + throw TypeError(".google.spanner.v1.TransactionOptions.readOnly: object expected"); + message.readOnly = $root.google.spanner.v1.TransactionOptions.ReadOnly.fromObject(object.readOnly); + } + if (object.excludeTxnFromChangeStreams != null) + message.excludeTxnFromChangeStreams = Boolean(object.excludeTxnFromChangeStreams); + switch (object.isolationLevel) { + default: + if (typeof object.isolationLevel === "number") { + message.isolationLevel = object.isolationLevel; + break; } + break; + case "ISOLATION_LEVEL_UNSPECIFIED": + case 0: + message.isolationLevel = 0; + break; + case "SERIALIZABLE": + case 1: + message.isolationLevel = 1; + break; + case "REPEATABLE_READ": + case 2: + message.isolationLevel = 2; + break; } return message; }; /** - * Creates a plain object from a KeyRecipe message. Also converts values to other types if specified. + * Creates a plain object from a TransactionOptions message. Also converts values to other types if specified. * @function toObject - * @memberof google.spanner.v1.KeyRecipe + * @memberof google.spanner.v1.TransactionOptions * @static - * @param {google.spanner.v1.KeyRecipe} message KeyRecipe + * @param {google.spanner.v1.TransactionOptions} message TransactionOptions * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - KeyRecipe.toObject = function toObject(message, options) { + TransactionOptions.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.part = []; - if (message.tableName != null && message.hasOwnProperty("tableName")) { - object.tableName = message.tableName; - if (options.oneofs) - object.target = "tableName"; + if (options.defaults) { + object.excludeTxnFromChangeStreams = false; + object.isolationLevel = options.enums === String ? "ISOLATION_LEVEL_UNSPECIFIED" : 0; } - if (message.indexName != null && message.hasOwnProperty("indexName")) { - object.indexName = message.indexName; + if (message.readWrite != null && message.hasOwnProperty("readWrite")) { + object.readWrite = $root.google.spanner.v1.TransactionOptions.ReadWrite.toObject(message.readWrite, options); if (options.oneofs) - object.target = "indexName"; + object.mode = "readWrite"; } - if (message.operationUid != null && message.hasOwnProperty("operationUid")) { - if (typeof message.operationUid === "number") - object.operationUid = options.longs === String ? String(message.operationUid) : message.operationUid; - else - object.operationUid = options.longs === String ? $util.Long.prototype.toString.call(message.operationUid) : options.longs === Number ? new $util.LongBits(message.operationUid.low >>> 0, message.operationUid.high >>> 0).toNumber(true) : message.operationUid; + if (message.readOnly != null && message.hasOwnProperty("readOnly")) { + object.readOnly = $root.google.spanner.v1.TransactionOptions.ReadOnly.toObject(message.readOnly, options); if (options.oneofs) - object.target = "operationUid"; + object.mode = "readOnly"; } - if (message.part && message.part.length) { - object.part = []; - for (var j = 0; j < message.part.length; ++j) - object.part[j] = $root.google.spanner.v1.KeyRecipe.Part.toObject(message.part[j], options); + if (message.partitionedDml != null && message.hasOwnProperty("partitionedDml")) { + object.partitionedDml = $root.google.spanner.v1.TransactionOptions.PartitionedDml.toObject(message.partitionedDml, options); + if (options.oneofs) + object.mode = "partitionedDml"; } + if (message.excludeTxnFromChangeStreams != null && message.hasOwnProperty("excludeTxnFromChangeStreams")) + object.excludeTxnFromChangeStreams = message.excludeTxnFromChangeStreams; + if (message.isolationLevel != null && message.hasOwnProperty("isolationLevel")) + object.isolationLevel = options.enums === String ? $root.google.spanner.v1.TransactionOptions.IsolationLevel[message.isolationLevel] === undefined ? message.isolationLevel : $root.google.spanner.v1.TransactionOptions.IsolationLevel[message.isolationLevel] : message.isolationLevel; return object; }; /** - * Converts this KeyRecipe to JSON. + * Converts this TransactionOptions to JSON. * @function toJSON - * @memberof google.spanner.v1.KeyRecipe + * @memberof google.spanner.v1.TransactionOptions * @instance * @returns {Object.} JSON object */ - KeyRecipe.prototype.toJSON = function toJSON() { + TransactionOptions.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for KeyRecipe + * Gets the default type url for TransactionOptions * @function getTypeUrl - * @memberof google.spanner.v1.KeyRecipe + * @memberof google.spanner.v1.TransactionOptions * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - KeyRecipe.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + TransactionOptions.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.spanner.v1.KeyRecipe"; + return typeUrlPrefix + "/google.spanner.v1.TransactionOptions"; }; - KeyRecipe.Part = (function() { + TransactionOptions.ReadWrite = (function() { /** - * Properties of a Part. - * @memberof google.spanner.v1.KeyRecipe - * @interface IPart - * @property {number|null} [tag] Part tag - * @property {google.spanner.v1.KeyRecipe.Part.Order|null} [order] Part order - * @property {google.spanner.v1.KeyRecipe.Part.NullOrder|null} [nullOrder] Part nullOrder - * @property {google.spanner.v1.IType|null} [type] Part type - * @property {string|null} [identifier] Part identifier - * @property {google.protobuf.IValue|null} [value] Part value - * @property {boolean|null} [random] Part random - * @property {Array.|null} [structIdentifiers] Part structIdentifiers + * Properties of a ReadWrite. + * @memberof google.spanner.v1.TransactionOptions + * @interface IReadWrite + * @property {google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode|null} [readLockMode] ReadWrite readLockMode + * @property {Uint8Array|null} [multiplexedSessionPreviousTransactionId] ReadWrite multiplexedSessionPreviousTransactionId */ /** - * Constructs a new Part. - * @memberof google.spanner.v1.KeyRecipe - * @classdesc Represents a Part. - * @implements IPart + * Constructs a new ReadWrite. + * @memberof google.spanner.v1.TransactionOptions + * @classdesc Represents a ReadWrite. + * @implements IReadWrite * @constructor - * @param {google.spanner.v1.KeyRecipe.IPart=} [properties] Properties to set + * @param {google.spanner.v1.TransactionOptions.IReadWrite=} [properties] Properties to set */ - function Part(properties) { - this.structIdentifiers = []; + function ReadWrite(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -91140,200 +91771,91 @@ } /** - * Part tag. - * @member {number} tag - * @memberof google.spanner.v1.KeyRecipe.Part - * @instance - */ - Part.prototype.tag = 0; - - /** - * Part order. - * @member {google.spanner.v1.KeyRecipe.Part.Order} order - * @memberof google.spanner.v1.KeyRecipe.Part - * @instance - */ - Part.prototype.order = 0; - - /** - * Part nullOrder. - * @member {google.spanner.v1.KeyRecipe.Part.NullOrder} nullOrder - * @memberof google.spanner.v1.KeyRecipe.Part - * @instance - */ - Part.prototype.nullOrder = 0; - - /** - * Part type. - * @member {google.spanner.v1.IType|null|undefined} type - * @memberof google.spanner.v1.KeyRecipe.Part - * @instance - */ - Part.prototype.type = null; - - /** - * Part identifier. - * @member {string|null|undefined} identifier - * @memberof google.spanner.v1.KeyRecipe.Part - * @instance - */ - Part.prototype.identifier = null; - - /** - * Part value. - * @member {google.protobuf.IValue|null|undefined} value - * @memberof google.spanner.v1.KeyRecipe.Part - * @instance - */ - Part.prototype.value = null; - - /** - * Part random. - * @member {boolean|null|undefined} random - * @memberof google.spanner.v1.KeyRecipe.Part - * @instance - */ - Part.prototype.random = null; - - /** - * Part structIdentifiers. - * @member {Array.} structIdentifiers - * @memberof google.spanner.v1.KeyRecipe.Part + * ReadWrite readLockMode. + * @member {google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode} readLockMode + * @memberof google.spanner.v1.TransactionOptions.ReadWrite * @instance */ - Part.prototype.structIdentifiers = $util.emptyArray; - - // OneOf field names bound to virtual getters and setters - var $oneOfFields; + ReadWrite.prototype.readLockMode = 0; /** - * Part valueType. - * @member {"identifier"|"value"|"random"|undefined} valueType - * @memberof google.spanner.v1.KeyRecipe.Part + * ReadWrite multiplexedSessionPreviousTransactionId. + * @member {Uint8Array} multiplexedSessionPreviousTransactionId + * @memberof google.spanner.v1.TransactionOptions.ReadWrite * @instance */ - Object.defineProperty(Part.prototype, "valueType", { - get: $util.oneOfGetter($oneOfFields = ["identifier", "value", "random"]), - set: $util.oneOfSetter($oneOfFields) - }); + ReadWrite.prototype.multiplexedSessionPreviousTransactionId = $util.newBuffer([]); /** - * Creates a new Part instance using the specified properties. + * Creates a new ReadWrite instance using the specified properties. * @function create - * @memberof google.spanner.v1.KeyRecipe.Part + * @memberof google.spanner.v1.TransactionOptions.ReadWrite * @static - * @param {google.spanner.v1.KeyRecipe.IPart=} [properties] Properties to set - * @returns {google.spanner.v1.KeyRecipe.Part} Part instance + * @param {google.spanner.v1.TransactionOptions.IReadWrite=} [properties] Properties to set + * @returns {google.spanner.v1.TransactionOptions.ReadWrite} ReadWrite instance */ - Part.create = function create(properties) { - return new Part(properties); + ReadWrite.create = function create(properties) { + return new ReadWrite(properties); }; /** - * Encodes the specified Part message. Does not implicitly {@link google.spanner.v1.KeyRecipe.Part.verify|verify} messages. + * Encodes the specified ReadWrite message. Does not implicitly {@link google.spanner.v1.TransactionOptions.ReadWrite.verify|verify} messages. * @function encode - * @memberof google.spanner.v1.KeyRecipe.Part + * @memberof google.spanner.v1.TransactionOptions.ReadWrite * @static - * @param {google.spanner.v1.KeyRecipe.IPart} message Part message or plain object to encode + * @param {google.spanner.v1.TransactionOptions.IReadWrite} message ReadWrite message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Part.encode = function encode(message, writer) { + ReadWrite.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.tag != null && Object.hasOwnProperty.call(message, "tag")) - writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.tag); - if (message.order != null && Object.hasOwnProperty.call(message, "order")) - writer.uint32(/* id 2, wireType 0 =*/16).int32(message.order); - if (message.nullOrder != null && Object.hasOwnProperty.call(message, "nullOrder")) - writer.uint32(/* id 3, wireType 0 =*/24).int32(message.nullOrder); - if (message.type != null && Object.hasOwnProperty.call(message, "type")) - $root.google.spanner.v1.Type.encode(message.type, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); - if (message.identifier != null && Object.hasOwnProperty.call(message, "identifier")) - writer.uint32(/* id 5, wireType 2 =*/42).string(message.identifier); - if (message.value != null && Object.hasOwnProperty.call(message, "value")) - $root.google.protobuf.Value.encode(message.value, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim(); - if (message.structIdentifiers != null && message.structIdentifiers.length) { - writer.uint32(/* id 7, wireType 2 =*/58).fork(); - for (var i = 0; i < message.structIdentifiers.length; ++i) - writer.int32(message.structIdentifiers[i]); - writer.ldelim(); - } - if (message.random != null && Object.hasOwnProperty.call(message, "random")) - writer.uint32(/* id 8, wireType 0 =*/64).bool(message.random); + if (message.readLockMode != null && Object.hasOwnProperty.call(message, "readLockMode")) + writer.uint32(/* id 1, wireType 0 =*/8).int32(message.readLockMode); + if (message.multiplexedSessionPreviousTransactionId != null && Object.hasOwnProperty.call(message, "multiplexedSessionPreviousTransactionId")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.multiplexedSessionPreviousTransactionId); return writer; }; /** - * Encodes the specified Part message, length delimited. Does not implicitly {@link google.spanner.v1.KeyRecipe.Part.verify|verify} messages. + * Encodes the specified ReadWrite message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionOptions.ReadWrite.verify|verify} messages. * @function encodeDelimited - * @memberof google.spanner.v1.KeyRecipe.Part + * @memberof google.spanner.v1.TransactionOptions.ReadWrite * @static - * @param {google.spanner.v1.KeyRecipe.IPart} message Part message or plain object to encode + * @param {google.spanner.v1.TransactionOptions.IReadWrite} message ReadWrite message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - Part.encodeDelimited = function encodeDelimited(message, writer) { + ReadWrite.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a Part message from the specified reader or buffer. + * Decodes a ReadWrite message from the specified reader or buffer. * @function decode - * @memberof google.spanner.v1.KeyRecipe.Part + * @memberof google.spanner.v1.TransactionOptions.ReadWrite * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.KeyRecipe.Part} Part + * @returns {google.spanner.v1.TransactionOptions.ReadWrite} ReadWrite * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Part.decode = function decode(reader, length, error) { + ReadWrite.decode = function decode(reader, length, error) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.KeyRecipe.Part(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.TransactionOptions.ReadWrite(); while (reader.pos < end) { var tag = reader.uint32(); if (tag === error) break; switch (tag >>> 3) { case 1: { - message.tag = reader.uint32(); + message.readLockMode = reader.int32(); break; } case 2: { - message.order = reader.int32(); - break; - } - case 3: { - message.nullOrder = reader.int32(); - break; - } - case 4: { - message.type = $root.google.spanner.v1.Type.decode(reader, reader.uint32()); - break; - } - case 5: { - message.identifier = reader.string(); - break; - } - case 6: { - message.value = $root.google.protobuf.Value.decode(reader, reader.uint32()); - break; - } - case 8: { - message.random = reader.bool(); - break; - } - case 7: { - if (!(message.structIdentifiers && message.structIdentifiers.length)) - message.structIdentifiers = []; - if ((tag & 7) === 2) { - var end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) - message.structIdentifiers.push(reader.int32()); - } else - message.structIdentifiers.push(reader.int32()); + message.multiplexedSessionPreviousTransactionId = reader.bytes(); break; } default: @@ -91345,917 +91867,766 @@ }; /** - * Decodes a Part message from the specified reader or buffer, length delimited. + * Decodes a ReadWrite message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.spanner.v1.KeyRecipe.Part + * @memberof google.spanner.v1.TransactionOptions.ReadWrite * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.KeyRecipe.Part} Part + * @returns {google.spanner.v1.TransactionOptions.ReadWrite} ReadWrite * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Part.decodeDelimited = function decodeDelimited(reader) { + ReadWrite.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a Part message. + * Verifies a ReadWrite message. * @function verify - * @memberof google.spanner.v1.KeyRecipe.Part + * @memberof google.spanner.v1.TransactionOptions.ReadWrite * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Part.verify = function verify(message) { + ReadWrite.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - var properties = {}; - if (message.tag != null && message.hasOwnProperty("tag")) - if (!$util.isInteger(message.tag)) - return "tag: integer expected"; - if (message.order != null && message.hasOwnProperty("order")) - switch (message.order) { - default: - return "order: enum value expected"; - case 0: - case 1: - case 2: - break; - } - if (message.nullOrder != null && message.hasOwnProperty("nullOrder")) - switch (message.nullOrder) { + if (message.readLockMode != null && message.hasOwnProperty("readLockMode")) + switch (message.readLockMode) { default: - return "nullOrder: enum value expected"; + return "readLockMode: enum value expected"; case 0: case 1: case 2: - case 3: break; } - if (message.type != null && message.hasOwnProperty("type")) { - var error = $root.google.spanner.v1.Type.verify(message.type); - if (error) - return "type." + error; - } - if (message.identifier != null && message.hasOwnProperty("identifier")) { - properties.valueType = 1; - if (!$util.isString(message.identifier)) - return "identifier: string expected"; - } - if (message.value != null && message.hasOwnProperty("value")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - { - var error = $root.google.protobuf.Value.verify(message.value); - if (error) - return "value." + error; - } - } - if (message.random != null && message.hasOwnProperty("random")) { - if (properties.valueType === 1) - return "valueType: multiple values"; - properties.valueType = 1; - if (typeof message.random !== "boolean") - return "random: boolean expected"; - } - if (message.structIdentifiers != null && message.hasOwnProperty("structIdentifiers")) { - if (!Array.isArray(message.structIdentifiers)) - return "structIdentifiers: array expected"; - for (var i = 0; i < message.structIdentifiers.length; ++i) - if (!$util.isInteger(message.structIdentifiers[i])) - return "structIdentifiers: integer[] expected"; - } + if (message.multiplexedSessionPreviousTransactionId != null && message.hasOwnProperty("multiplexedSessionPreviousTransactionId")) + if (!(message.multiplexedSessionPreviousTransactionId && typeof message.multiplexedSessionPreviousTransactionId.length === "number" || $util.isString(message.multiplexedSessionPreviousTransactionId))) + return "multiplexedSessionPreviousTransactionId: buffer expected"; return null; }; /** - * Creates a Part message from a plain object. Also converts values to their respective internal types. + * Creates a ReadWrite message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.spanner.v1.KeyRecipe.Part + * @memberof google.spanner.v1.TransactionOptions.ReadWrite * @static * @param {Object.} object Plain object - * @returns {google.spanner.v1.KeyRecipe.Part} Part + * @returns {google.spanner.v1.TransactionOptions.ReadWrite} ReadWrite */ - Part.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.KeyRecipe.Part) + ReadWrite.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.TransactionOptions.ReadWrite) return object; - var message = new $root.google.spanner.v1.KeyRecipe.Part(); - if (object.tag != null) - message.tag = object.tag >>> 0; - switch (object.order) { - default: - if (typeof object.order === "number") { - message.order = object.order; - break; - } - break; - case "ORDER_UNSPECIFIED": - case 0: - message.order = 0; - break; - case "ASCENDING": - case 1: - message.order = 1; - break; - case "DESCENDING": - case 2: - message.order = 2; - break; - } - switch (object.nullOrder) { + var message = new $root.google.spanner.v1.TransactionOptions.ReadWrite(); + switch (object.readLockMode) { default: - if (typeof object.nullOrder === "number") { - message.nullOrder = object.nullOrder; + if (typeof object.readLockMode === "number") { + message.readLockMode = object.readLockMode; break; } break; - case "NULL_ORDER_UNSPECIFIED": + case "READ_LOCK_MODE_UNSPECIFIED": case 0: - message.nullOrder = 0; + message.readLockMode = 0; break; - case "NULLS_FIRST": + case "PESSIMISTIC": case 1: - message.nullOrder = 1; + message.readLockMode = 1; break; - case "NULLS_LAST": + case "OPTIMISTIC": case 2: - message.nullOrder = 2; - break; - case "NOT_NULL": - case 3: - message.nullOrder = 3; + message.readLockMode = 2; break; } - if (object.type != null) { - if (typeof object.type !== "object") - throw TypeError(".google.spanner.v1.KeyRecipe.Part.type: object expected"); - message.type = $root.google.spanner.v1.Type.fromObject(object.type); - } - if (object.identifier != null) - message.identifier = String(object.identifier); - if (object.value != null) { - if (typeof object.value !== "object") - throw TypeError(".google.spanner.v1.KeyRecipe.Part.value: object expected"); - message.value = $root.google.protobuf.Value.fromObject(object.value); - } - if (object.random != null) - message.random = Boolean(object.random); - if (object.structIdentifiers) { - if (!Array.isArray(object.structIdentifiers)) - throw TypeError(".google.spanner.v1.KeyRecipe.Part.structIdentifiers: array expected"); - message.structIdentifiers = []; - for (var i = 0; i < object.structIdentifiers.length; ++i) - message.structIdentifiers[i] = object.structIdentifiers[i] | 0; - } - return message; - }; - - /** - * Creates a plain object from a Part message. Also converts values to other types if specified. - * @function toObject - * @memberof google.spanner.v1.KeyRecipe.Part - * @static - * @param {google.spanner.v1.KeyRecipe.Part} message Part - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - Part.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.structIdentifiers = []; - if (options.defaults) { - object.tag = 0; - object.order = options.enums === String ? "ORDER_UNSPECIFIED" : 0; - object.nullOrder = options.enums === String ? "NULL_ORDER_UNSPECIFIED" : 0; - object.type = null; - } - if (message.tag != null && message.hasOwnProperty("tag")) - object.tag = message.tag; - if (message.order != null && message.hasOwnProperty("order")) - object.order = options.enums === String ? $root.google.spanner.v1.KeyRecipe.Part.Order[message.order] === undefined ? message.order : $root.google.spanner.v1.KeyRecipe.Part.Order[message.order] : message.order; - if (message.nullOrder != null && message.hasOwnProperty("nullOrder")) - object.nullOrder = options.enums === String ? $root.google.spanner.v1.KeyRecipe.Part.NullOrder[message.nullOrder] === undefined ? message.nullOrder : $root.google.spanner.v1.KeyRecipe.Part.NullOrder[message.nullOrder] : message.nullOrder; - if (message.type != null && message.hasOwnProperty("type")) - object.type = $root.google.spanner.v1.Type.toObject(message.type, options); - if (message.identifier != null && message.hasOwnProperty("identifier")) { - object.identifier = message.identifier; - if (options.oneofs) - object.valueType = "identifier"; - } - if (message.value != null && message.hasOwnProperty("value")) { - object.value = $root.google.protobuf.Value.toObject(message.value, options); - if (options.oneofs) - object.valueType = "value"; - } - if (message.structIdentifiers && message.structIdentifiers.length) { - object.structIdentifiers = []; - for (var j = 0; j < message.structIdentifiers.length; ++j) - object.structIdentifiers[j] = message.structIdentifiers[j]; - } - if (message.random != null && message.hasOwnProperty("random")) { - object.random = message.random; - if (options.oneofs) - object.valueType = "random"; + if (object.multiplexedSessionPreviousTransactionId != null) + if (typeof object.multiplexedSessionPreviousTransactionId === "string") + $util.base64.decode(object.multiplexedSessionPreviousTransactionId, message.multiplexedSessionPreviousTransactionId = $util.newBuffer($util.base64.length(object.multiplexedSessionPreviousTransactionId)), 0); + else if (object.multiplexedSessionPreviousTransactionId.length >= 0) + message.multiplexedSessionPreviousTransactionId = object.multiplexedSessionPreviousTransactionId; + return message; + }; + + /** + * Creates a plain object from a ReadWrite message. Also converts values to other types if specified. + * @function toObject + * @memberof google.spanner.v1.TransactionOptions.ReadWrite + * @static + * @param {google.spanner.v1.TransactionOptions.ReadWrite} message ReadWrite + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReadWrite.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.readLockMode = options.enums === String ? "READ_LOCK_MODE_UNSPECIFIED" : 0; + if (options.bytes === String) + object.multiplexedSessionPreviousTransactionId = ""; + else { + object.multiplexedSessionPreviousTransactionId = []; + if (options.bytes !== Array) + object.multiplexedSessionPreviousTransactionId = $util.newBuffer(object.multiplexedSessionPreviousTransactionId); + } } + if (message.readLockMode != null && message.hasOwnProperty("readLockMode")) + object.readLockMode = options.enums === String ? $root.google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode[message.readLockMode] === undefined ? message.readLockMode : $root.google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode[message.readLockMode] : message.readLockMode; + if (message.multiplexedSessionPreviousTransactionId != null && message.hasOwnProperty("multiplexedSessionPreviousTransactionId")) + object.multiplexedSessionPreviousTransactionId = options.bytes === String ? $util.base64.encode(message.multiplexedSessionPreviousTransactionId, 0, message.multiplexedSessionPreviousTransactionId.length) : options.bytes === Array ? Array.prototype.slice.call(message.multiplexedSessionPreviousTransactionId) : message.multiplexedSessionPreviousTransactionId; return object; }; /** - * Converts this Part to JSON. + * Converts this ReadWrite to JSON. * @function toJSON - * @memberof google.spanner.v1.KeyRecipe.Part + * @memberof google.spanner.v1.TransactionOptions.ReadWrite * @instance * @returns {Object.} JSON object */ - Part.prototype.toJSON = function toJSON() { + ReadWrite.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for Part + * Gets the default type url for ReadWrite * @function getTypeUrl - * @memberof google.spanner.v1.KeyRecipe.Part + * @memberof google.spanner.v1.TransactionOptions.ReadWrite * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - Part.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + ReadWrite.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.spanner.v1.KeyRecipe.Part"; + return typeUrlPrefix + "/google.spanner.v1.TransactionOptions.ReadWrite"; }; /** - * Order enum. - * @name google.spanner.v1.KeyRecipe.Part.Order - * @enum {number} - * @property {number} ORDER_UNSPECIFIED=0 ORDER_UNSPECIFIED value - * @property {number} ASCENDING=1 ASCENDING value - * @property {number} DESCENDING=2 DESCENDING value - */ - Part.Order = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "ORDER_UNSPECIFIED"] = 0; - values[valuesById[1] = "ASCENDING"] = 1; - values[valuesById[2] = "DESCENDING"] = 2; - return values; - })(); - - /** - * NullOrder enum. - * @name google.spanner.v1.KeyRecipe.Part.NullOrder + * ReadLockMode enum. + * @name google.spanner.v1.TransactionOptions.ReadWrite.ReadLockMode * @enum {number} - * @property {number} NULL_ORDER_UNSPECIFIED=0 NULL_ORDER_UNSPECIFIED value - * @property {number} NULLS_FIRST=1 NULLS_FIRST value - * @property {number} NULLS_LAST=2 NULLS_LAST value - * @property {number} NOT_NULL=3 NOT_NULL value + * @property {number} READ_LOCK_MODE_UNSPECIFIED=0 READ_LOCK_MODE_UNSPECIFIED value + * @property {number} PESSIMISTIC=1 PESSIMISTIC value + * @property {number} OPTIMISTIC=2 OPTIMISTIC value */ - Part.NullOrder = (function() { + ReadWrite.ReadLockMode = (function() { var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "NULL_ORDER_UNSPECIFIED"] = 0; - values[valuesById[1] = "NULLS_FIRST"] = 1; - values[valuesById[2] = "NULLS_LAST"] = 2; - values[valuesById[3] = "NOT_NULL"] = 3; + values[valuesById[0] = "READ_LOCK_MODE_UNSPECIFIED"] = 0; + values[valuesById[1] = "PESSIMISTIC"] = 1; + values[valuesById[2] = "OPTIMISTIC"] = 2; return values; })(); - return Part; + return ReadWrite; })(); - return KeyRecipe; - })(); - - v1.RecipeList = (function() { - - /** - * Properties of a RecipeList. - * @memberof google.spanner.v1 - * @interface IRecipeList - * @property {Uint8Array|null} [schemaGeneration] RecipeList schemaGeneration - * @property {Array.|null} [recipe] RecipeList recipe - */ - - /** - * Constructs a new RecipeList. - * @memberof google.spanner.v1 - * @classdesc Represents a RecipeList. - * @implements IRecipeList - * @constructor - * @param {google.spanner.v1.IRecipeList=} [properties] Properties to set - */ - function RecipeList(properties) { - this.recipe = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + TransactionOptions.PartitionedDml = (function() { - /** - * RecipeList schemaGeneration. - * @member {Uint8Array} schemaGeneration - * @memberof google.spanner.v1.RecipeList - * @instance - */ - RecipeList.prototype.schemaGeneration = $util.newBuffer([]); + /** + * Properties of a PartitionedDml. + * @memberof google.spanner.v1.TransactionOptions + * @interface IPartitionedDml + */ - /** - * RecipeList recipe. - * @member {Array.} recipe - * @memberof google.spanner.v1.RecipeList - * @instance - */ - RecipeList.prototype.recipe = $util.emptyArray; + /** + * Constructs a new PartitionedDml. + * @memberof google.spanner.v1.TransactionOptions + * @classdesc Represents a PartitionedDml. + * @implements IPartitionedDml + * @constructor + * @param {google.spanner.v1.TransactionOptions.IPartitionedDml=} [properties] Properties to set + */ + function PartitionedDml(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * Creates a new RecipeList instance using the specified properties. - * @function create - * @memberof google.spanner.v1.RecipeList - * @static - * @param {google.spanner.v1.IRecipeList=} [properties] Properties to set - * @returns {google.spanner.v1.RecipeList} RecipeList instance - */ - RecipeList.create = function create(properties) { - return new RecipeList(properties); - }; + /** + * Creates a new PartitionedDml instance using the specified properties. + * @function create + * @memberof google.spanner.v1.TransactionOptions.PartitionedDml + * @static + * @param {google.spanner.v1.TransactionOptions.IPartitionedDml=} [properties] Properties to set + * @returns {google.spanner.v1.TransactionOptions.PartitionedDml} PartitionedDml instance + */ + PartitionedDml.create = function create(properties) { + return new PartitionedDml(properties); + }; - /** - * Encodes the specified RecipeList message. Does not implicitly {@link google.spanner.v1.RecipeList.verify|verify} messages. - * @function encode - * @memberof google.spanner.v1.RecipeList - * @static - * @param {google.spanner.v1.IRecipeList} message RecipeList message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - RecipeList.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.schemaGeneration != null && Object.hasOwnProperty.call(message, "schemaGeneration")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.schemaGeneration); - if (message.recipe != null && message.recipe.length) - for (var i = 0; i < message.recipe.length; ++i) - $root.google.spanner.v1.KeyRecipe.encode(message.recipe[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - return writer; - }; + /** + * Encodes the specified PartitionedDml message. Does not implicitly {@link google.spanner.v1.TransactionOptions.PartitionedDml.verify|verify} messages. + * @function encode + * @memberof google.spanner.v1.TransactionOptions.PartitionedDml + * @static + * @param {google.spanner.v1.TransactionOptions.IPartitionedDml} message PartitionedDml message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PartitionedDml.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; - /** - * Encodes the specified RecipeList message, length delimited. Does not implicitly {@link google.spanner.v1.RecipeList.verify|verify} messages. - * @function encodeDelimited - * @memberof google.spanner.v1.RecipeList - * @static - * @param {google.spanner.v1.IRecipeList} message RecipeList message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - RecipeList.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Encodes the specified PartitionedDml message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionOptions.PartitionedDml.verify|verify} messages. + * @function encodeDelimited + * @memberof google.spanner.v1.TransactionOptions.PartitionedDml + * @static + * @param {google.spanner.v1.TransactionOptions.IPartitionedDml} message PartitionedDml message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PartitionedDml.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Decodes a RecipeList message from the specified reader or buffer. - * @function decode - * @memberof google.spanner.v1.RecipeList - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.RecipeList} RecipeList - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - RecipeList.decode = function decode(reader, length, error) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.RecipeList(); - while (reader.pos < end) { - var tag = reader.uint32(); - if (tag === error) - break; - switch (tag >>> 3) { - case 1: { - message.schemaGeneration = reader.bytes(); + /** + * Decodes a PartitionedDml message from the specified reader or buffer. + * @function decode + * @memberof google.spanner.v1.TransactionOptions.PartitionedDml + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.spanner.v1.TransactionOptions.PartitionedDml} PartitionedDml + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PartitionedDml.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.TransactionOptions.PartitionedDml(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) break; - } - case 3: { - if (!(message.recipe && message.recipe.length)) - message.recipe = []; - message.recipe.push($root.google.spanner.v1.KeyRecipe.decode(reader, reader.uint32())); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); break; } - default: - reader.skipType(tag & 7); - break; } - } - return message; - }; + return message; + }; - /** - * Decodes a RecipeList message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.spanner.v1.RecipeList - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.RecipeList} RecipeList - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - RecipeList.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Decodes a PartitionedDml message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.spanner.v1.TransactionOptions.PartitionedDml + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.spanner.v1.TransactionOptions.PartitionedDml} PartitionedDml + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PartitionedDml.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Verifies a RecipeList message. - * @function verify - * @memberof google.spanner.v1.RecipeList - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - RecipeList.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.schemaGeneration != null && message.hasOwnProperty("schemaGeneration")) - if (!(message.schemaGeneration && typeof message.schemaGeneration.length === "number" || $util.isString(message.schemaGeneration))) - return "schemaGeneration: buffer expected"; - if (message.recipe != null && message.hasOwnProperty("recipe")) { - if (!Array.isArray(message.recipe)) - return "recipe: array expected"; - for (var i = 0; i < message.recipe.length; ++i) { - var error = $root.google.spanner.v1.KeyRecipe.verify(message.recipe[i]); - if (error) - return "recipe." + error; - } - } - return null; - }; + /** + * Verifies a PartitionedDml message. + * @function verify + * @memberof google.spanner.v1.TransactionOptions.PartitionedDml + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PartitionedDml.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; - /** - * Creates a RecipeList message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.spanner.v1.RecipeList - * @static - * @param {Object.} object Plain object - * @returns {google.spanner.v1.RecipeList} RecipeList - */ - RecipeList.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.RecipeList) - return object; - var message = new $root.google.spanner.v1.RecipeList(); - if (object.schemaGeneration != null) - if (typeof object.schemaGeneration === "string") - $util.base64.decode(object.schemaGeneration, message.schemaGeneration = $util.newBuffer($util.base64.length(object.schemaGeneration)), 0); - else if (object.schemaGeneration.length >= 0) - message.schemaGeneration = object.schemaGeneration; - if (object.recipe) { - if (!Array.isArray(object.recipe)) - throw TypeError(".google.spanner.v1.RecipeList.recipe: array expected"); - message.recipe = []; - for (var i = 0; i < object.recipe.length; ++i) { - if (typeof object.recipe[i] !== "object") - throw TypeError(".google.spanner.v1.RecipeList.recipe: object expected"); - message.recipe[i] = $root.google.spanner.v1.KeyRecipe.fromObject(object.recipe[i]); - } - } - return message; - }; + /** + * Creates a PartitionedDml message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.spanner.v1.TransactionOptions.PartitionedDml + * @static + * @param {Object.} object Plain object + * @returns {google.spanner.v1.TransactionOptions.PartitionedDml} PartitionedDml + */ + PartitionedDml.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.TransactionOptions.PartitionedDml) + return object; + return new $root.google.spanner.v1.TransactionOptions.PartitionedDml(); + }; - /** - * Creates a plain object from a RecipeList message. Also converts values to other types if specified. - * @function toObject - * @memberof google.spanner.v1.RecipeList - * @static - * @param {google.spanner.v1.RecipeList} message RecipeList - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - RecipeList.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) - object.recipe = []; - if (options.defaults) - if (options.bytes === String) - object.schemaGeneration = ""; - else { - object.schemaGeneration = []; - if (options.bytes !== Array) - object.schemaGeneration = $util.newBuffer(object.schemaGeneration); + /** + * Creates a plain object from a PartitionedDml message. Also converts values to other types if specified. + * @function toObject + * @memberof google.spanner.v1.TransactionOptions.PartitionedDml + * @static + * @param {google.spanner.v1.TransactionOptions.PartitionedDml} message PartitionedDml + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PartitionedDml.toObject = function toObject() { + return {}; + }; + + /** + * Converts this PartitionedDml to JSON. + * @function toJSON + * @memberof google.spanner.v1.TransactionOptions.PartitionedDml + * @instance + * @returns {Object.} JSON object + */ + PartitionedDml.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for PartitionedDml + * @function getTypeUrl + * @memberof google.spanner.v1.TransactionOptions.PartitionedDml + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + PartitionedDml.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; } - if (message.schemaGeneration != null && message.hasOwnProperty("schemaGeneration")) - object.schemaGeneration = options.bytes === String ? $util.base64.encode(message.schemaGeneration, 0, message.schemaGeneration.length) : options.bytes === Array ? Array.prototype.slice.call(message.schemaGeneration) : message.schemaGeneration; - if (message.recipe && message.recipe.length) { - object.recipe = []; - for (var j = 0; j < message.recipe.length; ++j) - object.recipe[j] = $root.google.spanner.v1.KeyRecipe.toObject(message.recipe[j], options); - } - return object; - }; + return typeUrlPrefix + "/google.spanner.v1.TransactionOptions.PartitionedDml"; + }; - /** - * Converts this RecipeList to JSON. - * @function toJSON - * @memberof google.spanner.v1.RecipeList - * @instance - * @returns {Object.} JSON object - */ - RecipeList.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + return PartitionedDml; + })(); - /** - * Gets the default type url for RecipeList - * @function getTypeUrl - * @memberof google.spanner.v1.RecipeList - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - RecipeList.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; + TransactionOptions.ReadOnly = (function() { + + /** + * Properties of a ReadOnly. + * @memberof google.spanner.v1.TransactionOptions + * @interface IReadOnly + * @property {boolean|null} [strong] ReadOnly strong + * @property {google.protobuf.ITimestamp|null} [minReadTimestamp] ReadOnly minReadTimestamp + * @property {google.protobuf.IDuration|null} [maxStaleness] ReadOnly maxStaleness + * @property {google.protobuf.ITimestamp|null} [readTimestamp] ReadOnly readTimestamp + * @property {google.protobuf.IDuration|null} [exactStaleness] ReadOnly exactStaleness + * @property {boolean|null} [returnReadTimestamp] ReadOnly returnReadTimestamp + */ + + /** + * Constructs a new ReadOnly. + * @memberof google.spanner.v1.TransactionOptions + * @classdesc Represents a ReadOnly. + * @implements IReadOnly + * @constructor + * @param {google.spanner.v1.TransactionOptions.IReadOnly=} [properties] Properties to set + */ + function ReadOnly(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; } - return typeUrlPrefix + "/google.spanner.v1.RecipeList"; - }; - return RecipeList; - })(); + /** + * ReadOnly strong. + * @member {boolean|null|undefined} strong + * @memberof google.spanner.v1.TransactionOptions.ReadOnly + * @instance + */ + ReadOnly.prototype.strong = null; - v1.CacheUpdate = (function() { + /** + * ReadOnly minReadTimestamp. + * @member {google.protobuf.ITimestamp|null|undefined} minReadTimestamp + * @memberof google.spanner.v1.TransactionOptions.ReadOnly + * @instance + */ + ReadOnly.prototype.minReadTimestamp = null; - /** - * Properties of a CacheUpdate. - * @memberof google.spanner.v1 - * @interface ICacheUpdate - * @property {number|Long|null} [databaseId] CacheUpdate databaseId - * @property {Array.|null} [range] CacheUpdate range - * @property {Array.|null} [group] CacheUpdate group - * @property {google.spanner.v1.IRecipeList|null} [keyRecipes] CacheUpdate keyRecipes - */ + /** + * ReadOnly maxStaleness. + * @member {google.protobuf.IDuration|null|undefined} maxStaleness + * @memberof google.spanner.v1.TransactionOptions.ReadOnly + * @instance + */ + ReadOnly.prototype.maxStaleness = null; - /** - * Constructs a new CacheUpdate. - * @memberof google.spanner.v1 - * @classdesc Represents a CacheUpdate. - * @implements ICacheUpdate - * @constructor - * @param {google.spanner.v1.ICacheUpdate=} [properties] Properties to set - */ - function CacheUpdate(properties) { - this.range = []; - this.group = []; - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + /** + * ReadOnly readTimestamp. + * @member {google.protobuf.ITimestamp|null|undefined} readTimestamp + * @memberof google.spanner.v1.TransactionOptions.ReadOnly + * @instance + */ + ReadOnly.prototype.readTimestamp = null; - /** - * CacheUpdate databaseId. - * @member {number|Long} databaseId - * @memberof google.spanner.v1.CacheUpdate - * @instance - */ - CacheUpdate.prototype.databaseId = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + /** + * ReadOnly exactStaleness. + * @member {google.protobuf.IDuration|null|undefined} exactStaleness + * @memberof google.spanner.v1.TransactionOptions.ReadOnly + * @instance + */ + ReadOnly.prototype.exactStaleness = null; - /** - * CacheUpdate range. - * @member {Array.} range - * @memberof google.spanner.v1.CacheUpdate - * @instance - */ - CacheUpdate.prototype.range = $util.emptyArray; + /** + * ReadOnly returnReadTimestamp. + * @member {boolean} returnReadTimestamp + * @memberof google.spanner.v1.TransactionOptions.ReadOnly + * @instance + */ + ReadOnly.prototype.returnReadTimestamp = false; - /** - * CacheUpdate group. - * @member {Array.} group - * @memberof google.spanner.v1.CacheUpdate - * @instance - */ - CacheUpdate.prototype.group = $util.emptyArray; + // OneOf field names bound to virtual getters and setters + var $oneOfFields; - /** - * CacheUpdate keyRecipes. - * @member {google.spanner.v1.IRecipeList|null|undefined} keyRecipes - * @memberof google.spanner.v1.CacheUpdate - * @instance - */ - CacheUpdate.prototype.keyRecipes = null; + /** + * ReadOnly timestampBound. + * @member {"strong"|"minReadTimestamp"|"maxStaleness"|"readTimestamp"|"exactStaleness"|undefined} timestampBound + * @memberof google.spanner.v1.TransactionOptions.ReadOnly + * @instance + */ + Object.defineProperty(ReadOnly.prototype, "timestampBound", { + get: $util.oneOfGetter($oneOfFields = ["strong", "minReadTimestamp", "maxStaleness", "readTimestamp", "exactStaleness"]), + set: $util.oneOfSetter($oneOfFields) + }); - /** - * Creates a new CacheUpdate instance using the specified properties. - * @function create - * @memberof google.spanner.v1.CacheUpdate - * @static - * @param {google.spanner.v1.ICacheUpdate=} [properties] Properties to set - * @returns {google.spanner.v1.CacheUpdate} CacheUpdate instance - */ - CacheUpdate.create = function create(properties) { - return new CacheUpdate(properties); - }; + /** + * Creates a new ReadOnly instance using the specified properties. + * @function create + * @memberof google.spanner.v1.TransactionOptions.ReadOnly + * @static + * @param {google.spanner.v1.TransactionOptions.IReadOnly=} [properties] Properties to set + * @returns {google.spanner.v1.TransactionOptions.ReadOnly} ReadOnly instance + */ + ReadOnly.create = function create(properties) { + return new ReadOnly(properties); + }; - /** - * Encodes the specified CacheUpdate message. Does not implicitly {@link google.spanner.v1.CacheUpdate.verify|verify} messages. - * @function encode - * @memberof google.spanner.v1.CacheUpdate - * @static - * @param {google.spanner.v1.ICacheUpdate} message CacheUpdate message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CacheUpdate.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) - writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.databaseId); - if (message.range != null && message.range.length) - for (var i = 0; i < message.range.length; ++i) - $root.google.spanner.v1.Range.encode(message.range[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.group != null && message.group.length) - for (var i = 0; i < message.group.length; ++i) - $root.google.spanner.v1.Group.encode(message.group[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.keyRecipes != null && Object.hasOwnProperty.call(message, "keyRecipes")) - $root.google.spanner.v1.RecipeList.encode(message.keyRecipes, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); - return writer; - }; + /** + * Encodes the specified ReadOnly message. Does not implicitly {@link google.spanner.v1.TransactionOptions.ReadOnly.verify|verify} messages. + * @function encode + * @memberof google.spanner.v1.TransactionOptions.ReadOnly + * @static + * @param {google.spanner.v1.TransactionOptions.IReadOnly} message ReadOnly message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadOnly.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.strong != null && Object.hasOwnProperty.call(message, "strong")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.strong); + if (message.minReadTimestamp != null && Object.hasOwnProperty.call(message, "minReadTimestamp")) + $root.google.protobuf.Timestamp.encode(message.minReadTimestamp, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.maxStaleness != null && Object.hasOwnProperty.call(message, "maxStaleness")) + $root.google.protobuf.Duration.encode(message.maxStaleness, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.readTimestamp != null && Object.hasOwnProperty.call(message, "readTimestamp")) + $root.google.protobuf.Timestamp.encode(message.readTimestamp, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); + if (message.exactStaleness != null && Object.hasOwnProperty.call(message, "exactStaleness")) + $root.google.protobuf.Duration.encode(message.exactStaleness, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); + if (message.returnReadTimestamp != null && Object.hasOwnProperty.call(message, "returnReadTimestamp")) + writer.uint32(/* id 6, wireType 0 =*/48).bool(message.returnReadTimestamp); + return writer; + }; - /** - * Encodes the specified CacheUpdate message, length delimited. Does not implicitly {@link google.spanner.v1.CacheUpdate.verify|verify} messages. - * @function encodeDelimited - * @memberof google.spanner.v1.CacheUpdate - * @static - * @param {google.spanner.v1.ICacheUpdate} message CacheUpdate message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - CacheUpdate.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Encodes the specified ReadOnly message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionOptions.ReadOnly.verify|verify} messages. + * @function encodeDelimited + * @memberof google.spanner.v1.TransactionOptions.ReadOnly + * @static + * @param {google.spanner.v1.TransactionOptions.IReadOnly} message ReadOnly message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + ReadOnly.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Decodes a CacheUpdate message from the specified reader or buffer. - * @function decode - * @memberof google.spanner.v1.CacheUpdate - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.CacheUpdate} CacheUpdate - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CacheUpdate.decode = function decode(reader, length, error) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.CacheUpdate(); - while (reader.pos < end) { - var tag = reader.uint32(); - if (tag === error) - break; - switch (tag >>> 3) { - case 1: { - message.databaseId = reader.uint64(); + /** + * Decodes a ReadOnly message from the specified reader or buffer. + * @function decode + * @memberof google.spanner.v1.TransactionOptions.ReadOnly + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.spanner.v1.TransactionOptions.ReadOnly} ReadOnly + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadOnly.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.TransactionOptions.ReadOnly(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.strong = reader.bool(); + break; + } + case 2: { + message.minReadTimestamp = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + } + case 3: { + message.maxStaleness = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + break; + } + case 4: { + message.readTimestamp = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); + break; + } + case 5: { + message.exactStaleness = $root.google.protobuf.Duration.decode(reader, reader.uint32()); + break; + } + case 6: { + message.returnReadTimestamp = reader.bool(); + break; + } + default: + reader.skipType(tag & 7); break; } - case 2: { - if (!(message.range && message.range.length)) - message.range = []; - message.range.push($root.google.spanner.v1.Range.decode(reader, reader.uint32())); - break; + } + return message; + }; + + /** + * Decodes a ReadOnly message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.spanner.v1.TransactionOptions.ReadOnly + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.spanner.v1.TransactionOptions.ReadOnly} ReadOnly + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + ReadOnly.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a ReadOnly message. + * @function verify + * @memberof google.spanner.v1.TransactionOptions.ReadOnly + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + ReadOnly.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.strong != null && message.hasOwnProperty("strong")) { + properties.timestampBound = 1; + if (typeof message.strong !== "boolean") + return "strong: boolean expected"; + } + if (message.minReadTimestamp != null && message.hasOwnProperty("minReadTimestamp")) { + if (properties.timestampBound === 1) + return "timestampBound: multiple values"; + properties.timestampBound = 1; + { + var error = $root.google.protobuf.Timestamp.verify(message.minReadTimestamp); + if (error) + return "minReadTimestamp." + error; } - case 3: { - if (!(message.group && message.group.length)) - message.group = []; - message.group.push($root.google.spanner.v1.Group.decode(reader, reader.uint32())); - break; + } + if (message.maxStaleness != null && message.hasOwnProperty("maxStaleness")) { + if (properties.timestampBound === 1) + return "timestampBound: multiple values"; + properties.timestampBound = 1; + { + var error = $root.google.protobuf.Duration.verify(message.maxStaleness); + if (error) + return "maxStaleness." + error; } - case 5: { - message.keyRecipes = $root.google.spanner.v1.RecipeList.decode(reader, reader.uint32()); - break; + } + if (message.readTimestamp != null && message.hasOwnProperty("readTimestamp")) { + if (properties.timestampBound === 1) + return "timestampBound: multiple values"; + properties.timestampBound = 1; + { + var error = $root.google.protobuf.Timestamp.verify(message.readTimestamp); + if (error) + return "readTimestamp." + error; } - default: - reader.skipType(tag & 7); - break; } - } - return message; - }; - - /** - * Decodes a CacheUpdate message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.spanner.v1.CacheUpdate - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.CacheUpdate} CacheUpdate - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - CacheUpdate.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + if (message.exactStaleness != null && message.hasOwnProperty("exactStaleness")) { + if (properties.timestampBound === 1) + return "timestampBound: multiple values"; + properties.timestampBound = 1; + { + var error = $root.google.protobuf.Duration.verify(message.exactStaleness); + if (error) + return "exactStaleness." + error; + } + } + if (message.returnReadTimestamp != null && message.hasOwnProperty("returnReadTimestamp")) + if (typeof message.returnReadTimestamp !== "boolean") + return "returnReadTimestamp: boolean expected"; + return null; + }; - /** - * Verifies a CacheUpdate message. - * @function verify - * @memberof google.spanner.v1.CacheUpdate - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - CacheUpdate.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - if (!$util.isInteger(message.databaseId) && !(message.databaseId && $util.isInteger(message.databaseId.low) && $util.isInteger(message.databaseId.high))) - return "databaseId: integer|Long expected"; - if (message.range != null && message.hasOwnProperty("range")) { - if (!Array.isArray(message.range)) - return "range: array expected"; - for (var i = 0; i < message.range.length; ++i) { - var error = $root.google.spanner.v1.Range.verify(message.range[i]); - if (error) - return "range." + error; + /** + * Creates a ReadOnly message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.spanner.v1.TransactionOptions.ReadOnly + * @static + * @param {Object.} object Plain object + * @returns {google.spanner.v1.TransactionOptions.ReadOnly} ReadOnly + */ + ReadOnly.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.TransactionOptions.ReadOnly) + return object; + var message = new $root.google.spanner.v1.TransactionOptions.ReadOnly(); + if (object.strong != null) + message.strong = Boolean(object.strong); + if (object.minReadTimestamp != null) { + if (typeof object.minReadTimestamp !== "object") + throw TypeError(".google.spanner.v1.TransactionOptions.ReadOnly.minReadTimestamp: object expected"); + message.minReadTimestamp = $root.google.protobuf.Timestamp.fromObject(object.minReadTimestamp); } - } - if (message.group != null && message.hasOwnProperty("group")) { - if (!Array.isArray(message.group)) - return "group: array expected"; - for (var i = 0; i < message.group.length; ++i) { - var error = $root.google.spanner.v1.Group.verify(message.group[i]); - if (error) - return "group." + error; + if (object.maxStaleness != null) { + if (typeof object.maxStaleness !== "object") + throw TypeError(".google.spanner.v1.TransactionOptions.ReadOnly.maxStaleness: object expected"); + message.maxStaleness = $root.google.protobuf.Duration.fromObject(object.maxStaleness); } - } - if (message.keyRecipes != null && message.hasOwnProperty("keyRecipes")) { - var error = $root.google.spanner.v1.RecipeList.verify(message.keyRecipes); - if (error) - return "keyRecipes." + error; - } - return null; - }; + if (object.readTimestamp != null) { + if (typeof object.readTimestamp !== "object") + throw TypeError(".google.spanner.v1.TransactionOptions.ReadOnly.readTimestamp: object expected"); + message.readTimestamp = $root.google.protobuf.Timestamp.fromObject(object.readTimestamp); + } + if (object.exactStaleness != null) { + if (typeof object.exactStaleness !== "object") + throw TypeError(".google.spanner.v1.TransactionOptions.ReadOnly.exactStaleness: object expected"); + message.exactStaleness = $root.google.protobuf.Duration.fromObject(object.exactStaleness); + } + if (object.returnReadTimestamp != null) + message.returnReadTimestamp = Boolean(object.returnReadTimestamp); + return message; + }; - /** - * Creates a CacheUpdate message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.spanner.v1.CacheUpdate - * @static - * @param {Object.} object Plain object - * @returns {google.spanner.v1.CacheUpdate} CacheUpdate - */ - CacheUpdate.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.CacheUpdate) - return object; - var message = new $root.google.spanner.v1.CacheUpdate(); - if (object.databaseId != null) - if ($util.Long) - (message.databaseId = $util.Long.fromValue(object.databaseId)).unsigned = true; - else if (typeof object.databaseId === "string") - message.databaseId = parseInt(object.databaseId, 10); - else if (typeof object.databaseId === "number") - message.databaseId = object.databaseId; - else if (typeof object.databaseId === "object") - message.databaseId = new $util.LongBits(object.databaseId.low >>> 0, object.databaseId.high >>> 0).toNumber(true); - if (object.range) { - if (!Array.isArray(object.range)) - throw TypeError(".google.spanner.v1.CacheUpdate.range: array expected"); - message.range = []; - for (var i = 0; i < object.range.length; ++i) { - if (typeof object.range[i] !== "object") - throw TypeError(".google.spanner.v1.CacheUpdate.range: object expected"); - message.range[i] = $root.google.spanner.v1.Range.fromObject(object.range[i]); + /** + * Creates a plain object from a ReadOnly message. Also converts values to other types if specified. + * @function toObject + * @memberof google.spanner.v1.TransactionOptions.ReadOnly + * @static + * @param {google.spanner.v1.TransactionOptions.ReadOnly} message ReadOnly + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + ReadOnly.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.returnReadTimestamp = false; + if (message.strong != null && message.hasOwnProperty("strong")) { + object.strong = message.strong; + if (options.oneofs) + object.timestampBound = "strong"; + } + if (message.minReadTimestamp != null && message.hasOwnProperty("minReadTimestamp")) { + object.minReadTimestamp = $root.google.protobuf.Timestamp.toObject(message.minReadTimestamp, options); + if (options.oneofs) + object.timestampBound = "minReadTimestamp"; + } + if (message.maxStaleness != null && message.hasOwnProperty("maxStaleness")) { + object.maxStaleness = $root.google.protobuf.Duration.toObject(message.maxStaleness, options); + if (options.oneofs) + object.timestampBound = "maxStaleness"; } - } - if (object.group) { - if (!Array.isArray(object.group)) - throw TypeError(".google.spanner.v1.CacheUpdate.group: array expected"); - message.group = []; - for (var i = 0; i < object.group.length; ++i) { - if (typeof object.group[i] !== "object") - throw TypeError(".google.spanner.v1.CacheUpdate.group: object expected"); - message.group[i] = $root.google.spanner.v1.Group.fromObject(object.group[i]); + if (message.readTimestamp != null && message.hasOwnProperty("readTimestamp")) { + object.readTimestamp = $root.google.protobuf.Timestamp.toObject(message.readTimestamp, options); + if (options.oneofs) + object.timestampBound = "readTimestamp"; } - } - if (object.keyRecipes != null) { - if (typeof object.keyRecipes !== "object") - throw TypeError(".google.spanner.v1.CacheUpdate.keyRecipes: object expected"); - message.keyRecipes = $root.google.spanner.v1.RecipeList.fromObject(object.keyRecipes); - } - return message; - }; + if (message.exactStaleness != null && message.hasOwnProperty("exactStaleness")) { + object.exactStaleness = $root.google.protobuf.Duration.toObject(message.exactStaleness, options); + if (options.oneofs) + object.timestampBound = "exactStaleness"; + } + if (message.returnReadTimestamp != null && message.hasOwnProperty("returnReadTimestamp")) + object.returnReadTimestamp = message.returnReadTimestamp; + return object; + }; - /** - * Creates a plain object from a CacheUpdate message. Also converts values to other types if specified. - * @function toObject - * @memberof google.spanner.v1.CacheUpdate - * @static - * @param {google.spanner.v1.CacheUpdate} message CacheUpdate - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - CacheUpdate.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.arrays || options.defaults) { - object.range = []; - object.group = []; - } - if (options.defaults) { - if ($util.Long) { - var long = new $util.Long(0, 0, true); - object.databaseId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.databaseId = options.longs === String ? "0" : 0; - object.keyRecipes = null; - } - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - if (typeof message.databaseId === "number") - object.databaseId = options.longs === String ? String(message.databaseId) : message.databaseId; - else - object.databaseId = options.longs === String ? $util.Long.prototype.toString.call(message.databaseId) : options.longs === Number ? new $util.LongBits(message.databaseId.low >>> 0, message.databaseId.high >>> 0).toNumber(true) : message.databaseId; - if (message.range && message.range.length) { - object.range = []; - for (var j = 0; j < message.range.length; ++j) - object.range[j] = $root.google.spanner.v1.Range.toObject(message.range[j], options); - } - if (message.group && message.group.length) { - object.group = []; - for (var j = 0; j < message.group.length; ++j) - object.group[j] = $root.google.spanner.v1.Group.toObject(message.group[j], options); - } - if (message.keyRecipes != null && message.hasOwnProperty("keyRecipes")) - object.keyRecipes = $root.google.spanner.v1.RecipeList.toObject(message.keyRecipes, options); - return object; - }; + /** + * Converts this ReadOnly to JSON. + * @function toJSON + * @memberof google.spanner.v1.TransactionOptions.ReadOnly + * @instance + * @returns {Object.} JSON object + */ + ReadOnly.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * Converts this CacheUpdate to JSON. - * @function toJSON - * @memberof google.spanner.v1.CacheUpdate - * @instance - * @returns {Object.} JSON object - */ - CacheUpdate.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Gets the default type url for ReadOnly + * @function getTypeUrl + * @memberof google.spanner.v1.TransactionOptions.ReadOnly + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + ReadOnly.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.spanner.v1.TransactionOptions.ReadOnly"; + }; + + return ReadOnly; + })(); /** - * Gets the default type url for CacheUpdate - * @function getTypeUrl - * @memberof google.spanner.v1.CacheUpdate - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url + * IsolationLevel enum. + * @name google.spanner.v1.TransactionOptions.IsolationLevel + * @enum {number} + * @property {number} ISOLATION_LEVEL_UNSPECIFIED=0 ISOLATION_LEVEL_UNSPECIFIED value + * @property {number} SERIALIZABLE=1 SERIALIZABLE value + * @property {number} REPEATABLE_READ=2 REPEATABLE_READ value */ - CacheUpdate.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/google.spanner.v1.CacheUpdate"; - }; + TransactionOptions.IsolationLevel = (function() { + var valuesById = {}, values = Object.create(valuesById); + values[valuesById[0] = "ISOLATION_LEVEL_UNSPECIFIED"] = 0; + values[valuesById[1] = "SERIALIZABLE"] = 1; + values[valuesById[2] = "REPEATABLE_READ"] = 2; + return values; + })(); - return CacheUpdate; + return TransactionOptions; })(); - v1.RoutingHint = (function() { + v1.Transaction = (function() { /** - * Properties of a RoutingHint. + * Properties of a Transaction. * @memberof google.spanner.v1 - * @interface IRoutingHint - * @property {number|Long|null} [operationUid] RoutingHint operationUid - * @property {number|Long|null} [databaseId] RoutingHint databaseId - * @property {Uint8Array|null} [schemaGeneration] RoutingHint schemaGeneration - * @property {Uint8Array|null} [key] RoutingHint key - * @property {Uint8Array|null} [limitKey] RoutingHint limitKey - * @property {number|Long|null} [groupUid] RoutingHint groupUid - * @property {number|Long|null} [splitId] RoutingHint splitId - * @property {number|Long|null} [tabletUid] RoutingHint tabletUid - * @property {Array.|null} [skippedTabletUid] RoutingHint skippedTabletUid - * @property {string|null} [clientLocation] RoutingHint clientLocation + * @interface ITransaction + * @property {Uint8Array|null} [id] Transaction id + * @property {google.protobuf.ITimestamp|null} [readTimestamp] Transaction readTimestamp + * @property {google.spanner.v1.IMultiplexedSessionPrecommitToken|null} [precommitToken] Transaction precommitToken + * @property {google.spanner.v1.ICacheUpdate|null} [cacheUpdate] Transaction cacheUpdate */ /** - * Constructs a new RoutingHint. + * Constructs a new Transaction. * @memberof google.spanner.v1 - * @classdesc Represents a RoutingHint. - * @implements IRoutingHint + * @classdesc Represents a Transaction. + * @implements ITransaction * @constructor - * @param {google.spanner.v1.IRoutingHint=} [properties] Properties to set + * @param {google.spanner.v1.ITransaction=} [properties] Properties to set */ - function RoutingHint(properties) { - this.skippedTabletUid = []; + function Transaction(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -92263,206 +92634,119 @@ } /** - * RoutingHint operationUid. - * @member {number|Long} operationUid - * @memberof google.spanner.v1.RoutingHint - * @instance - */ - RoutingHint.prototype.operationUid = $util.Long ? $util.Long.fromBits(0,0,true) : 0; - - /** - * RoutingHint databaseId. - * @member {number|Long} databaseId - * @memberof google.spanner.v1.RoutingHint - * @instance - */ - RoutingHint.prototype.databaseId = $util.Long ? $util.Long.fromBits(0,0,true) : 0; - - /** - * RoutingHint schemaGeneration. - * @member {Uint8Array} schemaGeneration - * @memberof google.spanner.v1.RoutingHint - * @instance - */ - RoutingHint.prototype.schemaGeneration = $util.newBuffer([]); - - /** - * RoutingHint key. - * @member {Uint8Array} key - * @memberof google.spanner.v1.RoutingHint - * @instance - */ - RoutingHint.prototype.key = $util.newBuffer([]); - - /** - * RoutingHint limitKey. - * @member {Uint8Array} limitKey - * @memberof google.spanner.v1.RoutingHint - * @instance - */ - RoutingHint.prototype.limitKey = $util.newBuffer([]); - - /** - * RoutingHint groupUid. - * @member {number|Long} groupUid - * @memberof google.spanner.v1.RoutingHint - * @instance - */ - RoutingHint.prototype.groupUid = $util.Long ? $util.Long.fromBits(0,0,true) : 0; - - /** - * RoutingHint splitId. - * @member {number|Long} splitId - * @memberof google.spanner.v1.RoutingHint + * Transaction id. + * @member {Uint8Array} id + * @memberof google.spanner.v1.Transaction * @instance */ - RoutingHint.prototype.splitId = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + Transaction.prototype.id = $util.newBuffer([]); /** - * RoutingHint tabletUid. - * @member {number|Long} tabletUid - * @memberof google.spanner.v1.RoutingHint + * Transaction readTimestamp. + * @member {google.protobuf.ITimestamp|null|undefined} readTimestamp + * @memberof google.spanner.v1.Transaction * @instance */ - RoutingHint.prototype.tabletUid = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + Transaction.prototype.readTimestamp = null; /** - * RoutingHint skippedTabletUid. - * @member {Array.} skippedTabletUid - * @memberof google.spanner.v1.RoutingHint + * Transaction precommitToken. + * @member {google.spanner.v1.IMultiplexedSessionPrecommitToken|null|undefined} precommitToken + * @memberof google.spanner.v1.Transaction * @instance */ - RoutingHint.prototype.skippedTabletUid = $util.emptyArray; + Transaction.prototype.precommitToken = null; /** - * RoutingHint clientLocation. - * @member {string} clientLocation - * @memberof google.spanner.v1.RoutingHint + * Transaction cacheUpdate. + * @member {google.spanner.v1.ICacheUpdate|null|undefined} cacheUpdate + * @memberof google.spanner.v1.Transaction * @instance */ - RoutingHint.prototype.clientLocation = ""; + Transaction.prototype.cacheUpdate = null; /** - * Creates a new RoutingHint instance using the specified properties. + * Creates a new Transaction instance using the specified properties. * @function create - * @memberof google.spanner.v1.RoutingHint - * @static - * @param {google.spanner.v1.IRoutingHint=} [properties] Properties to set - * @returns {google.spanner.v1.RoutingHint} RoutingHint instance + * @memberof google.spanner.v1.Transaction + * @static + * @param {google.spanner.v1.ITransaction=} [properties] Properties to set + * @returns {google.spanner.v1.Transaction} Transaction instance */ - RoutingHint.create = function create(properties) { - return new RoutingHint(properties); + Transaction.create = function create(properties) { + return new Transaction(properties); }; /** - * Encodes the specified RoutingHint message. Does not implicitly {@link google.spanner.v1.RoutingHint.verify|verify} messages. + * Encodes the specified Transaction message. Does not implicitly {@link google.spanner.v1.Transaction.verify|verify} messages. * @function encode - * @memberof google.spanner.v1.RoutingHint + * @memberof google.spanner.v1.Transaction * @static - * @param {google.spanner.v1.IRoutingHint} message RoutingHint message or plain object to encode + * @param {google.spanner.v1.ITransaction} message Transaction message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - RoutingHint.encode = function encode(message, writer) { + Transaction.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.operationUid != null && Object.hasOwnProperty.call(message, "operationUid")) - writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.operationUid); - if (message.databaseId != null && Object.hasOwnProperty.call(message, "databaseId")) - writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.databaseId); - if (message.schemaGeneration != null && Object.hasOwnProperty.call(message, "schemaGeneration")) - writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.schemaGeneration); - if (message.key != null && Object.hasOwnProperty.call(message, "key")) - writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.key); - if (message.limitKey != null && Object.hasOwnProperty.call(message, "limitKey")) - writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.limitKey); - if (message.groupUid != null && Object.hasOwnProperty.call(message, "groupUid")) - writer.uint32(/* id 6, wireType 0 =*/48).uint64(message.groupUid); - if (message.splitId != null && Object.hasOwnProperty.call(message, "splitId")) - writer.uint32(/* id 7, wireType 0 =*/56).uint64(message.splitId); - if (message.tabletUid != null && Object.hasOwnProperty.call(message, "tabletUid")) - writer.uint32(/* id 8, wireType 0 =*/64).uint64(message.tabletUid); - if (message.skippedTabletUid != null && message.skippedTabletUid.length) - for (var i = 0; i < message.skippedTabletUid.length; ++i) - $root.google.spanner.v1.RoutingHint.SkippedTablet.encode(message.skippedTabletUid[i], writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim(); - if (message.clientLocation != null && Object.hasOwnProperty.call(message, "clientLocation")) - writer.uint32(/* id 10, wireType 2 =*/82).string(message.clientLocation); + if (message.id != null && Object.hasOwnProperty.call(message, "id")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.id); + if (message.readTimestamp != null && Object.hasOwnProperty.call(message, "readTimestamp")) + $root.google.protobuf.Timestamp.encode(message.readTimestamp, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.precommitToken != null && Object.hasOwnProperty.call(message, "precommitToken")) + $root.google.spanner.v1.MultiplexedSessionPrecommitToken.encode(message.precommitToken, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.cacheUpdate != null && Object.hasOwnProperty.call(message, "cacheUpdate")) + $root.google.spanner.v1.CacheUpdate.encode(message.cacheUpdate, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim(); return writer; }; /** - * Encodes the specified RoutingHint message, length delimited. Does not implicitly {@link google.spanner.v1.RoutingHint.verify|verify} messages. + * Encodes the specified Transaction message, length delimited. Does not implicitly {@link google.spanner.v1.Transaction.verify|verify} messages. * @function encodeDelimited - * @memberof google.spanner.v1.RoutingHint + * @memberof google.spanner.v1.Transaction * @static - * @param {google.spanner.v1.IRoutingHint} message RoutingHint message or plain object to encode + * @param {google.spanner.v1.ITransaction} message Transaction message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - RoutingHint.encodeDelimited = function encodeDelimited(message, writer) { + Transaction.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a RoutingHint message from the specified reader or buffer. + * Decodes a Transaction message from the specified reader or buffer. * @function decode - * @memberof google.spanner.v1.RoutingHint + * @memberof google.spanner.v1.Transaction * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.RoutingHint} RoutingHint + * @returns {google.spanner.v1.Transaction} Transaction * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - RoutingHint.decode = function decode(reader, length, error) { + Transaction.decode = function decode(reader, length, error) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.RoutingHint(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.Transaction(); while (reader.pos < end) { var tag = reader.uint32(); if (tag === error) break; switch (tag >>> 3) { case 1: { - message.operationUid = reader.uint64(); + message.id = reader.bytes(); break; } case 2: { - message.databaseId = reader.uint64(); + message.readTimestamp = $root.google.protobuf.Timestamp.decode(reader, reader.uint32()); break; } case 3: { - message.schemaGeneration = reader.bytes(); - break; - } - case 4: { - message.key = reader.bytes(); + message.precommitToken = $root.google.spanner.v1.MultiplexedSessionPrecommitToken.decode(reader, reader.uint32()); break; } case 5: { - message.limitKey = reader.bytes(); - break; - } - case 6: { - message.groupUid = reader.uint64(); - break; - } - case 7: { - message.splitId = reader.uint64(); - break; - } - case 8: { - message.tabletUid = reader.uint64(); - break; - } - case 9: { - if (!(message.skippedTabletUid && message.skippedTabletUid.length)) - message.skippedTabletUid = []; - message.skippedTabletUid.push($root.google.spanner.v1.RoutingHint.SkippedTablet.decode(reader, reader.uint32())); - break; - } - case 10: { - message.clientLocation = reader.string(); + message.cacheUpdate = $root.google.spanner.v1.CacheUpdate.decode(reader, reader.uint32()); break; } default: @@ -92474,994 +92758,708 @@ }; /** - * Decodes a RoutingHint message from the specified reader or buffer, length delimited. + * Decodes a Transaction message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.spanner.v1.RoutingHint + * @memberof google.spanner.v1.Transaction * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.RoutingHint} RoutingHint + * @returns {google.spanner.v1.Transaction} Transaction * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - RoutingHint.decodeDelimited = function decodeDelimited(reader) { + Transaction.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a RoutingHint message. + * Verifies a Transaction message. * @function verify - * @memberof google.spanner.v1.RoutingHint + * @memberof google.spanner.v1.Transaction * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - RoutingHint.verify = function verify(message) { + Transaction.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.operationUid != null && message.hasOwnProperty("operationUid")) - if (!$util.isInteger(message.operationUid) && !(message.operationUid && $util.isInteger(message.operationUid.low) && $util.isInteger(message.operationUid.high))) - return "operationUid: integer|Long expected"; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - if (!$util.isInteger(message.databaseId) && !(message.databaseId && $util.isInteger(message.databaseId.low) && $util.isInteger(message.databaseId.high))) - return "databaseId: integer|Long expected"; - if (message.schemaGeneration != null && message.hasOwnProperty("schemaGeneration")) - if (!(message.schemaGeneration && typeof message.schemaGeneration.length === "number" || $util.isString(message.schemaGeneration))) - return "schemaGeneration: buffer expected"; - if (message.key != null && message.hasOwnProperty("key")) - if (!(message.key && typeof message.key.length === "number" || $util.isString(message.key))) - return "key: buffer expected"; - if (message.limitKey != null && message.hasOwnProperty("limitKey")) - if (!(message.limitKey && typeof message.limitKey.length === "number" || $util.isString(message.limitKey))) - return "limitKey: buffer expected"; - if (message.groupUid != null && message.hasOwnProperty("groupUid")) - if (!$util.isInteger(message.groupUid) && !(message.groupUid && $util.isInteger(message.groupUid.low) && $util.isInteger(message.groupUid.high))) - return "groupUid: integer|Long expected"; - if (message.splitId != null && message.hasOwnProperty("splitId")) - if (!$util.isInteger(message.splitId) && !(message.splitId && $util.isInteger(message.splitId.low) && $util.isInteger(message.splitId.high))) - return "splitId: integer|Long expected"; - if (message.tabletUid != null && message.hasOwnProperty("tabletUid")) - if (!$util.isInteger(message.tabletUid) && !(message.tabletUid && $util.isInteger(message.tabletUid.low) && $util.isInteger(message.tabletUid.high))) - return "tabletUid: integer|Long expected"; - if (message.skippedTabletUid != null && message.hasOwnProperty("skippedTabletUid")) { - if (!Array.isArray(message.skippedTabletUid)) - return "skippedTabletUid: array expected"; - for (var i = 0; i < message.skippedTabletUid.length; ++i) { - var error = $root.google.spanner.v1.RoutingHint.SkippedTablet.verify(message.skippedTabletUid[i]); - if (error) - return "skippedTabletUid." + error; - } + if (message.id != null && message.hasOwnProperty("id")) + if (!(message.id && typeof message.id.length === "number" || $util.isString(message.id))) + return "id: buffer expected"; + if (message.readTimestamp != null && message.hasOwnProperty("readTimestamp")) { + var error = $root.google.protobuf.Timestamp.verify(message.readTimestamp); + if (error) + return "readTimestamp." + error; + } + if (message.precommitToken != null && message.hasOwnProperty("precommitToken")) { + var error = $root.google.spanner.v1.MultiplexedSessionPrecommitToken.verify(message.precommitToken); + if (error) + return "precommitToken." + error; + } + if (message.cacheUpdate != null && message.hasOwnProperty("cacheUpdate")) { + var error = $root.google.spanner.v1.CacheUpdate.verify(message.cacheUpdate); + if (error) + return "cacheUpdate." + error; } - if (message.clientLocation != null && message.hasOwnProperty("clientLocation")) - if (!$util.isString(message.clientLocation)) - return "clientLocation: string expected"; return null; }; /** - * Creates a RoutingHint message from a plain object. Also converts values to their respective internal types. + * Creates a Transaction message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.spanner.v1.RoutingHint + * @memberof google.spanner.v1.Transaction * @static * @param {Object.} object Plain object - * @returns {google.spanner.v1.RoutingHint} RoutingHint + * @returns {google.spanner.v1.Transaction} Transaction */ - RoutingHint.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.RoutingHint) + Transaction.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.Transaction) return object; - var message = new $root.google.spanner.v1.RoutingHint(); - if (object.operationUid != null) - if ($util.Long) - (message.operationUid = $util.Long.fromValue(object.operationUid)).unsigned = true; - else if (typeof object.operationUid === "string") - message.operationUid = parseInt(object.operationUid, 10); - else if (typeof object.operationUid === "number") - message.operationUid = object.operationUid; - else if (typeof object.operationUid === "object") - message.operationUid = new $util.LongBits(object.operationUid.low >>> 0, object.operationUid.high >>> 0).toNumber(true); - if (object.databaseId != null) - if ($util.Long) - (message.databaseId = $util.Long.fromValue(object.databaseId)).unsigned = true; - else if (typeof object.databaseId === "string") - message.databaseId = parseInt(object.databaseId, 10); - else if (typeof object.databaseId === "number") - message.databaseId = object.databaseId; - else if (typeof object.databaseId === "object") - message.databaseId = new $util.LongBits(object.databaseId.low >>> 0, object.databaseId.high >>> 0).toNumber(true); - if (object.schemaGeneration != null) - if (typeof object.schemaGeneration === "string") - $util.base64.decode(object.schemaGeneration, message.schemaGeneration = $util.newBuffer($util.base64.length(object.schemaGeneration)), 0); - else if (object.schemaGeneration.length >= 0) - message.schemaGeneration = object.schemaGeneration; - if (object.key != null) - if (typeof object.key === "string") - $util.base64.decode(object.key, message.key = $util.newBuffer($util.base64.length(object.key)), 0); - else if (object.key.length >= 0) - message.key = object.key; - if (object.limitKey != null) - if (typeof object.limitKey === "string") - $util.base64.decode(object.limitKey, message.limitKey = $util.newBuffer($util.base64.length(object.limitKey)), 0); - else if (object.limitKey.length >= 0) - message.limitKey = object.limitKey; - if (object.groupUid != null) - if ($util.Long) - (message.groupUid = $util.Long.fromValue(object.groupUid)).unsigned = true; - else if (typeof object.groupUid === "string") - message.groupUid = parseInt(object.groupUid, 10); - else if (typeof object.groupUid === "number") - message.groupUid = object.groupUid; - else if (typeof object.groupUid === "object") - message.groupUid = new $util.LongBits(object.groupUid.low >>> 0, object.groupUid.high >>> 0).toNumber(true); - if (object.splitId != null) - if ($util.Long) - (message.splitId = $util.Long.fromValue(object.splitId)).unsigned = true; - else if (typeof object.splitId === "string") - message.splitId = parseInt(object.splitId, 10); - else if (typeof object.splitId === "number") - message.splitId = object.splitId; - else if (typeof object.splitId === "object") - message.splitId = new $util.LongBits(object.splitId.low >>> 0, object.splitId.high >>> 0).toNumber(true); - if (object.tabletUid != null) - if ($util.Long) - (message.tabletUid = $util.Long.fromValue(object.tabletUid)).unsigned = true; - else if (typeof object.tabletUid === "string") - message.tabletUid = parseInt(object.tabletUid, 10); - else if (typeof object.tabletUid === "number") - message.tabletUid = object.tabletUid; - else if (typeof object.tabletUid === "object") - message.tabletUid = new $util.LongBits(object.tabletUid.low >>> 0, object.tabletUid.high >>> 0).toNumber(true); - if (object.skippedTabletUid) { - if (!Array.isArray(object.skippedTabletUid)) - throw TypeError(".google.spanner.v1.RoutingHint.skippedTabletUid: array expected"); - message.skippedTabletUid = []; - for (var i = 0; i < object.skippedTabletUid.length; ++i) { - if (typeof object.skippedTabletUid[i] !== "object") - throw TypeError(".google.spanner.v1.RoutingHint.skippedTabletUid: object expected"); - message.skippedTabletUid[i] = $root.google.spanner.v1.RoutingHint.SkippedTablet.fromObject(object.skippedTabletUid[i]); - } + var message = new $root.google.spanner.v1.Transaction(); + if (object.id != null) + if (typeof object.id === "string") + $util.base64.decode(object.id, message.id = $util.newBuffer($util.base64.length(object.id)), 0); + else if (object.id.length >= 0) + message.id = object.id; + if (object.readTimestamp != null) { + if (typeof object.readTimestamp !== "object") + throw TypeError(".google.spanner.v1.Transaction.readTimestamp: object expected"); + message.readTimestamp = $root.google.protobuf.Timestamp.fromObject(object.readTimestamp); + } + if (object.precommitToken != null) { + if (typeof object.precommitToken !== "object") + throw TypeError(".google.spanner.v1.Transaction.precommitToken: object expected"); + message.precommitToken = $root.google.spanner.v1.MultiplexedSessionPrecommitToken.fromObject(object.precommitToken); + } + if (object.cacheUpdate != null) { + if (typeof object.cacheUpdate !== "object") + throw TypeError(".google.spanner.v1.Transaction.cacheUpdate: object expected"); + message.cacheUpdate = $root.google.spanner.v1.CacheUpdate.fromObject(object.cacheUpdate); } - if (object.clientLocation != null) - message.clientLocation = String(object.clientLocation); return message; }; /** - * Creates a plain object from a RoutingHint message. Also converts values to other types if specified. + * Creates a plain object from a Transaction message. Also converts values to other types if specified. * @function toObject - * @memberof google.spanner.v1.RoutingHint + * @memberof google.spanner.v1.Transaction * @static - * @param {google.spanner.v1.RoutingHint} message RoutingHint + * @param {google.spanner.v1.Transaction} message Transaction * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - RoutingHint.toObject = function toObject(message, options) { + Transaction.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.skippedTabletUid = []; if (options.defaults) { - if ($util.Long) { - var long = new $util.Long(0, 0, true); - object.operationUid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.operationUid = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, true); - object.databaseId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.databaseId = options.longs === String ? "0" : 0; - if (options.bytes === String) - object.schemaGeneration = ""; - else { - object.schemaGeneration = []; - if (options.bytes !== Array) - object.schemaGeneration = $util.newBuffer(object.schemaGeneration); - } - if (options.bytes === String) - object.key = ""; - else { - object.key = []; - if (options.bytes !== Array) - object.key = $util.newBuffer(object.key); - } if (options.bytes === String) - object.limitKey = ""; + object.id = ""; else { - object.limitKey = []; + object.id = []; if (options.bytes !== Array) - object.limitKey = $util.newBuffer(object.limitKey); + object.id = $util.newBuffer(object.id); } - if ($util.Long) { - var long = new $util.Long(0, 0, true); - object.groupUid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.groupUid = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, true); - object.splitId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.splitId = options.longs === String ? "0" : 0; - if ($util.Long) { - var long = new $util.Long(0, 0, true); - object.tabletUid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.tabletUid = options.longs === String ? "0" : 0; - object.clientLocation = ""; - } - if (message.operationUid != null && message.hasOwnProperty("operationUid")) - if (typeof message.operationUid === "number") - object.operationUid = options.longs === String ? String(message.operationUid) : message.operationUid; - else - object.operationUid = options.longs === String ? $util.Long.prototype.toString.call(message.operationUid) : options.longs === Number ? new $util.LongBits(message.operationUid.low >>> 0, message.operationUid.high >>> 0).toNumber(true) : message.operationUid; - if (message.databaseId != null && message.hasOwnProperty("databaseId")) - if (typeof message.databaseId === "number") - object.databaseId = options.longs === String ? String(message.databaseId) : message.databaseId; - else - object.databaseId = options.longs === String ? $util.Long.prototype.toString.call(message.databaseId) : options.longs === Number ? new $util.LongBits(message.databaseId.low >>> 0, message.databaseId.high >>> 0).toNumber(true) : message.databaseId; - if (message.schemaGeneration != null && message.hasOwnProperty("schemaGeneration")) - object.schemaGeneration = options.bytes === String ? $util.base64.encode(message.schemaGeneration, 0, message.schemaGeneration.length) : options.bytes === Array ? Array.prototype.slice.call(message.schemaGeneration) : message.schemaGeneration; - if (message.key != null && message.hasOwnProperty("key")) - object.key = options.bytes === String ? $util.base64.encode(message.key, 0, message.key.length) : options.bytes === Array ? Array.prototype.slice.call(message.key) : message.key; - if (message.limitKey != null && message.hasOwnProperty("limitKey")) - object.limitKey = options.bytes === String ? $util.base64.encode(message.limitKey, 0, message.limitKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.limitKey) : message.limitKey; - if (message.groupUid != null && message.hasOwnProperty("groupUid")) - if (typeof message.groupUid === "number") - object.groupUid = options.longs === String ? String(message.groupUid) : message.groupUid; - else - object.groupUid = options.longs === String ? $util.Long.prototype.toString.call(message.groupUid) : options.longs === Number ? new $util.LongBits(message.groupUid.low >>> 0, message.groupUid.high >>> 0).toNumber(true) : message.groupUid; - if (message.splitId != null && message.hasOwnProperty("splitId")) - if (typeof message.splitId === "number") - object.splitId = options.longs === String ? String(message.splitId) : message.splitId; - else - object.splitId = options.longs === String ? $util.Long.prototype.toString.call(message.splitId) : options.longs === Number ? new $util.LongBits(message.splitId.low >>> 0, message.splitId.high >>> 0).toNumber(true) : message.splitId; - if (message.tabletUid != null && message.hasOwnProperty("tabletUid")) - if (typeof message.tabletUid === "number") - object.tabletUid = options.longs === String ? String(message.tabletUid) : message.tabletUid; - else - object.tabletUid = options.longs === String ? $util.Long.prototype.toString.call(message.tabletUid) : options.longs === Number ? new $util.LongBits(message.tabletUid.low >>> 0, message.tabletUid.high >>> 0).toNumber(true) : message.tabletUid; - if (message.skippedTabletUid && message.skippedTabletUid.length) { - object.skippedTabletUid = []; - for (var j = 0; j < message.skippedTabletUid.length; ++j) - object.skippedTabletUid[j] = $root.google.spanner.v1.RoutingHint.SkippedTablet.toObject(message.skippedTabletUid[j], options); + object.readTimestamp = null; + object.precommitToken = null; + object.cacheUpdate = null; } - if (message.clientLocation != null && message.hasOwnProperty("clientLocation")) - object.clientLocation = message.clientLocation; + if (message.id != null && message.hasOwnProperty("id")) + object.id = options.bytes === String ? $util.base64.encode(message.id, 0, message.id.length) : options.bytes === Array ? Array.prototype.slice.call(message.id) : message.id; + if (message.readTimestamp != null && message.hasOwnProperty("readTimestamp")) + object.readTimestamp = $root.google.protobuf.Timestamp.toObject(message.readTimestamp, options); + if (message.precommitToken != null && message.hasOwnProperty("precommitToken")) + object.precommitToken = $root.google.spanner.v1.MultiplexedSessionPrecommitToken.toObject(message.precommitToken, options); + if (message.cacheUpdate != null && message.hasOwnProperty("cacheUpdate")) + object.cacheUpdate = $root.google.spanner.v1.CacheUpdate.toObject(message.cacheUpdate, options); return object; }; /** - * Converts this RoutingHint to JSON. - * @function toJSON - * @memberof google.spanner.v1.RoutingHint - * @instance - * @returns {Object.} JSON object - */ - RoutingHint.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for RoutingHint - * @function getTypeUrl - * @memberof google.spanner.v1.RoutingHint - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - RoutingHint.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/google.spanner.v1.RoutingHint"; - }; - - RoutingHint.SkippedTablet = (function() { - - /** - * Properties of a SkippedTablet. - * @memberof google.spanner.v1.RoutingHint - * @interface ISkippedTablet - * @property {number|Long|null} [tabletUid] SkippedTablet tabletUid - * @property {Uint8Array|null} [incarnation] SkippedTablet incarnation - */ - - /** - * Constructs a new SkippedTablet. - * @memberof google.spanner.v1.RoutingHint - * @classdesc Represents a SkippedTablet. - * @implements ISkippedTablet - * @constructor - * @param {google.spanner.v1.RoutingHint.ISkippedTablet=} [properties] Properties to set - */ - function SkippedTablet(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * SkippedTablet tabletUid. - * @member {number|Long} tabletUid - * @memberof google.spanner.v1.RoutingHint.SkippedTablet - * @instance - */ - SkippedTablet.prototype.tabletUid = $util.Long ? $util.Long.fromBits(0,0,true) : 0; - - /** - * SkippedTablet incarnation. - * @member {Uint8Array} incarnation - * @memberof google.spanner.v1.RoutingHint.SkippedTablet - * @instance - */ - SkippedTablet.prototype.incarnation = $util.newBuffer([]); - - /** - * Creates a new SkippedTablet instance using the specified properties. - * @function create - * @memberof google.spanner.v1.RoutingHint.SkippedTablet - * @static - * @param {google.spanner.v1.RoutingHint.ISkippedTablet=} [properties] Properties to set - * @returns {google.spanner.v1.RoutingHint.SkippedTablet} SkippedTablet instance - */ - SkippedTablet.create = function create(properties) { - return new SkippedTablet(properties); - }; - - /** - * Encodes the specified SkippedTablet message. Does not implicitly {@link google.spanner.v1.RoutingHint.SkippedTablet.verify|verify} messages. - * @function encode - * @memberof google.spanner.v1.RoutingHint.SkippedTablet - * @static - * @param {google.spanner.v1.RoutingHint.ISkippedTablet} message SkippedTablet message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SkippedTablet.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.tabletUid != null && Object.hasOwnProperty.call(message, "tabletUid")) - writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.tabletUid); - if (message.incarnation != null && Object.hasOwnProperty.call(message, "incarnation")) - writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.incarnation); - return writer; - }; - - /** - * Encodes the specified SkippedTablet message, length delimited. Does not implicitly {@link google.spanner.v1.RoutingHint.SkippedTablet.verify|verify} messages. - * @function encodeDelimited - * @memberof google.spanner.v1.RoutingHint.SkippedTablet - * @static - * @param {google.spanner.v1.RoutingHint.ISkippedTablet} message SkippedTablet message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - SkippedTablet.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a SkippedTablet message from the specified reader or buffer. - * @function decode - * @memberof google.spanner.v1.RoutingHint.SkippedTablet - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.RoutingHint.SkippedTablet} SkippedTablet - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SkippedTablet.decode = function decode(reader, length, error) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.RoutingHint.SkippedTablet(); - while (reader.pos < end) { - var tag = reader.uint32(); - if (tag === error) - break; - switch (tag >>> 3) { - case 1: { - message.tabletUid = reader.uint64(); - break; - } - case 2: { - message.incarnation = reader.bytes(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; + * Converts this Transaction to JSON. + * @function toJSON + * @memberof google.spanner.v1.Transaction + * @instance + * @returns {Object.} JSON object + */ + Transaction.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * Decodes a SkippedTablet message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.spanner.v1.RoutingHint.SkippedTablet - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.RoutingHint.SkippedTablet} SkippedTablet - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - SkippedTablet.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Gets the default type url for Transaction + * @function getTypeUrl + * @memberof google.spanner.v1.Transaction + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + Transaction.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.spanner.v1.Transaction"; + }; - /** - * Verifies a SkippedTablet message. - * @function verify - * @memberof google.spanner.v1.RoutingHint.SkippedTablet - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - SkippedTablet.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.tabletUid != null && message.hasOwnProperty("tabletUid")) - if (!$util.isInteger(message.tabletUid) && !(message.tabletUid && $util.isInteger(message.tabletUid.low) && $util.isInteger(message.tabletUid.high))) - return "tabletUid: integer|Long expected"; - if (message.incarnation != null && message.hasOwnProperty("incarnation")) - if (!(message.incarnation && typeof message.incarnation.length === "number" || $util.isString(message.incarnation))) - return "incarnation: buffer expected"; - return null; - }; + return Transaction; + })(); - /** - * Creates a SkippedTablet message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.spanner.v1.RoutingHint.SkippedTablet - * @static - * @param {Object.} object Plain object - * @returns {google.spanner.v1.RoutingHint.SkippedTablet} SkippedTablet - */ - SkippedTablet.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.RoutingHint.SkippedTablet) - return object; - var message = new $root.google.spanner.v1.RoutingHint.SkippedTablet(); - if (object.tabletUid != null) - if ($util.Long) - (message.tabletUid = $util.Long.fromValue(object.tabletUid)).unsigned = true; - else if (typeof object.tabletUid === "string") - message.tabletUid = parseInt(object.tabletUid, 10); - else if (typeof object.tabletUid === "number") - message.tabletUid = object.tabletUid; - else if (typeof object.tabletUid === "object") - message.tabletUid = new $util.LongBits(object.tabletUid.low >>> 0, object.tabletUid.high >>> 0).toNumber(true); - if (object.incarnation != null) - if (typeof object.incarnation === "string") - $util.base64.decode(object.incarnation, message.incarnation = $util.newBuffer($util.base64.length(object.incarnation)), 0); - else if (object.incarnation.length >= 0) - message.incarnation = object.incarnation; - return message; - }; + v1.TransactionSelector = (function() { - /** - * Creates a plain object from a SkippedTablet message. Also converts values to other types if specified. - * @function toObject - * @memberof google.spanner.v1.RoutingHint.SkippedTablet - * @static - * @param {google.spanner.v1.RoutingHint.SkippedTablet} message SkippedTablet - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - SkippedTablet.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - if ($util.Long) { - var long = new $util.Long(0, 0, true); - object.tabletUid = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; - } else - object.tabletUid = options.longs === String ? "0" : 0; - if (options.bytes === String) - object.incarnation = ""; - else { - object.incarnation = []; - if (options.bytes !== Array) - object.incarnation = $util.newBuffer(object.incarnation); - } - } - if (message.tabletUid != null && message.hasOwnProperty("tabletUid")) - if (typeof message.tabletUid === "number") - object.tabletUid = options.longs === String ? String(message.tabletUid) : message.tabletUid; - else - object.tabletUid = options.longs === String ? $util.Long.prototype.toString.call(message.tabletUid) : options.longs === Number ? new $util.LongBits(message.tabletUid.low >>> 0, message.tabletUid.high >>> 0).toNumber(true) : message.tabletUid; - if (message.incarnation != null && message.hasOwnProperty("incarnation")) - object.incarnation = options.bytes === String ? $util.base64.encode(message.incarnation, 0, message.incarnation.length) : options.bytes === Array ? Array.prototype.slice.call(message.incarnation) : message.incarnation; - return object; - }; + /** + * Properties of a TransactionSelector. + * @memberof google.spanner.v1 + * @interface ITransactionSelector + * @property {google.spanner.v1.ITransactionOptions|null} [singleUse] TransactionSelector singleUse + * @property {Uint8Array|null} [id] TransactionSelector id + * @property {google.spanner.v1.ITransactionOptions|null} [begin] TransactionSelector begin + */ - /** - * Converts this SkippedTablet to JSON. - * @function toJSON - * @memberof google.spanner.v1.RoutingHint.SkippedTablet - * @instance - * @returns {Object.} JSON object - */ - SkippedTablet.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; + /** + * Constructs a new TransactionSelector. + * @memberof google.spanner.v1 + * @classdesc Represents a TransactionSelector. + * @implements ITransactionSelector + * @constructor + * @param {google.spanner.v1.ITransactionSelector=} [properties] Properties to set + */ + function TransactionSelector(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } - /** - * Gets the default type url for SkippedTablet - * @function getTypeUrl - * @memberof google.spanner.v1.RoutingHint.SkippedTablet - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - SkippedTablet.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/google.spanner.v1.RoutingHint.SkippedTablet"; - }; + /** + * TransactionSelector singleUse. + * @member {google.spanner.v1.ITransactionOptions|null|undefined} singleUse + * @memberof google.spanner.v1.TransactionSelector + * @instance + */ + TransactionSelector.prototype.singleUse = null; - return SkippedTablet; - })(); + /** + * TransactionSelector id. + * @member {Uint8Array|null|undefined} id + * @memberof google.spanner.v1.TransactionSelector + * @instance + */ + TransactionSelector.prototype.id = null; - return RoutingHint; - })(); + /** + * TransactionSelector begin. + * @member {google.spanner.v1.ITransactionOptions|null|undefined} begin + * @memberof google.spanner.v1.TransactionSelector + * @instance + */ + TransactionSelector.prototype.begin = null; - v1.Type = (function() { + // OneOf field names bound to virtual getters and setters + var $oneOfFields; /** - * Properties of a Type. - * @memberof google.spanner.v1 - * @interface IType - * @property {google.spanner.v1.TypeCode|null} [code] Type code - * @property {google.spanner.v1.IType|null} [arrayElementType] Type arrayElementType - * @property {google.spanner.v1.IStructType|null} [structType] Type structType - * @property {google.spanner.v1.TypeAnnotationCode|null} [typeAnnotation] Type typeAnnotation - * @property {string|null} [protoTypeFqn] Type protoTypeFqn + * TransactionSelector selector. + * @member {"singleUse"|"id"|"begin"|undefined} selector + * @memberof google.spanner.v1.TransactionSelector + * @instance + */ + Object.defineProperty(TransactionSelector.prototype, "selector", { + get: $util.oneOfGetter($oneOfFields = ["singleUse", "id", "begin"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new TransactionSelector instance using the specified properties. + * @function create + * @memberof google.spanner.v1.TransactionSelector + * @static + * @param {google.spanner.v1.ITransactionSelector=} [properties] Properties to set + * @returns {google.spanner.v1.TransactionSelector} TransactionSelector instance + */ + TransactionSelector.create = function create(properties) { + return new TransactionSelector(properties); + }; + + /** + * Encodes the specified TransactionSelector message. Does not implicitly {@link google.spanner.v1.TransactionSelector.verify|verify} messages. + * @function encode + * @memberof google.spanner.v1.TransactionSelector + * @static + * @param {google.spanner.v1.ITransactionSelector} message TransactionSelector message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + TransactionSelector.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.singleUse != null && Object.hasOwnProperty.call(message, "singleUse")) + $root.google.spanner.v1.TransactionOptions.encode(message.singleUse, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.id != null && Object.hasOwnProperty.call(message, "id")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.id); + if (message.begin != null && Object.hasOwnProperty.call(message, "begin")) + $root.google.spanner.v1.TransactionOptions.encode(message.begin, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified TransactionSelector message, length delimited. Does not implicitly {@link google.spanner.v1.TransactionSelector.verify|verify} messages. + * @function encodeDelimited + * @memberof google.spanner.v1.TransactionSelector + * @static + * @param {google.spanner.v1.ITransactionSelector} message TransactionSelector message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer */ + TransactionSelector.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; /** - * Constructs a new Type. - * @memberof google.spanner.v1 - * @classdesc Represents a Type. - * @implements IType - * @constructor - * @param {google.spanner.v1.IType=} [properties] Properties to set + * Decodes a TransactionSelector message from the specified reader or buffer. + * @function decode + * @memberof google.spanner.v1.TransactionSelector + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.spanner.v1.TransactionSelector} TransactionSelector + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - function Type(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } + TransactionSelector.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.TransactionSelector(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.singleUse = $root.google.spanner.v1.TransactionOptions.decode(reader, reader.uint32()); + break; + } + case 2: { + message.id = reader.bytes(); + break; + } + case 3: { + message.begin = $root.google.spanner.v1.TransactionOptions.decode(reader, reader.uint32()); + break; + } + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; /** - * Type code. - * @member {google.spanner.v1.TypeCode} code - * @memberof google.spanner.v1.Type - * @instance + * Decodes a TransactionSelector message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.spanner.v1.TransactionSelector + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.spanner.v1.TransactionSelector} TransactionSelector + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - Type.prototype.code = 0; + TransactionSelector.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; /** - * Type arrayElementType. - * @member {google.spanner.v1.IType|null|undefined} arrayElementType - * @memberof google.spanner.v1.Type - * @instance + * Verifies a TransactionSelector message. + * @function verify + * @memberof google.spanner.v1.TransactionSelector + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - Type.prototype.arrayElementType = null; + TransactionSelector.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.singleUse != null && message.hasOwnProperty("singleUse")) { + properties.selector = 1; + { + var error = $root.google.spanner.v1.TransactionOptions.verify(message.singleUse); + if (error) + return "singleUse." + error; + } + } + if (message.id != null && message.hasOwnProperty("id")) { + if (properties.selector === 1) + return "selector: multiple values"; + properties.selector = 1; + if (!(message.id && typeof message.id.length === "number" || $util.isString(message.id))) + return "id: buffer expected"; + } + if (message.begin != null && message.hasOwnProperty("begin")) { + if (properties.selector === 1) + return "selector: multiple values"; + properties.selector = 1; + { + var error = $root.google.spanner.v1.TransactionOptions.verify(message.begin); + if (error) + return "begin." + error; + } + } + return null; + }; /** - * Type structType. - * @member {google.spanner.v1.IStructType|null|undefined} structType - * @memberof google.spanner.v1.Type - * @instance + * Creates a TransactionSelector message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.spanner.v1.TransactionSelector + * @static + * @param {Object.} object Plain object + * @returns {google.spanner.v1.TransactionSelector} TransactionSelector */ - Type.prototype.structType = null; + TransactionSelector.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.TransactionSelector) + return object; + var message = new $root.google.spanner.v1.TransactionSelector(); + if (object.singleUse != null) { + if (typeof object.singleUse !== "object") + throw TypeError(".google.spanner.v1.TransactionSelector.singleUse: object expected"); + message.singleUse = $root.google.spanner.v1.TransactionOptions.fromObject(object.singleUse); + } + if (object.id != null) + if (typeof object.id === "string") + $util.base64.decode(object.id, message.id = $util.newBuffer($util.base64.length(object.id)), 0); + else if (object.id.length >= 0) + message.id = object.id; + if (object.begin != null) { + if (typeof object.begin !== "object") + throw TypeError(".google.spanner.v1.TransactionSelector.begin: object expected"); + message.begin = $root.google.spanner.v1.TransactionOptions.fromObject(object.begin); + } + return message; + }; /** - * Type typeAnnotation. - * @member {google.spanner.v1.TypeAnnotationCode} typeAnnotation - * @memberof google.spanner.v1.Type - * @instance + * Creates a plain object from a TransactionSelector message. Also converts values to other types if specified. + * @function toObject + * @memberof google.spanner.v1.TransactionSelector + * @static + * @param {google.spanner.v1.TransactionSelector} message TransactionSelector + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object */ - Type.prototype.typeAnnotation = 0; + TransactionSelector.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (message.singleUse != null && message.hasOwnProperty("singleUse")) { + object.singleUse = $root.google.spanner.v1.TransactionOptions.toObject(message.singleUse, options); + if (options.oneofs) + object.selector = "singleUse"; + } + if (message.id != null && message.hasOwnProperty("id")) { + object.id = options.bytes === String ? $util.base64.encode(message.id, 0, message.id.length) : options.bytes === Array ? Array.prototype.slice.call(message.id) : message.id; + if (options.oneofs) + object.selector = "id"; + } + if (message.begin != null && message.hasOwnProperty("begin")) { + object.begin = $root.google.spanner.v1.TransactionOptions.toObject(message.begin, options); + if (options.oneofs) + object.selector = "begin"; + } + return object; + }; /** - * Type protoTypeFqn. - * @member {string} protoTypeFqn - * @memberof google.spanner.v1.Type + * Converts this TransactionSelector to JSON. + * @function toJSON + * @memberof google.spanner.v1.TransactionSelector * @instance + * @returns {Object.} JSON object */ - Type.prototype.protoTypeFqn = ""; + TransactionSelector.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; /** - * Creates a new Type instance using the specified properties. - * @function create - * @memberof google.spanner.v1.Type + * Gets the default type url for TransactionSelector + * @function getTypeUrl + * @memberof google.spanner.v1.TransactionSelector * @static - * @param {google.spanner.v1.IType=} [properties] Properties to set - * @returns {google.spanner.v1.Type} Type instance + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url */ - Type.create = function create(properties) { - return new Type(properties); + TransactionSelector.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.spanner.v1.TransactionSelector"; }; + return TransactionSelector; + })(); + + v1.MultiplexedSessionPrecommitToken = (function() { + /** - * Encodes the specified Type message. Does not implicitly {@link google.spanner.v1.Type.verify|verify} messages. - * @function encode - * @memberof google.spanner.v1.Type - * @static - * @param {google.spanner.v1.IType} message Type message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer + * Properties of a MultiplexedSessionPrecommitToken. + * @memberof google.spanner.v1 + * @interface IMultiplexedSessionPrecommitToken + * @property {Uint8Array|null} [precommitToken] MultiplexedSessionPrecommitToken precommitToken + * @property {number|null} [seqNum] MultiplexedSessionPrecommitToken seqNum */ - Type.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.code != null && Object.hasOwnProperty.call(message, "code")) - writer.uint32(/* id 1, wireType 0 =*/8).int32(message.code); - if (message.arrayElementType != null && Object.hasOwnProperty.call(message, "arrayElementType")) - $root.google.spanner.v1.Type.encode(message.arrayElementType, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - if (message.structType != null && Object.hasOwnProperty.call(message, "structType")) - $root.google.spanner.v1.StructType.encode(message.structType, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); - if (message.typeAnnotation != null && Object.hasOwnProperty.call(message, "typeAnnotation")) - writer.uint32(/* id 4, wireType 0 =*/32).int32(message.typeAnnotation); - if (message.protoTypeFqn != null && Object.hasOwnProperty.call(message, "protoTypeFqn")) - writer.uint32(/* id 5, wireType 2 =*/42).string(message.protoTypeFqn); - return writer; - }; /** - * Encodes the specified Type message, length delimited. Does not implicitly {@link google.spanner.v1.Type.verify|verify} messages. - * @function encodeDelimited - * @memberof google.spanner.v1.Type - * @static - * @param {google.spanner.v1.IType} message Type message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer + * Constructs a new MultiplexedSessionPrecommitToken. + * @memberof google.spanner.v1 + * @classdesc Represents a MultiplexedSessionPrecommitToken. + * @implements IMultiplexedSessionPrecommitToken + * @constructor + * @param {google.spanner.v1.IMultiplexedSessionPrecommitToken=} [properties] Properties to set + */ + function MultiplexedSessionPrecommitToken(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * MultiplexedSessionPrecommitToken precommitToken. + * @member {Uint8Array} precommitToken + * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken + * @instance */ - Type.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + MultiplexedSessionPrecommitToken.prototype.precommitToken = $util.newBuffer([]); /** - * Decodes a Type message from the specified reader or buffer. - * @function decode - * @memberof google.spanner.v1.Type - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.Type} Type - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing + * MultiplexedSessionPrecommitToken seqNum. + * @member {number} seqNum + * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken + * @instance */ - Type.decode = function decode(reader, length, error) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.Type(); - while (reader.pos < end) { - var tag = reader.uint32(); - if (tag === error) - break; - switch (tag >>> 3) { - case 1: { - message.code = reader.int32(); - break; - } - case 2: { - message.arrayElementType = $root.google.spanner.v1.Type.decode(reader, reader.uint32()); - break; - } - case 3: { - message.structType = $root.google.spanner.v1.StructType.decode(reader, reader.uint32()); - break; - } - case 4: { - message.typeAnnotation = reader.int32(); - break; - } - case 5: { - message.protoTypeFqn = reader.string(); - break; - } - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; + MultiplexedSessionPrecommitToken.prototype.seqNum = 0; /** - * Decodes a Type message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.spanner.v1.Type + * Creates a new MultiplexedSessionPrecommitToken instance using the specified properties. + * @function create + * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.Type} Type - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing + * @param {google.spanner.v1.IMultiplexedSessionPrecommitToken=} [properties] Properties to set + * @returns {google.spanner.v1.MultiplexedSessionPrecommitToken} MultiplexedSessionPrecommitToken instance */ - Type.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); + MultiplexedSessionPrecommitToken.create = function create(properties) { + return new MultiplexedSessionPrecommitToken(properties); }; /** - * Verifies a Type message. - * @function verify - * @memberof google.spanner.v1.Type + * Encodes the specified MultiplexedSessionPrecommitToken message. Does not implicitly {@link google.spanner.v1.MultiplexedSessionPrecommitToken.verify|verify} messages. + * @function encode + * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not + * @param {google.spanner.v1.IMultiplexedSessionPrecommitToken} message MultiplexedSessionPrecommitToken message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer */ - Type.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.code != null && message.hasOwnProperty("code")) - switch (message.code) { - default: - return "code: enum value expected"; - case 0: - case 1: - case 2: - case 3: - case 15: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - case 13: - case 14: - case 16: - case 17: - break; - } - if (message.arrayElementType != null && message.hasOwnProperty("arrayElementType")) { - var error = $root.google.spanner.v1.Type.verify(message.arrayElementType); - if (error) - return "arrayElementType." + error; - } - if (message.structType != null && message.hasOwnProperty("structType")) { - var error = $root.google.spanner.v1.StructType.verify(message.structType); - if (error) - return "structType." + error; - } - if (message.typeAnnotation != null && message.hasOwnProperty("typeAnnotation")) - switch (message.typeAnnotation) { - default: - return "typeAnnotation: enum value expected"; - case 0: - case 2: - case 3: - case 4: - break; - } - if (message.protoTypeFqn != null && message.hasOwnProperty("protoTypeFqn")) - if (!$util.isString(message.protoTypeFqn)) - return "protoTypeFqn: string expected"; - return null; + MultiplexedSessionPrecommitToken.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.precommitToken != null && Object.hasOwnProperty.call(message, "precommitToken")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.precommitToken); + if (message.seqNum != null && Object.hasOwnProperty.call(message, "seqNum")) + writer.uint32(/* id 2, wireType 0 =*/16).int32(message.seqNum); + return writer; }; /** - * Creates a Type message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.spanner.v1.Type + * Encodes the specified MultiplexedSessionPrecommitToken message, length delimited. Does not implicitly {@link google.spanner.v1.MultiplexedSessionPrecommitToken.verify|verify} messages. + * @function encodeDelimited + * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken * @static - * @param {Object.} object Plain object - * @returns {google.spanner.v1.Type} Type + * @param {google.spanner.v1.IMultiplexedSessionPrecommitToken} message MultiplexedSessionPrecommitToken message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer */ - Type.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.Type) - return object; - var message = new $root.google.spanner.v1.Type(); - switch (object.code) { - default: - if (typeof object.code === "number") { - message.code = object.code; - break; - } - break; - case "TYPE_CODE_UNSPECIFIED": - case 0: - message.code = 0; - break; - case "BOOL": - case 1: - message.code = 1; - break; - case "INT64": - case 2: - message.code = 2; - break; - case "FLOAT64": - case 3: - message.code = 3; - break; - case "FLOAT32": - case 15: - message.code = 15; - break; - case "TIMESTAMP": - case 4: - message.code = 4; - break; - case "DATE": - case 5: - message.code = 5; - break; - case "STRING": - case 6: - message.code = 6; - break; - case "BYTES": - case 7: - message.code = 7; - break; - case "ARRAY": - case 8: - message.code = 8; - break; - case "STRUCT": - case 9: - message.code = 9; - break; - case "NUMERIC": - case 10: - message.code = 10; - break; - case "JSON": - case 11: - message.code = 11; - break; - case "PROTO": - case 13: - message.code = 13; - break; - case "ENUM": - case 14: - message.code = 14; - break; - case "INTERVAL": - case 16: - message.code = 16; - break; - case "UUID": - case 17: - message.code = 17; - break; - } - if (object.arrayElementType != null) { - if (typeof object.arrayElementType !== "object") - throw TypeError(".google.spanner.v1.Type.arrayElementType: object expected"); - message.arrayElementType = $root.google.spanner.v1.Type.fromObject(object.arrayElementType); - } - if (object.structType != null) { - if (typeof object.structType !== "object") - throw TypeError(".google.spanner.v1.Type.structType: object expected"); - message.structType = $root.google.spanner.v1.StructType.fromObject(object.structType); - } - switch (object.typeAnnotation) { - default: - if (typeof object.typeAnnotation === "number") { - message.typeAnnotation = object.typeAnnotation; + MultiplexedSessionPrecommitToken.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a MultiplexedSessionPrecommitToken message from the specified reader or buffer. + * @function decode + * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.spanner.v1.MultiplexedSessionPrecommitToken} MultiplexedSessionPrecommitToken + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MultiplexedSessionPrecommitToken.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.MultiplexedSessionPrecommitToken(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + message.precommitToken = reader.bytes(); + break; + } + case 2: { + message.seqNum = reader.int32(); + break; + } + default: + reader.skipType(tag & 7); break; } - break; - case "TYPE_ANNOTATION_CODE_UNSPECIFIED": - case 0: - message.typeAnnotation = 0; - break; - case "PG_NUMERIC": - case 2: - message.typeAnnotation = 2; - break; - case "PG_JSONB": - case 3: - message.typeAnnotation = 3; - break; - case "PG_OID": - case 4: - message.typeAnnotation = 4; - break; } - if (object.protoTypeFqn != null) - message.protoTypeFqn = String(object.protoTypeFqn); return message; }; /** - * Creates a plain object from a Type message. Also converts values to other types if specified. + * Decodes a MultiplexedSessionPrecommitToken message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.spanner.v1.MultiplexedSessionPrecommitToken} MultiplexedSessionPrecommitToken + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + MultiplexedSessionPrecommitToken.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a MultiplexedSessionPrecommitToken message. + * @function verify + * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + MultiplexedSessionPrecommitToken.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.precommitToken != null && message.hasOwnProperty("precommitToken")) + if (!(message.precommitToken && typeof message.precommitToken.length === "number" || $util.isString(message.precommitToken))) + return "precommitToken: buffer expected"; + if (message.seqNum != null && message.hasOwnProperty("seqNum")) + if (!$util.isInteger(message.seqNum)) + return "seqNum: integer expected"; + return null; + }; + + /** + * Creates a MultiplexedSessionPrecommitToken message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken + * @static + * @param {Object.} object Plain object + * @returns {google.spanner.v1.MultiplexedSessionPrecommitToken} MultiplexedSessionPrecommitToken + */ + MultiplexedSessionPrecommitToken.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.MultiplexedSessionPrecommitToken) + return object; + var message = new $root.google.spanner.v1.MultiplexedSessionPrecommitToken(); + if (object.precommitToken != null) + if (typeof object.precommitToken === "string") + $util.base64.decode(object.precommitToken, message.precommitToken = $util.newBuffer($util.base64.length(object.precommitToken)), 0); + else if (object.precommitToken.length >= 0) + message.precommitToken = object.precommitToken; + if (object.seqNum != null) + message.seqNum = object.seqNum | 0; + return message; + }; + + /** + * Creates a plain object from a MultiplexedSessionPrecommitToken message. Also converts values to other types if specified. * @function toObject - * @memberof google.spanner.v1.Type + * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken * @static - * @param {google.spanner.v1.Type} message Type + * @param {google.spanner.v1.MultiplexedSessionPrecommitToken} message MultiplexedSessionPrecommitToken * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - Type.toObject = function toObject(message, options) { + MultiplexedSessionPrecommitToken.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; if (options.defaults) { - object.code = options.enums === String ? "TYPE_CODE_UNSPECIFIED" : 0; - object.arrayElementType = null; - object.structType = null; - object.typeAnnotation = options.enums === String ? "TYPE_ANNOTATION_CODE_UNSPECIFIED" : 0; - object.protoTypeFqn = ""; + if (options.bytes === String) + object.precommitToken = ""; + else { + object.precommitToken = []; + if (options.bytes !== Array) + object.precommitToken = $util.newBuffer(object.precommitToken); + } + object.seqNum = 0; } - if (message.code != null && message.hasOwnProperty("code")) - object.code = options.enums === String ? $root.google.spanner.v1.TypeCode[message.code] === undefined ? message.code : $root.google.spanner.v1.TypeCode[message.code] : message.code; - if (message.arrayElementType != null && message.hasOwnProperty("arrayElementType")) - object.arrayElementType = $root.google.spanner.v1.Type.toObject(message.arrayElementType, options); - if (message.structType != null && message.hasOwnProperty("structType")) - object.structType = $root.google.spanner.v1.StructType.toObject(message.structType, options); - if (message.typeAnnotation != null && message.hasOwnProperty("typeAnnotation")) - object.typeAnnotation = options.enums === String ? $root.google.spanner.v1.TypeAnnotationCode[message.typeAnnotation] === undefined ? message.typeAnnotation : $root.google.spanner.v1.TypeAnnotationCode[message.typeAnnotation] : message.typeAnnotation; - if (message.protoTypeFqn != null && message.hasOwnProperty("protoTypeFqn")) - object.protoTypeFqn = message.protoTypeFqn; + if (message.precommitToken != null && message.hasOwnProperty("precommitToken")) + object.precommitToken = options.bytes === String ? $util.base64.encode(message.precommitToken, 0, message.precommitToken.length) : options.bytes === Array ? Array.prototype.slice.call(message.precommitToken) : message.precommitToken; + if (message.seqNum != null && message.hasOwnProperty("seqNum")) + object.seqNum = message.seqNum; return object; }; /** - * Converts this Type to JSON. + * Converts this MultiplexedSessionPrecommitToken to JSON. * @function toJSON - * @memberof google.spanner.v1.Type + * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken * @instance * @returns {Object.} JSON object */ - Type.prototype.toJSON = function toJSON() { + MultiplexedSessionPrecommitToken.prototype.toJSON = function toJSON() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; /** - * Gets the default type url for Type + * Gets the default type url for MultiplexedSessionPrecommitToken * @function getTypeUrl - * @memberof google.spanner.v1.Type + * @memberof google.spanner.v1.MultiplexedSessionPrecommitToken * @static * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") * @returns {string} The default type url */ - Type.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + MultiplexedSessionPrecommitToken.getTypeUrl = function getTypeUrl(typeUrlPrefix) { if (typeUrlPrefix === undefined) { typeUrlPrefix = "type.googleapis.com"; } - return typeUrlPrefix + "/google.spanner.v1.Type"; + return typeUrlPrefix + "/google.spanner.v1.MultiplexedSessionPrecommitToken"; }; - return Type; + return MultiplexedSessionPrecommitToken; })(); - v1.StructType = (function() { + v1.KeyRange = (function() { /** - * Properties of a StructType. + * Properties of a KeyRange. * @memberof google.spanner.v1 - * @interface IStructType - * @property {Array.|null} [fields] StructType fields + * @interface IKeyRange + * @property {google.protobuf.IListValue|null} [startClosed] KeyRange startClosed + * @property {google.protobuf.IListValue|null} [startOpen] KeyRange startOpen + * @property {google.protobuf.IListValue|null} [endClosed] KeyRange endClosed + * @property {google.protobuf.IListValue|null} [endOpen] KeyRange endOpen */ /** - * Constructs a new StructType. + * Constructs a new KeyRange. * @memberof google.spanner.v1 - * @classdesc Represents a StructType. - * @implements IStructType + * @classdesc Represents a KeyRange. + * @implements IKeyRange * @constructor - * @param {google.spanner.v1.IStructType=} [properties] Properties to set + * @param {google.spanner.v1.IKeyRange=} [properties] Properties to set */ - function StructType(properties) { - this.fields = []; + function KeyRange(properties) { if (properties) for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) @@ -93469,80 +93467,144 @@ } /** - * StructType fields. - * @member {Array.} fields - * @memberof google.spanner.v1.StructType + * KeyRange startClosed. + * @member {google.protobuf.IListValue|null|undefined} startClosed + * @memberof google.spanner.v1.KeyRange * @instance */ - StructType.prototype.fields = $util.emptyArray; + KeyRange.prototype.startClosed = null; /** - * Creates a new StructType instance using the specified properties. + * KeyRange startOpen. + * @member {google.protobuf.IListValue|null|undefined} startOpen + * @memberof google.spanner.v1.KeyRange + * @instance + */ + KeyRange.prototype.startOpen = null; + + /** + * KeyRange endClosed. + * @member {google.protobuf.IListValue|null|undefined} endClosed + * @memberof google.spanner.v1.KeyRange + * @instance + */ + KeyRange.prototype.endClosed = null; + + /** + * KeyRange endOpen. + * @member {google.protobuf.IListValue|null|undefined} endOpen + * @memberof google.spanner.v1.KeyRange + * @instance + */ + KeyRange.prototype.endOpen = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * KeyRange startKeyType. + * @member {"startClosed"|"startOpen"|undefined} startKeyType + * @memberof google.spanner.v1.KeyRange + * @instance + */ + Object.defineProperty(KeyRange.prototype, "startKeyType", { + get: $util.oneOfGetter($oneOfFields = ["startClosed", "startOpen"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * KeyRange endKeyType. + * @member {"endClosed"|"endOpen"|undefined} endKeyType + * @memberof google.spanner.v1.KeyRange + * @instance + */ + Object.defineProperty(KeyRange.prototype, "endKeyType", { + get: $util.oneOfGetter($oneOfFields = ["endClosed", "endOpen"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new KeyRange instance using the specified properties. * @function create - * @memberof google.spanner.v1.StructType + * @memberof google.spanner.v1.KeyRange * @static - * @param {google.spanner.v1.IStructType=} [properties] Properties to set - * @returns {google.spanner.v1.StructType} StructType instance + * @param {google.spanner.v1.IKeyRange=} [properties] Properties to set + * @returns {google.spanner.v1.KeyRange} KeyRange instance */ - StructType.create = function create(properties) { - return new StructType(properties); + KeyRange.create = function create(properties) { + return new KeyRange(properties); }; /** - * Encodes the specified StructType message. Does not implicitly {@link google.spanner.v1.StructType.verify|verify} messages. + * Encodes the specified KeyRange message. Does not implicitly {@link google.spanner.v1.KeyRange.verify|verify} messages. * @function encode - * @memberof google.spanner.v1.StructType + * @memberof google.spanner.v1.KeyRange * @static - * @param {google.spanner.v1.IStructType} message StructType message or plain object to encode + * @param {google.spanner.v1.IKeyRange} message KeyRange message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - StructType.encode = function encode(message, writer) { + KeyRange.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.fields != null && message.fields.length) - for (var i = 0; i < message.fields.length; ++i) - $root.google.spanner.v1.StructType.Field.encode(message.fields[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.startClosed != null && Object.hasOwnProperty.call(message, "startClosed")) + $root.google.protobuf.ListValue.encode(message.startClosed, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.startOpen != null && Object.hasOwnProperty.call(message, "startOpen")) + $root.google.protobuf.ListValue.encode(message.startOpen, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.endClosed != null && Object.hasOwnProperty.call(message, "endClosed")) + $root.google.protobuf.ListValue.encode(message.endClosed, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + if (message.endOpen != null && Object.hasOwnProperty.call(message, "endOpen")) + $root.google.protobuf.ListValue.encode(message.endOpen, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim(); return writer; }; /** - * Encodes the specified StructType message, length delimited. Does not implicitly {@link google.spanner.v1.StructType.verify|verify} messages. + * Encodes the specified KeyRange message, length delimited. Does not implicitly {@link google.spanner.v1.KeyRange.verify|verify} messages. * @function encodeDelimited - * @memberof google.spanner.v1.StructType + * @memberof google.spanner.v1.KeyRange * @static - * @param {google.spanner.v1.IStructType} message StructType message or plain object to encode + * @param {google.spanner.v1.IKeyRange} message KeyRange message or plain object to encode * @param {$protobuf.Writer} [writer] Writer to encode to * @returns {$protobuf.Writer} Writer */ - StructType.encodeDelimited = function encodeDelimited(message, writer) { + KeyRange.encodeDelimited = function encodeDelimited(message, writer) { return this.encode(message, writer).ldelim(); }; /** - * Decodes a StructType message from the specified reader or buffer. + * Decodes a KeyRange message from the specified reader or buffer. * @function decode - * @memberof google.spanner.v1.StructType + * @memberof google.spanner.v1.KeyRange * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.StructType} StructType + * @returns {google.spanner.v1.KeyRange} KeyRange * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - StructType.decode = function decode(reader, length, error) { + KeyRange.decode = function decode(reader, length, error) { if (!(reader instanceof $Reader)) reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.StructType(); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.KeyRange(); while (reader.pos < end) { var tag = reader.uint32(); if (tag === error) break; switch (tag >>> 3) { case 1: { - if (!(message.fields && message.fields.length)) - message.fields = []; - message.fields.push($root.google.spanner.v1.StructType.Field.decode(reader, reader.uint32())); + message.startClosed = $root.google.protobuf.ListValue.decode(reader, reader.uint32()); + break; + } + case 2: { + message.startOpen = $root.google.protobuf.ListValue.decode(reader, reader.uint32()); + break; + } + case 3: { + message.endClosed = $root.google.protobuf.ListValue.decode(reader, reader.uint32()); + break; + } + case 4: { + message.endOpen = $root.google.protobuf.ListValue.decode(reader, reader.uint32()); break; } default: @@ -93554,415 +93616,465 @@ }; /** - * Decodes a StructType message from the specified reader or buffer, length delimited. + * Decodes a KeyRange message from the specified reader or buffer, length delimited. * @function decodeDelimited - * @memberof google.spanner.v1.StructType + * @memberof google.spanner.v1.KeyRange * @static * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.StructType} StructType + * @returns {google.spanner.v1.KeyRange} KeyRange * @throws {Error} If the payload is not a reader or valid buffer * @throws {$protobuf.util.ProtocolError} If required fields are missing */ - StructType.decodeDelimited = function decodeDelimited(reader) { + KeyRange.decodeDelimited = function decodeDelimited(reader) { if (!(reader instanceof $Reader)) reader = new $Reader(reader); return this.decode(reader, reader.uint32()); }; /** - * Verifies a StructType message. + * Verifies a KeyRange message. * @function verify - * @memberof google.spanner.v1.StructType + * @memberof google.spanner.v1.KeyRange * @static * @param {Object.} message Plain object to verify * @returns {string|null} `null` if valid, otherwise the reason why it is not */ - StructType.verify = function verify(message) { + KeyRange.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.fields != null && message.hasOwnProperty("fields")) { - if (!Array.isArray(message.fields)) - return "fields: array expected"; - for (var i = 0; i < message.fields.length; ++i) { - var error = $root.google.spanner.v1.StructType.Field.verify(message.fields[i]); + var properties = {}; + if (message.startClosed != null && message.hasOwnProperty("startClosed")) { + properties.startKeyType = 1; + { + var error = $root.google.protobuf.ListValue.verify(message.startClosed); if (error) - return "fields." + error; + return "startClosed." + error; + } + } + if (message.startOpen != null && message.hasOwnProperty("startOpen")) { + if (properties.startKeyType === 1) + return "startKeyType: multiple values"; + properties.startKeyType = 1; + { + var error = $root.google.protobuf.ListValue.verify(message.startOpen); + if (error) + return "startOpen." + error; + } + } + if (message.endClosed != null && message.hasOwnProperty("endClosed")) { + properties.endKeyType = 1; + { + var error = $root.google.protobuf.ListValue.verify(message.endClosed); + if (error) + return "endClosed." + error; + } + } + if (message.endOpen != null && message.hasOwnProperty("endOpen")) { + if (properties.endKeyType === 1) + return "endKeyType: multiple values"; + properties.endKeyType = 1; + { + var error = $root.google.protobuf.ListValue.verify(message.endOpen); + if (error) + return "endOpen." + error; } } return null; }; /** - * Creates a StructType message from a plain object. Also converts values to their respective internal types. + * Creates a KeyRange message from a plain object. Also converts values to their respective internal types. * @function fromObject - * @memberof google.spanner.v1.StructType + * @memberof google.spanner.v1.KeyRange * @static * @param {Object.} object Plain object - * @returns {google.spanner.v1.StructType} StructType + * @returns {google.spanner.v1.KeyRange} KeyRange */ - StructType.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.StructType) + KeyRange.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.KeyRange) return object; - var message = new $root.google.spanner.v1.StructType(); - if (object.fields) { - if (!Array.isArray(object.fields)) - throw TypeError(".google.spanner.v1.StructType.fields: array expected"); - message.fields = []; - for (var i = 0; i < object.fields.length; ++i) { - if (typeof object.fields[i] !== "object") - throw TypeError(".google.spanner.v1.StructType.fields: object expected"); - message.fields[i] = $root.google.spanner.v1.StructType.Field.fromObject(object.fields[i]); - } + var message = new $root.google.spanner.v1.KeyRange(); + if (object.startClosed != null) { + if (typeof object.startClosed !== "object") + throw TypeError(".google.spanner.v1.KeyRange.startClosed: object expected"); + message.startClosed = $root.google.protobuf.ListValue.fromObject(object.startClosed); + } + if (object.startOpen != null) { + if (typeof object.startOpen !== "object") + throw TypeError(".google.spanner.v1.KeyRange.startOpen: object expected"); + message.startOpen = $root.google.protobuf.ListValue.fromObject(object.startOpen); + } + if (object.endClosed != null) { + if (typeof object.endClosed !== "object") + throw TypeError(".google.spanner.v1.KeyRange.endClosed: object expected"); + message.endClosed = $root.google.protobuf.ListValue.fromObject(object.endClosed); + } + if (object.endOpen != null) { + if (typeof object.endOpen !== "object") + throw TypeError(".google.spanner.v1.KeyRange.endOpen: object expected"); + message.endOpen = $root.google.protobuf.ListValue.fromObject(object.endOpen); } return message; }; /** - * Creates a plain object from a StructType message. Also converts values to other types if specified. + * Creates a plain object from a KeyRange message. Also converts values to other types if specified. * @function toObject - * @memberof google.spanner.v1.StructType + * @memberof google.spanner.v1.KeyRange * @static - * @param {google.spanner.v1.StructType} message StructType + * @param {google.spanner.v1.KeyRange} message KeyRange * @param {$protobuf.IConversionOptions} [options] Conversion options * @returns {Object.} Plain object */ - StructType.toObject = function toObject(message, options) { + KeyRange.toObject = function toObject(message, options) { if (!options) options = {}; var object = {}; - if (options.arrays || options.defaults) - object.fields = []; - if (message.fields && message.fields.length) { - object.fields = []; - for (var j = 0; j < message.fields.length; ++j) - object.fields[j] = $root.google.spanner.v1.StructType.Field.toObject(message.fields[j], options); + if (message.startClosed != null && message.hasOwnProperty("startClosed")) { + object.startClosed = $root.google.protobuf.ListValue.toObject(message.startClosed, options); + if (options.oneofs) + object.startKeyType = "startClosed"; + } + if (message.startOpen != null && message.hasOwnProperty("startOpen")) { + object.startOpen = $root.google.protobuf.ListValue.toObject(message.startOpen, options); + if (options.oneofs) + object.startKeyType = "startOpen"; + } + if (message.endClosed != null && message.hasOwnProperty("endClosed")) { + object.endClosed = $root.google.protobuf.ListValue.toObject(message.endClosed, options); + if (options.oneofs) + object.endKeyType = "endClosed"; + } + if (message.endOpen != null && message.hasOwnProperty("endOpen")) { + object.endOpen = $root.google.protobuf.ListValue.toObject(message.endOpen, options); + if (options.oneofs) + object.endKeyType = "endOpen"; } return object; }; /** - * Converts this StructType to JSON. - * @function toJSON - * @memberof google.spanner.v1.StructType - * @instance - * @returns {Object.} JSON object + * Converts this KeyRange to JSON. + * @function toJSON + * @memberof google.spanner.v1.KeyRange + * @instance + * @returns {Object.} JSON object + */ + KeyRange.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + /** + * Gets the default type url for KeyRange + * @function getTypeUrl + * @memberof google.spanner.v1.KeyRange + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + KeyRange.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.spanner.v1.KeyRange"; + }; + + return KeyRange; + })(); + + v1.KeySet = (function() { + + /** + * Properties of a KeySet. + * @memberof google.spanner.v1 + * @interface IKeySet + * @property {Array.|null} [keys] KeySet keys + * @property {Array.|null} [ranges] KeySet ranges + * @property {boolean|null} [all] KeySet all + */ + + /** + * Constructs a new KeySet. + * @memberof google.spanner.v1 + * @classdesc Represents a KeySet. + * @implements IKeySet + * @constructor + * @param {google.spanner.v1.IKeySet=} [properties] Properties to set + */ + function KeySet(properties) { + this.keys = []; + this.ranges = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * KeySet keys. + * @member {Array.} keys + * @memberof google.spanner.v1.KeySet + * @instance + */ + KeySet.prototype.keys = $util.emptyArray; + + /** + * KeySet ranges. + * @member {Array.} ranges + * @memberof google.spanner.v1.KeySet + * @instance + */ + KeySet.prototype.ranges = $util.emptyArray; + + /** + * KeySet all. + * @member {boolean} all + * @memberof google.spanner.v1.KeySet + * @instance + */ + KeySet.prototype.all = false; + + /** + * Creates a new KeySet instance using the specified properties. + * @function create + * @memberof google.spanner.v1.KeySet + * @static + * @param {google.spanner.v1.IKeySet=} [properties] Properties to set + * @returns {google.spanner.v1.KeySet} KeySet instance */ - StructType.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + KeySet.create = function create(properties) { + return new KeySet(properties); }; /** - * Gets the default type url for StructType - * @function getTypeUrl - * @memberof google.spanner.v1.StructType + * Encodes the specified KeySet message. Does not implicitly {@link google.spanner.v1.KeySet.verify|verify} messages. + * @function encode + * @memberof google.spanner.v1.KeySet * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url + * @param {google.spanner.v1.IKeySet} message KeySet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer */ - StructType.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; - } - return typeUrlPrefix + "/google.spanner.v1.StructType"; + KeySet.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.keys != null && message.keys.length) + for (var i = 0; i < message.keys.length; ++i) + $root.google.protobuf.ListValue.encode(message.keys[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.ranges != null && message.ranges.length) + for (var i = 0; i < message.ranges.length; ++i) + $root.google.spanner.v1.KeyRange.encode(message.ranges[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.all != null && Object.hasOwnProperty.call(message, "all")) + writer.uint32(/* id 3, wireType 0 =*/24).bool(message.all); + return writer; }; - StructType.Field = (function() { - - /** - * Properties of a Field. - * @memberof google.spanner.v1.StructType - * @interface IField - * @property {string|null} [name] Field name - * @property {google.spanner.v1.IType|null} [type] Field type - */ - - /** - * Constructs a new Field. - * @memberof google.spanner.v1.StructType - * @classdesc Represents a Field. - * @implements IField - * @constructor - * @param {google.spanner.v1.StructType.IField=} [properties] Properties to set - */ - function Field(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * Field name. - * @member {string} name - * @memberof google.spanner.v1.StructType.Field - * @instance - */ - Field.prototype.name = ""; - - /** - * Field type. - * @member {google.spanner.v1.IType|null|undefined} type - * @memberof google.spanner.v1.StructType.Field - * @instance - */ - Field.prototype.type = null; - - /** - * Creates a new Field instance using the specified properties. - * @function create - * @memberof google.spanner.v1.StructType.Field - * @static - * @param {google.spanner.v1.StructType.IField=} [properties] Properties to set - * @returns {google.spanner.v1.StructType.Field} Field instance - */ - Field.create = function create(properties) { - return new Field(properties); - }; - - /** - * Encodes the specified Field message. Does not implicitly {@link google.spanner.v1.StructType.Field.verify|verify} messages. - * @function encode - * @memberof google.spanner.v1.StructType.Field - * @static - * @param {google.spanner.v1.StructType.IField} message Field message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - Field.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.name != null && Object.hasOwnProperty.call(message, "name")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.name); - if (message.type != null && Object.hasOwnProperty.call(message, "type")) - $root.google.spanner.v1.Type.encode(message.type, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); - return writer; - }; - - /** - * Encodes the specified Field message, length delimited. Does not implicitly {@link google.spanner.v1.StructType.Field.verify|verify} messages. - * @function encodeDelimited - * @memberof google.spanner.v1.StructType.Field - * @static - * @param {google.spanner.v1.StructType.IField} message Field message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - Field.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; + /** + * Encodes the specified KeySet message, length delimited. Does not implicitly {@link google.spanner.v1.KeySet.verify|verify} messages. + * @function encodeDelimited + * @memberof google.spanner.v1.KeySet + * @static + * @param {google.spanner.v1.IKeySet} message KeySet message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + KeySet.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; - /** - * Decodes a Field message from the specified reader or buffer. - * @function decode - * @memberof google.spanner.v1.StructType.Field - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {google.spanner.v1.StructType.Field} Field - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - Field.decode = function decode(reader, length, error) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.StructType.Field(); - while (reader.pos < end) { - var tag = reader.uint32(); - if (tag === error) + /** + * Decodes a KeySet message from the specified reader or buffer. + * @function decode + * @memberof google.spanner.v1.KeySet + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {google.spanner.v1.KeySet} KeySet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KeySet.decode = function decode(reader, length, error) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.spanner.v1.KeySet(); + while (reader.pos < end) { + var tag = reader.uint32(); + if (tag === error) + break; + switch (tag >>> 3) { + case 1: { + if (!(message.keys && message.keys.length)) + message.keys = []; + message.keys.push($root.google.protobuf.ListValue.decode(reader, reader.uint32())); break; - switch (tag >>> 3) { - case 1: { - message.name = reader.string(); - break; - } - case 2: { - message.type = $root.google.spanner.v1.Type.decode(reader, reader.uint32()); - break; - } - default: - reader.skipType(tag & 7); + } + case 2: { + if (!(message.ranges && message.ranges.length)) + message.ranges = []; + message.ranges.push($root.google.spanner.v1.KeyRange.decode(reader, reader.uint32())); + break; + } + case 3: { + message.all = reader.bool(); break; } + default: + reader.skipType(tag & 7); + break; } - return message; - }; + } + return message; + }; - /** - * Decodes a Field message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof google.spanner.v1.StructType.Field - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {google.spanner.v1.StructType.Field} Field - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - Field.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; + /** + * Decodes a KeySet message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof google.spanner.v1.KeySet + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {google.spanner.v1.KeySet} KeySet + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + KeySet.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; - /** - * Verifies a Field message. - * @function verify - * @memberof google.spanner.v1.StructType.Field - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - Field.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.name != null && message.hasOwnProperty("name")) - if (!$util.isString(message.name)) - return "name: string expected"; - if (message.type != null && message.hasOwnProperty("type")) { - var error = $root.google.spanner.v1.Type.verify(message.type); + /** + * Verifies a KeySet message. + * @function verify + * @memberof google.spanner.v1.KeySet + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + KeySet.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.keys != null && message.hasOwnProperty("keys")) { + if (!Array.isArray(message.keys)) + return "keys: array expected"; + for (var i = 0; i < message.keys.length; ++i) { + var error = $root.google.protobuf.ListValue.verify(message.keys[i]); if (error) - return "type." + error; + return "keys." + error; } - return null; - }; - - /** - * Creates a Field message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof google.spanner.v1.StructType.Field - * @static - * @param {Object.} object Plain object - * @returns {google.spanner.v1.StructType.Field} Field - */ - Field.fromObject = function fromObject(object) { - if (object instanceof $root.google.spanner.v1.StructType.Field) - return object; - var message = new $root.google.spanner.v1.StructType.Field(); - if (object.name != null) - message.name = String(object.name); - if (object.type != null) { - if (typeof object.type !== "object") - throw TypeError(".google.spanner.v1.StructType.Field.type: object expected"); - message.type = $root.google.spanner.v1.Type.fromObject(object.type); + } + if (message.ranges != null && message.hasOwnProperty("ranges")) { + if (!Array.isArray(message.ranges)) + return "ranges: array expected"; + for (var i = 0; i < message.ranges.length; ++i) { + var error = $root.google.spanner.v1.KeyRange.verify(message.ranges[i]); + if (error) + return "ranges." + error; } - return message; - }; + } + if (message.all != null && message.hasOwnProperty("all")) + if (typeof message.all !== "boolean") + return "all: boolean expected"; + return null; + }; - /** - * Creates a plain object from a Field message. Also converts values to other types if specified. - * @function toObject - * @memberof google.spanner.v1.StructType.Field - * @static - * @param {google.spanner.v1.StructType.Field} message Field - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - Field.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) { - object.name = ""; - object.type = null; - } - if (message.name != null && message.hasOwnProperty("name")) - object.name = message.name; - if (message.type != null && message.hasOwnProperty("type")) - object.type = $root.google.spanner.v1.Type.toObject(message.type, options); + /** + * Creates a KeySet message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof google.spanner.v1.KeySet + * @static + * @param {Object.} object Plain object + * @returns {google.spanner.v1.KeySet} KeySet + */ + KeySet.fromObject = function fromObject(object) { + if (object instanceof $root.google.spanner.v1.KeySet) return object; - }; - - /** - * Converts this Field to JSON. - * @function toJSON - * @memberof google.spanner.v1.StructType.Field - * @instance - * @returns {Object.} JSON object - */ - Field.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - /** - * Gets the default type url for Field - * @function getTypeUrl - * @memberof google.spanner.v1.StructType.Field - * @static - * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") - * @returns {string} The default type url - */ - Field.getTypeUrl = function getTypeUrl(typeUrlPrefix) { - if (typeUrlPrefix === undefined) { - typeUrlPrefix = "type.googleapis.com"; + var message = new $root.google.spanner.v1.KeySet(); + if (object.keys) { + if (!Array.isArray(object.keys)) + throw TypeError(".google.spanner.v1.KeySet.keys: array expected"); + message.keys = []; + for (var i = 0; i < object.keys.length; ++i) { + if (typeof object.keys[i] !== "object") + throw TypeError(".google.spanner.v1.KeySet.keys: object expected"); + message.keys[i] = $root.google.protobuf.ListValue.fromObject(object.keys[i]); } - return typeUrlPrefix + "/google.spanner.v1.StructType.Field"; - }; + } + if (object.ranges) { + if (!Array.isArray(object.ranges)) + throw TypeError(".google.spanner.v1.KeySet.ranges: array expected"); + message.ranges = []; + for (var i = 0; i < object.ranges.length; ++i) { + if (typeof object.ranges[i] !== "object") + throw TypeError(".google.spanner.v1.KeySet.ranges: object expected"); + message.ranges[i] = $root.google.spanner.v1.KeyRange.fromObject(object.ranges[i]); + } + } + if (object.all != null) + message.all = Boolean(object.all); + return message; + }; - return Field; - })(); + /** + * Creates a plain object from a KeySet message. Also converts values to other types if specified. + * @function toObject + * @memberof google.spanner.v1.KeySet + * @static + * @param {google.spanner.v1.KeySet} message KeySet + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + KeySet.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) { + object.keys = []; + object.ranges = []; + } + if (options.defaults) + object.all = false; + if (message.keys && message.keys.length) { + object.keys = []; + for (var j = 0; j < message.keys.length; ++j) + object.keys[j] = $root.google.protobuf.ListValue.toObject(message.keys[j], options); + } + if (message.ranges && message.ranges.length) { + object.ranges = []; + for (var j = 0; j < message.ranges.length; ++j) + object.ranges[j] = $root.google.spanner.v1.KeyRange.toObject(message.ranges[j], options); + } + if (message.all != null && message.hasOwnProperty("all")) + object.all = message.all; + return object; + }; - return StructType; - })(); + /** + * Converts this KeySet to JSON. + * @function toJSON + * @memberof google.spanner.v1.KeySet + * @instance + * @returns {Object.} JSON object + */ + KeySet.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; - /** - * TypeCode enum. - * @name google.spanner.v1.TypeCode - * @enum {number} - * @property {number} TYPE_CODE_UNSPECIFIED=0 TYPE_CODE_UNSPECIFIED value - * @property {number} BOOL=1 BOOL value - * @property {number} INT64=2 INT64 value - * @property {number} FLOAT64=3 FLOAT64 value - * @property {number} FLOAT32=15 FLOAT32 value - * @property {number} TIMESTAMP=4 TIMESTAMP value - * @property {number} DATE=5 DATE value - * @property {number} STRING=6 STRING value - * @property {number} BYTES=7 BYTES value - * @property {number} ARRAY=8 ARRAY value - * @property {number} STRUCT=9 STRUCT value - * @property {number} NUMERIC=10 NUMERIC value - * @property {number} JSON=11 JSON value - * @property {number} PROTO=13 PROTO value - * @property {number} ENUM=14 ENUM value - * @property {number} INTERVAL=16 INTERVAL value - * @property {number} UUID=17 UUID value - */ - v1.TypeCode = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "TYPE_CODE_UNSPECIFIED"] = 0; - values[valuesById[1] = "BOOL"] = 1; - values[valuesById[2] = "INT64"] = 2; - values[valuesById[3] = "FLOAT64"] = 3; - values[valuesById[15] = "FLOAT32"] = 15; - values[valuesById[4] = "TIMESTAMP"] = 4; - values[valuesById[5] = "DATE"] = 5; - values[valuesById[6] = "STRING"] = 6; - values[valuesById[7] = "BYTES"] = 7; - values[valuesById[8] = "ARRAY"] = 8; - values[valuesById[9] = "STRUCT"] = 9; - values[valuesById[10] = "NUMERIC"] = 10; - values[valuesById[11] = "JSON"] = 11; - values[valuesById[13] = "PROTO"] = 13; - values[valuesById[14] = "ENUM"] = 14; - values[valuesById[16] = "INTERVAL"] = 16; - values[valuesById[17] = "UUID"] = 17; - return values; - })(); + /** + * Gets the default type url for KeySet + * @function getTypeUrl + * @memberof google.spanner.v1.KeySet + * @static + * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com") + * @returns {string} The default type url + */ + KeySet.getTypeUrl = function getTypeUrl(typeUrlPrefix) { + if (typeUrlPrefix === undefined) { + typeUrlPrefix = "type.googleapis.com"; + } + return typeUrlPrefix + "/google.spanner.v1.KeySet"; + }; - /** - * TypeAnnotationCode enum. - * @name google.spanner.v1.TypeAnnotationCode - * @enum {number} - * @property {number} TYPE_ANNOTATION_CODE_UNSPECIFIED=0 TYPE_ANNOTATION_CODE_UNSPECIFIED value - * @property {number} PG_NUMERIC=2 PG_NUMERIC value - * @property {number} PG_JSONB=3 PG_JSONB value - * @property {number} PG_OID=4 PG_OID value - */ - v1.TypeAnnotationCode = (function() { - var valuesById = {}, values = Object.create(valuesById); - values[valuesById[0] = "TYPE_ANNOTATION_CODE_UNSPECIFIED"] = 0; - values[valuesById[2] = "PG_NUMERIC"] = 2; - values[valuesById[3] = "PG_JSONB"] = 3; - values[valuesById[4] = "PG_OID"] = 4; - return values; + return KeySet; })(); v1.Mutation = (function() { diff --git a/protos/protos.json b/protos/protos.json index 0198eb256..4d2191fb0 100644 --- a/protos/protos.json +++ b/protos/protos.json @@ -9082,6 +9082,13 @@ "options": { "(google.api.field_behavior)": "OPTIONAL" } + }, + "routingHint": { + "type": "RoutingHint", + "id": 5, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } } } }, @@ -9137,6 +9144,13 @@ "options": { "(google.api.field_behavior)": "OPTIONAL" } + }, + "routingHint": { + "type": "RoutingHint", + "id": 10, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } } } }, @@ -9245,6 +9259,13 @@ "snapshotTimestamp": { "type": "google.protobuf.Timestamp", "id": 5 + }, + "cacheUpdate": { + "type": "CacheUpdate", + "id": 6, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } } }, "nested": { @@ -9258,219 +9279,6 @@ } } }, - "TransactionOptions": { - "oneofs": { - "mode": { - "oneof": [ - "readWrite", - "partitionedDml", - "readOnly" - ] - } - }, - "fields": { - "readWrite": { - "type": "ReadWrite", - "id": 1 - }, - "partitionedDml": { - "type": "PartitionedDml", - "id": 3 - }, - "readOnly": { - "type": "ReadOnly", - "id": 2 - }, - "excludeTxnFromChangeStreams": { - "type": "bool", - "id": 5 - }, - "isolationLevel": { - "type": "IsolationLevel", - "id": 6 - } - }, - "nested": { - "ReadWrite": { - "fields": { - "readLockMode": { - "type": "ReadLockMode", - "id": 1 - }, - "multiplexedSessionPreviousTransactionId": { - "type": "bytes", - "id": 2, - "options": { - "(google.api.field_behavior)": "OPTIONAL" - } - } - }, - "nested": { - "ReadLockMode": { - "values": { - "READ_LOCK_MODE_UNSPECIFIED": 0, - "PESSIMISTIC": 1, - "OPTIMISTIC": 2 - } - } - } - }, - "PartitionedDml": { - "fields": {} - }, - "ReadOnly": { - "oneofs": { - "timestampBound": { - "oneof": [ - "strong", - "minReadTimestamp", - "maxStaleness", - "readTimestamp", - "exactStaleness" - ] - } - }, - "fields": { - "strong": { - "type": "bool", - "id": 1 - }, - "minReadTimestamp": { - "type": "google.protobuf.Timestamp", - "id": 2 - }, - "maxStaleness": { - "type": "google.protobuf.Duration", - "id": 3 - }, - "readTimestamp": { - "type": "google.protobuf.Timestamp", - "id": 4 - }, - "exactStaleness": { - "type": "google.protobuf.Duration", - "id": 5 - }, - "returnReadTimestamp": { - "type": "bool", - "id": 6 - } - } - }, - "IsolationLevel": { - "values": { - "ISOLATION_LEVEL_UNSPECIFIED": 0, - "SERIALIZABLE": 1, - "REPEATABLE_READ": 2 - } - } - } - }, - "Transaction": { - "fields": { - "id": { - "type": "bytes", - "id": 1 - }, - "readTimestamp": { - "type": "google.protobuf.Timestamp", - "id": 2 - }, - "precommitToken": { - "type": "MultiplexedSessionPrecommitToken", - "id": 3 - } - } - }, - "TransactionSelector": { - "oneofs": { - "selector": { - "oneof": [ - "singleUse", - "id", - "begin" - ] - } - }, - "fields": { - "singleUse": { - "type": "TransactionOptions", - "id": 1 - }, - "id": { - "type": "bytes", - "id": 2 - }, - "begin": { - "type": "TransactionOptions", - "id": 3 - } - } - }, - "MultiplexedSessionPrecommitToken": { - "fields": { - "precommitToken": { - "type": "bytes", - "id": 1 - }, - "seqNum": { - "type": "int32", - "id": 2 - } - } - }, - "KeyRange": { - "oneofs": { - "startKeyType": { - "oneof": [ - "startClosed", - "startOpen" - ] - }, - "endKeyType": { - "oneof": [ - "endClosed", - "endOpen" - ] - } - }, - "fields": { - "startClosed": { - "type": "google.protobuf.ListValue", - "id": 1 - }, - "startOpen": { - "type": "google.protobuf.ListValue", - "id": 2 - }, - "endClosed": { - "type": "google.protobuf.ListValue", - "id": 3 - }, - "endOpen": { - "type": "google.protobuf.ListValue", - "id": 4 - } - } - }, - "KeySet": { - "fields": { - "keys": { - "rule": "repeated", - "type": "google.protobuf.ListValue", - "id": 1 - }, - "ranges": { - "rule": "repeated", - "type": "KeyRange", - "id": 2 - }, - "all": { - "type": "bool", - "id": 3 - } - } - }, "Range": { "fields": { "startKey": { @@ -9825,6 +9633,226 @@ "PG_OID": 4 } }, + "TransactionOptions": { + "oneofs": { + "mode": { + "oneof": [ + "readWrite", + "partitionedDml", + "readOnly" + ] + } + }, + "fields": { + "readWrite": { + "type": "ReadWrite", + "id": 1 + }, + "partitionedDml": { + "type": "PartitionedDml", + "id": 3 + }, + "readOnly": { + "type": "ReadOnly", + "id": 2 + }, + "excludeTxnFromChangeStreams": { + "type": "bool", + "id": 5 + }, + "isolationLevel": { + "type": "IsolationLevel", + "id": 6 + } + }, + "nested": { + "ReadWrite": { + "fields": { + "readLockMode": { + "type": "ReadLockMode", + "id": 1 + }, + "multiplexedSessionPreviousTransactionId": { + "type": "bytes", + "id": 2, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + }, + "nested": { + "ReadLockMode": { + "values": { + "READ_LOCK_MODE_UNSPECIFIED": 0, + "PESSIMISTIC": 1, + "OPTIMISTIC": 2 + } + } + } + }, + "PartitionedDml": { + "fields": {} + }, + "ReadOnly": { + "oneofs": { + "timestampBound": { + "oneof": [ + "strong", + "minReadTimestamp", + "maxStaleness", + "readTimestamp", + "exactStaleness" + ] + } + }, + "fields": { + "strong": { + "type": "bool", + "id": 1 + }, + "minReadTimestamp": { + "type": "google.protobuf.Timestamp", + "id": 2 + }, + "maxStaleness": { + "type": "google.protobuf.Duration", + "id": 3 + }, + "readTimestamp": { + "type": "google.protobuf.Timestamp", + "id": 4 + }, + "exactStaleness": { + "type": "google.protobuf.Duration", + "id": 5 + }, + "returnReadTimestamp": { + "type": "bool", + "id": 6 + } + } + }, + "IsolationLevel": { + "values": { + "ISOLATION_LEVEL_UNSPECIFIED": 0, + "SERIALIZABLE": 1, + "REPEATABLE_READ": 2 + } + } + } + }, + "Transaction": { + "fields": { + "id": { + "type": "bytes", + "id": 1 + }, + "readTimestamp": { + "type": "google.protobuf.Timestamp", + "id": 2 + }, + "precommitToken": { + "type": "MultiplexedSessionPrecommitToken", + "id": 3 + }, + "cacheUpdate": { + "type": "CacheUpdate", + "id": 5, + "options": { + "(google.api.field_behavior)": "OPTIONAL" + } + } + } + }, + "TransactionSelector": { + "oneofs": { + "selector": { + "oneof": [ + "singleUse", + "id", + "begin" + ] + } + }, + "fields": { + "singleUse": { + "type": "TransactionOptions", + "id": 1 + }, + "id": { + "type": "bytes", + "id": 2 + }, + "begin": { + "type": "TransactionOptions", + "id": 3 + } + } + }, + "MultiplexedSessionPrecommitToken": { + "fields": { + "precommitToken": { + "type": "bytes", + "id": 1 + }, + "seqNum": { + "type": "int32", + "id": 2 + } + } + }, + "KeyRange": { + "oneofs": { + "startKeyType": { + "oneof": [ + "startClosed", + "startOpen" + ] + }, + "endKeyType": { + "oneof": [ + "endClosed", + "endOpen" + ] + } + }, + "fields": { + "startClosed": { + "type": "google.protobuf.ListValue", + "id": 1 + }, + "startOpen": { + "type": "google.protobuf.ListValue", + "id": 2 + }, + "endClosed": { + "type": "google.protobuf.ListValue", + "id": 3 + }, + "endOpen": { + "type": "google.protobuf.ListValue", + "id": 4 + } + } + }, + "KeySet": { + "fields": { + "keys": { + "rule": "repeated", + "type": "google.protobuf.ListValue", + "id": 1 + }, + "ranges": { + "rule": "repeated", + "type": "KeyRange", + "id": 2 + }, + "all": { + "type": "bool", + "id": 3 + } + } + }, "Mutation": { "oneofs": { "operation": { diff --git a/src/v1/spanner_client.ts b/src/v1/spanner_client.ts index 07a538fbd..e1da9db1a 100644 --- a/src/v1/spanner_client.ts +++ b/src/v1/spanner_client.ts @@ -1082,7 +1082,7 @@ export class SpannerClient { * constraints). Given this, successful execution of a DML statement shouldn't * be assumed until a subsequent `Commit` call completes successfully. * @param {google.spanner.v1.RoutingHint} [request.routingHint] - * Optional. If present, it makes the Spanner requests location-aware. + * Optional. Makes the Spanner requests location-aware if present. * * It gives the server hints that can be used to route the request * to an appropriate server, potentially significantly decreasing latency and @@ -1461,7 +1461,7 @@ export class SpannerClient { * Optional. Lock Hint for the request, it can only be used with read-write * transactions. * @param {google.spanner.v1.RoutingHint} [request.routingHint] - * Optional. If present, it makes the Spanner requests location-aware. + * Optional. Makes the Spanner requests location-aware if present. * * It gives the server hints that can be used to route the request * to an appropriate server, potentially significantly decreasing latency and @@ -1606,6 +1606,13 @@ export class SpannerClient { * that commit mutations but don't perform any reads or queries. You must * randomly select one of the mutations from the mutation set and send it as a * part of this request. + * @param {google.spanner.v1.RoutingHint} [request.routingHint] + * Optional. Makes the Spanner requests location-aware if present. + * + * It gives the server hints that can be used to route the request + * to an appropriate server, potentially significantly decreasing latency and + * improving throughput. To achieve improved performance, most fields must be + * filled in with accurate values. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. @@ -1774,6 +1781,13 @@ export class SpannerClient { * session, then you must include the precommit token with the highest * sequence number received in this transaction attempt. Failing to do so * results in a `FailedPrecondition` error. + * @param {google.spanner.v1.RoutingHint} [request.routingHint] + * Optional. Makes the Spanner requests location-aware if present. + * + * It gives the server hints that can be used to route the request + * to an appropriate server, potentially significantly decreasing latency and + * improving throughput. To achieve improved performance, most fields must be + * filled in with accurate values. * @param {object} [options] * Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details. * @returns {Promise} - The promise which resolves to an array. @@ -2465,7 +2479,7 @@ export class SpannerClient { * constraints). Given this, successful execution of a DML statement shouldn't * be assumed until a subsequent `Commit` call completes successfully. * @param {google.spanner.v1.RoutingHint} [request.routingHint] - * Optional. If present, it makes the Spanner requests location-aware. + * Optional. Makes the Spanner requests location-aware if present. * * It gives the server hints that can be used to route the request * to an appropriate server, potentially significantly decreasing latency and @@ -2579,7 +2593,7 @@ export class SpannerClient { * Optional. Lock Hint for the request, it can only be used with read-write * transactions. * @param {google.spanner.v1.RoutingHint} [request.routingHint] - * Optional. If present, it makes the Spanner requests location-aware. + * Optional. Makes the Spanner requests location-aware if present. * * It gives the server hints that can be used to route the request * to an appropriate server, potentially significantly decreasing latency and