2017-03-30 22:30:51 +00:00
|
|
|
# Copyright 2015 Google Inc.
|
|
|
|
#
|
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
# you may not use this file except in compliance with the License.
|
|
|
|
# You may obtain a copy of the License at
|
|
|
|
#
|
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
#
|
|
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
# See the License for the specific language governing permissions and
|
|
|
|
# limitations under the License.
|
|
|
|
|
|
|
|
require 'date'
|
|
|
|
require 'google/apis/core/base_service'
|
|
|
|
require 'google/apis/core/json_representation'
|
|
|
|
require 'google/apis/core/hashable'
|
|
|
|
require 'google/apis/errors'
|
|
|
|
|
|
|
|
module Google
|
|
|
|
module Apis
|
|
|
|
module SpannerV1
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Specifies the audit configuration for a service.
|
|
|
|
# The configuration determines which permission types are logged, and what
|
|
|
|
# identities, if any, are exempted from logging.
|
|
|
|
# An AuditConfig must have one or more AuditLogConfigs.
|
|
|
|
# If there are AuditConfigs for both `allServices` and a specific service,
|
|
|
|
# the union of the two AuditConfigs is used for that service: the log_types
|
|
|
|
# specified in each AuditConfig are enabled, and the exempted_members in each
|
|
|
|
# AuditConfig are exempted.
|
|
|
|
# Example Policy with multiple AuditConfigs:
|
|
|
|
# `
|
|
|
|
# "audit_configs": [
|
|
|
|
# `
|
|
|
|
# "service": "allServices"
|
|
|
|
# "audit_log_configs": [
|
|
|
|
# `
|
|
|
|
# "log_type": "DATA_READ",
|
|
|
|
# "exempted_members": [
|
|
|
|
# "user:foo@gmail.com"
|
|
|
|
# ]
|
|
|
|
# `,
|
|
|
|
# `
|
|
|
|
# "log_type": "DATA_WRITE",
|
|
|
|
# `,
|
|
|
|
# `
|
|
|
|
# "log_type": "ADMIN_READ",
|
|
|
|
# `
|
|
|
|
# ]
|
|
|
|
# `,
|
|
|
|
# `
|
|
|
|
# "service": "fooservice.googleapis.com"
|
|
|
|
# "audit_log_configs": [
|
|
|
|
# `
|
|
|
|
# "log_type": "DATA_READ",
|
|
|
|
# `,
|
|
|
|
# `
|
|
|
|
# "log_type": "DATA_WRITE",
|
|
|
|
# "exempted_members": [
|
|
|
|
# "user:bar@gmail.com"
|
|
|
|
# ]
|
|
|
|
# `
|
|
|
|
# ]
|
|
|
|
# `
|
|
|
|
# ]
|
|
|
|
# `
|
|
|
|
# For fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ
|
|
|
|
# logging. It also exempts foo@gmail.com from DATA_READ logging, and
|
|
|
|
# bar@gmail.com from DATA_WRITE logging.
|
|
|
|
class AuditConfig
|
2017-03-30 22:30:51 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The configuration for logging of each type of permission.
|
|
|
|
# Next ID: 4
|
|
|
|
# Corresponds to the JSON property `auditLogConfigs`
|
|
|
|
# @return [Array<Google::Apis::SpannerV1::AuditLogConfig>]
|
|
|
|
attr_accessor :audit_log_configs
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
#
|
|
|
|
# Corresponds to the JSON property `exemptedMembers`
|
|
|
|
# @return [Array<String>]
|
|
|
|
attr_accessor :exempted_members
|
|
|
|
|
|
|
|
# Specifies a service that will be enabled for audit logging.
|
|
|
|
# For example, `storage.googleapis.com`, `cloudsql.googleapis.com`.
|
|
|
|
# `allServices` is a special value that covers all services.
|
|
|
|
# Corresponds to the JSON property `service`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :service
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-05-26 16:44:32 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-05-26 16:44:32 +00:00
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@audit_log_configs = args[:audit_log_configs] if args.key?(:audit_log_configs)
|
|
|
|
@exempted_members = args[:exempted_members] if args.key?(:exempted_members)
|
|
|
|
@service = args[:service] if args.key?(:service)
|
2017-05-26 16:44:32 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Provides the configuration for logging a type of permissions.
|
|
|
|
# Example:
|
2017-07-12 20:10:42 +00:00
|
|
|
# `
|
2017-08-25 19:54:22 +00:00
|
|
|
# "audit_log_configs": [
|
|
|
|
# `
|
|
|
|
# "log_type": "DATA_READ",
|
|
|
|
# "exempted_members": [
|
|
|
|
# "user:foo@gmail.com"
|
|
|
|
# ]
|
|
|
|
# `,
|
|
|
|
# `
|
|
|
|
# "log_type": "DATA_WRITE",
|
|
|
|
# `
|
|
|
|
# ]
|
|
|
|
# `
|
|
|
|
# This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting
|
|
|
|
# foo@gmail.com from DATA_READ logging.
|
|
|
|
class AuditLogConfig
|
2017-05-26 16:44:32 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Specifies the identities that do not cause logging for this type of
|
|
|
|
# permission.
|
|
|
|
# Follows the same format of Binding.members.
|
|
|
|
# Corresponds to the JSON property `exemptedMembers`
|
|
|
|
# @return [Array<String>]
|
|
|
|
attr_accessor :exempted_members
|
|
|
|
|
|
|
|
# The log type that this config enables.
|
|
|
|
# Corresponds to the JSON property `logType`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :log_type
|
|
|
|
|
2017-03-30 22:30:51 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@exempted_members = args[:exempted_members] if args.key?(:exempted_members)
|
|
|
|
@log_type = args[:log_type] if args.key?(:log_type)
|
2017-03-30 22:30:51 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Authorization-related information used by Cloud Audit Logging.
|
|
|
|
class AuthorizationLoggingOptions
|
2017-07-12 20:10:42 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The type of the permission that was checked.
|
|
|
|
# Corresponds to the JSON property `permissionType`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :permission_type
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-05-26 16:44:32 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-05-26 16:44:32 +00:00
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@permission_type = args[:permission_type] if args.key?(:permission_type)
|
2017-05-26 16:44:32 +00:00
|
|
|
end
|
|
|
|
end
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The request for BeginTransaction.
|
|
|
|
class BeginTransactionRequest
|
2017-05-26 16:44:32 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# # Transactions
|
|
|
|
# Each session can have at most one active transaction at a time. After the
|
|
|
|
# active transaction is completed, the session can immediately be
|
|
|
|
# re-used for the next transaction. It is not necessary to create a
|
|
|
|
# new session for each transaction.
|
|
|
|
# # Transaction Modes
|
|
|
|
# Cloud Spanner supports two transaction modes:
|
|
|
|
# 1. Locking read-write. This type of transaction is the only way
|
|
|
|
# to write data into Cloud Spanner. These transactions rely on
|
|
|
|
# pessimistic locking and, if necessary, two-phase commit.
|
|
|
|
# Locking read-write transactions may abort, requiring the
|
|
|
|
# application to retry.
|
|
|
|
# 2. Snapshot read-only. This transaction type provides guaranteed
|
|
|
|
# consistency across several reads, but does not allow
|
|
|
|
# writes. Snapshot read-only transactions can be configured to
|
|
|
|
# read at timestamps in the past. Snapshot read-only
|
|
|
|
# transactions do not need to be committed.
|
|
|
|
# For transactions that only read, snapshot read-only transactions
|
|
|
|
# provide simpler semantics and are almost always faster. In
|
|
|
|
# particular, read-only transactions do not take locks, so they do
|
|
|
|
# not conflict with read-write transactions. As a consequence of not
|
|
|
|
# taking locks, they also do not abort, so retry loops are not needed.
|
|
|
|
# Transactions may only read/write data in a single database. They
|
|
|
|
# may, however, read/write data in different tables within that
|
|
|
|
# database.
|
|
|
|
# ## Locking Read-Write Transactions
|
|
|
|
# Locking transactions may be used to atomically read-modify-write
|
|
|
|
# data anywhere in a database. This type of transaction is externally
|
|
|
|
# consistent.
|
|
|
|
# Clients should attempt to minimize the amount of time a transaction
|
|
|
|
# is active. Faster transactions commit with higher probability
|
|
|
|
# and cause less contention. Cloud Spanner attempts to keep read locks
|
|
|
|
# active as long as the transaction continues to do reads, and the
|
|
|
|
# transaction has not been terminated by
|
|
|
|
# Commit or
|
|
|
|
# Rollback. Long periods of
|
|
|
|
# inactivity at the client may cause Cloud Spanner to release a
|
|
|
|
# transaction's locks and abort it.
|
|
|
|
# Reads performed within a transaction acquire locks on the data
|
|
|
|
# being read. Writes can only be done at commit time, after all reads
|
|
|
|
# have been completed.
|
|
|
|
# Conceptually, a read-write transaction consists of zero or more
|
|
|
|
# reads or SQL queries followed by
|
|
|
|
# Commit. At any time before
|
|
|
|
# Commit, the client can send a
|
|
|
|
# Rollback request to abort the
|
|
|
|
# transaction.
|
|
|
|
# ### Semantics
|
|
|
|
# Cloud Spanner can commit the transaction if all read locks it acquired
|
|
|
|
# are still valid at commit time, and it is able to acquire write
|
|
|
|
# locks for all writes. Cloud Spanner can abort the transaction for any
|
|
|
|
# reason. If a commit attempt returns `ABORTED`, Cloud Spanner guarantees
|
|
|
|
# that the transaction has not modified any user data in Cloud Spanner.
|
|
|
|
# Unless the transaction commits, Cloud Spanner makes no guarantees about
|
|
|
|
# how long the transaction's locks were held for. It is an error to
|
|
|
|
# use Cloud Spanner locks for any sort of mutual exclusion other than
|
|
|
|
# between Cloud Spanner transactions themselves.
|
|
|
|
# ### Retrying Aborted Transactions
|
|
|
|
# When a transaction aborts, the application can choose to retry the
|
|
|
|
# whole transaction again. To maximize the chances of successfully
|
|
|
|
# committing the retry, the client should execute the retry in the
|
|
|
|
# same session as the original attempt. The original session's lock
|
|
|
|
# priority increases with each consecutive abort, meaning that each
|
|
|
|
# attempt has a slightly better chance of success than the previous.
|
|
|
|
# Under some circumstances (e.g., many transactions attempting to
|
|
|
|
# modify the same row(s)), a transaction can abort many times in a
|
|
|
|
# short period before successfully committing. Thus, it is not a good
|
|
|
|
# idea to cap the number of retries a transaction can attempt;
|
|
|
|
# instead, it is better to limit the total amount of wall time spent
|
|
|
|
# retrying.
|
|
|
|
# ### Idle Transactions
|
|
|
|
# A transaction is considered idle if it has no outstanding reads or
|
|
|
|
# SQL queries and has not started a read or SQL query within the last 10
|
|
|
|
# seconds. Idle transactions can be aborted by Cloud Spanner so that they
|
|
|
|
# don't hold on to locks indefinitely. In that case, the commit will
|
|
|
|
# fail with error `ABORTED`.
|
|
|
|
# If this behavior is undesirable, periodically executing a simple
|
|
|
|
# SQL query in the transaction (e.g., `SELECT 1`) prevents the
|
|
|
|
# transaction from becoming idle.
|
|
|
|
# ## Snapshot Read-Only Transactions
|
|
|
|
# Snapshot read-only transactions provides a simpler method than
|
|
|
|
# locking read-write transactions for doing several consistent
|
|
|
|
# reads. However, this type of transaction does not support writes.
|
|
|
|
# Snapshot transactions do not take locks. Instead, they work by
|
|
|
|
# choosing a Cloud Spanner timestamp, then executing all reads at that
|
|
|
|
# timestamp. Since they do not acquire locks, they do not block
|
|
|
|
# concurrent read-write transactions.
|
|
|
|
# Unlike locking read-write transactions, snapshot read-only
|
|
|
|
# transactions never abort. They can fail if the chosen read
|
|
|
|
# timestamp is garbage collected; however, the default garbage
|
|
|
|
# collection policy is generous enough that most applications do not
|
|
|
|
# need to worry about this in practice.
|
|
|
|
# Snapshot read-only transactions do not need to call
|
|
|
|
# Commit or
|
|
|
|
# Rollback (and in fact are not
|
|
|
|
# permitted to do so).
|
|
|
|
# To execute a snapshot transaction, the client specifies a timestamp
|
|
|
|
# bound, which tells Cloud Spanner how to choose a read timestamp.
|
|
|
|
# The types of timestamp bound are:
|
|
|
|
# - Strong (the default).
|
|
|
|
# - Bounded staleness.
|
|
|
|
# - Exact staleness.
|
|
|
|
# If the Cloud Spanner database to be read is geographically distributed,
|
|
|
|
# stale read-only transactions can execute more quickly than strong
|
|
|
|
# or read-write transaction, because they are able to execute far
|
|
|
|
# from the leader replica.
|
|
|
|
# Each type of timestamp bound is discussed in detail below.
|
|
|
|
# ### Strong
|
|
|
|
# Strong reads are guaranteed to see the effects of all transactions
|
|
|
|
# that have committed before the start of the read. Furthermore, all
|
|
|
|
# rows yielded by a single read are consistent with each other -- if
|
|
|
|
# any part of the read observes a transaction, all parts of the read
|
|
|
|
# see the transaction.
|
|
|
|
# Strong reads are not repeatable: two consecutive strong read-only
|
|
|
|
# transactions might return inconsistent results if there are
|
|
|
|
# concurrent writes. If consistency across reads is required, the
|
|
|
|
# reads should be executed within a transaction or at an exact read
|
|
|
|
# timestamp.
|
|
|
|
# See TransactionOptions.ReadOnly.strong.
|
|
|
|
# ### Exact Staleness
|
|
|
|
# These timestamp bounds execute reads at a user-specified
|
|
|
|
# timestamp. Reads at a timestamp are guaranteed to see a consistent
|
|
|
|
# prefix of the global transaction history: they observe
|
|
|
|
# modifications done by all transactions with a commit timestamp <=
|
|
|
|
# the read timestamp, and observe none of the modifications done by
|
|
|
|
# transactions with a larger commit timestamp. They will block until
|
|
|
|
# all conflicting transactions that may be assigned commit timestamps
|
|
|
|
# <= the read timestamp have finished.
|
|
|
|
# The timestamp can either be expressed as an absolute Cloud Spanner commit
|
|
|
|
# timestamp or a staleness relative to the current time.
|
|
|
|
# These modes do not require a "negotiation phase" to pick a
|
|
|
|
# timestamp. As a result, they execute slightly faster than the
|
|
|
|
# equivalent boundedly stale concurrency modes. On the other hand,
|
|
|
|
# boundedly stale reads usually return fresher results.
|
|
|
|
# See TransactionOptions.ReadOnly.read_timestamp and
|
|
|
|
# TransactionOptions.ReadOnly.exact_staleness.
|
|
|
|
# ### Bounded Staleness
|
|
|
|
# Bounded staleness modes allow Cloud Spanner to pick the read timestamp,
|
|
|
|
# subject to a user-provided staleness bound. Cloud Spanner chooses the
|
|
|
|
# newest timestamp within the staleness bound that allows execution
|
|
|
|
# of the reads at the closest available replica without blocking.
|
|
|
|
# All rows yielded are consistent with each other -- if any part of
|
|
|
|
# the read observes a transaction, all parts of the read see the
|
|
|
|
# transaction. Boundedly stale reads are not repeatable: two stale
|
|
|
|
# reads, even if they use the same staleness bound, can execute at
|
|
|
|
# different timestamps and thus return inconsistent results.
|
|
|
|
# Boundedly stale reads execute in two phases: the first phase
|
|
|
|
# negotiates a timestamp among all replicas needed to serve the
|
|
|
|
# read. In the second phase, reads are executed at the negotiated
|
|
|
|
# timestamp.
|
|
|
|
# As a result of the two phase execution, bounded staleness reads are
|
|
|
|
# usually a little slower than comparable exact staleness
|
|
|
|
# reads. However, they are typically able to return fresher
|
|
|
|
# results, and are more likely to execute at the closest replica.
|
|
|
|
# Because the timestamp negotiation requires up-front knowledge of
|
|
|
|
# which rows will be read, it can only be used with single-use
|
|
|
|
# read-only transactions.
|
|
|
|
# See TransactionOptions.ReadOnly.max_staleness and
|
|
|
|
# TransactionOptions.ReadOnly.min_read_timestamp.
|
|
|
|
# ### Old Read Timestamps and Garbage Collection
|
|
|
|
# Cloud Spanner continuously garbage collects deleted and overwritten data
|
|
|
|
# in the background to reclaim storage space. This process is known
|
|
|
|
# as "version GC". By default, version GC reclaims versions after they
|
|
|
|
# are one hour old. Because of this, Cloud Spanner cannot perform reads
|
|
|
|
# at read timestamps more than one hour in the past. This
|
|
|
|
# restriction also applies to in-progress reads and/or SQL queries whose
|
|
|
|
# timestamp become too old while executing. Reads and SQL queries with
|
|
|
|
# too-old read timestamps fail with the error `FAILED_PRECONDITION`.
|
|
|
|
# Corresponds to the JSON property `options`
|
|
|
|
# @return [Google::Apis::SpannerV1::TransactionOptions]
|
|
|
|
attr_accessor :options
|
2017-03-31 19:53:27 +00:00
|
|
|
|
2017-03-30 22:30:51 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@options = args[:options] if args.key?(:options)
|
2017-03-30 22:30:51 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Associates `members` with a `role`.
|
|
|
|
class Binding
|
2017-03-30 22:30:51 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Represents an expression text. Example:
|
|
|
|
# title: "User account presence"
|
|
|
|
# description: "Determines whether the request has a user account"
|
|
|
|
# expression: "size(request.user) > 0"
|
|
|
|
# Corresponds to the JSON property `condition`
|
|
|
|
# @return [Google::Apis::SpannerV1::Expr]
|
|
|
|
attr_accessor :condition
|
2017-06-02 06:11:31 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Specifies the identities requesting access for a Cloud Platform resource.
|
|
|
|
# `members` can have the following values:
|
|
|
|
# * `allUsers`: A special identifier that represents anyone who is
|
|
|
|
# on the internet; with or without a Google account.
|
|
|
|
# * `allAuthenticatedUsers`: A special identifier that represents anyone
|
|
|
|
# who is authenticated with a Google account or a service account.
|
|
|
|
# * `user:`emailid``: An email address that represents a specific Google
|
|
|
|
# account. For example, `alice@gmail.com` or `joe@example.com`.
|
|
|
|
# * `serviceAccount:`emailid``: An email address that represents a service
|
|
|
|
# account. For example, `my-other-app@appspot.gserviceaccount.com`.
|
|
|
|
# * `group:`emailid``: An email address that represents a Google group.
|
|
|
|
# For example, `admins@example.com`.
|
|
|
|
# * `domain:`domain``: A Google Apps domain name that represents all the
|
|
|
|
# users of that domain. For example, `google.com` or `example.com`.
|
|
|
|
# Corresponds to the JSON property `members`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [Array<String>]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :members
|
2017-06-02 06:11:31 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Role that is assigned to `members`.
|
|
|
|
# For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
|
|
|
|
# Required
|
|
|
|
# Corresponds to the JSON property `role`
|
2017-06-02 06:11:31 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :role
|
2017-03-30 22:30:51 +00:00
|
|
|
|
2017-05-04 19:35:56 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
2017-03-30 22:30:51 +00:00
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@condition = args[:condition] if args.key?(:condition)
|
|
|
|
@members = args[:members] if args.key?(:members)
|
|
|
|
@role = args[:role] if args.key?(:role)
|
2017-03-30 22:30:51 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Metadata associated with a parent-child relationship appearing in a
|
|
|
|
# PlanNode.
|
|
|
|
class ChildLink
|
2017-03-30 22:30:51 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The node to which the link points.
|
|
|
|
# Corresponds to the JSON property `childIndex`
|
|
|
|
# @return [Fixnum]
|
|
|
|
attr_accessor :child_index
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The type of the link. For example, in Hash Joins this could be used to
|
|
|
|
# distinguish between the build child and the probe child, or in the case
|
|
|
|
# of the child being an output variable, to represent the tag associated
|
|
|
|
# with the output variable.
|
|
|
|
# Corresponds to the JSON property `type`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :type
|
|
|
|
|
|
|
|
# Only present if the child node is SCALAR and corresponds
|
|
|
|
# to an output variable of the parent node. The field carries the name of
|
|
|
|
# the output variable.
|
|
|
|
# For example, a `TableScan` operator that reads rows from a table will
|
|
|
|
# have child links to the `SCALAR` nodes representing the output variables
|
|
|
|
# created for each column that is read by the operator. The corresponding
|
|
|
|
# `variable` fields will be set to the variable names assigned to the
|
|
|
|
# columns.
|
|
|
|
# Corresponds to the JSON property `variable`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :variable
|
2017-05-26 16:44:32 +00:00
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@child_index = args[:child_index] if args.key?(:child_index)
|
|
|
|
@type = args[:type] if args.key?(:type)
|
|
|
|
@variable = args[:variable] if args.key?(:variable)
|
2017-05-26 16:44:32 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Write a Cloud Audit log
|
|
|
|
class CloudAuditOptions
|
2017-05-26 16:44:32 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
2017-03-30 22:30:51 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Authorization-related information used by Cloud Audit Logging.
|
|
|
|
# Corresponds to the JSON property `authorizationLoggingOptions`
|
|
|
|
# @return [Google::Apis::SpannerV1::AuthorizationLoggingOptions]
|
|
|
|
attr_accessor :authorization_logging_options
|
2017-03-30 22:30:51 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The log_name to populate in the Cloud Audit Record.
|
|
|
|
# Corresponds to the JSON property `logName`
|
2017-06-02 06:11:31 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :log_name
|
2017-03-31 19:53:27 +00:00
|
|
|
|
2017-05-26 16:44:32 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
2017-03-30 22:30:51 +00:00
|
|
|
|
2017-05-26 16:44:32 +00:00
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@authorization_logging_options = args[:authorization_logging_options] if args.key?(:authorization_logging_options)
|
|
|
|
@log_name = args[:log_name] if args.key?(:log_name)
|
2017-05-26 16:44:32 +00:00
|
|
|
end
|
|
|
|
end
|
2017-03-30 22:30:51 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The request for Commit.
|
|
|
|
class CommitRequest
|
2017-05-26 16:44:32 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
2017-03-30 22:30:51 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The mutations to be executed when this transaction commits. All
|
|
|
|
# mutations are applied atomically, in the order they appear in
|
|
|
|
# this list.
|
|
|
|
# Corresponds to the JSON property `mutations`
|
|
|
|
# @return [Array<Google::Apis::SpannerV1::Mutation>]
|
|
|
|
attr_accessor :mutations
|
2017-03-30 22:30:51 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# # Transactions
|
|
|
|
# Each session can have at most one active transaction at a time. After the
|
|
|
|
# active transaction is completed, the session can immediately be
|
|
|
|
# re-used for the next transaction. It is not necessary to create a
|
|
|
|
# new session for each transaction.
|
|
|
|
# # Transaction Modes
|
|
|
|
# Cloud Spanner supports two transaction modes:
|
|
|
|
# 1. Locking read-write. This type of transaction is the only way
|
|
|
|
# to write data into Cloud Spanner. These transactions rely on
|
|
|
|
# pessimistic locking and, if necessary, two-phase commit.
|
|
|
|
# Locking read-write transactions may abort, requiring the
|
|
|
|
# application to retry.
|
|
|
|
# 2. Snapshot read-only. This transaction type provides guaranteed
|
|
|
|
# consistency across several reads, but does not allow
|
|
|
|
# writes. Snapshot read-only transactions can be configured to
|
|
|
|
# read at timestamps in the past. Snapshot read-only
|
|
|
|
# transactions do not need to be committed.
|
|
|
|
# For transactions that only read, snapshot read-only transactions
|
|
|
|
# provide simpler semantics and are almost always faster. In
|
|
|
|
# particular, read-only transactions do not take locks, so they do
|
|
|
|
# not conflict with read-write transactions. As a consequence of not
|
|
|
|
# taking locks, they also do not abort, so retry loops are not needed.
|
|
|
|
# Transactions may only read/write data in a single database. They
|
|
|
|
# may, however, read/write data in different tables within that
|
|
|
|
# database.
|
|
|
|
# ## Locking Read-Write Transactions
|
|
|
|
# Locking transactions may be used to atomically read-modify-write
|
|
|
|
# data anywhere in a database. This type of transaction is externally
|
|
|
|
# consistent.
|
|
|
|
# Clients should attempt to minimize the amount of time a transaction
|
|
|
|
# is active. Faster transactions commit with higher probability
|
|
|
|
# and cause less contention. Cloud Spanner attempts to keep read locks
|
|
|
|
# active as long as the transaction continues to do reads, and the
|
|
|
|
# transaction has not been terminated by
|
|
|
|
# Commit or
|
|
|
|
# Rollback. Long periods of
|
|
|
|
# inactivity at the client may cause Cloud Spanner to release a
|
|
|
|
# transaction's locks and abort it.
|
|
|
|
# Reads performed within a transaction acquire locks on the data
|
|
|
|
# being read. Writes can only be done at commit time, after all reads
|
|
|
|
# have been completed.
|
|
|
|
# Conceptually, a read-write transaction consists of zero or more
|
|
|
|
# reads or SQL queries followed by
|
|
|
|
# Commit. At any time before
|
|
|
|
# Commit, the client can send a
|
|
|
|
# Rollback request to abort the
|
|
|
|
# transaction.
|
|
|
|
# ### Semantics
|
|
|
|
# Cloud Spanner can commit the transaction if all read locks it acquired
|
|
|
|
# are still valid at commit time, and it is able to acquire write
|
|
|
|
# locks for all writes. Cloud Spanner can abort the transaction for any
|
|
|
|
# reason. If a commit attempt returns `ABORTED`, Cloud Spanner guarantees
|
|
|
|
# that the transaction has not modified any user data in Cloud Spanner.
|
|
|
|
# Unless the transaction commits, Cloud Spanner makes no guarantees about
|
|
|
|
# how long the transaction's locks were held for. It is an error to
|
|
|
|
# use Cloud Spanner locks for any sort of mutual exclusion other than
|
|
|
|
# between Cloud Spanner transactions themselves.
|
|
|
|
# ### Retrying Aborted Transactions
|
|
|
|
# When a transaction aborts, the application can choose to retry the
|
|
|
|
# whole transaction again. To maximize the chances of successfully
|
|
|
|
# committing the retry, the client should execute the retry in the
|
|
|
|
# same session as the original attempt. The original session's lock
|
|
|
|
# priority increases with each consecutive abort, meaning that each
|
|
|
|
# attempt has a slightly better chance of success than the previous.
|
|
|
|
# Under some circumstances (e.g., many transactions attempting to
|
|
|
|
# modify the same row(s)), a transaction can abort many times in a
|
|
|
|
# short period before successfully committing. Thus, it is not a good
|
|
|
|
# idea to cap the number of retries a transaction can attempt;
|
|
|
|
# instead, it is better to limit the total amount of wall time spent
|
|
|
|
# retrying.
|
|
|
|
# ### Idle Transactions
|
|
|
|
# A transaction is considered idle if it has no outstanding reads or
|
|
|
|
# SQL queries and has not started a read or SQL query within the last 10
|
|
|
|
# seconds. Idle transactions can be aborted by Cloud Spanner so that they
|
|
|
|
# don't hold on to locks indefinitely. In that case, the commit will
|
|
|
|
# fail with error `ABORTED`.
|
|
|
|
# If this behavior is undesirable, periodically executing a simple
|
|
|
|
# SQL query in the transaction (e.g., `SELECT 1`) prevents the
|
|
|
|
# transaction from becoming idle.
|
|
|
|
# ## Snapshot Read-Only Transactions
|
|
|
|
# Snapshot read-only transactions provides a simpler method than
|
|
|
|
# locking read-write transactions for doing several consistent
|
|
|
|
# reads. However, this type of transaction does not support writes.
|
|
|
|
# Snapshot transactions do not take locks. Instead, they work by
|
|
|
|
# choosing a Cloud Spanner timestamp, then executing all reads at that
|
|
|
|
# timestamp. Since they do not acquire locks, they do not block
|
|
|
|
# concurrent read-write transactions.
|
|
|
|
# Unlike locking read-write transactions, snapshot read-only
|
|
|
|
# transactions never abort. They can fail if the chosen read
|
|
|
|
# timestamp is garbage collected; however, the default garbage
|
|
|
|
# collection policy is generous enough that most applications do not
|
|
|
|
# need to worry about this in practice.
|
|
|
|
# Snapshot read-only transactions do not need to call
|
|
|
|
# Commit or
|
|
|
|
# Rollback (and in fact are not
|
|
|
|
# permitted to do so).
|
|
|
|
# To execute a snapshot transaction, the client specifies a timestamp
|
|
|
|
# bound, which tells Cloud Spanner how to choose a read timestamp.
|
|
|
|
# The types of timestamp bound are:
|
|
|
|
# - Strong (the default).
|
|
|
|
# - Bounded staleness.
|
|
|
|
# - Exact staleness.
|
|
|
|
# If the Cloud Spanner database to be read is geographically distributed,
|
|
|
|
# stale read-only transactions can execute more quickly than strong
|
|
|
|
# or read-write transaction, because they are able to execute far
|
|
|
|
# from the leader replica.
|
|
|
|
# Each type of timestamp bound is discussed in detail below.
|
|
|
|
# ### Strong
|
|
|
|
# Strong reads are guaranteed to see the effects of all transactions
|
|
|
|
# that have committed before the start of the read. Furthermore, all
|
|
|
|
# rows yielded by a single read are consistent with each other -- if
|
|
|
|
# any part of the read observes a transaction, all parts of the read
|
|
|
|
# see the transaction.
|
|
|
|
# Strong reads are not repeatable: two consecutive strong read-only
|
|
|
|
# transactions might return inconsistent results if there are
|
|
|
|
# concurrent writes. If consistency across reads is required, the
|
|
|
|
# reads should be executed within a transaction or at an exact read
|
|
|
|
# timestamp.
|
|
|
|
# See TransactionOptions.ReadOnly.strong.
|
|
|
|
# ### Exact Staleness
|
|
|
|
# These timestamp bounds execute reads at a user-specified
|
|
|
|
# timestamp. Reads at a timestamp are guaranteed to see a consistent
|
|
|
|
# prefix of the global transaction history: they observe
|
|
|
|
# modifications done by all transactions with a commit timestamp <=
|
|
|
|
# the read timestamp, and observe none of the modifications done by
|
|
|
|
# transactions with a larger commit timestamp. They will block until
|
|
|
|
# all conflicting transactions that may be assigned commit timestamps
|
|
|
|
# <= the read timestamp have finished.
|
|
|
|
# The timestamp can either be expressed as an absolute Cloud Spanner commit
|
|
|
|
# timestamp or a staleness relative to the current time.
|
|
|
|
# These modes do not require a "negotiation phase" to pick a
|
|
|
|
# timestamp. As a result, they execute slightly faster than the
|
|
|
|
# equivalent boundedly stale concurrency modes. On the other hand,
|
|
|
|
# boundedly stale reads usually return fresher results.
|
|
|
|
# See TransactionOptions.ReadOnly.read_timestamp and
|
|
|
|
# TransactionOptions.ReadOnly.exact_staleness.
|
|
|
|
# ### Bounded Staleness
|
|
|
|
# Bounded staleness modes allow Cloud Spanner to pick the read timestamp,
|
|
|
|
# subject to a user-provided staleness bound. Cloud Spanner chooses the
|
|
|
|
# newest timestamp within the staleness bound that allows execution
|
|
|
|
# of the reads at the closest available replica without blocking.
|
|
|
|
# All rows yielded are consistent with each other -- if any part of
|
|
|
|
# the read observes a transaction, all parts of the read see the
|
|
|
|
# transaction. Boundedly stale reads are not repeatable: two stale
|
|
|
|
# reads, even if they use the same staleness bound, can execute at
|
|
|
|
# different timestamps and thus return inconsistent results.
|
|
|
|
# Boundedly stale reads execute in two phases: the first phase
|
|
|
|
# negotiates a timestamp among all replicas needed to serve the
|
|
|
|
# read. In the second phase, reads are executed at the negotiated
|
|
|
|
# timestamp.
|
|
|
|
# As a result of the two phase execution, bounded staleness reads are
|
|
|
|
# usually a little slower than comparable exact staleness
|
|
|
|
# reads. However, they are typically able to return fresher
|
|
|
|
# results, and are more likely to execute at the closest replica.
|
|
|
|
# Because the timestamp negotiation requires up-front knowledge of
|
|
|
|
# which rows will be read, it can only be used with single-use
|
|
|
|
# read-only transactions.
|
|
|
|
# See TransactionOptions.ReadOnly.max_staleness and
|
|
|
|
# TransactionOptions.ReadOnly.min_read_timestamp.
|
|
|
|
# ### Old Read Timestamps and Garbage Collection
|
|
|
|
# Cloud Spanner continuously garbage collects deleted and overwritten data
|
|
|
|
# in the background to reclaim storage space. This process is known
|
|
|
|
# as "version GC". By default, version GC reclaims versions after they
|
|
|
|
# are one hour old. Because of this, Cloud Spanner cannot perform reads
|
|
|
|
# at read timestamps more than one hour in the past. This
|
|
|
|
# restriction also applies to in-progress reads and/or SQL queries whose
|
|
|
|
# timestamp become too old while executing. Reads and SQL queries with
|
|
|
|
# too-old read timestamps fail with the error `FAILED_PRECONDITION`.
|
|
|
|
# Corresponds to the JSON property `singleUseTransaction`
|
|
|
|
# @return [Google::Apis::SpannerV1::TransactionOptions]
|
|
|
|
attr_accessor :single_use_transaction
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Commit a previously-started transaction.
|
|
|
|
# Corresponds to the JSON property `transactionId`
|
|
|
|
# NOTE: Values are automatically base64 encoded/decoded in the client library.
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :transaction_id
|
2017-05-26 16:44:32 +00:00
|
|
|
|
2017-03-30 22:30:51 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@mutations = args[:mutations] if args.key?(:mutations)
|
|
|
|
@single_use_transaction = args[:single_use_transaction] if args.key?(:single_use_transaction)
|
|
|
|
@transaction_id = args[:transaction_id] if args.key?(:transaction_id)
|
2017-03-30 22:30:51 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The response for Commit.
|
|
|
|
class CommitResponse
|
2017-03-30 22:30:51 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The Cloud Spanner timestamp at which the transaction committed.
|
|
|
|
# Corresponds to the JSON property `commitTimestamp`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :commit_timestamp
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
|
|
|
@commit_timestamp = args[:commit_timestamp] if args.key?(:commit_timestamp)
|
|
|
|
end
|
|
|
|
end
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# A condition to be met.
|
|
|
|
class Condition
|
|
|
|
include Google::Apis::Core::Hashable
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Trusted attributes supplied by the IAM system.
|
|
|
|
# Corresponds to the JSON property `iam`
|
2017-05-26 16:44:32 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :iam
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# An operator to apply the subject with.
|
|
|
|
# Corresponds to the JSON property `op`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :op
|
|
|
|
|
|
|
|
# Trusted attributes discharged by the service.
|
|
|
|
# Corresponds to the JSON property `svc`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :svc
|
|
|
|
|
|
|
|
# Trusted attributes supplied by any service that owns resources and uses
|
|
|
|
# the IAM system for access control.
|
|
|
|
# Corresponds to the JSON property `sys`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :sys
|
|
|
|
|
|
|
|
# DEPRECATED. Use 'values' instead.
|
|
|
|
# Corresponds to the JSON property `value`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :value
|
|
|
|
|
|
|
|
# The objects of the condition. This is mutually exclusive with 'value'.
|
|
|
|
# Corresponds to the JSON property `values`
|
|
|
|
# @return [Array<String>]
|
|
|
|
attr_accessor :values
|
2017-03-30 22:30:51 +00:00
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@iam = args[:iam] if args.key?(:iam)
|
|
|
|
@op = args[:op] if args.key?(:op)
|
|
|
|
@svc = args[:svc] if args.key?(:svc)
|
|
|
|
@sys = args[:sys] if args.key?(:sys)
|
|
|
|
@value = args[:value] if args.key?(:value)
|
|
|
|
@values = args[:values] if args.key?(:values)
|
2017-03-30 22:30:51 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Options for counters
|
|
|
|
class CounterOptions
|
2017-03-30 22:30:51 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The field value to attribute.
|
|
|
|
# Corresponds to the JSON property `field`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :field
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The metric to update.
|
|
|
|
# Corresponds to the JSON property `metric`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :metric
|
2017-05-26 16:44:32 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
|
|
|
@field = args[:field] if args.key?(:field)
|
|
|
|
@metric = args[:metric] if args.key?(:metric)
|
|
|
|
end
|
|
|
|
end
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Metadata type for the operation returned by
|
|
|
|
# CreateDatabase.
|
|
|
|
class CreateDatabaseMetadata
|
|
|
|
include Google::Apis::Core::Hashable
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The database being created.
|
|
|
|
# Corresponds to the JSON property `database`
|
2017-06-02 06:11:31 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :database
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
|
|
|
@database = args[:database] if args.key?(:database)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# The request for CreateDatabase.
|
|
|
|
class CreateDatabaseRequest
|
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
|
|
|
# Required. A `CREATE DATABASE` statement, which specifies the ID of the
|
|
|
|
# new database. The database ID must conform to the regular expression
|
|
|
|
# `a-z*[a-z0-9]` and be between 2 and 30 characters in length.
|
|
|
|
# If the database ID is a reserved word or if it contains a hyphen, the
|
|
|
|
# database ID must be enclosed in backticks (`` ` ``).
|
|
|
|
# Corresponds to the JSON property `createStatement`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :create_statement
|
|
|
|
|
|
|
|
# An optional list of DDL statements to run inside the newly created
|
|
|
|
# database. Statements can create tables, indexes, etc. These
|
|
|
|
# statements execute atomically with the creation of the database:
|
|
|
|
# if there is an error in any statement, the database is not created.
|
|
|
|
# Corresponds to the JSON property `extraStatements`
|
|
|
|
# @return [Array<String>]
|
|
|
|
attr_accessor :extra_statements
|
2017-04-03 20:18:48 +00:00
|
|
|
|
2017-03-30 22:30:51 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@create_statement = args[:create_statement] if args.key?(:create_statement)
|
|
|
|
@extra_statements = args[:extra_statements] if args.key?(:extra_statements)
|
2017-03-30 22:30:51 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Metadata type for the operation returned by
|
|
|
|
# CreateInstance.
|
|
|
|
class CreateInstanceMetadata
|
2017-03-30 22:30:51 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The time at which this operation was cancelled. If set, this operation is
|
|
|
|
# in the process of undoing itself (which is guaranteed to succeed) and
|
|
|
|
# cannot be cancelled again.
|
|
|
|
# Corresponds to the JSON property `cancelTime`
|
2017-06-02 06:11:31 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :cancel_time
|
2017-04-03 20:18:48 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The time at which this operation failed or was completed successfully.
|
|
|
|
# Corresponds to the JSON property `endTime`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :end_time
|
2017-05-26 16:44:32 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# An isolated set of Cloud Spanner resources on which databases can be hosted.
|
|
|
|
# Corresponds to the JSON property `instance`
|
|
|
|
# @return [Google::Apis::SpannerV1::Instance]
|
|
|
|
attr_accessor :instance
|
|
|
|
|
|
|
|
# The time at which the
|
|
|
|
# CreateInstance request was
|
|
|
|
# received.
|
|
|
|
# Corresponds to the JSON property `startTime`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :start_time
|
2017-05-26 16:44:32 +00:00
|
|
|
|
2017-03-30 22:30:51 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@cancel_time = args[:cancel_time] if args.key?(:cancel_time)
|
|
|
|
@end_time = args[:end_time] if args.key?(:end_time)
|
|
|
|
@instance = args[:instance] if args.key?(:instance)
|
|
|
|
@start_time = args[:start_time] if args.key?(:start_time)
|
2017-03-30 22:30:51 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The request for CreateInstance.
|
|
|
|
class CreateInstanceRequest
|
2017-03-30 22:30:51 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# An isolated set of Cloud Spanner resources on which databases can be hosted.
|
|
|
|
# Corresponds to the JSON property `instance`
|
|
|
|
# @return [Google::Apis::SpannerV1::Instance]
|
|
|
|
attr_accessor :instance
|
|
|
|
|
|
|
|
# Required. The ID of the instance to create. Valid identifiers are of the
|
|
|
|
# form `a-z*[a-z0-9]` and must be between 6 and 30 characters in
|
|
|
|
# length.
|
|
|
|
# Corresponds to the JSON property `instanceId`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :instance_id
|
|
|
|
|
2017-07-12 20:10:42 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
2017-06-02 06:11:31 +00:00
|
|
|
|
2017-07-12 20:10:42 +00:00
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@instance = args[:instance] if args.key?(:instance)
|
|
|
|
@instance_id = args[:instance_id] if args.key?(:instance_id)
|
2017-07-12 20:10:42 +00:00
|
|
|
end
|
|
|
|
end
|
2017-06-02 06:11:31 +00:00
|
|
|
|
2017-07-12 20:10:42 +00:00
|
|
|
# Write a Data Access (Gin) log
|
|
|
|
class DataAccessOptions
|
|
|
|
include Google::Apis::Core::Hashable
|
2017-03-31 19:53:27 +00:00
|
|
|
|
2017-03-30 22:30:51 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# A Cloud Spanner database.
|
|
|
|
class Database
|
2017-03-30 22:30:51 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Required. The name of the database. Values are of the form
|
|
|
|
# `projects/<project>/instances/<instance>/databases/<database>`,
|
|
|
|
# where `<database>` is as specified in the `CREATE DATABASE`
|
|
|
|
# statement. This name can be passed to other API methods to
|
|
|
|
# identify the database.
|
2017-07-12 20:10:42 +00:00
|
|
|
# Corresponds to the JSON property `name`
|
2017-03-31 19:53:27 +00:00
|
|
|
# @return [String]
|
2017-07-12 20:10:42 +00:00
|
|
|
attr_accessor :name
|
2017-05-26 16:44:32 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Output only. The current database state.
|
|
|
|
# Corresponds to the JSON property `state`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :state
|
2017-03-31 19:53:27 +00:00
|
|
|
|
2017-03-30 22:30:51 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-07-12 20:10:42 +00:00
|
|
|
@name = args[:name] if args.key?(:name)
|
2017-08-25 19:54:22 +00:00
|
|
|
@state = args[:state] if args.key?(:state)
|
2017-03-31 19:53:27 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Arguments to delete operations.
|
|
|
|
class Delete
|
2017-03-30 22:30:51 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# `KeySet` defines a collection of Cloud Spanner keys and/or key ranges. All
|
|
|
|
# the keys are expected to be in the same table or index. The keys need
|
|
|
|
# not be sorted in any particular way.
|
|
|
|
# If the same key is specified multiple times in the set (for example
|
|
|
|
# if two ranges, two keys, or a key and a range overlap), Cloud Spanner
|
|
|
|
# behaves as if the key were only specified once.
|
|
|
|
# Corresponds to the JSON property `keySet`
|
|
|
|
# @return [Google::Apis::SpannerV1::KeySet]
|
|
|
|
attr_accessor :key_set
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Required. The table whose rows will be deleted.
|
|
|
|
# Corresponds to the JSON property `table`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :table
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-03-30 22:30:51 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@key_set = args[:key_set] if args.key?(:key_set)
|
|
|
|
@table = args[:table] if args.key?(:table)
|
2017-03-30 22:30:51 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# A generic empty message that you can re-use to avoid defining duplicated
|
|
|
|
# empty messages in your APIs. A typical example is to use it as the request
|
|
|
|
# or the response type of an API method. For instance:
|
|
|
|
# service Foo `
|
|
|
|
# rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
|
|
|
|
# `
|
|
|
|
# The JSON representation for `Empty` is empty JSON object ````.
|
|
|
|
class Empty
|
2017-04-03 20:18:48 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-06-14 17:02:03 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The request for ExecuteSql and
|
|
|
|
# ExecuteStreamingSql.
|
|
|
|
class ExecuteSqlRequest
|
2017-06-14 17:02:03 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# It is not always possible for Cloud Spanner to infer the right SQL type
|
|
|
|
# from a JSON value. For example, values of type `BYTES` and values
|
|
|
|
# of type `STRING` both appear in params as JSON strings.
|
|
|
|
# In these cases, `param_types` can be used to specify the exact
|
|
|
|
# SQL type for some or all of the SQL query parameters. See the
|
|
|
|
# definition of Type for more information
|
|
|
|
# about SQL types.
|
|
|
|
# Corresponds to the JSON property `paramTypes`
|
|
|
|
# @return [Hash<String,Google::Apis::SpannerV1::Type>]
|
|
|
|
attr_accessor :param_types
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The SQL query string can contain parameter placeholders. A parameter
|
|
|
|
# placeholder consists of `'@'` followed by the parameter
|
|
|
|
# name. Parameter names consist of any combination of letters,
|
|
|
|
# numbers, and underscores.
|
|
|
|
# Parameters can appear anywhere that a literal value is expected. The same
|
|
|
|
# parameter name can be used more than once, for example:
|
|
|
|
# `"WHERE id > @msg_id AND id < @msg_id + 100"`
|
|
|
|
# It is an error to execute an SQL query with unbound parameters.
|
|
|
|
# Parameter values are specified using `params`, which is a JSON
|
|
|
|
# object whose keys are parameter names, and whose values are the
|
|
|
|
# corresponding parameter values.
|
|
|
|
# Corresponds to the JSON property `params`
|
|
|
|
# @return [Hash<String,Object>]
|
|
|
|
attr_accessor :params
|
|
|
|
|
|
|
|
# Used to control the amount of debugging information returned in
|
|
|
|
# ResultSetStats.
|
|
|
|
# Corresponds to the JSON property `queryMode`
|
2017-06-02 06:11:31 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :query_mode
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# If this request is resuming a previously interrupted SQL query
|
|
|
|
# execution, `resume_token` should be copied from the last
|
|
|
|
# PartialResultSet yielded before the interruption. Doing this
|
|
|
|
# enables the new SQL query execution to resume where the last one left
|
|
|
|
# off. The rest of the request parameters must exactly match the
|
|
|
|
# request that yielded this token.
|
|
|
|
# Corresponds to the JSON property `resumeToken`
|
|
|
|
# NOTE: Values are automatically base64 encoded/decoded in the client library.
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :resume_token
|
|
|
|
|
|
|
|
# Required. The SQL query string.
|
|
|
|
# Corresponds to the JSON property `sql`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :sql
|
|
|
|
|
|
|
|
# This message is used to select the transaction in which a
|
|
|
|
# Read or
|
|
|
|
# ExecuteSql call runs.
|
|
|
|
# See TransactionOptions for more information about transactions.
|
|
|
|
# Corresponds to the JSON property `transaction`
|
|
|
|
# @return [Google::Apis::SpannerV1::TransactionSelector]
|
|
|
|
attr_accessor :transaction
|
2017-06-14 17:02:03 +00:00
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@param_types = args[:param_types] if args.key?(:param_types)
|
|
|
|
@params = args[:params] if args.key?(:params)
|
|
|
|
@query_mode = args[:query_mode] if args.key?(:query_mode)
|
|
|
|
@resume_token = args[:resume_token] if args.key?(:resume_token)
|
|
|
|
@sql = args[:sql] if args.key?(:sql)
|
|
|
|
@transaction = args[:transaction] if args.key?(:transaction)
|
2017-06-14 17:02:03 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Represents an expression text. Example:
|
|
|
|
# title: "User account presence"
|
|
|
|
# description: "Determines whether the request has a user account"
|
|
|
|
# expression: "size(request.user) > 0"
|
|
|
|
class Expr
|
2017-06-14 17:02:03 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# An optional description of the expression. This is a longer text which
|
|
|
|
# describes the expression, e.g. when hovered over it in a UI.
|
|
|
|
# Corresponds to the JSON property `description`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :description
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Textual representation of an expression in
|
|
|
|
# Common Expression Language syntax.
|
|
|
|
# The application context of the containing message determines which
|
|
|
|
# well-known feature set of CEL is supported.
|
|
|
|
# Corresponds to the JSON property `expression`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :expression
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# An optional string indicating the location of the expression for error
|
|
|
|
# reporting, e.g. a file name and a position in the file.
|
|
|
|
# Corresponds to the JSON property `location`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :location
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# An optional title for the expression, i.e. a short string describing
|
|
|
|
# its purpose. This can be used e.g. in UIs which allow to enter the
|
|
|
|
# expression.
|
|
|
|
# Corresponds to the JSON property `title`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :title
|
2017-07-12 20:10:42 +00:00
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@description = args[:description] if args.key?(:description)
|
|
|
|
@expression = args[:expression] if args.key?(:expression)
|
|
|
|
@location = args[:location] if args.key?(:location)
|
|
|
|
@title = args[:title] if args.key?(:title)
|
2017-07-12 20:10:42 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Message representing a single field of a struct.
|
|
|
|
class Field
|
2017-07-12 20:10:42 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The name of the field. For reads, this is the column name. For
|
|
|
|
# SQL queries, it is the column alias (e.g., `"Word"` in the
|
|
|
|
# query `"SELECT 'hello' AS Word"`), or the column name (e.g.,
|
|
|
|
# `"ColName"` in the query `"SELECT ColName FROM Table"`). Some
|
|
|
|
# columns might have an empty name (e.g., !"SELECT
|
|
|
|
# UPPER(ColName)"`). Note that a query result can contain
|
|
|
|
# multiple fields with the same name.
|
|
|
|
# Corresponds to the JSON property `name`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :name
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# `Type` indicates the type of a Cloud Spanner value, as might be stored in a
|
|
|
|
# table cell or returned from an SQL query.
|
|
|
|
# Corresponds to the JSON property `type`
|
|
|
|
# @return [Google::Apis::SpannerV1::Type]
|
|
|
|
attr_accessor :type
|
2017-07-12 20:10:42 +00:00
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@name = args[:name] if args.key?(:name)
|
|
|
|
@type = args[:type] if args.key?(:type)
|
2017-07-12 20:10:42 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The response for GetDatabaseDdl.
|
|
|
|
class GetDatabaseDdlResponse
|
2017-07-12 20:10:42 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# A list of formatted DDL statements defining the schema of the database
|
|
|
|
# specified in the request.
|
|
|
|
# Corresponds to the JSON property `statements`
|
|
|
|
# @return [Array<String>]
|
|
|
|
attr_accessor :statements
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
|
|
|
@statements = args[:statements] if args.key?(:statements)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# Request message for `GetIamPolicy` method.
|
|
|
|
class GetIamPolicyRequest
|
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# An isolated set of Cloud Spanner resources on which databases can be hosted.
|
|
|
|
class Instance
|
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
|
|
|
# Required. The name of the instance's configuration. Values are of the form
|
|
|
|
# `projects/<project>/instanceConfigs/<configuration>`. See
|
|
|
|
# also InstanceConfig and
|
|
|
|
# ListInstanceConfigs.
|
|
|
|
# Corresponds to the JSON property `config`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :config
|
|
|
|
|
|
|
|
# Required. The descriptive name for this instance as it appears in UIs.
|
|
|
|
# Must be unique per project and between 4 and 30 characters in length.
|
|
|
|
# Corresponds to the JSON property `displayName`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :display_name
|
|
|
|
|
|
|
|
# Cloud Labels are a flexible and lightweight mechanism for organizing cloud
|
|
|
|
# resources into groups that reflect a customer's organizational needs and
|
|
|
|
# deployment strategies. Cloud Labels can be used to filter collections of
|
|
|
|
# resources. They can be used to control how resource metrics are aggregated.
|
|
|
|
# And they can be used as arguments to policy management rules (e.g. route,
|
|
|
|
# firewall, load balancing, etc.).
|
|
|
|
# * Label keys must be between 1 and 63 characters long and must conform to
|
|
|
|
# the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`.
|
|
|
|
# * Label values must be between 0 and 63 characters long and must conform
|
|
|
|
# to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.
|
|
|
|
# * No more than 64 labels can be associated with a given resource.
|
|
|
|
# See https://goo.gl/xmQnxf for more information on and examples of labels.
|
|
|
|
# If you plan to use labels in your own code, please note that additional
|
|
|
|
# characters may be allowed in the future. And so you are advised to use an
|
|
|
|
# internal label representation, such as JSON, which doesn't rely upon
|
|
|
|
# specific characters being disallowed. For example, representing labels
|
|
|
|
# as the string: name + "_" + value would prove problematic if we were to
|
|
|
|
# allow "_" in a future release.
|
|
|
|
# Corresponds to the JSON property `labels`
|
|
|
|
# @return [Hash<String,String>]
|
|
|
|
attr_accessor :labels
|
|
|
|
|
|
|
|
# Required. A unique identifier for the instance, which cannot be changed
|
|
|
|
# after the instance is created. Values are of the form
|
|
|
|
# `projects/<project>/instances/a-z*[a-z0-9]`. The final
|
|
|
|
# segment of the name must be between 6 and 30 characters in length.
|
|
|
|
# Corresponds to the JSON property `name`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :name
|
|
|
|
|
|
|
|
# Required. The number of nodes allocated to this instance. This may be zero
|
|
|
|
# in API responses for instances that are not yet in state `READY`.
|
|
|
|
# Each Spanner node can provide up to 10,000 QPS of reads or 2000 QPS of
|
|
|
|
# writes (writing single rows at 1KB data per row), and 2 TiB storage.
|
|
|
|
# For optimal performance, we recommend provisioning enough nodes to keep
|
|
|
|
# overall CPU utilization under 75%.
|
|
|
|
# A minimum of 3 nodes is recommended for production environments. This
|
|
|
|
# minimum is required for SLAs to apply to your instance.
|
|
|
|
# Note that Cloud Spanner performance is highly dependent on workload, schema
|
|
|
|
# design, and dataset characteristics. The performance numbers above are
|
|
|
|
# estimates, and assume [best practices](https://cloud.google.com/spanner/docs/
|
|
|
|
# bulk-loading)
|
|
|
|
# are followed.
|
|
|
|
# Corresponds to the JSON property `nodeCount`
|
|
|
|
# @return [Fixnum]
|
|
|
|
attr_accessor :node_count
|
|
|
|
|
|
|
|
# Output only. The current instance state. For
|
|
|
|
# CreateInstance, the state must be
|
|
|
|
# either omitted or set to `CREATING`. For
|
|
|
|
# UpdateInstance, the state must be
|
|
|
|
# either omitted or set to `READY`.
|
|
|
|
# Corresponds to the JSON property `state`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :state
|
2017-07-12 20:10:42 +00:00
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@config = args[:config] if args.key?(:config)
|
|
|
|
@display_name = args[:display_name] if args.key?(:display_name)
|
|
|
|
@labels = args[:labels] if args.key?(:labels)
|
|
|
|
@name = args[:name] if args.key?(:name)
|
|
|
|
@node_count = args[:node_count] if args.key?(:node_count)
|
|
|
|
@state = args[:state] if args.key?(:state)
|
2017-07-12 20:10:42 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# A possible configuration for a Cloud Spanner instance. Configurations
|
|
|
|
# define the geographic placement of nodes and their replication.
|
|
|
|
class InstanceConfig
|
2017-07-12 20:10:42 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The name of this instance configuration as it appears in UIs.
|
|
|
|
# Corresponds to the JSON property `displayName`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :display_name
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# A unique identifier for the instance configuration. Values
|
|
|
|
# are of the form
|
|
|
|
# `projects/<project>/instanceConfigs/a-z*`
|
|
|
|
# Corresponds to the JSON property `name`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :name
|
2017-07-12 20:10:42 +00:00
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@display_name = args[:display_name] if args.key?(:display_name)
|
|
|
|
@name = args[:name] if args.key?(:name)
|
2017-07-12 20:10:42 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# KeyRange represents a range of rows in a table or index.
|
|
|
|
# A range has a start key and an end key. These keys can be open or
|
|
|
|
# closed, indicating if the range includes rows with that key.
|
|
|
|
# Keys are represented by lists, where the ith value in the list
|
|
|
|
# corresponds to the ith component of the table or index primary key.
|
|
|
|
# Individual values are encoded as described here.
|
|
|
|
# For example, consider the following table definition:
|
|
|
|
# CREATE TABLE UserEvents (
|
|
|
|
# UserName STRING(MAX),
|
|
|
|
# EventDate STRING(10)
|
|
|
|
# ) PRIMARY KEY(UserName, EventDate);
|
|
|
|
# The following keys name rows in this table:
|
|
|
|
# "Bob", "2014-09-23"
|
|
|
|
# Since the `UserEvents` table's `PRIMARY KEY` clause names two
|
|
|
|
# columns, each `UserEvents` key has two elements; the first is the
|
|
|
|
# `UserName`, and the second is the `EventDate`.
|
|
|
|
# Key ranges with multiple components are interpreted
|
|
|
|
# lexicographically by component using the table or index key's declared
|
|
|
|
# sort order. For example, the following range returns all events for
|
|
|
|
# user `"Bob"` that occurred in the year 2015:
|
|
|
|
# "start_closed": ["Bob", "2015-01-01"]
|
|
|
|
# "end_closed": ["Bob", "2015-12-31"]
|
|
|
|
# Start and end keys can omit trailing key components. This affects the
|
|
|
|
# inclusion and exclusion of rows that exactly match the provided key
|
|
|
|
# components: if the key is closed, then rows that exactly match the
|
|
|
|
# provided components are included; if the key is open, then rows
|
|
|
|
# that exactly match are not included.
|
|
|
|
# For example, the following range includes all events for `"Bob"` that
|
|
|
|
# occurred during and after the year 2000:
|
|
|
|
# "start_closed": ["Bob", "2000-01-01"]
|
|
|
|
# "end_closed": ["Bob"]
|
|
|
|
# The next example retrieves all events for `"Bob"`:
|
|
|
|
# "start_closed": ["Bob"]
|
|
|
|
# "end_closed": ["Bob"]
|
|
|
|
# To retrieve events before the year 2000:
|
|
|
|
# "start_closed": ["Bob"]
|
|
|
|
# "end_open": ["Bob", "2000-01-01"]
|
|
|
|
# The following range includes all rows in the table:
|
|
|
|
# "start_closed": []
|
|
|
|
# "end_closed": []
|
|
|
|
# This range returns all users whose `UserName` begins with any
|
|
|
|
# character from A to C:
|
|
|
|
# "start_closed": ["A"]
|
|
|
|
# "end_open": ["D"]
|
|
|
|
# This range returns all users whose `UserName` begins with B:
|
|
|
|
# "start_closed": ["B"]
|
|
|
|
# "end_open": ["C"]
|
|
|
|
# Key ranges honor column sort order. For example, suppose a table is
|
|
|
|
# defined as follows:
|
|
|
|
# CREATE TABLE DescendingSortedTable `
|
|
|
|
# Key INT64,
|
|
|
|
# ...
|
|
|
|
# ) PRIMARY KEY(Key DESC);
|
|
|
|
# The following range retrieves all rows with key values between 1
|
|
|
|
# and 100 inclusive:
|
|
|
|
# "start_closed": ["100"]
|
|
|
|
# "end_closed": ["1"]
|
|
|
|
# Note that 100 is passed as the start, and 1 is passed as the end,
|
|
|
|
# because `Key` is a descending column in the schema.
|
|
|
|
class KeyRange
|
2017-07-12 20:10:42 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# If the end is closed, then the range includes all rows whose
|
|
|
|
# first `len(end_closed)` key columns exactly match `end_closed`.
|
|
|
|
# Corresponds to the JSON property `endClosed`
|
|
|
|
# @return [Array<Object>]
|
|
|
|
attr_accessor :end_closed
|
2017-03-30 22:30:51 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# If the end is open, then the range excludes rows whose first
|
|
|
|
# `len(end_open)` key columns exactly match `end_open`.
|
|
|
|
# Corresponds to the JSON property `endOpen`
|
|
|
|
# @return [Array<Object>]
|
|
|
|
attr_accessor :end_open
|
|
|
|
|
|
|
|
# If the start is closed, then the range includes all rows whose
|
|
|
|
# first `len(start_closed)` key columns exactly match `start_closed`.
|
|
|
|
# Corresponds to the JSON property `startClosed`
|
|
|
|
# @return [Array<Object>]
|
|
|
|
attr_accessor :start_closed
|
|
|
|
|
|
|
|
# If the start is open, then the range excludes rows whose first
|
|
|
|
# `len(start_open)` key columns exactly match `start_open`.
|
|
|
|
# Corresponds to the JSON property `startOpen`
|
|
|
|
# @return [Array<Object>]
|
|
|
|
attr_accessor :start_open
|
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
|
|
|
@end_closed = args[:end_closed] if args.key?(:end_closed)
|
|
|
|
@end_open = args[:end_open] if args.key?(:end_open)
|
|
|
|
@start_closed = args[:start_closed] if args.key?(:start_closed)
|
|
|
|
@start_open = args[:start_open] if args.key?(:start_open)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# `KeySet` defines a collection of Cloud Spanner keys and/or key ranges. All
|
|
|
|
# the keys are expected to be in the same table or index. The keys need
|
|
|
|
# not be sorted in any particular way.
|
|
|
|
# If the same key is specified multiple times in the set (for example
|
|
|
|
# if two ranges, two keys, or a key and a range overlap), Cloud Spanner
|
|
|
|
# behaves as if the key were only specified once.
|
|
|
|
class KeySet
|
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
|
|
|
# For convenience `all` can be set to `true` to indicate that this
|
|
|
|
# `KeySet` matches all keys in the table or index. Note that any keys
|
|
|
|
# specified in `keys` or `ranges` are only yielded once.
|
|
|
|
# Corresponds to the JSON property `all`
|
|
|
|
# @return [Boolean]
|
|
|
|
attr_accessor :all
|
|
|
|
alias_method :all?, :all
|
|
|
|
|
|
|
|
# A list of specific keys. Entries in `keys` should have exactly as
|
|
|
|
# many elements as there are columns in the primary or index key
|
|
|
|
# with which this `KeySet` is used. Individual key values are
|
|
|
|
# encoded as described here.
|
|
|
|
# Corresponds to the JSON property `keys`
|
|
|
|
# @return [Array<Array<Object>>]
|
|
|
|
attr_accessor :keys
|
|
|
|
|
|
|
|
# A list of key ranges. See KeyRange for more information about
|
|
|
|
# key range specifications.
|
|
|
|
# Corresponds to the JSON property `ranges`
|
|
|
|
# @return [Array<Google::Apis::SpannerV1::KeyRange>]
|
|
|
|
attr_accessor :ranges
|
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
|
|
|
@all = args[:all] if args.key?(:all)
|
|
|
|
@keys = args[:keys] if args.key?(:keys)
|
|
|
|
@ranges = args[:ranges] if args.key?(:ranges)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# The response for ListDatabases.
|
|
|
|
class ListDatabasesResponse
|
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
|
|
|
# Databases that matched the request.
|
|
|
|
# Corresponds to the JSON property `databases`
|
|
|
|
# @return [Array<Google::Apis::SpannerV1::Database>]
|
|
|
|
attr_accessor :databases
|
|
|
|
|
|
|
|
# `next_page_token` can be sent in a subsequent
|
|
|
|
# ListDatabases call to fetch more
|
|
|
|
# of the matching databases.
|
|
|
|
# Corresponds to the JSON property `nextPageToken`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :next_page_token
|
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
|
|
|
@databases = args[:databases] if args.key?(:databases)
|
|
|
|
@next_page_token = args[:next_page_token] if args.key?(:next_page_token)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# The response for ListInstanceConfigs.
|
|
|
|
class ListInstanceConfigsResponse
|
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
|
|
|
# The list of requested instance configurations.
|
|
|
|
# Corresponds to the JSON property `instanceConfigs`
|
|
|
|
# @return [Array<Google::Apis::SpannerV1::InstanceConfig>]
|
|
|
|
attr_accessor :instance_configs
|
|
|
|
|
|
|
|
# `next_page_token` can be sent in a subsequent
|
|
|
|
# ListInstanceConfigs call to
|
|
|
|
# fetch more of the matching instance configurations.
|
|
|
|
# Corresponds to the JSON property `nextPageToken`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :next_page_token
|
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
|
|
|
@instance_configs = args[:instance_configs] if args.key?(:instance_configs)
|
|
|
|
@next_page_token = args[:next_page_token] if args.key?(:next_page_token)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# The response for ListInstances.
|
|
|
|
class ListInstancesResponse
|
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
|
|
|
# The list of requested instances.
|
|
|
|
# Corresponds to the JSON property `instances`
|
|
|
|
# @return [Array<Google::Apis::SpannerV1::Instance>]
|
|
|
|
attr_accessor :instances
|
|
|
|
|
|
|
|
# `next_page_token` can be sent in a subsequent
|
|
|
|
# ListInstances call to fetch more
|
|
|
|
# of the matching instances.
|
|
|
|
# Corresponds to the JSON property `nextPageToken`
|
2017-06-14 17:02:03 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :next_page_token
|
2017-06-14 17:02:03 +00:00
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@instances = args[:instances] if args.key?(:instances)
|
|
|
|
@next_page_token = args[:next_page_token] if args.key?(:next_page_token)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# The response message for Operations.ListOperations.
|
|
|
|
class ListOperationsResponse
|
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
|
|
|
# The standard List next-page token.
|
|
|
|
# Corresponds to the JSON property `nextPageToken`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :next_page_token
|
|
|
|
|
|
|
|
# A list of operations that matches the specified filter in the request.
|
|
|
|
# Corresponds to the JSON property `operations`
|
|
|
|
# @return [Array<Google::Apis::SpannerV1::Operation>]
|
|
|
|
attr_accessor :operations
|
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
|
|
|
@next_page_token = args[:next_page_token] if args.key?(:next_page_token)
|
|
|
|
@operations = args[:operations] if args.key?(:operations)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# Specifies what kind of log the caller must write
|
|
|
|
# Increment a streamz counter with the specified metric and field names.
|
|
|
|
# Metric names should start with a '/', generally be lowercase-only,
|
|
|
|
# and end in "_count". Field names should not contain an initial slash.
|
|
|
|
# The actual exported metric names will have "/iam/policy" prepended.
|
|
|
|
# Field names correspond to IAM request parameters and field values are
|
|
|
|
# their respective values.
|
|
|
|
# At present the only supported field names are
|
|
|
|
# - "iam_principal", corresponding to IAMContext.principal;
|
|
|
|
# - "" (empty string), resulting in one aggretated counter with no field.
|
|
|
|
# Examples:
|
|
|
|
# counter ` metric: "/debug_access_count" field: "iam_principal" `
|
|
|
|
# ==> increment counter /iam/policy/backend_debug_access_count
|
|
|
|
# `iam_principal=[value of IAMContext.principal]`
|
|
|
|
# At this time we do not support:
|
|
|
|
# * multiple field names (though this may be supported in the future)
|
|
|
|
# * decrementing the counter
|
|
|
|
# * incrementing it by anything other than 1
|
|
|
|
class LogConfig
|
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
|
|
|
# Write a Cloud Audit log
|
|
|
|
# Corresponds to the JSON property `cloudAudit`
|
|
|
|
# @return [Google::Apis::SpannerV1::CloudAuditOptions]
|
|
|
|
attr_accessor :cloud_audit
|
|
|
|
|
|
|
|
# Options for counters
|
|
|
|
# Corresponds to the JSON property `counter`
|
|
|
|
# @return [Google::Apis::SpannerV1::CounterOptions]
|
|
|
|
attr_accessor :counter
|
|
|
|
|
|
|
|
# Write a Data Access (Gin) log
|
|
|
|
# Corresponds to the JSON property `dataAccess`
|
|
|
|
# @return [Google::Apis::SpannerV1::DataAccessOptions]
|
|
|
|
attr_accessor :data_access
|
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
|
|
|
@cloud_audit = args[:cloud_audit] if args.key?(:cloud_audit)
|
|
|
|
@counter = args[:counter] if args.key?(:counter)
|
|
|
|
@data_access = args[:data_access] if args.key?(:data_access)
|
2017-06-14 17:02:03 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-07-12 20:10:42 +00:00
|
|
|
# A modification to one or more Cloud Spanner rows. Mutations can be
|
|
|
|
# applied to a Cloud Spanner database by sending them in a
|
|
|
|
# Commit call.
|
|
|
|
class Mutation
|
2017-06-14 17:02:03 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-07-12 20:10:42 +00:00
|
|
|
# Arguments to delete operations.
|
|
|
|
# Corresponds to the JSON property `delete`
|
|
|
|
# @return [Google::Apis::SpannerV1::Delete]
|
|
|
|
attr_accessor :delete
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-07-12 20:10:42 +00:00
|
|
|
# Arguments to insert, update, insert_or_update, and
|
|
|
|
# replace operations.
|
|
|
|
# Corresponds to the JSON property `insert`
|
|
|
|
# @return [Google::Apis::SpannerV1::Write]
|
|
|
|
attr_accessor :insert
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-07-12 20:10:42 +00:00
|
|
|
# Arguments to insert, update, insert_or_update, and
|
|
|
|
# replace operations.
|
2017-08-25 19:54:22 +00:00
|
|
|
# Corresponds to the JSON property `insertOrUpdate`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [Google::Apis::SpannerV1::Write]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :insert_or_update
|
2017-07-12 20:10:42 +00:00
|
|
|
|
|
|
|
# Arguments to insert, update, insert_or_update, and
|
|
|
|
# replace operations.
|
|
|
|
# Corresponds to the JSON property `replace`
|
|
|
|
# @return [Google::Apis::SpannerV1::Write]
|
|
|
|
attr_accessor :replace
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Arguments to insert, update, insert_or_update, and
|
|
|
|
# replace operations.
|
|
|
|
# Corresponds to the JSON property `update`
|
|
|
|
# @return [Google::Apis::SpannerV1::Write]
|
|
|
|
attr_accessor :update
|
|
|
|
|
2017-06-14 17:02:03 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-07-12 20:10:42 +00:00
|
|
|
@delete = args[:delete] if args.key?(:delete)
|
|
|
|
@insert = args[:insert] if args.key?(:insert)
|
2017-08-25 19:54:22 +00:00
|
|
|
@insert_or_update = args[:insert_or_update] if args.key?(:insert_or_update)
|
2017-07-12 20:10:42 +00:00
|
|
|
@replace = args[:replace] if args.key?(:replace)
|
2017-08-25 19:54:22 +00:00
|
|
|
@update = args[:update] if args.key?(:update)
|
2017-06-14 17:02:03 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# This resource represents a long-running operation that is the result of a
|
|
|
|
# network API call.
|
|
|
|
class Operation
|
2017-06-14 17:02:03 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# If the value is `false`, it means the operation is still in progress.
|
|
|
|
# If true, the operation is completed, and either `error` or `response` is
|
|
|
|
# available.
|
|
|
|
# Corresponds to the JSON property `done`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [Boolean]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :done
|
|
|
|
alias_method :done?, :done
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The `Status` type defines a logical error model that is suitable for different
|
|
|
|
# programming environments, including REST APIs and RPC APIs. It is used by
|
|
|
|
# [gRPC](https://github.com/grpc). The error model is designed to be:
|
|
|
|
# - Simple to use and understand for most users
|
|
|
|
# - Flexible enough to meet unexpected needs
|
|
|
|
# # Overview
|
|
|
|
# The `Status` message contains three pieces of data: error code, error message,
|
|
|
|
# and error details. The error code should be an enum value of
|
|
|
|
# google.rpc.Code, but it may accept additional error codes if needed. The
|
|
|
|
# error message should be a developer-facing English message that helps
|
|
|
|
# developers *understand* and *resolve* the error. If a localized user-facing
|
|
|
|
# error message is needed, put the localized message in the error details or
|
|
|
|
# localize it in the client. The optional error details may contain arbitrary
|
|
|
|
# information about the error. There is a predefined set of error detail types
|
|
|
|
# in the package `google.rpc` that can be used for common error conditions.
|
|
|
|
# # Language mapping
|
|
|
|
# The `Status` message is the logical representation of the error model, but it
|
|
|
|
# is not necessarily the actual wire format. When the `Status` message is
|
|
|
|
# exposed in different client libraries and different wire protocols, it can be
|
|
|
|
# mapped differently. For example, it will likely be mapped to some exceptions
|
|
|
|
# in Java, but more likely mapped to some error codes in C.
|
|
|
|
# # Other uses
|
|
|
|
# The error model and the `Status` message can be used in a variety of
|
|
|
|
# environments, either with or without APIs, to provide a
|
|
|
|
# consistent developer experience across different environments.
|
|
|
|
# Example uses of this error model include:
|
|
|
|
# - Partial errors. If a service needs to return partial errors to the client,
|
|
|
|
# it may embed the `Status` in the normal response to indicate the partial
|
|
|
|
# errors.
|
|
|
|
# - Workflow errors. A typical workflow has multiple steps. Each step may
|
|
|
|
# have a `Status` message for error reporting.
|
|
|
|
# - Batch operations. If a client uses batch request and batch response, the
|
|
|
|
# `Status` message should be used directly inside batch response, one for
|
|
|
|
# each error sub-response.
|
|
|
|
# - Asynchronous operations. If an API call embeds asynchronous operation
|
|
|
|
# results in its response, the status of those operations should be
|
|
|
|
# represented directly using the `Status` message.
|
|
|
|
# - Logging. If some API errors are stored in logs, the message `Status` could
|
|
|
|
# be used directly after any stripping needed for security/privacy reasons.
|
|
|
|
# Corresponds to the JSON property `error`
|
|
|
|
# @return [Google::Apis::SpannerV1::Status]
|
|
|
|
attr_accessor :error
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Service-specific metadata associated with the operation. It typically
|
|
|
|
# contains progress information and common metadata such as create time.
|
|
|
|
# Some services might not provide such metadata. Any method that returns a
|
|
|
|
# long-running operation should document the metadata type, if any.
|
|
|
|
# Corresponds to the JSON property `metadata`
|
|
|
|
# @return [Hash<String,Object>]
|
|
|
|
attr_accessor :metadata
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The server-assigned name, which is only unique within the same service that
|
|
|
|
# originally returns it. If you use the default HTTP mapping, the
|
|
|
|
# `name` should have the format of `operations/some/unique/name`.
|
|
|
|
# Corresponds to the JSON property `name`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :name
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The normal response of the operation in case of success. If the original
|
|
|
|
# method returns no data on success, such as `Delete`, the response is
|
|
|
|
# `google.protobuf.Empty`. If the original method is standard
|
|
|
|
# `Get`/`Create`/`Update`, the response should be the resource. For other
|
|
|
|
# methods, the response should have the type `XxxResponse`, where `Xxx`
|
|
|
|
# is the original method name. For example, if the original method name
|
|
|
|
# is `TakeSnapshot()`, the inferred response type is
|
|
|
|
# `TakeSnapshotResponse`.
|
|
|
|
# Corresponds to the JSON property `response`
|
|
|
|
# @return [Hash<String,Object>]
|
|
|
|
attr_accessor :response
|
2017-06-14 17:02:03 +00:00
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@done = args[:done] if args.key?(:done)
|
|
|
|
@error = args[:error] if args.key?(:error)
|
|
|
|
@metadata = args[:metadata] if args.key?(:metadata)
|
|
|
|
@name = args[:name] if args.key?(:name)
|
|
|
|
@response = args[:response] if args.key?(:response)
|
2017-06-14 17:02:03 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Partial results from a streaming read or SQL query. Streaming reads and
|
|
|
|
# SQL queries better tolerate large result sets, large rows, and large
|
|
|
|
# values, but are a little trickier to consume.
|
|
|
|
class PartialResultSet
|
2017-06-14 17:02:03 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# If true, then the final value in values is chunked, and must
|
|
|
|
# be combined with more values from subsequent `PartialResultSet`s
|
|
|
|
# to obtain a complete field value.
|
|
|
|
# Corresponds to the JSON property `chunkedValue`
|
|
|
|
# @return [Boolean]
|
|
|
|
attr_accessor :chunked_value
|
|
|
|
alias_method :chunked_value?, :chunked_value
|
|
|
|
|
|
|
|
# Metadata about a ResultSet or PartialResultSet.
|
|
|
|
# Corresponds to the JSON property `metadata`
|
|
|
|
# @return [Google::Apis::SpannerV1::ResultSetMetadata]
|
|
|
|
attr_accessor :metadata
|
|
|
|
|
|
|
|
# Streaming calls might be interrupted for a variety of reasons, such
|
|
|
|
# as TCP connection loss. If this occurs, the stream of results can
|
|
|
|
# be resumed by re-sending the original request and including
|
|
|
|
# `resume_token`. Note that executing any other transaction in the
|
|
|
|
# same session invalidates the token.
|
|
|
|
# Corresponds to the JSON property `resumeToken`
|
|
|
|
# NOTE: Values are automatically base64 encoded/decoded in the client library.
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :resume_token
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Additional statistics about a ResultSet or PartialResultSet.
|
|
|
|
# Corresponds to the JSON property `stats`
|
|
|
|
# @return [Google::Apis::SpannerV1::ResultSetStats]
|
|
|
|
attr_accessor :stats
|
|
|
|
|
|
|
|
# A streamed result set consists of a stream of values, which might
|
|
|
|
# be split into many `PartialResultSet` messages to accommodate
|
|
|
|
# large rows and/or large values. Every N complete values defines a
|
|
|
|
# row, where N is equal to the number of entries in
|
|
|
|
# metadata.row_type.fields.
|
|
|
|
# Most values are encoded based on type as described
|
|
|
|
# here.
|
|
|
|
# It is possible that the last value in values is "chunked",
|
|
|
|
# meaning that the rest of the value is sent in subsequent
|
|
|
|
# `PartialResultSet`(s). This is denoted by the chunked_value
|
|
|
|
# field. Two or more chunked values can be merged to form a
|
|
|
|
# complete value as follows:
|
|
|
|
# * `bool/number/null`: cannot be chunked
|
|
|
|
# * `string`: concatenate the strings
|
|
|
|
# * `list`: concatenate the lists. If the last element in a list is a
|
|
|
|
# `string`, `list`, or `object`, merge it with the first element in
|
|
|
|
# the next list by applying these rules recursively.
|
|
|
|
# * `object`: concatenate the (field name, field value) pairs. If a
|
|
|
|
# field name is duplicated, then apply these rules recursively
|
|
|
|
# to merge the field values.
|
|
|
|
# Some examples of merging:
|
|
|
|
# # Strings are concatenated.
|
|
|
|
# "foo", "bar" => "foobar"
|
|
|
|
# # Lists of non-strings are concatenated.
|
|
|
|
# [2, 3], [4] => [2, 3, 4]
|
|
|
|
# # Lists are concatenated, but the last and first elements are merged
|
|
|
|
# # because they are strings.
|
|
|
|
# ["a", "b"], ["c", "d"] => ["a", "bc", "d"]
|
|
|
|
# # Lists are concatenated, but the last and first elements are merged
|
|
|
|
# # because they are lists. Recursively, the last and first elements
|
|
|
|
# # of the inner lists are merged because they are strings.
|
|
|
|
# ["a", ["b", "c"]], [["d"], "e"] => ["a", ["b", "cd"], "e"]
|
|
|
|
# # Non-overlapping object fields are combined.
|
|
|
|
# `"a": "1"`, `"b": "2"` => `"a": "1", "b": 2"`
|
|
|
|
# # Overlapping object fields are merged.
|
|
|
|
# `"a": "1"`, `"a": "2"` => `"a": "12"`
|
|
|
|
# # Examples of merging objects containing lists of strings.
|
|
|
|
# `"a": ["1"]`, `"a": ["2"]` => `"a": ["12"]`
|
|
|
|
# For a more complete example, suppose a streaming SQL query is
|
|
|
|
# yielding a result set whose rows contain a single string
|
|
|
|
# field. The following `PartialResultSet`s might be yielded:
|
|
|
|
# `
|
|
|
|
# "metadata": ` ... `
|
|
|
|
# "values": ["Hello", "W"]
|
|
|
|
# "chunked_value": true
|
|
|
|
# "resume_token": "Af65..."
|
|
|
|
# `
|
|
|
|
# `
|
|
|
|
# "values": ["orl"]
|
|
|
|
# "chunked_value": true
|
|
|
|
# "resume_token": "Bqp2..."
|
|
|
|
# `
|
|
|
|
# `
|
|
|
|
# "values": ["d"]
|
|
|
|
# "resume_token": "Zx1B..."
|
|
|
|
# `
|
|
|
|
# This sequence of `PartialResultSet`s encodes two rows, one
|
|
|
|
# containing the field value `"Hello"`, and a second containing the
|
|
|
|
# field value `"World" = "W" + "orl" + "d"`.
|
|
|
|
# Corresponds to the JSON property `values`
|
|
|
|
# @return [Array<Object>]
|
|
|
|
attr_accessor :values
|
2017-06-14 17:02:03 +00:00
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@chunked_value = args[:chunked_value] if args.key?(:chunked_value)
|
|
|
|
@metadata = args[:metadata] if args.key?(:metadata)
|
|
|
|
@resume_token = args[:resume_token] if args.key?(:resume_token)
|
|
|
|
@stats = args[:stats] if args.key?(:stats)
|
|
|
|
@values = args[:values] if args.key?(:values)
|
2017-06-14 17:02:03 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Node information for nodes appearing in a QueryPlan.plan_nodes.
|
|
|
|
class PlanNode
|
2017-06-14 17:02:03 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# List of child node `index`es and their relationship to this parent.
|
|
|
|
# Corresponds to the JSON property `childLinks`
|
|
|
|
# @return [Array<Google::Apis::SpannerV1::ChildLink>]
|
|
|
|
attr_accessor :child_links
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The display name for the node.
|
2017-07-12 20:10:42 +00:00
|
|
|
# Corresponds to the JSON property `displayName`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :display_name
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The execution statistics associated with the node, contained in a group of
|
|
|
|
# key-value pairs. Only present if the plan was returned as a result of a
|
|
|
|
# profile query. For example, number of executions, number of rows/time per
|
|
|
|
# execution etc.
|
|
|
|
# Corresponds to the JSON property `executionStats`
|
|
|
|
# @return [Hash<String,Object>]
|
|
|
|
attr_accessor :execution_stats
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The `PlanNode`'s index in node list.
|
|
|
|
# Corresponds to the JSON property `index`
|
|
|
|
# @return [Fixnum]
|
|
|
|
attr_accessor :index
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Used to determine the type of node. May be needed for visualizing
|
|
|
|
# different kinds of nodes differently. For example, If the node is a
|
|
|
|
# SCALAR node, it will have a condensed representation
|
|
|
|
# which can be used to directly embed a description of the node in its
|
|
|
|
# parent.
|
|
|
|
# Corresponds to the JSON property `kind`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :kind
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Attributes relevant to the node contained in a group of key-value pairs.
|
|
|
|
# For example, a Parameter Reference node could have the following
|
|
|
|
# information in its metadata:
|
|
|
|
# `
|
|
|
|
# "parameter_reference": "param1",
|
|
|
|
# "parameter_type": "array"
|
|
|
|
# `
|
|
|
|
# Corresponds to the JSON property `metadata`
|
|
|
|
# @return [Hash<String,Object>]
|
|
|
|
attr_accessor :metadata
|
|
|
|
|
|
|
|
# Condensed representation of a node and its subtree. Only present for
|
|
|
|
# `SCALAR` PlanNode(s).
|
|
|
|
# Corresponds to the JSON property `shortRepresentation`
|
|
|
|
# @return [Google::Apis::SpannerV1::ShortRepresentation]
|
|
|
|
attr_accessor :short_representation
|
2017-06-14 17:02:03 +00:00
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@child_links = args[:child_links] if args.key?(:child_links)
|
2017-07-12 20:10:42 +00:00
|
|
|
@display_name = args[:display_name] if args.key?(:display_name)
|
2017-08-25 19:54:22 +00:00
|
|
|
@execution_stats = args[:execution_stats] if args.key?(:execution_stats)
|
|
|
|
@index = args[:index] if args.key?(:index)
|
|
|
|
@kind = args[:kind] if args.key?(:kind)
|
|
|
|
@metadata = args[:metadata] if args.key?(:metadata)
|
|
|
|
@short_representation = args[:short_representation] if args.key?(:short_representation)
|
2017-06-14 17:02:03 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Defines an Identity and Access Management (IAM) policy. It is used to
|
|
|
|
# specify access control policies for Cloud Platform resources.
|
|
|
|
# A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
|
|
|
|
# `members` to a `role`, where the members can be user accounts, Google groups,
|
|
|
|
# Google domains, and service accounts. A `role` is a named list of permissions
|
|
|
|
# defined by IAM.
|
|
|
|
# **Example**
|
|
|
|
# `
|
|
|
|
# "bindings": [
|
|
|
|
# `
|
|
|
|
# "role": "roles/owner",
|
|
|
|
# "members": [
|
|
|
|
# "user:mike@example.com",
|
|
|
|
# "group:admins@example.com",
|
|
|
|
# "domain:google.com",
|
|
|
|
# "serviceAccount:my-other-app@appspot.gserviceaccount.com",
|
|
|
|
# ]
|
|
|
|
# `,
|
|
|
|
# `
|
|
|
|
# "role": "roles/viewer",
|
|
|
|
# "members": ["user:sean@example.com"]
|
|
|
|
# `
|
|
|
|
# ]
|
|
|
|
# `
|
|
|
|
# For a description of IAM and its features, see the
|
|
|
|
# [IAM developer's guide](https://cloud.google.com/iam).
|
|
|
|
class Policy
|
|
|
|
include Google::Apis::Core::Hashable
|
2017-03-30 22:30:51 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Specifies cloud audit logging configuration for this policy.
|
|
|
|
# Corresponds to the JSON property `auditConfigs`
|
|
|
|
# @return [Array<Google::Apis::SpannerV1::AuditConfig>]
|
|
|
|
attr_accessor :audit_configs
|
2017-03-30 22:30:51 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Associates a list of `members` to a `role`.
|
|
|
|
# `bindings` with no members will result in an error.
|
|
|
|
# Corresponds to the JSON property `bindings`
|
|
|
|
# @return [Array<Google::Apis::SpannerV1::Binding>]
|
|
|
|
attr_accessor :bindings
|
2017-03-30 22:30:51 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# `etag` is used for optimistic concurrency control as a way to help
|
|
|
|
# prevent simultaneous updates of a policy from overwriting each other.
|
|
|
|
# It is strongly suggested that systems make use of the `etag` in the
|
|
|
|
# read-modify-write cycle to perform policy updates in order to avoid race
|
|
|
|
# conditions: An `etag` is returned in the response to `getIamPolicy`, and
|
|
|
|
# systems are expected to put that etag in the request to `setIamPolicy` to
|
|
|
|
# ensure that their change will be applied to the same version of the policy.
|
|
|
|
# If no `etag` is provided in the call to `setIamPolicy`, then the existing
|
|
|
|
# policy is overwritten blindly.
|
|
|
|
# Corresponds to the JSON property `etag`
|
|
|
|
# NOTE: Values are automatically base64 encoded/decoded in the client library.
|
2017-06-14 17:02:03 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :etag
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
#
|
|
|
|
# Corresponds to the JSON property `iamOwned`
|
|
|
|
# @return [Boolean]
|
|
|
|
attr_accessor :iam_owned
|
|
|
|
alias_method :iam_owned?, :iam_owned
|
|
|
|
|
|
|
|
# If more than one rule is specified, the rules are applied in the following
|
|
|
|
# manner:
|
|
|
|
# - All matching LOG rules are always applied.
|
|
|
|
# - If any DENY/DENY_WITH_LOG rule matches, permission is denied.
|
|
|
|
# Logging will be applied if one or more matching rule requires logging.
|
|
|
|
# - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is
|
|
|
|
# granted.
|
|
|
|
# Logging will be applied if one or more matching rule requires logging.
|
|
|
|
# - Otherwise, if no rule applies, permission is denied.
|
|
|
|
# Corresponds to the JSON property `rules`
|
|
|
|
# @return [Array<Google::Apis::SpannerV1::Rule>]
|
|
|
|
attr_accessor :rules
|
|
|
|
|
|
|
|
# Version of the `Policy`. The default version is 0.
|
|
|
|
# Corresponds to the JSON property `version`
|
|
|
|
# @return [Fixnum]
|
|
|
|
attr_accessor :version
|
2017-03-30 22:30:51 +00:00
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@audit_configs = args[:audit_configs] if args.key?(:audit_configs)
|
|
|
|
@bindings = args[:bindings] if args.key?(:bindings)
|
|
|
|
@etag = args[:etag] if args.key?(:etag)
|
|
|
|
@iam_owned = args[:iam_owned] if args.key?(:iam_owned)
|
|
|
|
@rules = args[:rules] if args.key?(:rules)
|
|
|
|
@version = args[:version] if args.key?(:version)
|
2017-03-30 22:30:51 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Contains an ordered list of nodes appearing in the query plan.
|
|
|
|
class QueryPlan
|
2017-04-03 20:18:48 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The nodes in the query plan. Plan nodes are returned in pre-order starting
|
|
|
|
# with the plan root. Each PlanNode's `id` corresponds to its index in
|
|
|
|
# `plan_nodes`.
|
|
|
|
# Corresponds to the JSON property `planNodes`
|
|
|
|
# @return [Array<Google::Apis::SpannerV1::PlanNode>]
|
|
|
|
attr_accessor :plan_nodes
|
2017-04-03 20:18:48 +00:00
|
|
|
|
2017-05-04 19:35:56 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
2017-04-03 20:18:48 +00:00
|
|
|
|
2017-05-04 19:35:56 +00:00
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@plan_nodes = args[:plan_nodes] if args.key?(:plan_nodes)
|
2017-05-04 19:35:56 +00:00
|
|
|
end
|
|
|
|
end
|
2017-04-03 20:18:48 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Message type to initiate a read-only transaction.
|
|
|
|
class ReadOnly
|
2017-05-04 19:35:56 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
2017-03-30 22:30:51 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Executes all reads at a timestamp that is `exact_staleness`
|
|
|
|
# old. The timestamp is chosen soon after the read is started.
|
|
|
|
# Guarantees that all writes that have committed more than the
|
|
|
|
# specified number of seconds ago are visible. Because Cloud Spanner
|
|
|
|
# chooses the exact timestamp, this mode works even if the client's
|
|
|
|
# local clock is substantially skewed from Cloud Spanner commit
|
|
|
|
# timestamps.
|
|
|
|
# Useful for reading at nearby replicas without the distributed
|
|
|
|
# timestamp negotiation overhead of `max_staleness`.
|
|
|
|
# Corresponds to the JSON property `exactStaleness`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :exact_staleness
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Read data at a timestamp >= `NOW - max_staleness`
|
|
|
|
# seconds. Guarantees that all writes that have committed more
|
|
|
|
# than the specified number of seconds ago are visible. Because
|
|
|
|
# Cloud Spanner chooses the exact timestamp, this mode works even if
|
|
|
|
# the client's local clock is substantially skewed from Cloud Spanner
|
|
|
|
# commit timestamps.
|
|
|
|
# Useful for reading the freshest data available at a nearby
|
|
|
|
# replica, while bounding the possible staleness if the local
|
|
|
|
# replica has fallen behind.
|
|
|
|
# Note that this option can only be used in single-use
|
|
|
|
# transactions.
|
|
|
|
# Corresponds to the JSON property `maxStaleness`
|
2017-06-14 17:02:03 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :max_staleness
|
2017-05-26 16:44:32 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Executes all reads at a timestamp >= `min_read_timestamp`.
|
|
|
|
# This is useful for requesting fresher data than some previous
|
|
|
|
# read, or data that is fresh enough to observe the effects of some
|
|
|
|
# previously committed transaction whose timestamp is known.
|
|
|
|
# Note that this option can only be used in single-use transactions.
|
|
|
|
# Corresponds to the JSON property `minReadTimestamp`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :min_read_timestamp
|
2017-03-31 19:53:27 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Executes all reads at the given timestamp. Unlike other modes,
|
|
|
|
# reads at a specific timestamp are repeatable; the same read at
|
|
|
|
# the same timestamp always returns the same data. If the
|
|
|
|
# timestamp is in the future, the read will block until the
|
|
|
|
# specified timestamp, modulo the read's deadline.
|
|
|
|
# Useful for large scale consistent reads such as mapreduces, or
|
|
|
|
# for coordinating many reads against a consistent snapshot of the
|
|
|
|
# data.
|
|
|
|
# Corresponds to the JSON property `readTimestamp`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :read_timestamp
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# If true, the Cloud Spanner-selected read timestamp is included in
|
|
|
|
# the Transaction message that describes the transaction.
|
|
|
|
# Corresponds to the JSON property `returnReadTimestamp`
|
|
|
|
# @return [Boolean]
|
|
|
|
attr_accessor :return_read_timestamp
|
|
|
|
alias_method :return_read_timestamp?, :return_read_timestamp
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Read at a timestamp where all previously committed transactions
|
|
|
|
# are visible.
|
|
|
|
# Corresponds to the JSON property `strong`
|
|
|
|
# @return [Boolean]
|
|
|
|
attr_accessor :strong
|
|
|
|
alias_method :strong?, :strong
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-03-30 22:30:51 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@exact_staleness = args[:exact_staleness] if args.key?(:exact_staleness)
|
|
|
|
@max_staleness = args[:max_staleness] if args.key?(:max_staleness)
|
|
|
|
@min_read_timestamp = args[:min_read_timestamp] if args.key?(:min_read_timestamp)
|
|
|
|
@read_timestamp = args[:read_timestamp] if args.key?(:read_timestamp)
|
|
|
|
@return_read_timestamp = args[:return_read_timestamp] if args.key?(:return_read_timestamp)
|
|
|
|
@strong = args[:strong] if args.key?(:strong)
|
2017-03-30 22:30:51 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The request for Read and
|
|
|
|
# StreamingRead.
|
|
|
|
class ReadRequest
|
2017-06-14 17:02:03 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The columns of table to be returned for each row matching
|
|
|
|
# this request.
|
|
|
|
# Corresponds to the JSON property `columns`
|
|
|
|
# @return [Array<String>]
|
|
|
|
attr_accessor :columns
|
2017-06-02 06:11:31 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# If non-empty, the name of an index on table. This index is
|
|
|
|
# used instead of the table primary key when interpreting key_set
|
|
|
|
# and sorting result rows. See key_set for further information.
|
|
|
|
# Corresponds to the JSON property `index`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :index
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# `KeySet` defines a collection of Cloud Spanner keys and/or key ranges. All
|
|
|
|
# the keys are expected to be in the same table or index. The keys need
|
|
|
|
# not be sorted in any particular way.
|
|
|
|
# If the same key is specified multiple times in the set (for example
|
|
|
|
# if two ranges, two keys, or a key and a range overlap), Cloud Spanner
|
|
|
|
# behaves as if the key were only specified once.
|
|
|
|
# Corresponds to the JSON property `keySet`
|
|
|
|
# @return [Google::Apis::SpannerV1::KeySet]
|
|
|
|
attr_accessor :key_set
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# If greater than zero, only the first `limit` rows are yielded. If `limit`
|
|
|
|
# is zero, the default is no limit.
|
|
|
|
# Corresponds to the JSON property `limit`
|
|
|
|
# @return [Fixnum]
|
|
|
|
attr_accessor :limit
|
|
|
|
|
|
|
|
# If this request is resuming a previously interrupted read,
|
|
|
|
# `resume_token` should be copied from the last
|
|
|
|
# PartialResultSet yielded before the interruption. Doing this
|
|
|
|
# enables the new read to resume where the last read left off. The
|
|
|
|
# rest of the request parameters must exactly match the request
|
|
|
|
# that yielded this token.
|
|
|
|
# Corresponds to the JSON property `resumeToken`
|
|
|
|
# NOTE: Values are automatically base64 encoded/decoded in the client library.
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :resume_token
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Required. The name of the table in the database to be read.
|
|
|
|
# Corresponds to the JSON property `table`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :table
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# This message is used to select the transaction in which a
|
|
|
|
# Read or
|
|
|
|
# ExecuteSql call runs.
|
|
|
|
# See TransactionOptions for more information about transactions.
|
|
|
|
# Corresponds to the JSON property `transaction`
|
|
|
|
# @return [Google::Apis::SpannerV1::TransactionSelector]
|
|
|
|
attr_accessor :transaction
|
2017-05-04 19:35:56 +00:00
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@columns = args[:columns] if args.key?(:columns)
|
|
|
|
@index = args[:index] if args.key?(:index)
|
|
|
|
@key_set = args[:key_set] if args.key?(:key_set)
|
|
|
|
@limit = args[:limit] if args.key?(:limit)
|
|
|
|
@resume_token = args[:resume_token] if args.key?(:resume_token)
|
|
|
|
@table = args[:table] if args.key?(:table)
|
|
|
|
@transaction = args[:transaction] if args.key?(:transaction)
|
2017-05-04 19:35:56 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Message type to initiate a read-write transaction. Currently this
|
|
|
|
# transaction type has no options.
|
|
|
|
class ReadWrite
|
2017-05-04 19:35:56 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-06-02 06:11:31 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-06-02 06:11:31 +00:00
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
|
|
|
end
|
|
|
|
end
|
2017-05-26 16:44:32 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Results from Read or
|
|
|
|
# ExecuteSql.
|
|
|
|
class ResultSet
|
2017-06-02 06:11:31 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Metadata about a ResultSet or PartialResultSet.
|
|
|
|
# Corresponds to the JSON property `metadata`
|
|
|
|
# @return [Google::Apis::SpannerV1::ResultSetMetadata]
|
|
|
|
attr_accessor :metadata
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Each element in `rows` is a row whose format is defined by
|
|
|
|
# metadata.row_type. The ith element
|
|
|
|
# in each row matches the ith field in
|
|
|
|
# metadata.row_type. Elements are
|
|
|
|
# encoded based on type as described
|
|
|
|
# here.
|
|
|
|
# Corresponds to the JSON property `rows`
|
|
|
|
# @return [Array<Array<Object>>]
|
|
|
|
attr_accessor :rows
|
|
|
|
|
|
|
|
# Additional statistics about a ResultSet or PartialResultSet.
|
|
|
|
# Corresponds to the JSON property `stats`
|
|
|
|
# @return [Google::Apis::SpannerV1::ResultSetStats]
|
|
|
|
attr_accessor :stats
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-07-12 20:10:42 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
2017-05-26 16:44:32 +00:00
|
|
|
|
2017-07-12 20:10:42 +00:00
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@metadata = args[:metadata] if args.key?(:metadata)
|
|
|
|
@rows = args[:rows] if args.key?(:rows)
|
|
|
|
@stats = args[:stats] if args.key?(:stats)
|
2017-07-12 20:10:42 +00:00
|
|
|
end
|
|
|
|
end
|
2017-05-26 16:44:32 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Metadata about a ResultSet or PartialResultSet.
|
|
|
|
class ResultSetMetadata
|
2017-07-12 20:10:42 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
2017-06-02 06:11:31 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# `StructType` defines the fields of a STRUCT type.
|
|
|
|
# Corresponds to the JSON property `rowType`
|
|
|
|
# @return [Google::Apis::SpannerV1::StructType]
|
|
|
|
attr_accessor :row_type
|
|
|
|
|
|
|
|
# A transaction.
|
|
|
|
# Corresponds to the JSON property `transaction`
|
|
|
|
# @return [Google::Apis::SpannerV1::Transaction]
|
|
|
|
attr_accessor :transaction
|
2017-05-26 16:44:32 +00:00
|
|
|
|
2017-05-04 19:35:56 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@row_type = args[:row_type] if args.key?(:row_type)
|
|
|
|
@transaction = args[:transaction] if args.key?(:transaction)
|
2017-05-04 19:35:56 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-07-12 20:10:42 +00:00
|
|
|
# Additional statistics about a ResultSet or PartialResultSet.
|
|
|
|
class ResultSetStats
|
2017-05-04 19:35:56 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Contains an ordered list of nodes appearing in the query plan.
|
|
|
|
# Corresponds to the JSON property `queryPlan`
|
|
|
|
# @return [Google::Apis::SpannerV1::QueryPlan]
|
|
|
|
attr_accessor :query_plan
|
|
|
|
|
2017-07-12 20:10:42 +00:00
|
|
|
# Aggregated statistics from the execution of the query. Only present when
|
|
|
|
# the query is profiled. For example, a query could return the statistics as
|
|
|
|
# follows:
|
|
|
|
# `
|
|
|
|
# "rows_returned": "3",
|
|
|
|
# "elapsed_time": "1.22 secs",
|
|
|
|
# "cpu_time": "1.19 secs"
|
|
|
|
# `
|
|
|
|
# Corresponds to the JSON property `queryStats`
|
|
|
|
# @return [Hash<String,Object>]
|
|
|
|
attr_accessor :query_stats
|
2017-06-02 06:11:31 +00:00
|
|
|
|
2017-05-26 16:44:32 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-05-26 16:44:32 +00:00
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-07-12 20:10:42 +00:00
|
|
|
@query_plan = args[:query_plan] if args.key?(:query_plan)
|
2017-08-25 19:54:22 +00:00
|
|
|
@query_stats = args[:query_stats] if args.key?(:query_stats)
|
2017-05-26 16:44:32 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The request for Rollback.
|
|
|
|
class RollbackRequest
|
2017-05-26 16:44:32 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Required. The transaction to roll back.
|
|
|
|
# Corresponds to the JSON property `transactionId`
|
|
|
|
# NOTE: Values are automatically base64 encoded/decoded in the client library.
|
2017-06-02 06:11:31 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :transaction_id
|
2017-06-02 06:11:31 +00:00
|
|
|
|
2017-07-12 20:10:42 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-07-12 20:10:42 +00:00
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@transaction_id = args[:transaction_id] if args.key?(:transaction_id)
|
2017-07-12 20:10:42 +00:00
|
|
|
end
|
|
|
|
end
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# A rule to be applied in a Policy.
|
|
|
|
class Rule
|
2017-07-12 20:10:42 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Required
|
|
|
|
# Corresponds to the JSON property `action`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :action
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Additional restrictions that must be met
|
|
|
|
# Corresponds to the JSON property `conditions`
|
|
|
|
# @return [Array<Google::Apis::SpannerV1::Condition>]
|
|
|
|
attr_accessor :conditions
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Human-readable description of the rule.
|
|
|
|
# Corresponds to the JSON property `description`
|
2017-06-14 17:02:03 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :description
|
|
|
|
|
|
|
|
# If one or more 'in' clauses are specified, the rule matches if
|
|
|
|
# the PRINCIPAL/AUTHORITY_SELECTOR is in at least one of these entries.
|
|
|
|
# Corresponds to the JSON property `in`
|
|
|
|
# @return [Array<String>]
|
|
|
|
attr_accessor :in
|
|
|
|
|
|
|
|
# The config returned to callers of tech.iam.IAM.CheckPolicy for any entries
|
|
|
|
# that match the LOG action.
|
|
|
|
# Corresponds to the JSON property `logConfig`
|
|
|
|
# @return [Array<Google::Apis::SpannerV1::LogConfig>]
|
|
|
|
attr_accessor :log_config
|
|
|
|
|
|
|
|
# If one or more 'not_in' clauses are specified, the rule matches
|
|
|
|
# if the PRINCIPAL/AUTHORITY_SELECTOR is in none of the entries.
|
|
|
|
# The format for in and not_in entries is the same as for members in a
|
|
|
|
# Binding (see google/iam/v1/policy.proto).
|
|
|
|
# Corresponds to the JSON property `notIn`
|
|
|
|
# @return [Array<String>]
|
|
|
|
attr_accessor :not_in
|
|
|
|
|
|
|
|
# A permission is a string of form '<service>.<resource type>.<verb>'
|
|
|
|
# (e.g., 'storage.buckets.list'). A value of '*' matches all permissions,
|
|
|
|
# and a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.
|
|
|
|
# Corresponds to the JSON property `permissions`
|
|
|
|
# @return [Array<String>]
|
|
|
|
attr_accessor :permissions
|
2017-06-02 06:11:31 +00:00
|
|
|
|
2017-05-04 19:35:56 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@action = args[:action] if args.key?(:action)
|
|
|
|
@conditions = args[:conditions] if args.key?(:conditions)
|
|
|
|
@description = args[:description] if args.key?(:description)
|
|
|
|
@in = args[:in] if args.key?(:in)
|
|
|
|
@log_config = args[:log_config] if args.key?(:log_config)
|
|
|
|
@not_in = args[:not_in] if args.key?(:not_in)
|
|
|
|
@permissions = args[:permissions] if args.key?(:permissions)
|
2017-05-04 19:35:56 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# A session in the Cloud Spanner API.
|
|
|
|
class Session
|
|
|
|
include Google::Apis::Core::Hashable
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Required. The name of the session.
|
|
|
|
# Corresponds to the JSON property `name`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :name
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-07-12 20:10:42 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@name = args[:name] if args.key?(:name)
|
2017-07-12 20:10:42 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Request message for `SetIamPolicy` method.
|
|
|
|
class SetIamPolicyRequest
|
2017-07-12 20:10:42 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Defines an Identity and Access Management (IAM) policy. It is used to
|
|
|
|
# specify access control policies for Cloud Platform resources.
|
|
|
|
# A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
|
|
|
|
# `members` to a `role`, where the members can be user accounts, Google groups,
|
|
|
|
# Google domains, and service accounts. A `role` is a named list of permissions
|
|
|
|
# defined by IAM.
|
|
|
|
# **Example**
|
|
|
|
# `
|
|
|
|
# "bindings": [
|
|
|
|
# `
|
|
|
|
# "role": "roles/owner",
|
|
|
|
# "members": [
|
|
|
|
# "user:mike@example.com",
|
|
|
|
# "group:admins@example.com",
|
|
|
|
# "domain:google.com",
|
|
|
|
# "serviceAccount:my-other-app@appspot.gserviceaccount.com",
|
|
|
|
# ]
|
|
|
|
# `,
|
|
|
|
# `
|
|
|
|
# "role": "roles/viewer",
|
|
|
|
# "members": ["user:sean@example.com"]
|
|
|
|
# `
|
|
|
|
# ]
|
|
|
|
# `
|
|
|
|
# For a description of IAM and its features, see the
|
|
|
|
# [IAM developer's guide](https://cloud.google.com/iam).
|
|
|
|
# Corresponds to the JSON property `policy`
|
|
|
|
# @return [Google::Apis::SpannerV1::Policy]
|
|
|
|
attr_accessor :policy
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only
|
|
|
|
# the fields in the mask will be modified. If no mask is provided, the
|
|
|
|
# following default mask is used:
|
|
|
|
# paths: "bindings, etag"
|
|
|
|
# This field is only used by Cloud IAM.
|
|
|
|
# Corresponds to the JSON property `updateMask`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :update_mask
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
|
|
|
@policy = args[:policy] if args.key?(:policy)
|
|
|
|
@update_mask = args[:update_mask] if args.key?(:update_mask)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# Condensed representation of a node and its subtree. Only present for
|
|
|
|
# `SCALAR` PlanNode(s).
|
|
|
|
class ShortRepresentation
|
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
|
|
|
# A string representation of the expression subtree rooted at this node.
|
|
|
|
# Corresponds to the JSON property `description`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :description
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# A mapping of (subquery variable name) -> (subquery node id) for cases
|
|
|
|
# where the `description` string of this node references a `SCALAR`
|
|
|
|
# subquery contained in the expression subtree rooted at this node. The
|
|
|
|
# referenced `SCALAR` subquery may not necessarily be a direct child of
|
|
|
|
# this node.
|
|
|
|
# Corresponds to the JSON property `subqueries`
|
|
|
|
# @return [Hash<String,Fixnum>]
|
|
|
|
attr_accessor :subqueries
|
2017-04-03 20:18:48 +00:00
|
|
|
|
2017-05-04 19:35:56 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
2017-04-03 20:18:48 +00:00
|
|
|
|
2017-05-04 19:35:56 +00:00
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@description = args[:description] if args.key?(:description)
|
|
|
|
@subqueries = args[:subqueries] if args.key?(:subqueries)
|
2017-05-04 19:35:56 +00:00
|
|
|
end
|
|
|
|
end
|
2017-04-03 20:18:48 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The `Status` type defines a logical error model that is suitable for different
|
|
|
|
# programming environments, including REST APIs and RPC APIs. It is used by
|
|
|
|
# [gRPC](https://github.com/grpc). The error model is designed to be:
|
|
|
|
# - Simple to use and understand for most users
|
|
|
|
# - Flexible enough to meet unexpected needs
|
|
|
|
# # Overview
|
|
|
|
# The `Status` message contains three pieces of data: error code, error message,
|
|
|
|
# and error details. The error code should be an enum value of
|
|
|
|
# google.rpc.Code, but it may accept additional error codes if needed. The
|
|
|
|
# error message should be a developer-facing English message that helps
|
|
|
|
# developers *understand* and *resolve* the error. If a localized user-facing
|
|
|
|
# error message is needed, put the localized message in the error details or
|
|
|
|
# localize it in the client. The optional error details may contain arbitrary
|
|
|
|
# information about the error. There is a predefined set of error detail types
|
|
|
|
# in the package `google.rpc` that can be used for common error conditions.
|
|
|
|
# # Language mapping
|
|
|
|
# The `Status` message is the logical representation of the error model, but it
|
|
|
|
# is not necessarily the actual wire format. When the `Status` message is
|
|
|
|
# exposed in different client libraries and different wire protocols, it can be
|
|
|
|
# mapped differently. For example, it will likely be mapped to some exceptions
|
|
|
|
# in Java, but more likely mapped to some error codes in C.
|
|
|
|
# # Other uses
|
|
|
|
# The error model and the `Status` message can be used in a variety of
|
|
|
|
# environments, either with or without APIs, to provide a
|
|
|
|
# consistent developer experience across different environments.
|
|
|
|
# Example uses of this error model include:
|
|
|
|
# - Partial errors. If a service needs to return partial errors to the client,
|
|
|
|
# it may embed the `Status` in the normal response to indicate the partial
|
|
|
|
# errors.
|
|
|
|
# - Workflow errors. A typical workflow has multiple steps. Each step may
|
|
|
|
# have a `Status` message for error reporting.
|
|
|
|
# - Batch operations. If a client uses batch request and batch response, the
|
|
|
|
# `Status` message should be used directly inside batch response, one for
|
|
|
|
# each error sub-response.
|
|
|
|
# - Asynchronous operations. If an API call embeds asynchronous operation
|
|
|
|
# results in its response, the status of those operations should be
|
|
|
|
# represented directly using the `Status` message.
|
|
|
|
# - Logging. If some API errors are stored in logs, the message `Status` could
|
|
|
|
# be used directly after any stripping needed for security/privacy reasons.
|
|
|
|
class Status
|
2017-05-04 19:35:56 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
2017-04-03 20:18:48 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The status code, which should be an enum value of google.rpc.Code.
|
|
|
|
# Corresponds to the JSON property `code`
|
|
|
|
# @return [Fixnum]
|
|
|
|
attr_accessor :code
|
2017-06-14 17:02:03 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# A list of messages that carry the error details. There is a common set of
|
|
|
|
# message types for APIs to use.
|
|
|
|
# Corresponds to the JSON property `details`
|
|
|
|
# @return [Array<Hash<String,Object>>]
|
|
|
|
attr_accessor :details
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# A developer-facing error message, which should be in English. Any
|
|
|
|
# user-facing error message should be localized and sent in the
|
|
|
|
# google.rpc.Status.details field, or localized by the client.
|
|
|
|
# Corresponds to the JSON property `message`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :message
|
2017-03-30 22:30:51 +00:00
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@code = args[:code] if args.key?(:code)
|
|
|
|
@details = args[:details] if args.key?(:details)
|
|
|
|
@message = args[:message] if args.key?(:message)
|
2017-03-31 19:53:27 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# `StructType` defines the fields of a STRUCT type.
|
|
|
|
class StructType
|
2017-03-31 19:53:27 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The list of fields that make up this struct. Order is
|
|
|
|
# significant, because values of this struct type are represented as
|
|
|
|
# lists, where the order of field values matches the order of
|
|
|
|
# fields in the StructType. In turn, the order of fields
|
|
|
|
# matches the order of columns in a read request, or the order of
|
|
|
|
# fields in the `SELECT` clause of a query.
|
|
|
|
# Corresponds to the JSON property `fields`
|
|
|
|
# @return [Array<Google::Apis::SpannerV1::Field>]
|
|
|
|
attr_accessor :fields
|
2017-05-04 19:35:56 +00:00
|
|
|
|
2017-03-31 19:53:27 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@fields = args[:fields] if args.key?(:fields)
|
2017-03-31 19:53:27 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Request message for `TestIamPermissions` method.
|
|
|
|
class TestIamPermissionsRequest
|
2017-03-31 19:53:27 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# REQUIRED: The set of permissions to check for 'resource'.
|
|
|
|
# Permissions with wildcards (such as '*', 'spanner.*', 'spanner.instances.*')
|
|
|
|
# are not allowed.
|
|
|
|
# Corresponds to the JSON property `permissions`
|
|
|
|
# @return [Array<String>]
|
|
|
|
attr_accessor :permissions
|
2017-03-31 19:53:27 +00:00
|
|
|
|
2017-06-02 06:11:31 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
2017-03-31 19:53:27 +00:00
|
|
|
|
2017-06-02 06:11:31 +00:00
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@permissions = args[:permissions] if args.key?(:permissions)
|
2017-06-02 06:11:31 +00:00
|
|
|
end
|
|
|
|
end
|
2017-03-31 19:53:27 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Response message for `TestIamPermissions` method.
|
|
|
|
class TestIamPermissionsResponse
|
2017-06-02 06:11:31 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# A subset of `TestPermissionsRequest.permissions` that the caller is
|
|
|
|
# allowed.
|
|
|
|
# Corresponds to the JSON property `permissions`
|
|
|
|
# @return [Array<String>]
|
|
|
|
attr_accessor :permissions
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-03-31 19:53:27 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@permissions = args[:permissions] if args.key?(:permissions)
|
2017-03-31 19:53:27 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# A transaction.
|
|
|
|
class Transaction
|
2017-03-31 19:53:27 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# `id` may be used to identify the transaction in subsequent
|
|
|
|
# Read,
|
|
|
|
# ExecuteSql,
|
|
|
|
# Commit, or
|
|
|
|
# Rollback calls.
|
|
|
|
# Single-use read-only transactions do not have IDs, because
|
|
|
|
# single-use transactions do not support multiple requests.
|
|
|
|
# Corresponds to the JSON property `id`
|
|
|
|
# NOTE: Values are automatically base64 encoded/decoded in the client library.
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :id
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# For snapshot read-only transactions, the read timestamp chosen
|
|
|
|
# for the transaction. Not returned by default: see
|
|
|
|
# TransactionOptions.ReadOnly.return_read_timestamp.
|
|
|
|
# Corresponds to the JSON property `readTimestamp`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :read_timestamp
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-03-31 19:53:27 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@id = args[:id] if args.key?(:id)
|
|
|
|
@read_timestamp = args[:read_timestamp] if args.key?(:read_timestamp)
|
2017-03-31 19:53:27 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# # Transactions
|
|
|
|
# Each session can have at most one active transaction at a time. After the
|
|
|
|
# active transaction is completed, the session can immediately be
|
|
|
|
# re-used for the next transaction. It is not necessary to create a
|
|
|
|
# new session for each transaction.
|
|
|
|
# # Transaction Modes
|
|
|
|
# Cloud Spanner supports two transaction modes:
|
|
|
|
# 1. Locking read-write. This type of transaction is the only way
|
|
|
|
# to write data into Cloud Spanner. These transactions rely on
|
|
|
|
# pessimistic locking and, if necessary, two-phase commit.
|
|
|
|
# Locking read-write transactions may abort, requiring the
|
|
|
|
# application to retry.
|
|
|
|
# 2. Snapshot read-only. This transaction type provides guaranteed
|
|
|
|
# consistency across several reads, but does not allow
|
|
|
|
# writes. Snapshot read-only transactions can be configured to
|
|
|
|
# read at timestamps in the past. Snapshot read-only
|
|
|
|
# transactions do not need to be committed.
|
|
|
|
# For transactions that only read, snapshot read-only transactions
|
|
|
|
# provide simpler semantics and are almost always faster. In
|
|
|
|
# particular, read-only transactions do not take locks, so they do
|
|
|
|
# not conflict with read-write transactions. As a consequence of not
|
|
|
|
# taking locks, they also do not abort, so retry loops are not needed.
|
|
|
|
# Transactions may only read/write data in a single database. They
|
|
|
|
# may, however, read/write data in different tables within that
|
|
|
|
# database.
|
|
|
|
# ## Locking Read-Write Transactions
|
|
|
|
# Locking transactions may be used to atomically read-modify-write
|
|
|
|
# data anywhere in a database. This type of transaction is externally
|
|
|
|
# consistent.
|
|
|
|
# Clients should attempt to minimize the amount of time a transaction
|
|
|
|
# is active. Faster transactions commit with higher probability
|
|
|
|
# and cause less contention. Cloud Spanner attempts to keep read locks
|
|
|
|
# active as long as the transaction continues to do reads, and the
|
|
|
|
# transaction has not been terminated by
|
|
|
|
# Commit or
|
|
|
|
# Rollback. Long periods of
|
|
|
|
# inactivity at the client may cause Cloud Spanner to release a
|
|
|
|
# transaction's locks and abort it.
|
|
|
|
# Reads performed within a transaction acquire locks on the data
|
|
|
|
# being read. Writes can only be done at commit time, after all reads
|
|
|
|
# have been completed.
|
|
|
|
# Conceptually, a read-write transaction consists of zero or more
|
|
|
|
# reads or SQL queries followed by
|
|
|
|
# Commit. At any time before
|
|
|
|
# Commit, the client can send a
|
|
|
|
# Rollback request to abort the
|
|
|
|
# transaction.
|
|
|
|
# ### Semantics
|
|
|
|
# Cloud Spanner can commit the transaction if all read locks it acquired
|
|
|
|
# are still valid at commit time, and it is able to acquire write
|
|
|
|
# locks for all writes. Cloud Spanner can abort the transaction for any
|
|
|
|
# reason. If a commit attempt returns `ABORTED`, Cloud Spanner guarantees
|
|
|
|
# that the transaction has not modified any user data in Cloud Spanner.
|
|
|
|
# Unless the transaction commits, Cloud Spanner makes no guarantees about
|
|
|
|
# how long the transaction's locks were held for. It is an error to
|
|
|
|
# use Cloud Spanner locks for any sort of mutual exclusion other than
|
|
|
|
# between Cloud Spanner transactions themselves.
|
|
|
|
# ### Retrying Aborted Transactions
|
|
|
|
# When a transaction aborts, the application can choose to retry the
|
|
|
|
# whole transaction again. To maximize the chances of successfully
|
|
|
|
# committing the retry, the client should execute the retry in the
|
|
|
|
# same session as the original attempt. The original session's lock
|
|
|
|
# priority increases with each consecutive abort, meaning that each
|
|
|
|
# attempt has a slightly better chance of success than the previous.
|
|
|
|
# Under some circumstances (e.g., many transactions attempting to
|
|
|
|
# modify the same row(s)), a transaction can abort many times in a
|
|
|
|
# short period before successfully committing. Thus, it is not a good
|
|
|
|
# idea to cap the number of retries a transaction can attempt;
|
|
|
|
# instead, it is better to limit the total amount of wall time spent
|
|
|
|
# retrying.
|
|
|
|
# ### Idle Transactions
|
|
|
|
# A transaction is considered idle if it has no outstanding reads or
|
|
|
|
# SQL queries and has not started a read or SQL query within the last 10
|
|
|
|
# seconds. Idle transactions can be aborted by Cloud Spanner so that they
|
|
|
|
# don't hold on to locks indefinitely. In that case, the commit will
|
|
|
|
# fail with error `ABORTED`.
|
|
|
|
# If this behavior is undesirable, periodically executing a simple
|
|
|
|
# SQL query in the transaction (e.g., `SELECT 1`) prevents the
|
|
|
|
# transaction from becoming idle.
|
|
|
|
# ## Snapshot Read-Only Transactions
|
|
|
|
# Snapshot read-only transactions provides a simpler method than
|
|
|
|
# locking read-write transactions for doing several consistent
|
|
|
|
# reads. However, this type of transaction does not support writes.
|
|
|
|
# Snapshot transactions do not take locks. Instead, they work by
|
|
|
|
# choosing a Cloud Spanner timestamp, then executing all reads at that
|
|
|
|
# timestamp. Since they do not acquire locks, they do not block
|
|
|
|
# concurrent read-write transactions.
|
|
|
|
# Unlike locking read-write transactions, snapshot read-only
|
|
|
|
# transactions never abort. They can fail if the chosen read
|
|
|
|
# timestamp is garbage collected; however, the default garbage
|
|
|
|
# collection policy is generous enough that most applications do not
|
|
|
|
# need to worry about this in practice.
|
|
|
|
# Snapshot read-only transactions do not need to call
|
|
|
|
# Commit or
|
|
|
|
# Rollback (and in fact are not
|
|
|
|
# permitted to do so).
|
|
|
|
# To execute a snapshot transaction, the client specifies a timestamp
|
|
|
|
# bound, which tells Cloud Spanner how to choose a read timestamp.
|
|
|
|
# The types of timestamp bound are:
|
|
|
|
# - Strong (the default).
|
|
|
|
# - Bounded staleness.
|
|
|
|
# - Exact staleness.
|
|
|
|
# If the Cloud Spanner database to be read is geographically distributed,
|
|
|
|
# stale read-only transactions can execute more quickly than strong
|
|
|
|
# or read-write transaction, because they are able to execute far
|
|
|
|
# from the leader replica.
|
|
|
|
# Each type of timestamp bound is discussed in detail below.
|
|
|
|
# ### Strong
|
|
|
|
# Strong reads are guaranteed to see the effects of all transactions
|
|
|
|
# that have committed before the start of the read. Furthermore, all
|
|
|
|
# rows yielded by a single read are consistent with each other -- if
|
|
|
|
# any part of the read observes a transaction, all parts of the read
|
|
|
|
# see the transaction.
|
|
|
|
# Strong reads are not repeatable: two consecutive strong read-only
|
|
|
|
# transactions might return inconsistent results if there are
|
|
|
|
# concurrent writes. If consistency across reads is required, the
|
|
|
|
# reads should be executed within a transaction or at an exact read
|
|
|
|
# timestamp.
|
|
|
|
# See TransactionOptions.ReadOnly.strong.
|
|
|
|
# ### Exact Staleness
|
|
|
|
# These timestamp bounds execute reads at a user-specified
|
|
|
|
# timestamp. Reads at a timestamp are guaranteed to see a consistent
|
|
|
|
# prefix of the global transaction history: they observe
|
|
|
|
# modifications done by all transactions with a commit timestamp <=
|
|
|
|
# the read timestamp, and observe none of the modifications done by
|
|
|
|
# transactions with a larger commit timestamp. They will block until
|
|
|
|
# all conflicting transactions that may be assigned commit timestamps
|
|
|
|
# <= the read timestamp have finished.
|
|
|
|
# The timestamp can either be expressed as an absolute Cloud Spanner commit
|
|
|
|
# timestamp or a staleness relative to the current time.
|
|
|
|
# These modes do not require a "negotiation phase" to pick a
|
|
|
|
# timestamp. As a result, they execute slightly faster than the
|
|
|
|
# equivalent boundedly stale concurrency modes. On the other hand,
|
|
|
|
# boundedly stale reads usually return fresher results.
|
|
|
|
# See TransactionOptions.ReadOnly.read_timestamp and
|
|
|
|
# TransactionOptions.ReadOnly.exact_staleness.
|
|
|
|
# ### Bounded Staleness
|
|
|
|
# Bounded staleness modes allow Cloud Spanner to pick the read timestamp,
|
|
|
|
# subject to a user-provided staleness bound. Cloud Spanner chooses the
|
|
|
|
# newest timestamp within the staleness bound that allows execution
|
|
|
|
# of the reads at the closest available replica without blocking.
|
|
|
|
# All rows yielded are consistent with each other -- if any part of
|
|
|
|
# the read observes a transaction, all parts of the read see the
|
|
|
|
# transaction. Boundedly stale reads are not repeatable: two stale
|
|
|
|
# reads, even if they use the same staleness bound, can execute at
|
|
|
|
# different timestamps and thus return inconsistent results.
|
|
|
|
# Boundedly stale reads execute in two phases: the first phase
|
|
|
|
# negotiates a timestamp among all replicas needed to serve the
|
|
|
|
# read. In the second phase, reads are executed at the negotiated
|
|
|
|
# timestamp.
|
|
|
|
# As a result of the two phase execution, bounded staleness reads are
|
|
|
|
# usually a little slower than comparable exact staleness
|
|
|
|
# reads. However, they are typically able to return fresher
|
|
|
|
# results, and are more likely to execute at the closest replica.
|
|
|
|
# Because the timestamp negotiation requires up-front knowledge of
|
|
|
|
# which rows will be read, it can only be used with single-use
|
|
|
|
# read-only transactions.
|
|
|
|
# See TransactionOptions.ReadOnly.max_staleness and
|
|
|
|
# TransactionOptions.ReadOnly.min_read_timestamp.
|
|
|
|
# ### Old Read Timestamps and Garbage Collection
|
|
|
|
# Cloud Spanner continuously garbage collects deleted and overwritten data
|
|
|
|
# in the background to reclaim storage space. This process is known
|
|
|
|
# as "version GC". By default, version GC reclaims versions after they
|
|
|
|
# are one hour old. Because of this, Cloud Spanner cannot perform reads
|
|
|
|
# at read timestamps more than one hour in the past. This
|
|
|
|
# restriction also applies to in-progress reads and/or SQL queries whose
|
|
|
|
# timestamp become too old while executing. Reads and SQL queries with
|
|
|
|
# too-old read timestamps fail with the error `FAILED_PRECONDITION`.
|
|
|
|
class TransactionOptions
|
2017-03-31 19:53:27 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Message type to initiate a read-only transaction.
|
|
|
|
# Corresponds to the JSON property `readOnly`
|
|
|
|
# @return [Google::Apis::SpannerV1::ReadOnly]
|
|
|
|
attr_accessor :read_only
|
2017-03-31 19:53:27 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Message type to initiate a read-write transaction. Currently this
|
|
|
|
# transaction type has no options.
|
|
|
|
# Corresponds to the JSON property `readWrite`
|
|
|
|
# @return [Google::Apis::SpannerV1::ReadWrite]
|
|
|
|
attr_accessor :read_write
|
2017-05-26 16:44:32 +00:00
|
|
|
|
2017-06-14 17:02:03 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
2017-05-26 16:44:32 +00:00
|
|
|
|
2017-06-14 17:02:03 +00:00
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@read_only = args[:read_only] if args.key?(:read_only)
|
|
|
|
@read_write = args[:read_write] if args.key?(:read_write)
|
2017-06-14 17:02:03 +00:00
|
|
|
end
|
|
|
|
end
|
2017-06-02 06:11:31 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# This message is used to select the transaction in which a
|
|
|
|
# Read or
|
|
|
|
# ExecuteSql call runs.
|
|
|
|
# See TransactionOptions for more information about transactions.
|
|
|
|
class TransactionSelector
|
2017-06-14 17:02:03 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
2017-06-02 06:11:31 +00:00
|
|
|
|
2017-07-12 20:10:42 +00:00
|
|
|
# # Transactions
|
|
|
|
# Each session can have at most one active transaction at a time. After the
|
|
|
|
# active transaction is completed, the session can immediately be
|
|
|
|
# re-used for the next transaction. It is not necessary to create a
|
|
|
|
# new session for each transaction.
|
|
|
|
# # Transaction Modes
|
|
|
|
# Cloud Spanner supports two transaction modes:
|
|
|
|
# 1. Locking read-write. This type of transaction is the only way
|
|
|
|
# to write data into Cloud Spanner. These transactions rely on
|
|
|
|
# pessimistic locking and, if necessary, two-phase commit.
|
|
|
|
# Locking read-write transactions may abort, requiring the
|
|
|
|
# application to retry.
|
|
|
|
# 2. Snapshot read-only. This transaction type provides guaranteed
|
|
|
|
# consistency across several reads, but does not allow
|
|
|
|
# writes. Snapshot read-only transactions can be configured to
|
|
|
|
# read at timestamps in the past. Snapshot read-only
|
|
|
|
# transactions do not need to be committed.
|
|
|
|
# For transactions that only read, snapshot read-only transactions
|
|
|
|
# provide simpler semantics and are almost always faster. In
|
|
|
|
# particular, read-only transactions do not take locks, so they do
|
|
|
|
# not conflict with read-write transactions. As a consequence of not
|
|
|
|
# taking locks, they also do not abort, so retry loops are not needed.
|
|
|
|
# Transactions may only read/write data in a single database. They
|
|
|
|
# may, however, read/write data in different tables within that
|
|
|
|
# database.
|
|
|
|
# ## Locking Read-Write Transactions
|
|
|
|
# Locking transactions may be used to atomically read-modify-write
|
|
|
|
# data anywhere in a database. This type of transaction is externally
|
|
|
|
# consistent.
|
|
|
|
# Clients should attempt to minimize the amount of time a transaction
|
|
|
|
# is active. Faster transactions commit with higher probability
|
|
|
|
# and cause less contention. Cloud Spanner attempts to keep read locks
|
|
|
|
# active as long as the transaction continues to do reads, and the
|
|
|
|
# transaction has not been terminated by
|
|
|
|
# Commit or
|
|
|
|
# Rollback. Long periods of
|
|
|
|
# inactivity at the client may cause Cloud Spanner to release a
|
|
|
|
# transaction's locks and abort it.
|
|
|
|
# Reads performed within a transaction acquire locks on the data
|
|
|
|
# being read. Writes can only be done at commit time, after all reads
|
|
|
|
# have been completed.
|
|
|
|
# Conceptually, a read-write transaction consists of zero or more
|
|
|
|
# reads or SQL queries followed by
|
|
|
|
# Commit. At any time before
|
|
|
|
# Commit, the client can send a
|
|
|
|
# Rollback request to abort the
|
|
|
|
# transaction.
|
|
|
|
# ### Semantics
|
|
|
|
# Cloud Spanner can commit the transaction if all read locks it acquired
|
|
|
|
# are still valid at commit time, and it is able to acquire write
|
|
|
|
# locks for all writes. Cloud Spanner can abort the transaction for any
|
|
|
|
# reason. If a commit attempt returns `ABORTED`, Cloud Spanner guarantees
|
|
|
|
# that the transaction has not modified any user data in Cloud Spanner.
|
|
|
|
# Unless the transaction commits, Cloud Spanner makes no guarantees about
|
|
|
|
# how long the transaction's locks were held for. It is an error to
|
|
|
|
# use Cloud Spanner locks for any sort of mutual exclusion other than
|
|
|
|
# between Cloud Spanner transactions themselves.
|
|
|
|
# ### Retrying Aborted Transactions
|
|
|
|
# When a transaction aborts, the application can choose to retry the
|
|
|
|
# whole transaction again. To maximize the chances of successfully
|
|
|
|
# committing the retry, the client should execute the retry in the
|
|
|
|
# same session as the original attempt. The original session's lock
|
|
|
|
# priority increases with each consecutive abort, meaning that each
|
|
|
|
# attempt has a slightly better chance of success than the previous.
|
|
|
|
# Under some circumstances (e.g., many transactions attempting to
|
|
|
|
# modify the same row(s)), a transaction can abort many times in a
|
|
|
|
# short period before successfully committing. Thus, it is not a good
|
|
|
|
# idea to cap the number of retries a transaction can attempt;
|
|
|
|
# instead, it is better to limit the total amount of wall time spent
|
|
|
|
# retrying.
|
|
|
|
# ### Idle Transactions
|
|
|
|
# A transaction is considered idle if it has no outstanding reads or
|
|
|
|
# SQL queries and has not started a read or SQL query within the last 10
|
|
|
|
# seconds. Idle transactions can be aborted by Cloud Spanner so that they
|
|
|
|
# don't hold on to locks indefinitely. In that case, the commit will
|
|
|
|
# fail with error `ABORTED`.
|
|
|
|
# If this behavior is undesirable, periodically executing a simple
|
|
|
|
# SQL query in the transaction (e.g., `SELECT 1`) prevents the
|
|
|
|
# transaction from becoming idle.
|
|
|
|
# ## Snapshot Read-Only Transactions
|
|
|
|
# Snapshot read-only transactions provides a simpler method than
|
|
|
|
# locking read-write transactions for doing several consistent
|
|
|
|
# reads. However, this type of transaction does not support writes.
|
|
|
|
# Snapshot transactions do not take locks. Instead, they work by
|
|
|
|
# choosing a Cloud Spanner timestamp, then executing all reads at that
|
|
|
|
# timestamp. Since they do not acquire locks, they do not block
|
|
|
|
# concurrent read-write transactions.
|
|
|
|
# Unlike locking read-write transactions, snapshot read-only
|
|
|
|
# transactions never abort. They can fail if the chosen read
|
|
|
|
# timestamp is garbage collected; however, the default garbage
|
|
|
|
# collection policy is generous enough that most applications do not
|
|
|
|
# need to worry about this in practice.
|
|
|
|
# Snapshot read-only transactions do not need to call
|
|
|
|
# Commit or
|
|
|
|
# Rollback (and in fact are not
|
|
|
|
# permitted to do so).
|
|
|
|
# To execute a snapshot transaction, the client specifies a timestamp
|
|
|
|
# bound, which tells Cloud Spanner how to choose a read timestamp.
|
|
|
|
# The types of timestamp bound are:
|
|
|
|
# - Strong (the default).
|
|
|
|
# - Bounded staleness.
|
|
|
|
# - Exact staleness.
|
|
|
|
# If the Cloud Spanner database to be read is geographically distributed,
|
|
|
|
# stale read-only transactions can execute more quickly than strong
|
|
|
|
# or read-write transaction, because they are able to execute far
|
|
|
|
# from the leader replica.
|
|
|
|
# Each type of timestamp bound is discussed in detail below.
|
|
|
|
# ### Strong
|
|
|
|
# Strong reads are guaranteed to see the effects of all transactions
|
|
|
|
# that have committed before the start of the read. Furthermore, all
|
|
|
|
# rows yielded by a single read are consistent with each other -- if
|
|
|
|
# any part of the read observes a transaction, all parts of the read
|
|
|
|
# see the transaction.
|
|
|
|
# Strong reads are not repeatable: two consecutive strong read-only
|
|
|
|
# transactions might return inconsistent results if there are
|
|
|
|
# concurrent writes. If consistency across reads is required, the
|
|
|
|
# reads should be executed within a transaction or at an exact read
|
|
|
|
# timestamp.
|
|
|
|
# See TransactionOptions.ReadOnly.strong.
|
|
|
|
# ### Exact Staleness
|
|
|
|
# These timestamp bounds execute reads at a user-specified
|
|
|
|
# timestamp. Reads at a timestamp are guaranteed to see a consistent
|
|
|
|
# prefix of the global transaction history: they observe
|
|
|
|
# modifications done by all transactions with a commit timestamp <=
|
|
|
|
# the read timestamp, and observe none of the modifications done by
|
|
|
|
# transactions with a larger commit timestamp. They will block until
|
|
|
|
# all conflicting transactions that may be assigned commit timestamps
|
|
|
|
# <= the read timestamp have finished.
|
|
|
|
# The timestamp can either be expressed as an absolute Cloud Spanner commit
|
|
|
|
# timestamp or a staleness relative to the current time.
|
|
|
|
# These modes do not require a "negotiation phase" to pick a
|
|
|
|
# timestamp. As a result, they execute slightly faster than the
|
|
|
|
# equivalent boundedly stale concurrency modes. On the other hand,
|
|
|
|
# boundedly stale reads usually return fresher results.
|
|
|
|
# See TransactionOptions.ReadOnly.read_timestamp and
|
|
|
|
# TransactionOptions.ReadOnly.exact_staleness.
|
|
|
|
# ### Bounded Staleness
|
|
|
|
# Bounded staleness modes allow Cloud Spanner to pick the read timestamp,
|
|
|
|
# subject to a user-provided staleness bound. Cloud Spanner chooses the
|
|
|
|
# newest timestamp within the staleness bound that allows execution
|
|
|
|
# of the reads at the closest available replica without blocking.
|
|
|
|
# All rows yielded are consistent with each other -- if any part of
|
|
|
|
# the read observes a transaction, all parts of the read see the
|
|
|
|
# transaction. Boundedly stale reads are not repeatable: two stale
|
|
|
|
# reads, even if they use the same staleness bound, can execute at
|
|
|
|
# different timestamps and thus return inconsistent results.
|
|
|
|
# Boundedly stale reads execute in two phases: the first phase
|
|
|
|
# negotiates a timestamp among all replicas needed to serve the
|
|
|
|
# read. In the second phase, reads are executed at the negotiated
|
|
|
|
# timestamp.
|
|
|
|
# As a result of the two phase execution, bounded staleness reads are
|
|
|
|
# usually a little slower than comparable exact staleness
|
|
|
|
# reads. However, they are typically able to return fresher
|
|
|
|
# results, and are more likely to execute at the closest replica.
|
|
|
|
# Because the timestamp negotiation requires up-front knowledge of
|
|
|
|
# which rows will be read, it can only be used with single-use
|
|
|
|
# read-only transactions.
|
|
|
|
# See TransactionOptions.ReadOnly.max_staleness and
|
|
|
|
# TransactionOptions.ReadOnly.min_read_timestamp.
|
|
|
|
# ### Old Read Timestamps and Garbage Collection
|
|
|
|
# Cloud Spanner continuously garbage collects deleted and overwritten data
|
|
|
|
# in the background to reclaim storage space. This process is known
|
|
|
|
# as "version GC". By default, version GC reclaims versions after they
|
|
|
|
# are one hour old. Because of this, Cloud Spanner cannot perform reads
|
|
|
|
# at read timestamps more than one hour in the past. This
|
|
|
|
# restriction also applies to in-progress reads and/or SQL queries whose
|
|
|
|
# timestamp become too old while executing. Reads and SQL queries with
|
|
|
|
# too-old read timestamps fail with the error `FAILED_PRECONDITION`.
|
2017-08-25 19:54:22 +00:00
|
|
|
# Corresponds to the JSON property `begin`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [Google::Apis::SpannerV1::TransactionOptions]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :begin
|
2017-03-31 19:53:27 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Execute the read or SQL query in a previously-started transaction.
|
|
|
|
# Corresponds to the JSON property `id`
|
|
|
|
# NOTE: Values are automatically base64 encoded/decoded in the client library.
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :id
|
2017-06-02 06:11:31 +00:00
|
|
|
|
2017-07-12 20:10:42 +00:00
|
|
|
# # Transactions
|
|
|
|
# Each session can have at most one active transaction at a time. After the
|
|
|
|
# active transaction is completed, the session can immediately be
|
|
|
|
# re-used for the next transaction. It is not necessary to create a
|
|
|
|
# new session for each transaction.
|
|
|
|
# # Transaction Modes
|
|
|
|
# Cloud Spanner supports two transaction modes:
|
|
|
|
# 1. Locking read-write. This type of transaction is the only way
|
|
|
|
# to write data into Cloud Spanner. These transactions rely on
|
|
|
|
# pessimistic locking and, if necessary, two-phase commit.
|
|
|
|
# Locking read-write transactions may abort, requiring the
|
|
|
|
# application to retry.
|
|
|
|
# 2. Snapshot read-only. This transaction type provides guaranteed
|
|
|
|
# consistency across several reads, but does not allow
|
|
|
|
# writes. Snapshot read-only transactions can be configured to
|
|
|
|
# read at timestamps in the past. Snapshot read-only
|
|
|
|
# transactions do not need to be committed.
|
|
|
|
# For transactions that only read, snapshot read-only transactions
|
|
|
|
# provide simpler semantics and are almost always faster. In
|
|
|
|
# particular, read-only transactions do not take locks, so they do
|
|
|
|
# not conflict with read-write transactions. As a consequence of not
|
|
|
|
# taking locks, they also do not abort, so retry loops are not needed.
|
|
|
|
# Transactions may only read/write data in a single database. They
|
|
|
|
# may, however, read/write data in different tables within that
|
|
|
|
# database.
|
|
|
|
# ## Locking Read-Write Transactions
|
|
|
|
# Locking transactions may be used to atomically read-modify-write
|
|
|
|
# data anywhere in a database. This type of transaction is externally
|
|
|
|
# consistent.
|
|
|
|
# Clients should attempt to minimize the amount of time a transaction
|
|
|
|
# is active. Faster transactions commit with higher probability
|
|
|
|
# and cause less contention. Cloud Spanner attempts to keep read locks
|
|
|
|
# active as long as the transaction continues to do reads, and the
|
|
|
|
# transaction has not been terminated by
|
|
|
|
# Commit or
|
|
|
|
# Rollback. Long periods of
|
|
|
|
# inactivity at the client may cause Cloud Spanner to release a
|
|
|
|
# transaction's locks and abort it.
|
|
|
|
# Reads performed within a transaction acquire locks on the data
|
|
|
|
# being read. Writes can only be done at commit time, after all reads
|
|
|
|
# have been completed.
|
|
|
|
# Conceptually, a read-write transaction consists of zero or more
|
|
|
|
# reads or SQL queries followed by
|
|
|
|
# Commit. At any time before
|
|
|
|
# Commit, the client can send a
|
|
|
|
# Rollback request to abort the
|
|
|
|
# transaction.
|
|
|
|
# ### Semantics
|
|
|
|
# Cloud Spanner can commit the transaction if all read locks it acquired
|
|
|
|
# are still valid at commit time, and it is able to acquire write
|
|
|
|
# locks for all writes. Cloud Spanner can abort the transaction for any
|
|
|
|
# reason. If a commit attempt returns `ABORTED`, Cloud Spanner guarantees
|
|
|
|
# that the transaction has not modified any user data in Cloud Spanner.
|
|
|
|
# Unless the transaction commits, Cloud Spanner makes no guarantees about
|
|
|
|
# how long the transaction's locks were held for. It is an error to
|
|
|
|
# use Cloud Spanner locks for any sort of mutual exclusion other than
|
|
|
|
# between Cloud Spanner transactions themselves.
|
|
|
|
# ### Retrying Aborted Transactions
|
|
|
|
# When a transaction aborts, the application can choose to retry the
|
|
|
|
# whole transaction again. To maximize the chances of successfully
|
|
|
|
# committing the retry, the client should execute the retry in the
|
|
|
|
# same session as the original attempt. The original session's lock
|
|
|
|
# priority increases with each consecutive abort, meaning that each
|
|
|
|
# attempt has a slightly better chance of success than the previous.
|
|
|
|
# Under some circumstances (e.g., many transactions attempting to
|
|
|
|
# modify the same row(s)), a transaction can abort many times in a
|
|
|
|
# short period before successfully committing. Thus, it is not a good
|
|
|
|
# idea to cap the number of retries a transaction can attempt;
|
|
|
|
# instead, it is better to limit the total amount of wall time spent
|
|
|
|
# retrying.
|
|
|
|
# ### Idle Transactions
|
|
|
|
# A transaction is considered idle if it has no outstanding reads or
|
|
|
|
# SQL queries and has not started a read or SQL query within the last 10
|
|
|
|
# seconds. Idle transactions can be aborted by Cloud Spanner so that they
|
|
|
|
# don't hold on to locks indefinitely. In that case, the commit will
|
|
|
|
# fail with error `ABORTED`.
|
|
|
|
# If this behavior is undesirable, periodically executing a simple
|
|
|
|
# SQL query in the transaction (e.g., `SELECT 1`) prevents the
|
|
|
|
# transaction from becoming idle.
|
|
|
|
# ## Snapshot Read-Only Transactions
|
|
|
|
# Snapshot read-only transactions provides a simpler method than
|
|
|
|
# locking read-write transactions for doing several consistent
|
|
|
|
# reads. However, this type of transaction does not support writes.
|
|
|
|
# Snapshot transactions do not take locks. Instead, they work by
|
|
|
|
# choosing a Cloud Spanner timestamp, then executing all reads at that
|
|
|
|
# timestamp. Since they do not acquire locks, they do not block
|
|
|
|
# concurrent read-write transactions.
|
|
|
|
# Unlike locking read-write transactions, snapshot read-only
|
|
|
|
# transactions never abort. They can fail if the chosen read
|
|
|
|
# timestamp is garbage collected; however, the default garbage
|
|
|
|
# collection policy is generous enough that most applications do not
|
|
|
|
# need to worry about this in practice.
|
|
|
|
# Snapshot read-only transactions do not need to call
|
|
|
|
# Commit or
|
|
|
|
# Rollback (and in fact are not
|
|
|
|
# permitted to do so).
|
|
|
|
# To execute a snapshot transaction, the client specifies a timestamp
|
|
|
|
# bound, which tells Cloud Spanner how to choose a read timestamp.
|
|
|
|
# The types of timestamp bound are:
|
|
|
|
# - Strong (the default).
|
|
|
|
# - Bounded staleness.
|
|
|
|
# - Exact staleness.
|
|
|
|
# If the Cloud Spanner database to be read is geographically distributed,
|
|
|
|
# stale read-only transactions can execute more quickly than strong
|
|
|
|
# or read-write transaction, because they are able to execute far
|
|
|
|
# from the leader replica.
|
|
|
|
# Each type of timestamp bound is discussed in detail below.
|
|
|
|
# ### Strong
|
|
|
|
# Strong reads are guaranteed to see the effects of all transactions
|
|
|
|
# that have committed before the start of the read. Furthermore, all
|
|
|
|
# rows yielded by a single read are consistent with each other -- if
|
|
|
|
# any part of the read observes a transaction, all parts of the read
|
|
|
|
# see the transaction.
|
|
|
|
# Strong reads are not repeatable: two consecutive strong read-only
|
|
|
|
# transactions might return inconsistent results if there are
|
|
|
|
# concurrent writes. If consistency across reads is required, the
|
|
|
|
# reads should be executed within a transaction or at an exact read
|
|
|
|
# timestamp.
|
|
|
|
# See TransactionOptions.ReadOnly.strong.
|
|
|
|
# ### Exact Staleness
|
|
|
|
# These timestamp bounds execute reads at a user-specified
|
|
|
|
# timestamp. Reads at a timestamp are guaranteed to see a consistent
|
|
|
|
# prefix of the global transaction history: they observe
|
|
|
|
# modifications done by all transactions with a commit timestamp <=
|
|
|
|
# the read timestamp, and observe none of the modifications done by
|
|
|
|
# transactions with a larger commit timestamp. They will block until
|
|
|
|
# all conflicting transactions that may be assigned commit timestamps
|
|
|
|
# <= the read timestamp have finished.
|
|
|
|
# The timestamp can either be expressed as an absolute Cloud Spanner commit
|
|
|
|
# timestamp or a staleness relative to the current time.
|
|
|
|
# These modes do not require a "negotiation phase" to pick a
|
|
|
|
# timestamp. As a result, they execute slightly faster than the
|
|
|
|
# equivalent boundedly stale concurrency modes. On the other hand,
|
|
|
|
# boundedly stale reads usually return fresher results.
|
|
|
|
# See TransactionOptions.ReadOnly.read_timestamp and
|
|
|
|
# TransactionOptions.ReadOnly.exact_staleness.
|
|
|
|
# ### Bounded Staleness
|
|
|
|
# Bounded staleness modes allow Cloud Spanner to pick the read timestamp,
|
|
|
|
# subject to a user-provided staleness bound. Cloud Spanner chooses the
|
|
|
|
# newest timestamp within the staleness bound that allows execution
|
|
|
|
# of the reads at the closest available replica without blocking.
|
|
|
|
# All rows yielded are consistent with each other -- if any part of
|
|
|
|
# the read observes a transaction, all parts of the read see the
|
|
|
|
# transaction. Boundedly stale reads are not repeatable: two stale
|
|
|
|
# reads, even if they use the same staleness bound, can execute at
|
|
|
|
# different timestamps and thus return inconsistent results.
|
|
|
|
# Boundedly stale reads execute in two phases: the first phase
|
|
|
|
# negotiates a timestamp among all replicas needed to serve the
|
|
|
|
# read. In the second phase, reads are executed at the negotiated
|
|
|
|
# timestamp.
|
|
|
|
# As a result of the two phase execution, bounded staleness reads are
|
|
|
|
# usually a little slower than comparable exact staleness
|
|
|
|
# reads. However, they are typically able to return fresher
|
|
|
|
# results, and are more likely to execute at the closest replica.
|
|
|
|
# Because the timestamp negotiation requires up-front knowledge of
|
|
|
|
# which rows will be read, it can only be used with single-use
|
|
|
|
# read-only transactions.
|
|
|
|
# See TransactionOptions.ReadOnly.max_staleness and
|
|
|
|
# TransactionOptions.ReadOnly.min_read_timestamp.
|
|
|
|
# ### Old Read Timestamps and Garbage Collection
|
|
|
|
# Cloud Spanner continuously garbage collects deleted and overwritten data
|
|
|
|
# in the background to reclaim storage space. This process is known
|
|
|
|
# as "version GC". By default, version GC reclaims versions after they
|
|
|
|
# are one hour old. Because of this, Cloud Spanner cannot perform reads
|
|
|
|
# at read timestamps more than one hour in the past. This
|
|
|
|
# restriction also applies to in-progress reads and/or SQL queries whose
|
|
|
|
# timestamp become too old while executing. Reads and SQL queries with
|
|
|
|
# too-old read timestamps fail with the error `FAILED_PRECONDITION`.
|
2017-08-25 19:54:22 +00:00
|
|
|
# Corresponds to the JSON property `singleUse`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [Google::Apis::SpannerV1::TransactionOptions]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :single_use
|
2017-06-02 06:11:31 +00:00
|
|
|
|
2017-03-31 19:53:27 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@begin = args[:begin] if args.key?(:begin)
|
|
|
|
@id = args[:id] if args.key?(:id)
|
|
|
|
@single_use = args[:single_use] if args.key?(:single_use)
|
2017-03-30 22:30:51 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# `Type` indicates the type of a Cloud Spanner value, as might be stored in a
|
|
|
|
# table cell or returned from an SQL query.
|
|
|
|
class Type
|
2017-03-30 22:30:51 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# `Type` indicates the type of a Cloud Spanner value, as might be stored in a
|
|
|
|
# table cell or returned from an SQL query.
|
|
|
|
# Corresponds to the JSON property `arrayElementType`
|
|
|
|
# @return [Google::Apis::SpannerV1::Type]
|
|
|
|
attr_accessor :array_element_type
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Required. The TypeCode for this type.
|
|
|
|
# Corresponds to the JSON property `code`
|
2017-06-02 06:11:31 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :code
|
2017-06-02 06:11:31 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# `StructType` defines the fields of a STRUCT type.
|
|
|
|
# Corresponds to the JSON property `structType`
|
|
|
|
# @return [Google::Apis::SpannerV1::StructType]
|
|
|
|
attr_accessor :struct_type
|
2017-03-30 22:30:51 +00:00
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@array_element_type = args[:array_element_type] if args.key?(:array_element_type)
|
|
|
|
@code = args[:code] if args.key?(:code)
|
|
|
|
@struct_type = args[:struct_type] if args.key?(:struct_type)
|
2017-03-30 22:30:51 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-07-12 20:10:42 +00:00
|
|
|
# Metadata type for the operation returned by
|
2017-08-25 19:54:22 +00:00
|
|
|
# UpdateDatabaseDdl.
|
|
|
|
class UpdateDatabaseDdlMetadata
|
2017-06-02 06:11:31 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
2017-03-30 22:30:51 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Reports the commit timestamps of all statements that have
|
|
|
|
# succeeded so far, where `commit_timestamps[i]` is the commit
|
|
|
|
# timestamp for the statement `statements[i]`.
|
|
|
|
# Corresponds to the JSON property `commitTimestamps`
|
|
|
|
# @return [Array<String>]
|
|
|
|
attr_accessor :commit_timestamps
|
2017-03-30 22:30:51 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The database being modified.
|
|
|
|
# Corresponds to the JSON property `database`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :database
|
|
|
|
|
|
|
|
# For an update this list contains all the statements. For an
|
|
|
|
# individual statement, this list contains only that statement.
|
|
|
|
# Corresponds to the JSON property `statements`
|
|
|
|
# @return [Array<String>]
|
|
|
|
attr_accessor :statements
|
2017-06-02 06:11:31 +00:00
|
|
|
|
2017-07-12 20:10:42 +00:00
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
2017-06-02 06:11:31 +00:00
|
|
|
|
2017-07-12 20:10:42 +00:00
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@commit_timestamps = args[:commit_timestamps] if args.key?(:commit_timestamps)
|
|
|
|
@database = args[:database] if args.key?(:database)
|
|
|
|
@statements = args[:statements] if args.key?(:statements)
|
2017-07-12 20:10:42 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Enqueues the given DDL statements to be applied, in order but not
|
|
|
|
# necessarily all at once, to the database schema at some point (or
|
|
|
|
# points) in the future. The server checks that the statements
|
|
|
|
# are executable (syntactically valid, name tables that exist, etc.)
|
|
|
|
# before enqueueing them, but they may still fail upon
|
|
|
|
# later execution (e.g., if a statement from another batch of
|
|
|
|
# statements is applied first and it conflicts in some way, or if
|
|
|
|
# there is some data-related problem like a `NULL` value in a column to
|
|
|
|
# which `NOT NULL` would be added). If a statement fails, all
|
|
|
|
# subsequent statements in the batch are automatically cancelled.
|
|
|
|
# Each batch of statements is assigned a name which can be used with
|
|
|
|
# the Operations API to monitor
|
|
|
|
# progress. See the
|
|
|
|
# operation_id field for more
|
|
|
|
# details.
|
|
|
|
class UpdateDatabaseDdlRequest
|
2017-07-12 20:10:42 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# If empty, the new update request is assigned an
|
|
|
|
# automatically-generated operation ID. Otherwise, `operation_id`
|
|
|
|
# is used to construct the name of the resulting
|
|
|
|
# Operation.
|
|
|
|
# Specifying an explicit operation ID simplifies determining
|
|
|
|
# whether the statements were executed in the event that the
|
|
|
|
# UpdateDatabaseDdl call is replayed,
|
|
|
|
# or the return value is otherwise lost: the database and
|
|
|
|
# `operation_id` fields can be combined to form the
|
|
|
|
# name of the resulting
|
|
|
|
# longrunning.Operation: `<database>/operations/<operation_id>`.
|
|
|
|
# `operation_id` should be unique within the database, and must be
|
|
|
|
# a valid identifier: `a-z*`. Note that
|
|
|
|
# automatically-generated operation IDs always begin with an
|
|
|
|
# underscore. If the named operation already exists,
|
|
|
|
# UpdateDatabaseDdl returns
|
|
|
|
# `ALREADY_EXISTS`.
|
|
|
|
# Corresponds to the JSON property `operationId`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :operation_id
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# DDL statements to be applied to the database.
|
|
|
|
# Corresponds to the JSON property `statements`
|
|
|
|
# @return [Array<String>]
|
|
|
|
attr_accessor :statements
|
2017-07-12 20:10:42 +00:00
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@operation_id = args[:operation_id] if args.key?(:operation_id)
|
|
|
|
@statements = args[:statements] if args.key?(:statements)
|
2017-07-12 20:10:42 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Metadata type for the operation returned by
|
|
|
|
# UpdateInstance.
|
|
|
|
class UpdateInstanceMetadata
|
2017-07-12 20:10:42 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The time at which this operation was cancelled. If set, this operation is
|
|
|
|
# in the process of undoing itself (which is guaranteed to succeed) and
|
|
|
|
# cannot be cancelled again.
|
|
|
|
# Corresponds to the JSON property `cancelTime`
|
2017-06-02 06:11:31 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :cancel_time
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The time at which this operation failed or was completed successfully.
|
|
|
|
# Corresponds to the JSON property `endTime`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :end_time
|
|
|
|
|
|
|
|
# An isolated set of Cloud Spanner resources on which databases can be hosted.
|
|
|
|
# Corresponds to the JSON property `instance`
|
|
|
|
# @return [Google::Apis::SpannerV1::Instance]
|
|
|
|
attr_accessor :instance
|
|
|
|
|
|
|
|
# The time at which UpdateInstance
|
|
|
|
# request was received.
|
|
|
|
# Corresponds to the JSON property `startTime`
|
|
|
|
# @return [String]
|
|
|
|
attr_accessor :start_time
|
2017-03-30 22:30:51 +00:00
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@cancel_time = args[:cancel_time] if args.key?(:cancel_time)
|
|
|
|
@end_time = args[:end_time] if args.key?(:end_time)
|
|
|
|
@instance = args[:instance] if args.key?(:instance)
|
|
|
|
@start_time = args[:start_time] if args.key?(:start_time)
|
2017-07-12 20:10:42 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The request for UpdateInstance.
|
|
|
|
class UpdateInstanceRequest
|
2017-07-12 20:10:42 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Required. A mask specifying which fields in [][google.spanner.admin.instance.
|
|
|
|
# v1.UpdateInstanceRequest.instance] should be updated.
|
|
|
|
# The field mask must always be specified; this prevents any future fields in
|
|
|
|
# [][google.spanner.admin.instance.v1.Instance] from being erased accidentally
|
|
|
|
# by clients that do not know
|
|
|
|
# about them.
|
|
|
|
# Corresponds to the JSON property `fieldMask`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :field_mask
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# An isolated set of Cloud Spanner resources on which databases can be hosted.
|
|
|
|
# Corresponds to the JSON property `instance`
|
|
|
|
# @return [Google::Apis::SpannerV1::Instance]
|
|
|
|
attr_accessor :instance
|
2017-07-12 20:10:42 +00:00
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@field_mask = args[:field_mask] if args.key?(:field_mask)
|
|
|
|
@instance = args[:instance] if args.key?(:instance)
|
2017-07-12 20:10:42 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Arguments to insert, update, insert_or_update, and
|
|
|
|
# replace operations.
|
|
|
|
class Write
|
2017-07-12 20:10:42 +00:00
|
|
|
include Google::Apis::Core::Hashable
|
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# The names of the columns in table to be written.
|
|
|
|
# The list of columns must contain enough columns to allow
|
|
|
|
# Cloud Spanner to derive values for all primary key columns in the
|
|
|
|
# row(s) to be modified.
|
|
|
|
# Corresponds to the JSON property `columns`
|
|
|
|
# @return [Array<String>]
|
|
|
|
attr_accessor :columns
|
2017-07-12 20:10:42 +00:00
|
|
|
|
2017-08-25 19:54:22 +00:00
|
|
|
# Required. The table whose rows will be written.
|
|
|
|
# Corresponds to the JSON property `table`
|
2017-07-12 20:10:42 +00:00
|
|
|
# @return [String]
|
2017-08-25 19:54:22 +00:00
|
|
|
attr_accessor :table
|
|
|
|
|
|
|
|
# The values to be written. `values` can contain more than one
|
|
|
|
# list of values. If it does, then multiple rows are written, one
|
|
|
|
# for each entry in `values`. Each list in `values` must have
|
|
|
|
# exactly as many entries as there are entries in columns
|
|
|
|
# above. Sending multiple lists is equivalent to sending multiple
|
|
|
|
# `Mutation`s, each containing one `values` entry and repeating
|
|
|
|
# table and columns. Individual values in each list are
|
|
|
|
# encoded as described here.
|
|
|
|
# Corresponds to the JSON property `values`
|
|
|
|
# @return [Array<Array<Object>>]
|
|
|
|
attr_accessor :values
|
2017-07-12 20:10:42 +00:00
|
|
|
|
|
|
|
def initialize(**args)
|
|
|
|
update!(**args)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Update properties of this object
|
|
|
|
def update!(**args)
|
2017-08-25 19:54:22 +00:00
|
|
|
@columns = args[:columns] if args.key?(:columns)
|
|
|
|
@table = args[:table] if args.key?(:table)
|
|
|
|
@values = args[:values] if args.key?(:values)
|
2017-03-30 22:30:51 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|