Showing content from https://cloud.google.com/cpp/docs/reference/spanner/2.40.0/classgoogle_1_1cloud_1_1spanner_1_1Value below:
Class Value (2.40.0) | C++ Client Libraries
Skip to main content
- Overview
-
Library reference docs
- Cloud Spanner C++ Client Library
-
Namespaces
-
google::cloud::spanner
- Overview
-
Classes
-
Structs
-
ExcludeTransactionFromChangeStreamsOption
-
QueryOptimizerStatisticsPackageOption
-
SessionPoolActionOnExhaustionOption
-
SessionPoolKeepAliveIntervalOption
-
SessionPoolMaxIdleSessionsOption
-
SessionPoolMaxSessionsPerChannelOption
-
StreamingResumabilityBufferSizeOption
-
Functions
- ToInteger(Decimal< Mode > const &, int)
- MakeNumeric(std::string)
- MakeNumeric(double)
- MakeNumeric(T, int)
- MakePgNumeric(std::string)
- MakePgNumeric(double)
- MakePgNumeric(T, int)
- MakeBackup(std::string const &)
- MakeConnection(spanner::Database const &, Options)
- MakeConnection(Database const &, ConnectionOptions const &, SessionPoolOptions)
- MakeConnection(Database const &, ConnectionOptions const &, SessionPoolOptions, std::unique_ptr< RetryPolicy >, std::unique_ptr< BackoffPolicy >)
- MakeDatabase(std::string const &)
- MakeDatabaseAdminConnection(Options)
- MakeDatabaseAdminConnection(ConnectionOptions const &)
- MakeDatabaseAdminConnection(ConnectionOptions const &, std::unique_ptr< RetryPolicy >, std::unique_ptr< BackoffPolicy >, std::unique_ptr< PollingPolicy >)
- MakeInstance(std::string const &)
- MakeInstanceAdminConnection(Options)
- MakeInstanceAdminConnection(ConnectionOptions const &)
- MakeInstanceAdminConnection(ConnectionOptions const &, std::unique_ptr< RetryPolicy >, std::unique_ptr< BackoffPolicy >, std::unique_ptr< PollingPolicy >)
- MakeInterval(absl::string_view)
- JustifyDays(Interval)
- JustifyHours(Interval)
- JustifyInterval(Interval)
- MakeKey(Ts &&...)
- MakeKeyBoundClosed(Ts &&...)
- MakeKeyBoundOpen(Ts &&...)
- MakeInsertMutation(std::string, std::vector< std::string >, Ts &&...)
- MakeUpdateMutation(std::string, std::vector< std::string >, Ts &&...)
- MakeInsertOrUpdateMutation(std::string, std::vector< std::string >, Ts &&...)
- MakeReplaceMutation(std::string, std::vector< std::string >, Ts &&...)
- MakeDeleteMutation(std::string, KeySet)
- MakeDecimal(std::string)
- MakeDecimal(double)
- MakeDecimal(T, int)
- ToDouble(Decimal< Mode > const &)
- ToOptions(PartitionOptions const &)
- ToPartitionOptions(Options const &)
- SerializeQueryPartition(QueryPartition const &)
- DeserializeQueryPartition(std::string const &)
- ToOptions(ReadOptions const &)
- ToReadOptions(Options const &)
- SerializeReadPartition(ReadPartition const &)
- DeserializeReadPartition(std::string const &)
- MakeTestRow(std::vector< std::pair< std::string, Value > >)
- MakeTestRow(Ts &&...)
- StreamOf(RowRange &&)
- GetSingularRow(RowRange)
- MakeTimestamp(absl::Time)
- MakeTimestamp(protobuf::Timestamp const &)
- MakeTimestamp(sys_time< Duration > const &)
- MakeReadOnlyTransaction(Transaction::ReadOnlyOptions)
- MakeReadWriteTransaction(Transaction::ReadWriteOptions)
- MakeReadWriteTransaction(Transaction const &, Transaction::ReadWriteOptions)
- MakeUuid(absl::string_view)
- MakeNullValue()
- VersionMajor()
- VersionMinor()
- VersionPatch()
- VersionPreRelease()
- Version()
- VersionString()
-
Operators
- operator==(Json const &, Json const &)
- operator!=(Json const &, Json const &)
- operator==(JsonB const &, JsonB const &)
- operator!=(JsonB const &, JsonB const &)
- operator==(ReplicaSelection const &, ReplicaSelection const &)
- operator!=(ReplicaSelection const &, ReplicaSelection const &)
- operator<<(std::ostream &, Json const &)
- operator<<(std::ostream &, JsonB const &)
- operator<<(std::ostream &, PgOid const &)
- operator==(PartitionOptions const &, PartitionOptions const &)
- operator!=(PartitionOptions const &, PartitionOptions const &)
- operator==(ReadOptions const &, ReadOptions const &)
- operator!=(ReadOptions const &, ReadOptions const &)
-
google::cloud::spanner_admin
- Overview
-
Classes
-
DatabaseAdminClient
- Overview
-
Functions
- ListDatabases(std::string const &, Options)
- ListDatabases(google::spanner::admin::database::v1::ListDatabasesRequest, Options)
- CreateDatabase(std::string const &, std::string const &, Options)
- CreateDatabase(NoAwaitTag, std::string const &, std::string const &, Options)
- CreateDatabase(google::spanner::admin::database::v1::CreateDatabaseRequest const &, Options)
- CreateDatabase(NoAwaitTag, google::spanner::admin::database::v1::CreateDatabaseRequest const &, Options)
- CreateDatabase(google::longrunning::Operation const &, Options)
- GetDatabase(std::string const &, Options)
- GetDatabase(google::spanner::admin::database::v1::GetDatabaseRequest const &, Options)
- UpdateDatabase(google::spanner::admin::database::v1::Database const &, google::protobuf::FieldMask const &, Options)
- UpdateDatabase(NoAwaitTag, google::spanner::admin::database::v1::Database const &, google::protobuf::FieldMask const &, Options)
- UpdateDatabase(google::spanner::admin::database::v1::UpdateDatabaseRequest const &, Options)
- UpdateDatabase(NoAwaitTag, google::spanner::admin::database::v1::UpdateDatabaseRequest const &, Options)
- UpdateDatabase(google::longrunning::Operation const &, Options)
- UpdateDatabaseDdl(std::string const &, std::vector< std::string > const &, Options)
- UpdateDatabaseDdl(NoAwaitTag, std::string const &, std::vector< std::string > const &, Options)
- UpdateDatabaseDdl(google::spanner::admin::database::v1::UpdateDatabaseDdlRequest const &, Options)
- UpdateDatabaseDdl(NoAwaitTag, google::spanner::admin::database::v1::UpdateDatabaseDdlRequest const &, Options)
- UpdateDatabaseDdl(google::longrunning::Operation const &, Options)
- DropDatabase(std::string const &, Options)
- DropDatabase(google::spanner::admin::database::v1::DropDatabaseRequest const &, Options)
- GetDatabaseDdl(std::string const &, Options)
- GetDatabaseDdl(google::spanner::admin::database::v1::GetDatabaseDdlRequest const &, Options)
- SetIamPolicy(std::string const &, google::iam::v1::Policy const &, Options)
- SetIamPolicy(std::string const &, IamUpdater const &, Options)
- SetIamPolicy(google::iam::v1::SetIamPolicyRequest const &, Options)
- GetIamPolicy(std::string const &, Options)
- GetIamPolicy(google::iam::v1::GetIamPolicyRequest const &, Options)
- TestIamPermissions(std::string const &, std::vector< std::string > const &, Options)
- TestIamPermissions(google::iam::v1::TestIamPermissionsRequest const &, Options)
- CreateBackup(std::string const &, google::spanner::admin::database::v1::Backup const &, std::string const &, Options)
- CreateBackup(NoAwaitTag, std::string const &, google::spanner::admin::database::v1::Backup const &, std::string const &, Options)
- CreateBackup(google::spanner::admin::database::v1::CreateBackupRequest const &, Options)
- CreateBackup(NoAwaitTag, google::spanner::admin::database::v1::CreateBackupRequest const &, Options)
- CreateBackup(google::longrunning::Operation const &, Options)
- CopyBackup(std::string const &, std::string const &, std::string const &, google::protobuf::Timestamp const &, Options)
- CopyBackup(NoAwaitTag, std::string const &, std::string const &, std::string const &, google::protobuf::Timestamp const &, Options)
- CopyBackup(google::spanner::admin::database::v1::CopyBackupRequest const &, Options)
- CopyBackup(NoAwaitTag, google::spanner::admin::database::v1::CopyBackupRequest const &, Options)
- CopyBackup(google::longrunning::Operation const &, Options)
- GetBackup(std::string const &, Options)
- GetBackup(google::spanner::admin::database::v1::GetBackupRequest const &, Options)
- UpdateBackup(google::spanner::admin::database::v1::Backup const &, google::protobuf::FieldMask const &, Options)
- UpdateBackup(google::spanner::admin::database::v1::UpdateBackupRequest const &, Options)
- DeleteBackup(std::string const &, Options)
- DeleteBackup(google::spanner::admin::database::v1::DeleteBackupRequest const &, Options)
- ListBackups(std::string const &, Options)
- ListBackups(google::spanner::admin::database::v1::ListBackupsRequest, Options)
- RestoreDatabase(std::string const &, std::string const &, std::string const &, Options)
- RestoreDatabase(NoAwaitTag, std::string const &, std::string const &, std::string const &, Options)
- RestoreDatabase(google::spanner::admin::database::v1::RestoreDatabaseRequest const &, Options)
- RestoreDatabase(NoAwaitTag, google::spanner::admin::database::v1::RestoreDatabaseRequest const &, Options)
- RestoreDatabase(google::longrunning::Operation const &, Options)
- ListDatabaseOperations(std::string const &, Options)
- ListDatabaseOperations(google::spanner::admin::database::v1::ListDatabaseOperationsRequest, Options)
- ListBackupOperations(std::string const &, Options)
- ListBackupOperations(google::spanner::admin::database::v1::ListBackupOperationsRequest, Options)
- ListDatabaseRoles(std::string const &, Options)
- ListDatabaseRoles(google::spanner::admin::database::v1::ListDatabaseRolesRequest, Options)
- AddSplitPoints(std::string const &, std::vector< google::spanner::admin::database::v1::SplitPoints > const &, Options)
- AddSplitPoints(google::spanner::admin::database::v1::AddSplitPointsRequest const &, Options)
- CreateBackupSchedule(std::string const &, google::spanner::admin::database::v1::BackupSchedule const &, std::string const &, Options)
- CreateBackupSchedule(google::spanner::admin::database::v1::CreateBackupScheduleRequest const &, Options)
- GetBackupSchedule(std::string const &, Options)
- GetBackupSchedule(google::spanner::admin::database::v1::GetBackupScheduleRequest const &, Options)
- UpdateBackupSchedule(google::spanner::admin::database::v1::BackupSchedule const &, google::protobuf::FieldMask const &, Options)
- UpdateBackupSchedule(google::spanner::admin::database::v1::UpdateBackupScheduleRequest const &, Options)
- DeleteBackupSchedule(std::string const &, Options)
- DeleteBackupSchedule(google::spanner::admin::database::v1::DeleteBackupScheduleRequest const &, Options)
- ListBackupSchedules(std::string const &, Options)
- ListBackupSchedules(google::spanner::admin::database::v1::ListBackupSchedulesRequest, Options)
- ListOperations(std::string const &, std::string const &, Options)
- ListOperations(google::longrunning::ListOperationsRequest, Options)
- GetOperation(std::string const &, Options)
- GetOperation(google::longrunning::GetOperationRequest const &, Options)
- DeleteOperation(std::string const &, Options)
- DeleteOperation(google::longrunning::DeleteOperationRequest const &, Options)
- CancelOperation(std::string const &, Options)
- CancelOperation(google::longrunning::CancelOperationRequest const &, Options)
-
DatabaseAdminConnectionIdempotencyPolicy
-
DatabaseAdminLimitedErrorCountRetryPolicy
-
DatabaseAdminLimitedTimeRetryPolicy
-
InstanceAdminClient
- Overview
-
Functions
- ListInstanceConfigs(std::string const &, Options)
- ListInstanceConfigs(google::spanner::admin::instance::v1::ListInstanceConfigsRequest, Options)
- GetInstanceConfig(std::string const &, Options)
- GetInstanceConfig(google::spanner::admin::instance::v1::GetInstanceConfigRequest const &, Options)
- CreateInstanceConfig(std::string const &, google::spanner::admin::instance::v1::InstanceConfig const &, std::string const &, Options)
- CreateInstanceConfig(NoAwaitTag, std::string const &, google::spanner::admin::instance::v1::InstanceConfig const &, std::string const &, Options)
- CreateInstanceConfig(google::spanner::admin::instance::v1::CreateInstanceConfigRequest const &, Options)
- CreateInstanceConfig(NoAwaitTag, google::spanner::admin::instance::v1::CreateInstanceConfigRequest const &, Options)
- CreateInstanceConfig(google::longrunning::Operation const &, Options)
- UpdateInstanceConfig(google::spanner::admin::instance::v1::InstanceConfig const &, google::protobuf::FieldMask const &, Options)
- UpdateInstanceConfig(NoAwaitTag, google::spanner::admin::instance::v1::InstanceConfig const &, google::protobuf::FieldMask const &, Options)
- UpdateInstanceConfig(google::spanner::admin::instance::v1::UpdateInstanceConfigRequest const &, Options)
- UpdateInstanceConfig(NoAwaitTag, google::spanner::admin::instance::v1::UpdateInstanceConfigRequest const &, Options)
- UpdateInstanceConfig(google::longrunning::Operation const &, Options)
- DeleteInstanceConfig(std::string const &, Options)
- DeleteInstanceConfig(google::spanner::admin::instance::v1::DeleteInstanceConfigRequest const &, Options)
- ListInstanceConfigOperations(std::string const &, Options)
- ListInstanceConfigOperations(google::spanner::admin::instance::v1::ListInstanceConfigOperationsRequest, Options)
- ListInstances(std::string const &, Options)
- ListInstances(google::spanner::admin::instance::v1::ListInstancesRequest, Options)
- ListInstancePartitions(std::string const &, Options)
- ListInstancePartitions(google::spanner::admin::instance::v1::ListInstancePartitionsRequest, Options)
- GetInstance(std::string const &, Options)
- GetInstance(google::spanner::admin::instance::v1::GetInstanceRequest const &, Options)
- CreateInstance(std::string const &, std::string const &, google::spanner::admin::instance::v1::Instance const &, Options)
- CreateInstance(NoAwaitTag, std::string const &, std::string const &, google::spanner::admin::instance::v1::Instance const &, Options)
- CreateInstance(google::spanner::admin::instance::v1::CreateInstanceRequest const &, Options)
- CreateInstance(NoAwaitTag, google::spanner::admin::instance::v1::CreateInstanceRequest const &, Options)
- CreateInstance(google::longrunning::Operation const &, Options)
- UpdateInstance(google::spanner::admin::instance::v1::Instance const &, google::protobuf::FieldMask const &, Options)
- UpdateInstance(NoAwaitTag, google::spanner::admin::instance::v1::Instance const &, google::protobuf::FieldMask const &, Options)
- UpdateInstance(google::spanner::admin::instance::v1::UpdateInstanceRequest const &, Options)
- UpdateInstance(NoAwaitTag, google::spanner::admin::instance::v1::UpdateInstanceRequest const &, Options)
- UpdateInstance(google::longrunning::Operation const &, Options)
- DeleteInstance(std::string const &, Options)
- DeleteInstance(google::spanner::admin::instance::v1::DeleteInstanceRequest const &, Options)
- SetIamPolicy(std::string const &, google::iam::v1::Policy const &, Options)
- SetIamPolicy(std::string const &, IamUpdater const &, Options)
- SetIamPolicy(google::iam::v1::SetIamPolicyRequest const &, Options)
- GetIamPolicy(std::string const &, Options)
- GetIamPolicy(google::iam::v1::GetIamPolicyRequest const &, Options)
- TestIamPermissions(std::string const &, std::vector< std::string > const &, Options)
- TestIamPermissions(google::iam::v1::TestIamPermissionsRequest const &, Options)
- GetInstancePartition(std::string const &, Options)
- GetInstancePartition(google::spanner::admin::instance::v1::GetInstancePartitionRequest const &, Options)
- CreateInstancePartition(std::string const &, google::spanner::admin::instance::v1::InstancePartition const &, std::string const &, Options)
- CreateInstancePartition(NoAwaitTag, std::string const &, google::spanner::admin::instance::v1::InstancePartition const &, std::string const &, Options)
- CreateInstancePartition(google::spanner::admin::instance::v1::CreateInstancePartitionRequest const &, Options)
- CreateInstancePartition(NoAwaitTag, google::spanner::admin::instance::v1::CreateInstancePartitionRequest const &, Options)
- CreateInstancePartition(google::longrunning::Operation const &, Options)
- DeleteInstancePartition(std::string const &, Options)
- DeleteInstancePartition(google::spanner::admin::instance::v1::DeleteInstancePartitionRequest const &, Options)
- UpdateInstancePartition(google::spanner::admin::instance::v1::InstancePartition const &, google::protobuf::FieldMask const &, Options)
- UpdateInstancePartition(NoAwaitTag, google::spanner::admin::instance::v1::InstancePartition const &, google::protobuf::FieldMask const &, Options)
- UpdateInstancePartition(google::spanner::admin::instance::v1::UpdateInstancePartitionRequest const &, Options)
- UpdateInstancePartition(NoAwaitTag, google::spanner::admin::instance::v1::UpdateInstancePartitionRequest const &, Options)
- UpdateInstancePartition(google::longrunning::Operation const &, Options)
- ListInstancePartitionOperations(std::string const &, Options)
- ListInstancePartitionOperations(google::spanner::admin::instance::v1::ListInstancePartitionOperationsRequest, Options)
- MoveInstance(google::spanner::admin::instance::v1::MoveInstanceRequest const &, Options)
- MoveInstance(NoAwaitTag, google::spanner::admin::instance::v1::MoveInstanceRequest const &, Options)
- MoveInstance(google::longrunning::Operation const &, Options)
- ListOperations(std::string const &, std::string const &, Options)
- ListOperations(google::longrunning::ListOperationsRequest, Options)
- GetOperation(std::string const &, Options)
- GetOperation(google::longrunning::GetOperationRequest const &, Options)
- DeleteOperation(std::string const &, Options)
- DeleteOperation(google::longrunning::DeleteOperationRequest const &, Options)
- CancelOperation(std::string const &, Options)
- CancelOperation(google::longrunning::CancelOperationRequest const &, Options)
-
InstanceAdminConnectionIdempotencyPolicy
-
InstanceAdminLimitedErrorCountRetryPolicy
-
InstanceAdminLimitedTimeRetryPolicy
-
Structs
-
DatabaseAdminBackoffPolicyOption
-
DatabaseAdminConnectionIdempotencyPolicyOption
-
DatabaseAdminPollingPolicyOption
-
InstanceAdminBackoffPolicyOption
-
InstanceAdminConnectionIdempotencyPolicyOption
-
InstanceAdminPollingPolicyOption
-
google::cloud::spanner_admin_mocks
-
google::cloud::spanner_experimental
Class Value (2.40.0)
Stay organized with collections Save and categorize content based on your preferences.
The Value class represents a type-safe, nullable Spanner value.
It is conceptually similar to a std::any
except the only allowed types are those supported by Spanner, and a "null" value (similar to a std::any
without a value) still has an associated type. The supported types are shown in the following table along with how they map to the Spanner types (https://cloud.google.com/spanner/docs/data-types):
[1] The type T
may be any of the other supported types, except for ARRAY/std::vector
.
Value is a regular C++ value type with support for copy, move, equality, etc. A default-constructed Value represents an empty value with no type.
Note: There is also a C++ type of CommitTimestamp
that corresponds to a Cloud Spanner TIMESTAMP object for setting the commit timestamp on a column with the allow_commit_timestamp
set to true
in the schema. See Also
https://cloud.google.com/spanner/docs/commit-timestamp Callers may create instances by passing any of the supported values (shown in the table above) to the constructor. "Null" values are created using the MakeNullValue<T>()
factory function or by passing an empty absl::optional<T>
to the Value constructor..
Example
Using a non-null value.
std::string msg = "hello";
spanner::Value v(msg);
StatusOr<std::string> copy = v.get<std::string>();
if (copy) {
std::cout << *copy; // prints "hello"
}
Example
Using a null value.
spanner::Value v = spanner::MakeNullValue<std::int64_t>();
StatusOr<std::int64_t> i = v.get<std::int64_t>();
assert(!i.ok()); // Can't get the value because v is null
StatusOr < absl::optional<std::int64_t> j =
v.get<absl::optional<std::int64_t>>();
assert(j.ok()); // OK because an empty option can represent the null
assert(!j->has_value()); // v held no value.
Nullness
All of the supported types (above) are "nullable". A null is created in one of two ways:
- Passing an
absl::optional<T>()
with no value to Value
's constructor.
- Using the
MakeNullValue<T>()
helper function (defined below).
Nulls can be retrieved from a Value::get
<T>
by specifying the type T
as an absl::optional<U>
. The returned optional will either be empty (indicating null) or it will contain the actual value. See the documentation for Value::get
<T>
below for more details.
Spanner Arrays
Spanner arrays are represented in C++ as a std::vector<T>
, where the type T
may be any of the other allowed Spanner types, such as bool
, std::int64_t
, etc. The only exception is that arrays may not directly contain another array; to achieve a similar result you could create an array of a 1-element struct holding an array. The following examples show usage of arrays.
std::vector<std::int64_t> vec = {1, 2, 3, 4, 5};
spanner::Value v(vec);
auto copy = *v.get<std::vector<std::int64_t>>();
assert(vec == copy);
Spanner Structs
Spanner structs are represented in C++ as instances of std::tuple
holding zero or more of the allowed Spanner types, such as bool
, std::int64_t
, std::vector
, and even other std::tuple
objects. Each tuple element corresponds to a single field in a Spanner STRUCT.
Spanner STRUCT fields may optionally contain a string indicating the field's name. Fields names may be empty, unique, or repeated. A named field may be specified as a tuple element of type std::pair<std::string, T>
, where the pair's .first
member indicates the field's name, and the .second
member is any valid Spanner type T
.
using Struct = std::tuple<bool, std::pair<std::string, std::int64_t>>;
Struct s = {true, {"Foo", 42}};
spanner::Value v(s);
assert(s == *v.get<Struct>());
Note: While a STRUCT's (optional) field names are not part of its C++ type, they are part of its Spanner STRUCT type. Array's (i.e., std::vector
) must contain a single element type, therefore it is an error to construct a std::vector
of std::tuple
objects with differently named fields. Constructors Value()
Constructs a Value
that holds nothing.
All calls to get<T>()
will return an error.
Value(Value const &) Parameter Name Description
Value const &
Value(Value &&) Parameter Name Description
Value &&
Value(bool)
Constructs an instance with the specified type and value.
Parameter Name Description v
bool
Value(std::int64_t)
Constructs an instance with the specified type and value.
Parameter Name Description v
std::int64_t
Value(float)
Constructs an instance with the specified type and value.
Parameter Name Description v
float
Value(double)
Constructs an instance with the specified type and value.
Parameter Name Description v
double
Value(std::string)
Constructs an instance with the specified type and value.
Parameter Name Description v
std::string
Value(Bytes)
Constructs an instance with the specified type and value.
Parameter Name Description v
Bytes
Value(Json)
Constructs an instance with the specified type and value.
Parameter Name Description v
Json
Value(JsonB)
Constructs an instance with the specified type and value.
Parameter Name Description v
JsonB
Value(Numeric)
Constructs an instance with the specified type and value.
Parameter Name Description v
Numeric
Value(PgNumeric)
Constructs an instance with the specified type and value.
Parameter Name Description v
PgNumeric
Value(PgOid)
Constructs an instance with the specified type and value.
Parameter Name Description v
PgOid
Value(Timestamp)
Constructs an instance with the specified type and value.
Parameter Name Description v
Timestamp
Value(CommitTimestamp)
Constructs an instance with the specified type and value.
Parameter Name Description v
CommitTimestamp
Value(absl::CivilDay)
Constructs an instance with the specified type and value.
Parameter Name Description v
absl::CivilDay
Value(Interval)
Constructs an instance with the specified type and value.
Parameter Name Description v
Interval
Value(ProtoEnum< E >)
Constructs an instance with the specified type and value.
Parameters Name Description v
ProtoEnum< E >
typename E
Value(ProtoMessage< M >)
Constructs an instance with the specified type and value.
Parameters Name Description v
ProtoMessage< M >
typename M
Value(int)
Constructs an instance from common C++ literal types that closely, though not exactly, match supported Spanner types.
An integer literal in C++ is of type int
, which is not exactly an allowed Spanner type. This will be allowed but it will be implicitly up converted to a std::int64_t
. Similarly, a C++ string literal will be implicitly converted to a std::string
. For example:
spanner::Value v1(42);
assert(42 == *v1.get<std::int64_t>());
spanner::Value v2("hello");
assert("hello" == *v2.get<std::string>());
Parameter Name Description v
int
Value(char const *)
Constructs an instance from common C++ literal types that closely, though not exactly, match supported Spanner types.
An integer literal in C++ is of type int
, which is not exactly an allowed Spanner type. This will be allowed but it will be implicitly up converted to a std::int64_t
. Similarly, a C++ string literal will be implicitly converted to a std::string
. For example:
spanner::Value v1(42);
assert(42 == *v1.get<std::int64_t>());
spanner::Value v2("hello");
assert("hello" == *v2.get<std::string>());
Parameter Name Description v
char const *
Value(absl::optional< T >)
Constructs a non-null instance if opt
has a value, otherwise constructs a null instance with the specified type T
.
Parameters Name Description opt
absl::optional< T >
typename T
Value(std::vector< T >)
Constructs an instance from a Spanner ARRAY of the specified type and values.
The type T
may be any valid type shown above, except vectors of vectors are not allowed.
Warning: If T
is a std::tuple
with field names (i.e., at least one of its element types is a std::pair<std::string, T>
) then, all of the vector's elements must have exactly the same field names. Any mismatch in in field names results in undefined behavior. Parameters Name Description v
std::vector< T >
typename T
Value(std::tuple< Ts... >)
Constructs an instance from a Spanner STRUCT with a type and values matching the given std::tuple
.
Any STRUCT field may optionally have a name, which is specified as std::pair<std::string, T>
.
Parameters Name Description tup
std::tuple< Ts... >
typename...
Operators operator=(Value const &) Parameter Name Description
Value const &
Returns Type Description Value &
operator=(Value &&) Parameter Name Description
Value &&
Returns Type Description Value &
Functions get() const &
Returns the contained value wrapped in a google::cloud::StatusOr
<T>
.
Returns a non-OK status IFF:
- The contained value is "null", and
T
is not an absl::optional
.
- There is an error converting the contained value to
T
.
Example
spanner::Value v{3.14};
StatusOr<double> d = v.get<double>();
if (d) {
std::cout << "d=" << *d;
}
// Now using a "null" std::int64_t
v = spanner::MakeNullValue<std::int64_t>();
StatusOr<std::int64_t> i = v.get<std::int64_t>();
if (!i) {
std::cerr << "Could not get integer: " << i.status();
}
StatusOr<absl::optional<std::int64_t>> j =
v.get<absl::optional<std::int64_t>>();
assert(j.ok()); // Since we know the types match in this example
assert(!v->has_value()); // Since we know v was null in this example
Parameter Name Description typename T
Returns Type Description StatusOr< T >
get() &&
Returns the contained value wrapped in a google::cloud::StatusOr
<T>
.
Returns a non-OK status IFF:
- The contained value is "null", and
T
is not an absl::optional
.
- There is an error converting the contained value to
T
.
Example
spanner::Value v{3.14};
StatusOr<double> d = v.get<double>();
if (d) {
std::cout << "d=" << *d;
}
// Now using a "null" std::int64_t
v = spanner::MakeNullValue<std::int64_t>();
StatusOr<std::int64_t> i = v.get<std::int64_t>();
if (!i) {
std::cerr << "Could not get integer: " << i.status();
}
StatusOr<absl::optional<std::int64_t>> j =
v.get<absl::optional<std::int64_t>>();
assert(j.ok()); // Since we know the types match in this example
assert(!v->has_value()); // Since we know v was null in this example
Parameter Name Description typename T
Returns Type Description StatusOr< T >
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-14 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-14 UTC."],[],[]]
RetroSearch is an open source project built by @garambo
| Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4