You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

1102 line
44 KiB

  1. // Code generated by protoc-gen-go. DO NOT EDIT.
  2. // source: google/spanner/v1/transaction.proto
  3. package spanner // import "google.golang.org/genproto/googleapis/spanner/v1"
  4. import proto "github.com/golang/protobuf/proto"
  5. import fmt "fmt"
  6. import math "math"
  7. import duration "github.com/golang/protobuf/ptypes/duration"
  8. import timestamp "github.com/golang/protobuf/ptypes/timestamp"
  9. import _ "google.golang.org/genproto/googleapis/api/annotations"
  10. // Reference imports to suppress errors if they are not otherwise used.
  11. var _ = proto.Marshal
  12. var _ = fmt.Errorf
  13. var _ = math.Inf
  14. // This is a compile-time assertion to ensure that this generated file
  15. // is compatible with the proto package it is being compiled against.
  16. // A compilation error at this line likely means your copy of the
  17. // proto package needs to be updated.
  18. const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
  19. // # Transactions
  20. //
  21. //
  22. // Each session can have at most one active transaction at a time. After the
  23. // active transaction is completed, the session can immediately be
  24. // re-used for the next transaction. It is not necessary to create a
  25. // new session for each transaction.
  26. //
  27. // # Transaction Modes
  28. //
  29. // Cloud Spanner supports three transaction modes:
  30. //
  31. // 1. Locking read-write. This type of transaction is the only way
  32. // to write data into Cloud Spanner. These transactions rely on
  33. // pessimistic locking and, if necessary, two-phase commit.
  34. // Locking read-write transactions may abort, requiring the
  35. // application to retry.
  36. //
  37. // 2. Snapshot read-only. This transaction type provides guaranteed
  38. // consistency across several reads, but does not allow
  39. // writes. Snapshot read-only transactions can be configured to
  40. // read at timestamps in the past. Snapshot read-only
  41. // transactions do not need to be committed.
  42. //
  43. // 3. Partitioned DML. This type of transaction is used to execute
  44. // a single Partitioned DML statement. Partitioned DML partitions
  45. // the key space and runs the DML statement over each partition
  46. // in parallel using separate, internal transactions that commit
  47. // independently. Partitioned DML transactions do not need to be
  48. // committed.
  49. //
  50. // For transactions that only read, snapshot read-only transactions
  51. // provide simpler semantics and are almost always faster. In
  52. // particular, read-only transactions do not take locks, so they do
  53. // not conflict with read-write transactions. As a consequence of not
  54. // taking locks, they also do not abort, so retry loops are not needed.
  55. //
  56. // Transactions may only read/write data in a single database. They
  57. // may, however, read/write data in different tables within that
  58. // database.
  59. //
  60. // ## Locking Read-Write Transactions
  61. //
  62. // Locking transactions may be used to atomically read-modify-write
  63. // data anywhere in a database. This type of transaction is externally
  64. // consistent.
  65. //
  66. // Clients should attempt to minimize the amount of time a transaction
  67. // is active. Faster transactions commit with higher probability
  68. // and cause less contention. Cloud Spanner attempts to keep read locks
  69. // active as long as the transaction continues to do reads, and the
  70. // transaction has not been terminated by
  71. // [Commit][google.spanner.v1.Spanner.Commit] or
  72. // [Rollback][google.spanner.v1.Spanner.Rollback]. Long periods of
  73. // inactivity at the client may cause Cloud Spanner to release a
  74. // transaction's locks and abort it.
  75. //
  76. // Conceptually, a read-write transaction consists of zero or more
  77. // reads or SQL statements followed by
  78. // [Commit][google.spanner.v1.Spanner.Commit]. At any time before
  79. // [Commit][google.spanner.v1.Spanner.Commit], the client can send a
  80. // [Rollback][google.spanner.v1.Spanner.Rollback] request to abort the
  81. // transaction.
  82. //
  83. // ### Semantics
  84. //
  85. // Cloud Spanner can commit the transaction if all read locks it acquired
  86. // are still valid at commit time, and it is able to acquire write
  87. // locks for all writes. Cloud Spanner can abort the transaction for any
  88. // reason. If a commit attempt returns `ABORTED`, Cloud Spanner guarantees
  89. // that the transaction has not modified any user data in Cloud Spanner.
  90. //
  91. // Unless the transaction commits, Cloud Spanner makes no guarantees about
  92. // how long the transaction's locks were held for. It is an error to
  93. // use Cloud Spanner locks for any sort of mutual exclusion other than
  94. // between Cloud Spanner transactions themselves.
  95. //
  96. // ### Retrying Aborted Transactions
  97. //
  98. // When a transaction aborts, the application can choose to retry the
  99. // whole transaction again. To maximize the chances of successfully
  100. // committing the retry, the client should execute the retry in the
  101. // same session as the original attempt. The original session's lock
  102. // priority increases with each consecutive abort, meaning that each
  103. // attempt has a slightly better chance of success than the previous.
  104. //
  105. // Under some circumstances (e.g., many transactions attempting to
  106. // modify the same row(s)), a transaction can abort many times in a
  107. // short period before successfully committing. Thus, it is not a good
  108. // idea to cap the number of retries a transaction can attempt;
  109. // instead, it is better to limit the total amount of wall time spent
  110. // retrying.
  111. //
  112. // ### Idle Transactions
  113. //
  114. // A transaction is considered idle if it has no outstanding reads or
  115. // SQL queries and has not started a read or SQL query within the last 10
  116. // seconds. Idle transactions can be aborted by Cloud Spanner so that they
  117. // don't hold on to locks indefinitely. In that case, the commit will
  118. // fail with error `ABORTED`.
  119. //
  120. // If this behavior is undesirable, periodically executing a simple
  121. // SQL query in the transaction (e.g., `SELECT 1`) prevents the
  122. // transaction from becoming idle.
  123. //
  124. // ## Snapshot Read-Only Transactions
  125. //
  126. // Snapshot read-only transactions provides a simpler method than
  127. // locking read-write transactions for doing several consistent
  128. // reads. However, this type of transaction does not support writes.
  129. //
  130. // Snapshot transactions do not take locks. Instead, they work by
  131. // choosing a Cloud Spanner timestamp, then executing all reads at that
  132. // timestamp. Since they do not acquire locks, they do not block
  133. // concurrent read-write transactions.
  134. //
  135. // Unlike locking read-write transactions, snapshot read-only
  136. // transactions never abort. They can fail if the chosen read
  137. // timestamp is garbage collected; however, the default garbage
  138. // collection policy is generous enough that most applications do not
  139. // need to worry about this in practice.
  140. //
  141. // Snapshot read-only transactions do not need to call
  142. // [Commit][google.spanner.v1.Spanner.Commit] or
  143. // [Rollback][google.spanner.v1.Spanner.Rollback] (and in fact are not
  144. // permitted to do so).
  145. //
  146. // To execute a snapshot transaction, the client specifies a timestamp
  147. // bound, which tells Cloud Spanner how to choose a read timestamp.
  148. //
  149. // The types of timestamp bound are:
  150. //
  151. // - Strong (the default).
  152. // - Bounded staleness.
  153. // - Exact staleness.
  154. //
  155. // If the Cloud Spanner database to be read is geographically distributed,
  156. // stale read-only transactions can execute more quickly than strong
  157. // or read-write transaction, because they are able to execute far
  158. // from the leader replica.
  159. //
  160. // Each type of timestamp bound is discussed in detail below.
  161. //
  162. // ### Strong
  163. //
  164. // Strong reads are guaranteed to see the effects of all transactions
  165. // that have committed before the start of the read. Furthermore, all
  166. // rows yielded by a single read are consistent with each other -- if
  167. // any part of the read observes a transaction, all parts of the read
  168. // see the transaction.
  169. //
  170. // Strong reads are not repeatable: two consecutive strong read-only
  171. // transactions might return inconsistent results if there are
  172. // concurrent writes. If consistency across reads is required, the
  173. // reads should be executed within a transaction or at an exact read
  174. // timestamp.
  175. //
  176. // See
  177. // [TransactionOptions.ReadOnly.strong][google.spanner.v1.TransactionOptions.ReadOnly.strong].
  178. //
  179. // ### Exact Staleness
  180. //
  181. // These timestamp bounds execute reads at a user-specified
  182. // timestamp. Reads at a timestamp are guaranteed to see a consistent
  183. // prefix of the global transaction history: they observe
  184. // modifications done by all transactions with a commit timestamp <=
  185. // the read timestamp, and observe none of the modifications done by
  186. // transactions with a larger commit timestamp. They will block until
  187. // all conflicting transactions that may be assigned commit timestamps
  188. // <= the read timestamp have finished.
  189. //
  190. // The timestamp can either be expressed as an absolute Cloud Spanner commit
  191. // timestamp or a staleness relative to the current time.
  192. //
  193. // These modes do not require a "negotiation phase" to pick a
  194. // timestamp. As a result, they execute slightly faster than the
  195. // equivalent boundedly stale concurrency modes. On the other hand,
  196. // boundedly stale reads usually return fresher results.
  197. //
  198. // See
  199. // [TransactionOptions.ReadOnly.read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.read_timestamp]
  200. // and
  201. // [TransactionOptions.ReadOnly.exact_staleness][google.spanner.v1.TransactionOptions.ReadOnly.exact_staleness].
  202. //
  203. // ### Bounded Staleness
  204. //
  205. // Bounded staleness modes allow Cloud Spanner to pick the read timestamp,
  206. // subject to a user-provided staleness bound. Cloud Spanner chooses the
  207. // newest timestamp within the staleness bound that allows execution
  208. // of the reads at the closest available replica without blocking.
  209. //
  210. // All rows yielded are consistent with each other -- if any part of
  211. // the read observes a transaction, all parts of the read see the
  212. // transaction. Boundedly stale reads are not repeatable: two stale
  213. // reads, even if they use the same staleness bound, can execute at
  214. // different timestamps and thus return inconsistent results.
  215. //
  216. // Boundedly stale reads execute in two phases: the first phase
  217. // negotiates a timestamp among all replicas needed to serve the
  218. // read. In the second phase, reads are executed at the negotiated
  219. // timestamp.
  220. //
  221. // As a result of the two phase execution, bounded staleness reads are
  222. // usually a little slower than comparable exact staleness
  223. // reads. However, they are typically able to return fresher
  224. // results, and are more likely to execute at the closest replica.
  225. //
  226. // Because the timestamp negotiation requires up-front knowledge of
  227. // which rows will be read, it can only be used with single-use
  228. // read-only transactions.
  229. //
  230. // See
  231. // [TransactionOptions.ReadOnly.max_staleness][google.spanner.v1.TransactionOptions.ReadOnly.max_staleness]
  232. // and
  233. // [TransactionOptions.ReadOnly.min_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.min_read_timestamp].
  234. //
  235. // ### Old Read Timestamps and Garbage Collection
  236. //
  237. // Cloud Spanner continuously garbage collects deleted and overwritten data
  238. // in the background to reclaim storage space. This process is known
  239. // as "version GC". By default, version GC reclaims versions after they
  240. // are one hour old. Because of this, Cloud Spanner cannot perform reads
  241. // at read timestamps more than one hour in the past. This
  242. // restriction also applies to in-progress reads and/or SQL queries whose
  243. // timestamp become too old while executing. Reads and SQL queries with
  244. // too-old read timestamps fail with the error `FAILED_PRECONDITION`.
  245. //
  246. // ## Partitioned DML Transactions
  247. //
  248. // Partitioned DML transactions are used to execute DML statements with a
  249. // different execution strategy that provides different, and often better,
  250. // scalability properties for large, table-wide operations than DML in a
  251. // ReadWrite transaction. Smaller scoped statements, such as an OLTP workload,
  252. // should prefer using ReadWrite transactions.
  253. //
  254. // Partitioned DML partitions the keyspace and runs the DML statement on each
  255. // partition in separate, internal transactions. These transactions commit
  256. // automatically when complete, and run independently from one another.
  257. //
  258. // To reduce lock contention, this execution strategy only acquires read locks
  259. // on rows that match the WHERE clause of the statement. Additionally, the
  260. // smaller per-partition transactions hold locks for less time.
  261. //
  262. // That said, Partitioned DML is not a drop-in replacement for standard DML used
  263. // in ReadWrite transactions.
  264. //
  265. // - The DML statement must be fully-partitionable. Specifically, the statement
  266. // must be expressible as the union of many statements which each access only
  267. // a single row of the table.
  268. //
  269. // - The statement is not applied atomically to all rows of the table. Rather,
  270. // the statement is applied atomically to partitions of the table, in
  271. // independent transactions. Secondary index rows are updated atomically
  272. // with the base table rows.
  273. //
  274. // - Partitioned DML does not guarantee exactly-once execution semantics
  275. // against a partition. The statement will be applied at least once to each
  276. // partition. It is strongly recommended that the DML statement should be
  277. // idempotent to avoid unexpected results. For instance, it is potentially
  278. // dangerous to run a statement such as
  279. // `UPDATE table SET column = column + 1` as it could be run multiple times
  280. // against some rows.
  281. //
  282. // - The partitions are committed automatically - there is no support for
  283. // Commit or Rollback. If the call returns an error, or if the client issuing
  284. // the ExecuteSql call dies, it is possible that some rows had the statement
  285. // executed on them successfully. It is also possible that statement was
  286. // never executed against other rows.
  287. //
  288. // - Partitioned DML transactions may only contain the execution of a single
  289. // DML statement via ExecuteSql or ExecuteStreamingSql.
  290. //
  291. // - If any error is encountered during the execution of the partitioned DML
  292. // operation (for instance, a UNIQUE INDEX violation, division by zero, or a
  293. // value that cannot be stored due to schema constraints), then the
  294. // operation is stopped at that point and an error is returned. It is
  295. // possible that at this point, some partitions have been committed (or even
  296. // committed multiple times), and other partitions have not been run at all.
  297. //
  298. // Given the above, Partitioned DML is good fit for large, database-wide,
  299. // operations that are idempotent, such as deleting old rows from a very large
  300. // table.
  301. type TransactionOptions struct {
  302. // Required. The type of transaction.
  303. //
  304. // Types that are valid to be assigned to Mode:
  305. // *TransactionOptions_ReadWrite_
  306. // *TransactionOptions_PartitionedDml_
  307. // *TransactionOptions_ReadOnly_
  308. Mode isTransactionOptions_Mode `protobuf_oneof:"mode"`
  309. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  310. XXX_unrecognized []byte `json:"-"`
  311. XXX_sizecache int32 `json:"-"`
  312. }
  313. func (m *TransactionOptions) Reset() { *m = TransactionOptions{} }
  314. func (m *TransactionOptions) String() string { return proto.CompactTextString(m) }
  315. func (*TransactionOptions) ProtoMessage() {}
  316. func (*TransactionOptions) Descriptor() ([]byte, []int) {
  317. return fileDescriptor_transaction_4419efde92dad332, []int{0}
  318. }
  319. func (m *TransactionOptions) XXX_Unmarshal(b []byte) error {
  320. return xxx_messageInfo_TransactionOptions.Unmarshal(m, b)
  321. }
  322. func (m *TransactionOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  323. return xxx_messageInfo_TransactionOptions.Marshal(b, m, deterministic)
  324. }
  325. func (dst *TransactionOptions) XXX_Merge(src proto.Message) {
  326. xxx_messageInfo_TransactionOptions.Merge(dst, src)
  327. }
  328. func (m *TransactionOptions) XXX_Size() int {
  329. return xxx_messageInfo_TransactionOptions.Size(m)
  330. }
  331. func (m *TransactionOptions) XXX_DiscardUnknown() {
  332. xxx_messageInfo_TransactionOptions.DiscardUnknown(m)
  333. }
  334. var xxx_messageInfo_TransactionOptions proto.InternalMessageInfo
  335. type isTransactionOptions_Mode interface {
  336. isTransactionOptions_Mode()
  337. }
  338. type TransactionOptions_ReadWrite_ struct {
  339. ReadWrite *TransactionOptions_ReadWrite `protobuf:"bytes,1,opt,name=read_write,json=readWrite,proto3,oneof"`
  340. }
  341. type TransactionOptions_PartitionedDml_ struct {
  342. PartitionedDml *TransactionOptions_PartitionedDml `protobuf:"bytes,3,opt,name=partitioned_dml,json=partitionedDml,proto3,oneof"`
  343. }
  344. type TransactionOptions_ReadOnly_ struct {
  345. ReadOnly *TransactionOptions_ReadOnly `protobuf:"bytes,2,opt,name=read_only,json=readOnly,proto3,oneof"`
  346. }
  347. func (*TransactionOptions_ReadWrite_) isTransactionOptions_Mode() {}
  348. func (*TransactionOptions_PartitionedDml_) isTransactionOptions_Mode() {}
  349. func (*TransactionOptions_ReadOnly_) isTransactionOptions_Mode() {}
  350. func (m *TransactionOptions) GetMode() isTransactionOptions_Mode {
  351. if m != nil {
  352. return m.Mode
  353. }
  354. return nil
  355. }
  356. func (m *TransactionOptions) GetReadWrite() *TransactionOptions_ReadWrite {
  357. if x, ok := m.GetMode().(*TransactionOptions_ReadWrite_); ok {
  358. return x.ReadWrite
  359. }
  360. return nil
  361. }
  362. func (m *TransactionOptions) GetPartitionedDml() *TransactionOptions_PartitionedDml {
  363. if x, ok := m.GetMode().(*TransactionOptions_PartitionedDml_); ok {
  364. return x.PartitionedDml
  365. }
  366. return nil
  367. }
  368. func (m *TransactionOptions) GetReadOnly() *TransactionOptions_ReadOnly {
  369. if x, ok := m.GetMode().(*TransactionOptions_ReadOnly_); ok {
  370. return x.ReadOnly
  371. }
  372. return nil
  373. }
  374. // XXX_OneofFuncs is for the internal use of the proto package.
  375. func (*TransactionOptions) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
  376. return _TransactionOptions_OneofMarshaler, _TransactionOptions_OneofUnmarshaler, _TransactionOptions_OneofSizer, []interface{}{
  377. (*TransactionOptions_ReadWrite_)(nil),
  378. (*TransactionOptions_PartitionedDml_)(nil),
  379. (*TransactionOptions_ReadOnly_)(nil),
  380. }
  381. }
  382. func _TransactionOptions_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
  383. m := msg.(*TransactionOptions)
  384. // mode
  385. switch x := m.Mode.(type) {
  386. case *TransactionOptions_ReadWrite_:
  387. b.EncodeVarint(1<<3 | proto.WireBytes)
  388. if err := b.EncodeMessage(x.ReadWrite); err != nil {
  389. return err
  390. }
  391. case *TransactionOptions_PartitionedDml_:
  392. b.EncodeVarint(3<<3 | proto.WireBytes)
  393. if err := b.EncodeMessage(x.PartitionedDml); err != nil {
  394. return err
  395. }
  396. case *TransactionOptions_ReadOnly_:
  397. b.EncodeVarint(2<<3 | proto.WireBytes)
  398. if err := b.EncodeMessage(x.ReadOnly); err != nil {
  399. return err
  400. }
  401. case nil:
  402. default:
  403. return fmt.Errorf("TransactionOptions.Mode has unexpected type %T", x)
  404. }
  405. return nil
  406. }
  407. func _TransactionOptions_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
  408. m := msg.(*TransactionOptions)
  409. switch tag {
  410. case 1: // mode.read_write
  411. if wire != proto.WireBytes {
  412. return true, proto.ErrInternalBadWireType
  413. }
  414. msg := new(TransactionOptions_ReadWrite)
  415. err := b.DecodeMessage(msg)
  416. m.Mode = &TransactionOptions_ReadWrite_{msg}
  417. return true, err
  418. case 3: // mode.partitioned_dml
  419. if wire != proto.WireBytes {
  420. return true, proto.ErrInternalBadWireType
  421. }
  422. msg := new(TransactionOptions_PartitionedDml)
  423. err := b.DecodeMessage(msg)
  424. m.Mode = &TransactionOptions_PartitionedDml_{msg}
  425. return true, err
  426. case 2: // mode.read_only
  427. if wire != proto.WireBytes {
  428. return true, proto.ErrInternalBadWireType
  429. }
  430. msg := new(TransactionOptions_ReadOnly)
  431. err := b.DecodeMessage(msg)
  432. m.Mode = &TransactionOptions_ReadOnly_{msg}
  433. return true, err
  434. default:
  435. return false, nil
  436. }
  437. }
  438. func _TransactionOptions_OneofSizer(msg proto.Message) (n int) {
  439. m := msg.(*TransactionOptions)
  440. // mode
  441. switch x := m.Mode.(type) {
  442. case *TransactionOptions_ReadWrite_:
  443. s := proto.Size(x.ReadWrite)
  444. n += 1 // tag and wire
  445. n += proto.SizeVarint(uint64(s))
  446. n += s
  447. case *TransactionOptions_PartitionedDml_:
  448. s := proto.Size(x.PartitionedDml)
  449. n += 1 // tag and wire
  450. n += proto.SizeVarint(uint64(s))
  451. n += s
  452. case *TransactionOptions_ReadOnly_:
  453. s := proto.Size(x.ReadOnly)
  454. n += 1 // tag and wire
  455. n += proto.SizeVarint(uint64(s))
  456. n += s
  457. case nil:
  458. default:
  459. panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
  460. }
  461. return n
  462. }
  463. // Message type to initiate a read-write transaction. Currently this
  464. // transaction type has no options.
  465. type TransactionOptions_ReadWrite struct {
  466. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  467. XXX_unrecognized []byte `json:"-"`
  468. XXX_sizecache int32 `json:"-"`
  469. }
  470. func (m *TransactionOptions_ReadWrite) Reset() { *m = TransactionOptions_ReadWrite{} }
  471. func (m *TransactionOptions_ReadWrite) String() string { return proto.CompactTextString(m) }
  472. func (*TransactionOptions_ReadWrite) ProtoMessage() {}
  473. func (*TransactionOptions_ReadWrite) Descriptor() ([]byte, []int) {
  474. return fileDescriptor_transaction_4419efde92dad332, []int{0, 0}
  475. }
  476. func (m *TransactionOptions_ReadWrite) XXX_Unmarshal(b []byte) error {
  477. return xxx_messageInfo_TransactionOptions_ReadWrite.Unmarshal(m, b)
  478. }
  479. func (m *TransactionOptions_ReadWrite) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  480. return xxx_messageInfo_TransactionOptions_ReadWrite.Marshal(b, m, deterministic)
  481. }
  482. func (dst *TransactionOptions_ReadWrite) XXX_Merge(src proto.Message) {
  483. xxx_messageInfo_TransactionOptions_ReadWrite.Merge(dst, src)
  484. }
  485. func (m *TransactionOptions_ReadWrite) XXX_Size() int {
  486. return xxx_messageInfo_TransactionOptions_ReadWrite.Size(m)
  487. }
  488. func (m *TransactionOptions_ReadWrite) XXX_DiscardUnknown() {
  489. xxx_messageInfo_TransactionOptions_ReadWrite.DiscardUnknown(m)
  490. }
  491. var xxx_messageInfo_TransactionOptions_ReadWrite proto.InternalMessageInfo
  492. // Message type to initiate a Partitioned DML transaction.
  493. type TransactionOptions_PartitionedDml struct {
  494. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  495. XXX_unrecognized []byte `json:"-"`
  496. XXX_sizecache int32 `json:"-"`
  497. }
  498. func (m *TransactionOptions_PartitionedDml) Reset() { *m = TransactionOptions_PartitionedDml{} }
  499. func (m *TransactionOptions_PartitionedDml) String() string { return proto.CompactTextString(m) }
  500. func (*TransactionOptions_PartitionedDml) ProtoMessage() {}
  501. func (*TransactionOptions_PartitionedDml) Descriptor() ([]byte, []int) {
  502. return fileDescriptor_transaction_4419efde92dad332, []int{0, 1}
  503. }
  504. func (m *TransactionOptions_PartitionedDml) XXX_Unmarshal(b []byte) error {
  505. return xxx_messageInfo_TransactionOptions_PartitionedDml.Unmarshal(m, b)
  506. }
  507. func (m *TransactionOptions_PartitionedDml) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  508. return xxx_messageInfo_TransactionOptions_PartitionedDml.Marshal(b, m, deterministic)
  509. }
  510. func (dst *TransactionOptions_PartitionedDml) XXX_Merge(src proto.Message) {
  511. xxx_messageInfo_TransactionOptions_PartitionedDml.Merge(dst, src)
  512. }
  513. func (m *TransactionOptions_PartitionedDml) XXX_Size() int {
  514. return xxx_messageInfo_TransactionOptions_PartitionedDml.Size(m)
  515. }
  516. func (m *TransactionOptions_PartitionedDml) XXX_DiscardUnknown() {
  517. xxx_messageInfo_TransactionOptions_PartitionedDml.DiscardUnknown(m)
  518. }
  519. var xxx_messageInfo_TransactionOptions_PartitionedDml proto.InternalMessageInfo
  520. // Message type to initiate a read-only transaction.
  521. type TransactionOptions_ReadOnly struct {
  522. // How to choose the timestamp for the read-only transaction.
  523. //
  524. // Types that are valid to be assigned to TimestampBound:
  525. // *TransactionOptions_ReadOnly_Strong
  526. // *TransactionOptions_ReadOnly_MinReadTimestamp
  527. // *TransactionOptions_ReadOnly_MaxStaleness
  528. // *TransactionOptions_ReadOnly_ReadTimestamp
  529. // *TransactionOptions_ReadOnly_ExactStaleness
  530. TimestampBound isTransactionOptions_ReadOnly_TimestampBound `protobuf_oneof:"timestamp_bound"`
  531. // If true, the Cloud Spanner-selected read timestamp is included in
  532. // the [Transaction][google.spanner.v1.Transaction] message that describes
  533. // the transaction.
  534. ReturnReadTimestamp bool `protobuf:"varint,6,opt,name=return_read_timestamp,json=returnReadTimestamp,proto3" json:"return_read_timestamp,omitempty"`
  535. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  536. XXX_unrecognized []byte `json:"-"`
  537. XXX_sizecache int32 `json:"-"`
  538. }
  539. func (m *TransactionOptions_ReadOnly) Reset() { *m = TransactionOptions_ReadOnly{} }
  540. func (m *TransactionOptions_ReadOnly) String() string { return proto.CompactTextString(m) }
  541. func (*TransactionOptions_ReadOnly) ProtoMessage() {}
  542. func (*TransactionOptions_ReadOnly) Descriptor() ([]byte, []int) {
  543. return fileDescriptor_transaction_4419efde92dad332, []int{0, 2}
  544. }
  545. func (m *TransactionOptions_ReadOnly) XXX_Unmarshal(b []byte) error {
  546. return xxx_messageInfo_TransactionOptions_ReadOnly.Unmarshal(m, b)
  547. }
  548. func (m *TransactionOptions_ReadOnly) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  549. return xxx_messageInfo_TransactionOptions_ReadOnly.Marshal(b, m, deterministic)
  550. }
  551. func (dst *TransactionOptions_ReadOnly) XXX_Merge(src proto.Message) {
  552. xxx_messageInfo_TransactionOptions_ReadOnly.Merge(dst, src)
  553. }
  554. func (m *TransactionOptions_ReadOnly) XXX_Size() int {
  555. return xxx_messageInfo_TransactionOptions_ReadOnly.Size(m)
  556. }
  557. func (m *TransactionOptions_ReadOnly) XXX_DiscardUnknown() {
  558. xxx_messageInfo_TransactionOptions_ReadOnly.DiscardUnknown(m)
  559. }
  560. var xxx_messageInfo_TransactionOptions_ReadOnly proto.InternalMessageInfo
  561. type isTransactionOptions_ReadOnly_TimestampBound interface {
  562. isTransactionOptions_ReadOnly_TimestampBound()
  563. }
  564. type TransactionOptions_ReadOnly_Strong struct {
  565. Strong bool `protobuf:"varint,1,opt,name=strong,proto3,oneof"`
  566. }
  567. type TransactionOptions_ReadOnly_MinReadTimestamp struct {
  568. MinReadTimestamp *timestamp.Timestamp `protobuf:"bytes,2,opt,name=min_read_timestamp,json=minReadTimestamp,proto3,oneof"`
  569. }
  570. type TransactionOptions_ReadOnly_MaxStaleness struct {
  571. MaxStaleness *duration.Duration `protobuf:"bytes,3,opt,name=max_staleness,json=maxStaleness,proto3,oneof"`
  572. }
  573. type TransactionOptions_ReadOnly_ReadTimestamp struct {
  574. ReadTimestamp *timestamp.Timestamp `protobuf:"bytes,4,opt,name=read_timestamp,json=readTimestamp,proto3,oneof"`
  575. }
  576. type TransactionOptions_ReadOnly_ExactStaleness struct {
  577. ExactStaleness *duration.Duration `protobuf:"bytes,5,opt,name=exact_staleness,json=exactStaleness,proto3,oneof"`
  578. }
  579. func (*TransactionOptions_ReadOnly_Strong) isTransactionOptions_ReadOnly_TimestampBound() {}
  580. func (*TransactionOptions_ReadOnly_MinReadTimestamp) isTransactionOptions_ReadOnly_TimestampBound() {}
  581. func (*TransactionOptions_ReadOnly_MaxStaleness) isTransactionOptions_ReadOnly_TimestampBound() {}
  582. func (*TransactionOptions_ReadOnly_ReadTimestamp) isTransactionOptions_ReadOnly_TimestampBound() {}
  583. func (*TransactionOptions_ReadOnly_ExactStaleness) isTransactionOptions_ReadOnly_TimestampBound() {}
  584. func (m *TransactionOptions_ReadOnly) GetTimestampBound() isTransactionOptions_ReadOnly_TimestampBound {
  585. if m != nil {
  586. return m.TimestampBound
  587. }
  588. return nil
  589. }
  590. func (m *TransactionOptions_ReadOnly) GetStrong() bool {
  591. if x, ok := m.GetTimestampBound().(*TransactionOptions_ReadOnly_Strong); ok {
  592. return x.Strong
  593. }
  594. return false
  595. }
  596. func (m *TransactionOptions_ReadOnly) GetMinReadTimestamp() *timestamp.Timestamp {
  597. if x, ok := m.GetTimestampBound().(*TransactionOptions_ReadOnly_MinReadTimestamp); ok {
  598. return x.MinReadTimestamp
  599. }
  600. return nil
  601. }
  602. func (m *TransactionOptions_ReadOnly) GetMaxStaleness() *duration.Duration {
  603. if x, ok := m.GetTimestampBound().(*TransactionOptions_ReadOnly_MaxStaleness); ok {
  604. return x.MaxStaleness
  605. }
  606. return nil
  607. }
  608. func (m *TransactionOptions_ReadOnly) GetReadTimestamp() *timestamp.Timestamp {
  609. if x, ok := m.GetTimestampBound().(*TransactionOptions_ReadOnly_ReadTimestamp); ok {
  610. return x.ReadTimestamp
  611. }
  612. return nil
  613. }
  614. func (m *TransactionOptions_ReadOnly) GetExactStaleness() *duration.Duration {
  615. if x, ok := m.GetTimestampBound().(*TransactionOptions_ReadOnly_ExactStaleness); ok {
  616. return x.ExactStaleness
  617. }
  618. return nil
  619. }
  620. func (m *TransactionOptions_ReadOnly) GetReturnReadTimestamp() bool {
  621. if m != nil {
  622. return m.ReturnReadTimestamp
  623. }
  624. return false
  625. }
  626. // XXX_OneofFuncs is for the internal use of the proto package.
  627. func (*TransactionOptions_ReadOnly) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
  628. return _TransactionOptions_ReadOnly_OneofMarshaler, _TransactionOptions_ReadOnly_OneofUnmarshaler, _TransactionOptions_ReadOnly_OneofSizer, []interface{}{
  629. (*TransactionOptions_ReadOnly_Strong)(nil),
  630. (*TransactionOptions_ReadOnly_MinReadTimestamp)(nil),
  631. (*TransactionOptions_ReadOnly_MaxStaleness)(nil),
  632. (*TransactionOptions_ReadOnly_ReadTimestamp)(nil),
  633. (*TransactionOptions_ReadOnly_ExactStaleness)(nil),
  634. }
  635. }
  636. func _TransactionOptions_ReadOnly_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
  637. m := msg.(*TransactionOptions_ReadOnly)
  638. // timestamp_bound
  639. switch x := m.TimestampBound.(type) {
  640. case *TransactionOptions_ReadOnly_Strong:
  641. t := uint64(0)
  642. if x.Strong {
  643. t = 1
  644. }
  645. b.EncodeVarint(1<<3 | proto.WireVarint)
  646. b.EncodeVarint(t)
  647. case *TransactionOptions_ReadOnly_MinReadTimestamp:
  648. b.EncodeVarint(2<<3 | proto.WireBytes)
  649. if err := b.EncodeMessage(x.MinReadTimestamp); err != nil {
  650. return err
  651. }
  652. case *TransactionOptions_ReadOnly_MaxStaleness:
  653. b.EncodeVarint(3<<3 | proto.WireBytes)
  654. if err := b.EncodeMessage(x.MaxStaleness); err != nil {
  655. return err
  656. }
  657. case *TransactionOptions_ReadOnly_ReadTimestamp:
  658. b.EncodeVarint(4<<3 | proto.WireBytes)
  659. if err := b.EncodeMessage(x.ReadTimestamp); err != nil {
  660. return err
  661. }
  662. case *TransactionOptions_ReadOnly_ExactStaleness:
  663. b.EncodeVarint(5<<3 | proto.WireBytes)
  664. if err := b.EncodeMessage(x.ExactStaleness); err != nil {
  665. return err
  666. }
  667. case nil:
  668. default:
  669. return fmt.Errorf("TransactionOptions_ReadOnly.TimestampBound has unexpected type %T", x)
  670. }
  671. return nil
  672. }
  673. func _TransactionOptions_ReadOnly_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
  674. m := msg.(*TransactionOptions_ReadOnly)
  675. switch tag {
  676. case 1: // timestamp_bound.strong
  677. if wire != proto.WireVarint {
  678. return true, proto.ErrInternalBadWireType
  679. }
  680. x, err := b.DecodeVarint()
  681. m.TimestampBound = &TransactionOptions_ReadOnly_Strong{x != 0}
  682. return true, err
  683. case 2: // timestamp_bound.min_read_timestamp
  684. if wire != proto.WireBytes {
  685. return true, proto.ErrInternalBadWireType
  686. }
  687. msg := new(timestamp.Timestamp)
  688. err := b.DecodeMessage(msg)
  689. m.TimestampBound = &TransactionOptions_ReadOnly_MinReadTimestamp{msg}
  690. return true, err
  691. case 3: // timestamp_bound.max_staleness
  692. if wire != proto.WireBytes {
  693. return true, proto.ErrInternalBadWireType
  694. }
  695. msg := new(duration.Duration)
  696. err := b.DecodeMessage(msg)
  697. m.TimestampBound = &TransactionOptions_ReadOnly_MaxStaleness{msg}
  698. return true, err
  699. case 4: // timestamp_bound.read_timestamp
  700. if wire != proto.WireBytes {
  701. return true, proto.ErrInternalBadWireType
  702. }
  703. msg := new(timestamp.Timestamp)
  704. err := b.DecodeMessage(msg)
  705. m.TimestampBound = &TransactionOptions_ReadOnly_ReadTimestamp{msg}
  706. return true, err
  707. case 5: // timestamp_bound.exact_staleness
  708. if wire != proto.WireBytes {
  709. return true, proto.ErrInternalBadWireType
  710. }
  711. msg := new(duration.Duration)
  712. err := b.DecodeMessage(msg)
  713. m.TimestampBound = &TransactionOptions_ReadOnly_ExactStaleness{msg}
  714. return true, err
  715. default:
  716. return false, nil
  717. }
  718. }
  719. func _TransactionOptions_ReadOnly_OneofSizer(msg proto.Message) (n int) {
  720. m := msg.(*TransactionOptions_ReadOnly)
  721. // timestamp_bound
  722. switch x := m.TimestampBound.(type) {
  723. case *TransactionOptions_ReadOnly_Strong:
  724. n += 1 // tag and wire
  725. n += 1
  726. case *TransactionOptions_ReadOnly_MinReadTimestamp:
  727. s := proto.Size(x.MinReadTimestamp)
  728. n += 1 // tag and wire
  729. n += proto.SizeVarint(uint64(s))
  730. n += s
  731. case *TransactionOptions_ReadOnly_MaxStaleness:
  732. s := proto.Size(x.MaxStaleness)
  733. n += 1 // tag and wire
  734. n += proto.SizeVarint(uint64(s))
  735. n += s
  736. case *TransactionOptions_ReadOnly_ReadTimestamp:
  737. s := proto.Size(x.ReadTimestamp)
  738. n += 1 // tag and wire
  739. n += proto.SizeVarint(uint64(s))
  740. n += s
  741. case *TransactionOptions_ReadOnly_ExactStaleness:
  742. s := proto.Size(x.ExactStaleness)
  743. n += 1 // tag and wire
  744. n += proto.SizeVarint(uint64(s))
  745. n += s
  746. case nil:
  747. default:
  748. panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
  749. }
  750. return n
  751. }
  752. // A transaction.
  753. type Transaction struct {
  754. // `id` may be used to identify the transaction in subsequent
  755. // [Read][google.spanner.v1.Spanner.Read],
  756. // [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql],
  757. // [Commit][google.spanner.v1.Spanner.Commit], or
  758. // [Rollback][google.spanner.v1.Spanner.Rollback] calls.
  759. //
  760. // Single-use read-only transactions do not have IDs, because
  761. // single-use transactions do not support multiple requests.
  762. Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
  763. // For snapshot read-only transactions, the read timestamp chosen
  764. // for the transaction. Not returned by default: see
  765. // [TransactionOptions.ReadOnly.return_read_timestamp][google.spanner.v1.TransactionOptions.ReadOnly.return_read_timestamp].
  766. //
  767. // A timestamp in RFC3339 UTC \"Zulu\" format, accurate to nanoseconds.
  768. // Example: `"2014-10-02T15:01:23.045123456Z"`.
  769. ReadTimestamp *timestamp.Timestamp `protobuf:"bytes,2,opt,name=read_timestamp,json=readTimestamp,proto3" json:"read_timestamp,omitempty"`
  770. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  771. XXX_unrecognized []byte `json:"-"`
  772. XXX_sizecache int32 `json:"-"`
  773. }
  774. func (m *Transaction) Reset() { *m = Transaction{} }
  775. func (m *Transaction) String() string { return proto.CompactTextString(m) }
  776. func (*Transaction) ProtoMessage() {}
  777. func (*Transaction) Descriptor() ([]byte, []int) {
  778. return fileDescriptor_transaction_4419efde92dad332, []int{1}
  779. }
  780. func (m *Transaction) XXX_Unmarshal(b []byte) error {
  781. return xxx_messageInfo_Transaction.Unmarshal(m, b)
  782. }
  783. func (m *Transaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  784. return xxx_messageInfo_Transaction.Marshal(b, m, deterministic)
  785. }
  786. func (dst *Transaction) XXX_Merge(src proto.Message) {
  787. xxx_messageInfo_Transaction.Merge(dst, src)
  788. }
  789. func (m *Transaction) XXX_Size() int {
  790. return xxx_messageInfo_Transaction.Size(m)
  791. }
  792. func (m *Transaction) XXX_DiscardUnknown() {
  793. xxx_messageInfo_Transaction.DiscardUnknown(m)
  794. }
  795. var xxx_messageInfo_Transaction proto.InternalMessageInfo
  796. func (m *Transaction) GetId() []byte {
  797. if m != nil {
  798. return m.Id
  799. }
  800. return nil
  801. }
  802. func (m *Transaction) GetReadTimestamp() *timestamp.Timestamp {
  803. if m != nil {
  804. return m.ReadTimestamp
  805. }
  806. return nil
  807. }
  808. // This message is used to select the transaction in which a
  809. // [Read][google.spanner.v1.Spanner.Read] or
  810. // [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] call runs.
  811. //
  812. // See [TransactionOptions][google.spanner.v1.TransactionOptions] for more
  813. // information about transactions.
  814. type TransactionSelector struct {
  815. // If no fields are set, the default is a single use transaction
  816. // with strong concurrency.
  817. //
  818. // Types that are valid to be assigned to Selector:
  819. // *TransactionSelector_SingleUse
  820. // *TransactionSelector_Id
  821. // *TransactionSelector_Begin
  822. Selector isTransactionSelector_Selector `protobuf_oneof:"selector"`
  823. XXX_NoUnkeyedLiteral struct{} `json:"-"`
  824. XXX_unrecognized []byte `json:"-"`
  825. XXX_sizecache int32 `json:"-"`
  826. }
  827. func (m *TransactionSelector) Reset() { *m = TransactionSelector{} }
  828. func (m *TransactionSelector) String() string { return proto.CompactTextString(m) }
  829. func (*TransactionSelector) ProtoMessage() {}
  830. func (*TransactionSelector) Descriptor() ([]byte, []int) {
  831. return fileDescriptor_transaction_4419efde92dad332, []int{2}
  832. }
  833. func (m *TransactionSelector) XXX_Unmarshal(b []byte) error {
  834. return xxx_messageInfo_TransactionSelector.Unmarshal(m, b)
  835. }
  836. func (m *TransactionSelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
  837. return xxx_messageInfo_TransactionSelector.Marshal(b, m, deterministic)
  838. }
  839. func (dst *TransactionSelector) XXX_Merge(src proto.Message) {
  840. xxx_messageInfo_TransactionSelector.Merge(dst, src)
  841. }
  842. func (m *TransactionSelector) XXX_Size() int {
  843. return xxx_messageInfo_TransactionSelector.Size(m)
  844. }
  845. func (m *TransactionSelector) XXX_DiscardUnknown() {
  846. xxx_messageInfo_TransactionSelector.DiscardUnknown(m)
  847. }
  848. var xxx_messageInfo_TransactionSelector proto.InternalMessageInfo
  849. type isTransactionSelector_Selector interface {
  850. isTransactionSelector_Selector()
  851. }
  852. type TransactionSelector_SingleUse struct {
  853. SingleUse *TransactionOptions `protobuf:"bytes,1,opt,name=single_use,json=singleUse,proto3,oneof"`
  854. }
  855. type TransactionSelector_Id struct {
  856. Id []byte `protobuf:"bytes,2,opt,name=id,proto3,oneof"`
  857. }
  858. type TransactionSelector_Begin struct {
  859. Begin *TransactionOptions `protobuf:"bytes,3,opt,name=begin,proto3,oneof"`
  860. }
  861. func (*TransactionSelector_SingleUse) isTransactionSelector_Selector() {}
  862. func (*TransactionSelector_Id) isTransactionSelector_Selector() {}
  863. func (*TransactionSelector_Begin) isTransactionSelector_Selector() {}
  864. func (m *TransactionSelector) GetSelector() isTransactionSelector_Selector {
  865. if m != nil {
  866. return m.Selector
  867. }
  868. return nil
  869. }
  870. func (m *TransactionSelector) GetSingleUse() *TransactionOptions {
  871. if x, ok := m.GetSelector().(*TransactionSelector_SingleUse); ok {
  872. return x.SingleUse
  873. }
  874. return nil
  875. }
  876. func (m *TransactionSelector) GetId() []byte {
  877. if x, ok := m.GetSelector().(*TransactionSelector_Id); ok {
  878. return x.Id
  879. }
  880. return nil
  881. }
  882. func (m *TransactionSelector) GetBegin() *TransactionOptions {
  883. if x, ok := m.GetSelector().(*TransactionSelector_Begin); ok {
  884. return x.Begin
  885. }
  886. return nil
  887. }
  888. // XXX_OneofFuncs is for the internal use of the proto package.
  889. func (*TransactionSelector) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
  890. return _TransactionSelector_OneofMarshaler, _TransactionSelector_OneofUnmarshaler, _TransactionSelector_OneofSizer, []interface{}{
  891. (*TransactionSelector_SingleUse)(nil),
  892. (*TransactionSelector_Id)(nil),
  893. (*TransactionSelector_Begin)(nil),
  894. }
  895. }
  896. func _TransactionSelector_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
  897. m := msg.(*TransactionSelector)
  898. // selector
  899. switch x := m.Selector.(type) {
  900. case *TransactionSelector_SingleUse:
  901. b.EncodeVarint(1<<3 | proto.WireBytes)
  902. if err := b.EncodeMessage(x.SingleUse); err != nil {
  903. return err
  904. }
  905. case *TransactionSelector_Id:
  906. b.EncodeVarint(2<<3 | proto.WireBytes)
  907. b.EncodeRawBytes(x.Id)
  908. case *TransactionSelector_Begin:
  909. b.EncodeVarint(3<<3 | proto.WireBytes)
  910. if err := b.EncodeMessage(x.Begin); err != nil {
  911. return err
  912. }
  913. case nil:
  914. default:
  915. return fmt.Errorf("TransactionSelector.Selector has unexpected type %T", x)
  916. }
  917. return nil
  918. }
  919. func _TransactionSelector_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
  920. m := msg.(*TransactionSelector)
  921. switch tag {
  922. case 1: // selector.single_use
  923. if wire != proto.WireBytes {
  924. return true, proto.ErrInternalBadWireType
  925. }
  926. msg := new(TransactionOptions)
  927. err := b.DecodeMessage(msg)
  928. m.Selector = &TransactionSelector_SingleUse{msg}
  929. return true, err
  930. case 2: // selector.id
  931. if wire != proto.WireBytes {
  932. return true, proto.ErrInternalBadWireType
  933. }
  934. x, err := b.DecodeRawBytes(true)
  935. m.Selector = &TransactionSelector_Id{x}
  936. return true, err
  937. case 3: // selector.begin
  938. if wire != proto.WireBytes {
  939. return true, proto.ErrInternalBadWireType
  940. }
  941. msg := new(TransactionOptions)
  942. err := b.DecodeMessage(msg)
  943. m.Selector = &TransactionSelector_Begin{msg}
  944. return true, err
  945. default:
  946. return false, nil
  947. }
  948. }
  949. func _TransactionSelector_OneofSizer(msg proto.Message) (n int) {
  950. m := msg.(*TransactionSelector)
  951. // selector
  952. switch x := m.Selector.(type) {
  953. case *TransactionSelector_SingleUse:
  954. s := proto.Size(x.SingleUse)
  955. n += 1 // tag and wire
  956. n += proto.SizeVarint(uint64(s))
  957. n += s
  958. case *TransactionSelector_Id:
  959. n += 1 // tag and wire
  960. n += proto.SizeVarint(uint64(len(x.Id)))
  961. n += len(x.Id)
  962. case *TransactionSelector_Begin:
  963. s := proto.Size(x.Begin)
  964. n += 1 // tag and wire
  965. n += proto.SizeVarint(uint64(s))
  966. n += s
  967. case nil:
  968. default:
  969. panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
  970. }
  971. return n
  972. }
  973. func init() {
  974. proto.RegisterType((*TransactionOptions)(nil), "google.spanner.v1.TransactionOptions")
  975. proto.RegisterType((*TransactionOptions_ReadWrite)(nil), "google.spanner.v1.TransactionOptions.ReadWrite")
  976. proto.RegisterType((*TransactionOptions_PartitionedDml)(nil), "google.spanner.v1.TransactionOptions.PartitionedDml")
  977. proto.RegisterType((*TransactionOptions_ReadOnly)(nil), "google.spanner.v1.TransactionOptions.ReadOnly")
  978. proto.RegisterType((*Transaction)(nil), "google.spanner.v1.Transaction")
  979. proto.RegisterType((*TransactionSelector)(nil), "google.spanner.v1.TransactionSelector")
  980. }
  981. func init() {
  982. proto.RegisterFile("google/spanner/v1/transaction.proto", fileDescriptor_transaction_4419efde92dad332)
  983. }
  984. var fileDescriptor_transaction_4419efde92dad332 = []byte{
  985. // 573 bytes of a gzipped FileDescriptorProto
  986. 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x94, 0xdf, 0x6e, 0xd3, 0x3e,
  987. 0x14, 0xc7, 0xd3, 0x6e, 0xab, 0xba, 0xd3, 0xae, 0xed, 0x3c, 0x4d, 0xbf, 0xfe, 0x22, 0x04, 0xa8,
  988. 0x08, 0x89, 0xab, 0x44, 0x1d, 0x5c, 0x20, 0x21, 0x24, 0xe8, 0x2a, 0x88, 0x90, 0xd0, 0xaa, 0x74,
  989. 0x0c, 0x09, 0x55, 0x0a, 0x6e, 0x63, 0x22, 0x4b, 0x89, 0x1d, 0xd9, 0xce, 0xe8, 0xee, 0x79, 0x09,
  990. 0x5e, 0x81, 0x47, 0xe0, 0x9a, 0x2b, 0x9e, 0x0a, 0xc5, 0x71, 0xfa, 0x2f, 0x17, 0xeb, 0x5d, 0xec,
  991. 0x73, 0xbe, 0xdf, 0xf3, 0xf1, 0x39, 0x76, 0xe0, 0x49, 0xc4, 0x79, 0x14, 0x13, 0x57, 0xa6, 0x98,
  992. 0x31, 0x22, 0xdc, 0xdb, 0xa1, 0xab, 0x04, 0x66, 0x12, 0x2f, 0x14, 0xe5, 0xcc, 0x49, 0x05, 0x57,
  993. 0x1c, 0x9d, 0x16, 0x49, 0x8e, 0x49, 0x72, 0x6e, 0x87, 0xf6, 0x03, 0xa3, 0xc3, 0x29, 0x75, 0x31,
  994. 0x63, 0x5c, 0xe1, 0x3c, 0x5f, 0x16, 0x02, 0xfb, 0xa1, 0x89, 0xea, 0xd5, 0x3c, 0xfb, 0xe6, 0x86,
  995. 0x99, 0xc0, 0x6b, 0x43, 0xfb, 0xd1, 0x6e, 0x5c, 0xd1, 0x84, 0x48, 0x85, 0x93, 0xb4, 0x48, 0x18,
  996. 0xfc, 0x39, 0x02, 0x74, 0xbd, 0xe6, 0xb8, 0x4a, 0xb5, 0x3b, 0x9a, 0x00, 0x08, 0x82, 0xc3, 0xe0,
  997. 0xbb, 0xa0, 0x8a, 0xf4, 0x6b, 0x8f, 0x6b, 0xcf, 0x5a, 0x17, 0xae, 0x53, 0xa1, 0x73, 0xaa, 0x52,
  998. 0xc7, 0x27, 0x38, 0xfc, 0x9c, 0xcb, 0x3c, 0xcb, 0x3f, 0x16, 0xe5, 0x02, 0x05, 0xd0, 0x4d, 0xb1,
  999. 0x50, 0x34, 0x4f, 0x22, 0x61, 0x10, 0x26, 0x71, 0xff, 0x40, 0xdb, 0xbe, 0xd8, 0xcf, 0x76, 0xb2,
  1000. 0x16, 0x8f, 0x93, 0xd8, 0xb3, 0xfc, 0x4e, 0xba, 0xb5, 0x83, 0x3e, 0x82, 0xae, 0x16, 0x70, 0x16,
  1001. 0xdf, 0xf5, 0xeb, 0xda, 0xda, 0xd9, 0x9f, 0xf8, 0x8a, 0xc5, 0x77, 0x9e, 0xe5, 0x37, 0x85, 0xf9,
  1002. 0xb6, 0x5b, 0x70, 0xbc, 0x3a, 0x89, 0xdd, 0x83, 0xce, 0x76, 0x7d, 0xfb, 0xc7, 0x01, 0x34, 0x4b,
  1003. 0x1d, 0xea, 0x43, 0x43, 0x2a, 0xc1, 0x59, 0xa4, 0x3b, 0xd5, 0xf4, 0x2c, 0xdf, 0xac, 0xd1, 0x07,
  1004. 0x40, 0x09, 0x65, 0x81, 0x06, 0x5b, 0xb5, 0xde, 0xd0, 0xd9, 0x25, 0x5d, 0x39, 0x1c, 0xe7, 0xba,
  1005. 0xcc, 0xf0, 0x2c, 0xbf, 0x97, 0x50, 0x96, 0x17, 0x58, 0xed, 0xa1, 0x37, 0x70, 0x92, 0xe0, 0x65,
  1006. 0x20, 0x15, 0x8e, 0x09, 0x23, 0x52, 0x9a, 0xfe, 0xfd, 0x5f, 0xb1, 0x19, 0x9b, 0x3b, 0xe0, 0x59,
  1007. 0x7e, 0x3b, 0xc1, 0xcb, 0x69, 0x29, 0x40, 0x97, 0xd0, 0xd9, 0x21, 0x39, 0xdc, 0x83, 0xe4, 0x44,
  1008. 0x6c, 0x61, 0x8c, 0xa1, 0x4b, 0x96, 0x78, 0xa1, 0x36, 0x40, 0x8e, 0xee, 0x07, 0xe9, 0x68, 0xcd,
  1009. 0x1a, 0xe5, 0x02, 0xce, 0x05, 0x51, 0x99, 0xa8, 0xf4, 0xa6, 0x91, 0x77, 0xd0, 0x3f, 0x2b, 0x82,
  1010. 0x5b, 0x0d, 0x18, 0x9d, 0x42, 0x77, 0x95, 0x17, 0xcc, 0x79, 0xc6, 0xc2, 0x51, 0x03, 0x0e, 0x13,
  1011. 0x1e, 0x92, 0xc1, 0x57, 0x68, 0x6d, 0x0c, 0x16, 0x75, 0xa0, 0x4e, 0x43, 0x3d, 0x8c, 0xb6, 0x5f,
  1012. 0xa7, 0x21, 0x7a, 0x5b, 0x39, 0xf8, 0xbd, 0x23, 0xd8, 0x39, 0xf6, 0xe0, 0x77, 0x0d, 0xce, 0x36,
  1013. 0x4a, 0x4c, 0x49, 0x4c, 0x16, 0x8a, 0x0b, 0xf4, 0x0e, 0x40, 0x52, 0x16, 0xc5, 0x24, 0xc8, 0x64,
  1014. 0xf9, 0x52, 0x9e, 0xee, 0x75, 0xef, 0xf2, 0xf7, 0x51, 0x48, 0x3f, 0x49, 0x82, 0x7a, 0x1a, 0x39,
  1015. 0xc7, 0x6a, 0x7b, 0x96, 0x86, 0x7e, 0x0d, 0x47, 0x73, 0x12, 0x51, 0x66, 0xe6, 0xbc, 0xb7, 0x69,
  1016. 0xa1, 0x1a, 0x01, 0x34, 0xa5, 0x81, 0x1c, 0xfd, 0xac, 0xc1, 0xf9, 0x82, 0x27, 0x55, 0x87, 0x51,
  1017. 0x6f, 0xc3, 0x62, 0x92, 0x37, 0x61, 0x52, 0xfb, 0xf2, 0xd2, 0xa4, 0x45, 0x3c, 0xc6, 0x2c, 0x72,
  1018. 0xb8, 0x88, 0xdc, 0x88, 0x30, 0xdd, 0x22, 0xb7, 0x08, 0xe1, 0x94, 0xca, 0x8d, 0x3f, 0xd9, 0x2b,
  1019. 0xf3, 0xf9, 0xab, 0xfe, 0xdf, 0xfb, 0x42, 0x7a, 0x19, 0xf3, 0x2c, 0x74, 0xa6, 0xa6, 0xce, 0xcd,
  1020. 0xf0, 0x6f, 0x19, 0x99, 0xe9, 0xc8, 0xcc, 0x44, 0x66, 0x37, 0xc3, 0x79, 0x43, 0x1b, 0x3f, 0xff,
  1021. 0x17, 0x00, 0x00, 0xff, 0xff, 0x81, 0xd7, 0x1c, 0x8e, 0x21, 0x05, 0x00, 0x00,
  1022. }