google-cloud-spanner 1.3.1 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e9faf33e2e5945db9c82ec262ec12b68c703cdfa42413d1c2da9605bcacca88
|
4
|
+
data.tar.gz: dabf39029f6106cc4f3a6d126e32a46e77cf06120f41a4ecf7c0ab4460cfb6c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0e446f217517f5feeb2f342694d57a83981e782a6d2586ba4182b18d06c536aa24c2a2527a064d76af5e317d57ce313b6ad689422a92f2a138ade9410ef5571
|
7
|
+
data.tar.gz: a3ee7508a48f04a77e4b42ee809a6bdcd3134e7b25fb27349283e27e61754ae34d05d7c9a98b0fc6c66bed1deda69dd828e0fd4626c120ba9d95500b145cd1cf
|
@@ -21,6 +21,7 @@ require "google/cloud/spanner/session"
|
|
21
21
|
require "google/cloud/spanner/transaction"
|
22
22
|
require "google/cloud/spanner/snapshot"
|
23
23
|
require "google/cloud/spanner/range"
|
24
|
+
require "google/cloud/spanner/column_value"
|
24
25
|
require "google/cloud/spanner/convert"
|
25
26
|
|
26
27
|
module Google
|
@@ -936,6 +937,35 @@ module Google
|
|
936
937
|
exclude_end: exclude_end
|
937
938
|
end
|
938
939
|
|
940
|
+
##
|
941
|
+
# Creates a column value object representing setting a field's value to
|
942
|
+
# the timestamp of the commit. (See {ColumnValue.commit_timestamp})
|
943
|
+
#
|
944
|
+
# This placeholder value can only be used for timestamp columns that
|
945
|
+
# have set the option "(allow_commit_timestamp=true)" in the schema.
|
946
|
+
#
|
947
|
+
# @return [ColumnValue] The commit timestamp column value object.
|
948
|
+
#
|
949
|
+
# @example
|
950
|
+
# require "google/cloud/spanner"
|
951
|
+
#
|
952
|
+
# spanner = Google::Cloud::Spanner.new
|
953
|
+
#
|
954
|
+
# db = spanner.client "my-instance", "my-database"
|
955
|
+
#
|
956
|
+
# # create column value object
|
957
|
+
# commit_timestamp = db.commit_timestamp
|
958
|
+
#
|
959
|
+
# db.commit do |c|
|
960
|
+
# c.insert "users", [
|
961
|
+
# { id: 5, name: "Murphy", updated_at: commit_timestamp }
|
962
|
+
# ]
|
963
|
+
# end
|
964
|
+
#
|
965
|
+
def commit_timestamp
|
966
|
+
ColumnValue.commit_timestamp
|
967
|
+
end
|
968
|
+
|
939
969
|
##
|
940
970
|
# Closes the client connection and releases resources.
|
941
971
|
#
|
@@ -0,0 +1,115 @@
|
|
1
|
+
# Copyright 2018 Google LLC
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# https://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
|
16
|
+
module Google
|
17
|
+
module Cloud
|
18
|
+
module Spanner
|
19
|
+
##
|
20
|
+
# # ColumnValue
|
21
|
+
#
|
22
|
+
# Represents a change to be made to a row's column value by the Spanner
|
23
|
+
# API.
|
24
|
+
#
|
25
|
+
# @example
|
26
|
+
# require "google/cloud/spanner"
|
27
|
+
#
|
28
|
+
# spanner = Google::Cloud::Spanner.new
|
29
|
+
#
|
30
|
+
# db = spanner.client "my-instance", "my-database"
|
31
|
+
#
|
32
|
+
# # create column value object
|
33
|
+
# commit_timestamp = db.commit_timestamp
|
34
|
+
#
|
35
|
+
# db.commit do |c|
|
36
|
+
# c.insert "users", [
|
37
|
+
# { id: 5, name: "Murphy", updated_at: commit_timestamp }
|
38
|
+
# ]
|
39
|
+
# end
|
40
|
+
#
|
41
|
+
class ColumnValue
|
42
|
+
##
|
43
|
+
# @private Creates a column value object representing changes made to
|
44
|
+
# fields in document data.
|
45
|
+
def initialize type
|
46
|
+
@type = type
|
47
|
+
end
|
48
|
+
|
49
|
+
##
|
50
|
+
# @private
|
51
|
+
# The type of change to make to a row's column value.
|
52
|
+
#
|
53
|
+
# @return [Symbol] The type of the column value.
|
54
|
+
#
|
55
|
+
# @example
|
56
|
+
# require "google/cloud/spanner"
|
57
|
+
#
|
58
|
+
# spanner = Google::Cloud::Spanner.new
|
59
|
+
#
|
60
|
+
# db = spanner.client "my-instance", "my-database"
|
61
|
+
#
|
62
|
+
# # create column value object
|
63
|
+
# commit_timestamp = db.commit_timestamp
|
64
|
+
#
|
65
|
+
# db.commit do |c|
|
66
|
+
# c.insert "users", [
|
67
|
+
# { id: 5, name: "Murphy", updated_at: commit_timestamp }
|
68
|
+
# ]
|
69
|
+
# end
|
70
|
+
#
|
71
|
+
def type
|
72
|
+
@type
|
73
|
+
end
|
74
|
+
|
75
|
+
##
|
76
|
+
# Creates a column value object representing setting a field's value to
|
77
|
+
# the timestamp of the commit. (See {Client#commit_timestamp} and
|
78
|
+
# {Transaction#commit_timestamp})
|
79
|
+
#
|
80
|
+
# This placeholder value can only be used for timestamp columns that
|
81
|
+
# have set the option "(allow_commit_timestamp=true)" in the schema.
|
82
|
+
#
|
83
|
+
# @return [ColumnValue] The commit timestamp column value object.
|
84
|
+
#
|
85
|
+
# @example
|
86
|
+
# require "google/cloud/spanner"
|
87
|
+
#
|
88
|
+
# spanner = Google::Cloud::Spanner.new
|
89
|
+
#
|
90
|
+
# db = spanner.client "my-instance", "my-database"
|
91
|
+
#
|
92
|
+
# # create column value object
|
93
|
+
# commit_timestamp = \
|
94
|
+
# Google::Cloud::Spanner::ColumnValue.commit_timestamp
|
95
|
+
#
|
96
|
+
# db.commit do |c|
|
97
|
+
# c.insert "users", [
|
98
|
+
# { id: 5, name: "Murphy", updated_at: commit_timestamp }
|
99
|
+
# ]
|
100
|
+
# end
|
101
|
+
#
|
102
|
+
def self.commit_timestamp
|
103
|
+
new :commit_timestamp
|
104
|
+
end
|
105
|
+
|
106
|
+
##
|
107
|
+
# @private The actual value that is sent to Spanner for the field.
|
108
|
+
def to_column_value
|
109
|
+
# We only have one ColumnValue, so hard-code this for now.
|
110
|
+
"spanner.commit_timestamp()"
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
@@ -37,6 +37,7 @@ module Google
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def raw_to_value_and_type obj, type = nil
|
40
|
+
obj = obj.to_column_value if obj.respond_to? :to_column_value
|
40
41
|
if NilClass === obj
|
41
42
|
if type
|
42
43
|
if type.is_a?(Array) && type.count == 1
|
@@ -115,6 +116,8 @@ module Google
|
|
115
116
|
end
|
116
117
|
|
117
118
|
def raw_to_value obj
|
119
|
+
obj = obj.to_column_value if obj.respond_to? :to_column_value
|
120
|
+
|
118
121
|
if NilClass === obj
|
119
122
|
Google::Protobuf::Value.new null_value: :NULL_VALUE
|
120
123
|
elsif String === obj
|
@@ -503,6 +503,32 @@ module Google
|
|
503
503
|
exclude_end: exclude_end
|
504
504
|
end
|
505
505
|
|
506
|
+
##
|
507
|
+
# Creates a column value object representing setting a field's value to
|
508
|
+
# the timestamp of the commit. (See {Client#commit_timestamp})
|
509
|
+
#
|
510
|
+
# This placeholder value can only be used for timestamp columns that
|
511
|
+
# have set the option "(allow_commit_timestamp=true)" in the schema.
|
512
|
+
#
|
513
|
+
# @return [ColumnValue] The commit timestamp column value object.
|
514
|
+
#
|
515
|
+
# @example
|
516
|
+
# require "google/cloud/spanner"
|
517
|
+
#
|
518
|
+
# spanner = Google::Cloud::Spanner.new
|
519
|
+
#
|
520
|
+
# db = spanner.client "my-instance", "my-database"
|
521
|
+
#
|
522
|
+
# db.transaction do |tx|
|
523
|
+
# tx.insert "users", [
|
524
|
+
# { id: 5, name: "Murphy", updated_at: tx.commit_timestamp }
|
525
|
+
# ]
|
526
|
+
# end
|
527
|
+
#
|
528
|
+
def commit_timestamp
|
529
|
+
ColumnValue.commit_timestamp
|
530
|
+
end
|
531
|
+
|
506
532
|
##
|
507
533
|
# @private
|
508
534
|
# Keeps the transaction current by creating a new transaction.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google-cloud-spanner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Moore
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-
|
12
|
+
date: 2018-03-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: google-cloud-core
|
@@ -228,6 +228,7 @@ files:
|
|
228
228
|
- lib/google/cloud/spanner/batch_client.rb
|
229
229
|
- lib/google/cloud/spanner/batch_snapshot.rb
|
230
230
|
- lib/google/cloud/spanner/client.rb
|
231
|
+
- lib/google/cloud/spanner/column_value.rb
|
231
232
|
- lib/google/cloud/spanner/commit.rb
|
232
233
|
- lib/google/cloud/spanner/convert.rb
|
233
234
|
- lib/google/cloud/spanner/credentials.rb
|