Skip to content

Commit 04d384e

Browse files
authored
chore: use exported BatchType from parser package (#514)
Use the exported BatchType from the parser package instead of an unexported type. This will allow us in the future to export functions to determine the batch type.
1 parent 31d67ce commit 04d384e

File tree

4 files changed

+25
-29
lines changed

4 files changed

+25
-29
lines changed

batch.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,13 @@
1414

1515
package spannerdriver
1616

17-
import "cloud.google.com/go/spanner"
18-
19-
type batchType int
20-
21-
const (
22-
ddl batchType = iota
23-
dml
17+
import (
18+
"cloud.google.com/go/spanner"
19+
"github.com/googleapis/go-sql-spanner/parser"
2420
)
2521

2622
type batch struct {
27-
tp batchType
23+
tp parser.BatchType
2824
statements []spanner.Statement
2925
returnValues []int64
3026
options *ExecOptions

conn.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -528,11 +528,11 @@ func (c *conn) AbortBatch() error {
528528
}
529529

530530
func (c *conn) InDDLBatch() bool {
531-
return c.batch != nil && c.batch.tp == ddl
531+
return c.batch != nil && c.batch.tp == parser.BatchTypeDdl
532532
}
533533

534534
func (c *conn) InDMLBatch() bool {
535-
return (c.batch != nil && c.batch.tp == dml) || (c.inReadWriteTransaction() && c.tx.(*readWriteTransaction).batch != nil)
535+
return (c.batch != nil && c.batch.tp == parser.BatchTypeDml) || (c.inReadWriteTransaction() && c.tx.(*readWriteTransaction).batch != nil)
536536
}
537537

538538
func (c *conn) GetBatchedStatements() []spanner.Statement {
@@ -554,7 +554,7 @@ func (c *conn) startBatchDDL() (driver.Result, error) {
554554
return nil, spanner.ToSpannerError(status.Errorf(codes.FailedPrecondition, "This connection has an active transaction. DDL batches in transactions are not supported."))
555555
}
556556
c.logger.Debug("started ddl batch")
557-
c.batch = &batch{tp: ddl}
557+
c.batch = &batch{tp: parser.BatchTypeDdl}
558558
return driver.ResultNoRows, nil
559559
}
560560

@@ -572,7 +572,7 @@ func (c *conn) startBatchDML(automatic bool) (driver.Result, error) {
572572
return nil, spanner.ToSpannerError(status.Errorf(codes.FailedPrecondition, "This connection has an active read-only transaction. Read-only transactions cannot execute DML batches."))
573573
}
574574
c.logger.Debug("starting dml batch outside transaction")
575-
c.batch = &batch{tp: dml, options: execOptions}
575+
c.batch = &batch{tp: parser.BatchTypeDml, options: execOptions}
576576
return driver.ResultNoRows, nil
577577
}
578578

@@ -585,9 +585,9 @@ func (c *conn) runBatch(ctx context.Context) (driver.Result, error) {
585585
return nil, spanner.ToSpannerError(status.Errorf(codes.FailedPrecondition, "This connection does not have an active batch"))
586586
}
587587
switch c.batch.tp {
588-
case ddl:
588+
case parser.BatchTypeDdl:
589589
return c.runDDLBatch(ctx)
590-
case dml:
590+
case parser.BatchTypeDml:
591591
return c.runDMLBatch(ctx)
592592
default:
593593
return nil, spanner.ToSpannerError(status.Errorf(codes.InvalidArgument, "Unknown batch type: %d", c.batch.tp))
@@ -622,10 +622,10 @@ func (c *conn) abortBatch() (driver.Result, error) {
622622
}
623623

624624
func (c *conn) execDDL(ctx context.Context, statements ...spanner.Statement) (driver.Result, error) {
625-
if c.batch != nil && c.batch.tp == dml {
625+
if c.batch != nil && c.batch.tp == parser.BatchTypeDml {
626626
return nil, spanner.ToSpannerError(status.Error(codes.FailedPrecondition, "This connection has an active DML batch"))
627627
}
628-
if c.batch != nil && c.batch.tp == ddl {
628+
if c.batch != nil && c.batch.tp == parser.BatchTypeDdl {
629629
c.batch.statements = append(c.batch.statements, statements...)
630630
return driver.ResultNoRows, nil
631631
}

driver_test.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,7 @@ func TestConnection_Reset(t *testing.T) {
491491
state: createInitialConnectionState(connectionstate.TypeTransactional, map[string]connectionstate.ConnectionPropertyValue{
492492
propertyCommitResponse.Key(): propertyCommitResponse.CreateTypedInitialValue(nil),
493493
}),
494-
batch: &batch{tp: dml},
494+
batch: &batch{tp: parser.BatchTypeDml},
495495
tx: &readOnlyTransaction{
496496
logger: noopLogger,
497497
close: func(_ txResult) {
@@ -569,11 +569,11 @@ func TestConn_StartBatchDdl(t *testing.T) {
569569
wantErr bool
570570
}{
571571
{"Default", &conn{logger: noopLogger, state: createInitialConnectionState(connectionstate.TypeTransactional, map[string]connectionstate.ConnectionPropertyValue{})}, false},
572-
{"In DDL batch", &conn{logger: noopLogger, batch: &batch{tp: ddl}, state: createInitialConnectionState(connectionstate.TypeTransactional, map[string]connectionstate.ConnectionPropertyValue{})}, true},
573-
{"In DML batch", &conn{logger: noopLogger, batch: &batch{tp: dml}, state: createInitialConnectionState(connectionstate.TypeTransactional, map[string]connectionstate.ConnectionPropertyValue{})}, true},
572+
{"In DDL batch", &conn{logger: noopLogger, batch: &batch{tp: parser.BatchTypeDdl}, state: createInitialConnectionState(connectionstate.TypeTransactional, map[string]connectionstate.ConnectionPropertyValue{})}, true},
573+
{"In DML batch", &conn{logger: noopLogger, batch: &batch{tp: parser.BatchTypeDml}, state: createInitialConnectionState(connectionstate.TypeTransactional, map[string]connectionstate.ConnectionPropertyValue{})}, true},
574574
{"In read/write transaction", &conn{logger: noopLogger, tx: &readWriteTransaction{}, state: createInitialConnectionState(connectionstate.TypeTransactional, map[string]connectionstate.ConnectionPropertyValue{})}, true},
575575
{"In read-only transaction", &conn{logger: noopLogger, tx: &readOnlyTransaction{}, state: createInitialConnectionState(connectionstate.TypeTransactional, map[string]connectionstate.ConnectionPropertyValue{})}, true},
576-
{"In read/write transaction with a DML batch", &conn{logger: noopLogger, tx: &readWriteTransaction{batch: &batch{tp: dml}}, state: createInitialConnectionState(connectionstate.TypeTransactional, map[string]connectionstate.ConnectionPropertyValue{})}, true},
576+
{"In read/write transaction with a DML batch", &conn{logger: noopLogger, tx: &readWriteTransaction{batch: &batch{tp: parser.BatchTypeDml}}, state: createInitialConnectionState(connectionstate.TypeTransactional, map[string]connectionstate.ConnectionPropertyValue{})}, true},
577577
} {
578578
err := test.c.StartBatchDDL()
579579
if test.wantErr {
@@ -598,11 +598,11 @@ func TestConn_StartBatchDml(t *testing.T) {
598598
wantErr bool
599599
}{
600600
{"Default", &conn{logger: noopLogger, state: createInitialConnectionState(connectionstate.TypeTransactional, map[string]connectionstate.ConnectionPropertyValue{})}, false},
601-
{"In DDL batch", &conn{logger: noopLogger, state: createInitialConnectionState(connectionstate.TypeTransactional, map[string]connectionstate.ConnectionPropertyValue{}), batch: &batch{tp: ddl}}, true},
602-
{"In DML batch", &conn{logger: noopLogger, state: createInitialConnectionState(connectionstate.TypeTransactional, map[string]connectionstate.ConnectionPropertyValue{}), batch: &batch{tp: dml}}, true},
601+
{"In DDL batch", &conn{logger: noopLogger, state: createInitialConnectionState(connectionstate.TypeTransactional, map[string]connectionstate.ConnectionPropertyValue{}), batch: &batch{tp: parser.BatchTypeDdl}}, true},
602+
{"In DML batch", &conn{logger: noopLogger, state: createInitialConnectionState(connectionstate.TypeTransactional, map[string]connectionstate.ConnectionPropertyValue{}), batch: &batch{tp: parser.BatchTypeDml}}, true},
603603
{"In read/write transaction", &conn{logger: noopLogger, state: createInitialConnectionState(connectionstate.TypeTransactional, map[string]connectionstate.ConnectionPropertyValue{}), tx: &readWriteTransaction{logger: noopLogger}}, false},
604604
{"In read-only transaction", &conn{logger: noopLogger, state: createInitialConnectionState(connectionstate.TypeTransactional, map[string]connectionstate.ConnectionPropertyValue{}), tx: &readOnlyTransaction{logger: noopLogger}}, true},
605-
{"In read/write transaction with a DML batch", &conn{logger: noopLogger, state: createInitialConnectionState(connectionstate.TypeTransactional, map[string]connectionstate.ConnectionPropertyValue{}), tx: &readWriteTransaction{logger: noopLogger, batch: &batch{tp: dml}}}, true},
605+
{"In read/write transaction with a DML batch", &conn{logger: noopLogger, state: createInitialConnectionState(connectionstate.TypeTransactional, map[string]connectionstate.ConnectionPropertyValue{}), tx: &readWriteTransaction{logger: noopLogger, batch: &batch{tp: parser.BatchTypeDml}}}, true},
606606
} {
607607
err := test.c.StartBatchDML()
608608
if test.wantErr {
@@ -629,7 +629,7 @@ func TestConn_NonDdlStatementsInDdlBatch(t *testing.T) {
629629
parser: p,
630630
logger: noopLogger,
631631
state: createInitialConnectionState(connectionstate.TypeNonTransactional, map[string]connectionstate.ConnectionPropertyValue{}),
632-
batch: &batch{tp: ddl},
632+
batch: &batch{tp: parser.BatchTypeDdl},
633633
execSingleQuery: func(ctx context.Context, c *spanner.Client, statement spanner.Statement, tb spanner.TimestampBound, options *ExecOptions) *spanner.RowIterator {
634634
return &spanner.RowIterator{}
635635
},
@@ -669,7 +669,7 @@ func TestConn_NonDmlStatementsInDmlBatch(t *testing.T) {
669669
parser: p,
670670
logger: noopLogger,
671671
state: createInitialConnectionState(connectionstate.TypeNonTransactional, map[string]connectionstate.ConnectionPropertyValue{}),
672-
batch: &batch{tp: dml},
672+
batch: &batch{tp: parser.BatchTypeDml},
673673
execSingleQuery: func(ctx context.Context, c *spanner.Client, statement spanner.Statement, tb spanner.TimestampBound, options *ExecOptions) *spanner.RowIterator {
674674
return &spanner.RowIterator{}
675675
},

transaction.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -536,7 +536,7 @@ func (tx *readWriteTransaction) StartBatchDML(options spanner.QueryOptions, auto
536536
}
537537
tx.logger.Debug("starting dml batch in transaction", "automatic", automatic)
538538
tx.active = true
539-
tx.batch = &batch{tp: dml, options: &ExecOptions{QueryOptions: options}, automatic: automatic}
539+
tx.batch = &batch{tp: parser.BatchTypeDml, options: &ExecOptions{QueryOptions: options}, automatic: automatic}
540540
return driver.ResultNoRows, nil
541541
}
542542

@@ -545,9 +545,9 @@ func (tx *readWriteTransaction) RunBatch(ctx context.Context) (driver.Result, er
545545
return nil, spanner.ToSpannerError(status.Errorf(codes.FailedPrecondition, "This transaction does not have an active batch"))
546546
}
547547
switch tx.batch.tp {
548-
case dml:
548+
case parser.BatchTypeDml:
549549
return tx.runDmlBatch(ctx)
550-
case ddl:
550+
case parser.BatchTypeDdl:
551551
fallthrough
552552
default:
553553
return nil, spanner.ToSpannerError(status.Errorf(codes.InvalidArgument, "Unknown or unsupported batch type: %d", tx.batch.tp))
@@ -558,7 +558,7 @@ func (tx *readWriteTransaction) RunDmlBatch(ctx context.Context) (SpannerResult,
558558
if tx.batch == nil {
559559
return nil, spanner.ToSpannerError(status.Errorf(codes.FailedPrecondition, "this transaction does not have an active batch"))
560560
}
561-
if tx.batch.tp != dml {
561+
if tx.batch.tp != parser.BatchTypeDml {
562562
return nil, spanner.ToSpannerError(status.Errorf(codes.FailedPrecondition, "batch is not a DML batch"))
563563
}
564564
return tx.runDmlBatch(ctx)

0 commit comments

Comments
 (0)