Skip to content

Commit 63f4ac6

Browse files
committed
chore: remove unused code
1 parent bd774ef commit 63f4ac6

File tree

10 files changed

+79
-102
lines changed

10 files changed

+79
-102
lines changed

checksum_row_iterator.go

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -255,13 +255,5 @@ func (it *checksumRowIterator) Metadata() (*sppb.ResultSetMetadata, error) {
255255
}
256256

257257
func (it *checksumRowIterator) ResultSetStats() *sppb.ResultSetStats {
258-
// TODO: The Spanner client library should offer an option to get the full
259-
// ResultSetStats, instead of only the RowCount and QueryPlan.
260-
stats := &sppb.ResultSetStats{
261-
QueryPlan: it.RowIterator.QueryPlan,
262-
}
263-
if it.stmtType == parser.StatementTypeDml {
264-
stats.RowCount = &sppb.ResultSetStats_RowCountExact{RowCountExact: it.RowIterator.RowCount}
265-
}
266-
return stats
258+
return createResultSetStats(it.RowIterator, it.stmtType)
267259
}

rows.go

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,9 @@ type rows struct {
5555
it rowIterator
5656
close func() error
5757

58-
colsOnce sync.Once
59-
dirtyErr error
60-
cols []string
61-
colTypeNames []string
58+
colsOnce sync.Once
59+
dirtyErr error
60+
cols []string
6261

6362
decodeOption DecodeOption
6463
decodeToNativeArrays bool
@@ -146,12 +145,8 @@ func (r *rows) getColumns() {
146145
}
147146
rowType := metadata.RowType
148147
r.cols = make([]string, len(rowType.Fields))
149-
r.colTypeNames = make([]string, len(rowType.Fields))
150148
for i, c := range rowType.Fields {
151149
r.cols[i] = c.Name
152-
if r.decodeOption != DecodeOptionProto {
153-
r.colTypeNames[i] = c.Type.Code.String()
154-
}
155150
}
156151
})
157152
}

spannerlib/dotnet-spannerlib/Google.Cloud.SpannerLib.MockServer/MockSpannerServer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public static StatementResult CreateUpdateCount(long count)
5757
return new StatementResult(count);
5858
}
5959

60-
internal static StatementResult CreateException(Exception exception)
60+
public static StatementResult CreateException(Exception exception)
6161
{
6262
return new StatementResult(exception);
6363
}

spannerlib/dotnet-spannerlib/Google.Cloud.SpannerLib.Native/MessageHandler.cs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,6 @@ internal bool HasError()
3131
return Message.Code != 0;
3232
}
3333

34-
internal string? Error()
35-
{
36-
if (!HasError())
37-
{
38-
return null;
39-
}
40-
41-
return ValueAsString();
42-
}
43-
4434
internal string ValueAsString()
4535
{
4636
unsafe

spannerlib/dotnet-spannerlib/Google.Cloud.SpannerLib.Tests/BasicTests.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,19 @@ public void TestExecuteQuery()
5656
}
5757
}
5858

59+
[Test]
60+
public void TestExecuteQueryError()
61+
{
62+
var sql = "select * from non_existing_table";
63+
_fixture.SpannerMock.AddOrUpdateStatementResult(sql, StatementResult.CreateException(new RpcException(new Status(StatusCode.NotFound, "Table not found"))));
64+
65+
using var pool = Pool.Create(ConnectionString);
66+
using var connection = pool.CreateConnection();
67+
SpannerException exception = Assert.Throws<SpannerException>(() => connection.Execute(new ExecuteSqlRequest { Sql = sql }));
68+
Assert.That(exception.ErrorCode, Is.EqualTo(ErrorCode.NotFound));
69+
Assert.That(exception.Message, Is.EqualTo("Table not found"));
70+
}
71+
5972
[Test]
6073
public void TestExecuteParameterizedQuery()
6174
{

spannerlib/dotnet-spannerlib/Google.Cloud.SpannerLib/SharedLibSpanner.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using Google.Cloud.SpannerLib.Native;
55
using Google.Protobuf;
66
using Google.Protobuf.WellKnownTypes;
7+
using Google.Rpc;
78

89
namespace Google.Cloud.SpannerLib;
910

@@ -16,7 +17,7 @@ private MessageHandler ExecuteLibraryFunction(Func<Message> func)
1617
{
1718
try
1819
{
19-
throw new SpannerException(handler.Code(), handler.Error()!);
20+
throw CreateException(handler);
2021
}
2122
finally
2223
{
@@ -26,12 +27,22 @@ private MessageHandler ExecuteLibraryFunction(Func<Message> func)
2627
return handler;
2728
}
2829

30+
private SpannerException CreateException(MessageHandler handler)
31+
{
32+
if (handler.Length > 0)
33+
{
34+
var status = Status.Parser.ParseFrom(handler.Value());
35+
return new SpannerException(status.Code, status.Message);
36+
}
37+
return new SpannerException(handler.Code(), "Unknown error");
38+
}
39+
2940
private void ExecuteAndReleaseLibraryFunction(Func<Message> func)
3041
{
3142
using var handler = new MessageHandler(func());
3243
if (handler.HasError())
3344
{
34-
throw new SpannerException(handler.Code(), handler.Error()!);
45+
throw CreateException(handler);
3546
}
3647
}
3748

spannerlib/lib/message.go

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package lib
33
import (
44
"unsafe"
55

6-
"github.com/google/uuid"
76
"google.golang.org/grpc/status"
7+
"google.golang.org/protobuf/proto"
88
)
99

1010
type Message struct {
@@ -27,29 +27,14 @@ func (m *Message) ResPointer() unsafe.Pointer {
2727
return unsafe.Pointer(&(m.Res[0]))
2828
}
2929

30-
func generateId() (string, error) {
31-
id, err := uuid.NewRandom()
32-
if err != nil {
33-
return "", err
34-
}
35-
return id.String(), nil
36-
}
37-
38-
type BaseMsg struct {
39-
Allowed bool
40-
}
41-
42-
type OtherMsg struct {
43-
BaseMsg
44-
Foo string
45-
}
46-
4730
func idMessage(id int64) *Message {
4831
return &Message{ObjectId: id}
4932
}
5033

5134
func errMessage(err error) *Message {
52-
errCode := status.Code(err)
53-
b := []byte(err.Error())
54-
return &Message{Code: int32(errCode), Res: b}
35+
s := status.Convert(err)
36+
p := s.Proto()
37+
// Ignore any marshalling errors and just return an empty status in that case.
38+
b, _ := proto.Marshal(p)
39+
return &Message{Code: int32(s.Code()), Res: b}
5540
}

spannerlib/lib/mock_server_test.go

Lines changed: 32 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,22 @@ func TestSimpleQuery(t *testing.T) {
3737
t.Fatalf("failed to marshal statement: %v", err)
3838
}
3939
results := Execute(pool.ObjectId, conn.ObjectId, statementBytes)
40-
metadata := Metadata(pool.ObjectId, conn.ObjectId, results.ObjectId)
41-
if metadata.Code != 0 {
42-
t.Fatalf("metadata.Code: %v", metadata.Code)
40+
metadataMsg := Metadata(pool.ObjectId, conn.ObjectId, results.ObjectId)
41+
if metadataMsg.Code != 0 {
42+
t.Fatalf("metadataMsg.Code: %v", metadataMsg.Code)
43+
}
44+
metadata := &sppb.ResultSetMetadata{}
45+
if err := proto.Unmarshal(metadataMsg.Res, metadata); err != nil {
46+
t.Fatalf("failed to unmarshal metadata: %v", err)
47+
}
48+
if g, w := len(metadata.RowType.Fields), 1; g != w {
49+
t.Fatalf("field count mismatch\n Got: %v\nWant: %v", g, w)
50+
}
51+
if g, w := metadata.RowType.Fields[0].Name, "FOO"; g != w {
52+
t.Fatalf("field name mismatch\n Got: %v\nWant: %v", g, w)
53+
}
54+
if g, w := metadata.RowType.Fields[0].Type.Code, sppb.TypeCode_INT64; g != w {
55+
t.Fatalf("field type code mismatch\n Got: %v\nWant: %v", g, w)
4356
}
4457
for {
4558
row := Next(pool.ObjectId, conn.ObjectId, results.ObjectId)
@@ -192,8 +205,8 @@ func TestQueryWithTimestampBound(t *testing.T) {
192205
CloseConnection(pool.ObjectId, conn.ObjectId)
193206
ClosePool(pool.ObjectId)
194207

195-
requests := drainRequestsFromServer(server.TestSpanner)
196-
sqlRequests := requestsOfType(requests, reflect.TypeOf(&sppb.ExecuteSqlRequest{}))
208+
requests := server.TestSpanner.DrainRequestsFromServer()
209+
sqlRequests := testutil.RequestsOfType(requests, reflect.TypeOf(&sppb.ExecuteSqlRequest{}))
197210
if g, w := len(sqlRequests), 1; g != w {
198211
t.Fatalf("sql requests count mismatch\nGot: %v\nWant: %v", g, w)
199212
}
@@ -305,8 +318,8 @@ func TestApply(t *testing.T) {
305318
t.Fatal("commit timestamp missing")
306319
}
307320

308-
requests := drainRequestsFromServer(server.TestSpanner)
309-
beginRequests := requestsOfType(requests, reflect.TypeOf(&sppb.BeginTransactionRequest{}))
321+
requests := server.TestSpanner.DrainRequestsFromServer()
322+
beginRequests := testutil.RequestsOfType(requests, reflect.TypeOf(&sppb.BeginTransactionRequest{}))
310323
if g, w := len(beginRequests), 1; g != w {
311324
t.Fatalf("begin requests count mismatch\nGot: %v\nWant: %v", g, w)
312325
}
@@ -317,7 +330,7 @@ func TestApply(t *testing.T) {
317330
if req.Options.GetReadWrite() == nil {
318331
t.Fatalf("missing tx read write")
319332
}
320-
commitRequests := requestsOfType(requests, reflect.TypeOf(&sppb.CommitRequest{}))
333+
commitRequests := testutil.RequestsOfType(requests, reflect.TypeOf(&sppb.CommitRequest{}))
321334
if g, w := len(commitRequests), 1; g != w {
322335
t.Fatalf("commit requests count mismatch\nGot: %v\nWant: %v", g, w)
323336
}
@@ -372,14 +385,14 @@ func TestBufferWrite(t *testing.T) {
372385
t.Fatal("response length mismatch")
373386
}
374387

375-
requests := drainRequestsFromServer(server.TestSpanner)
388+
requests := server.TestSpanner.DrainRequestsFromServer()
376389
// There should not be any BeginTransaction requests yet, as we use inlined-begin.
377-
beginRequests := requestsOfType(requests, reflect.TypeOf(&sppb.BeginTransactionRequest{}))
390+
beginRequests := testutil.RequestsOfType(requests, reflect.TypeOf(&sppb.BeginTransactionRequest{}))
378391
if g, w := len(beginRequests), 0; g != w {
379392
t.Fatalf("begin requests count mismatch\nGot: %v\nWant: %v", g, w)
380393
}
381394
// There should not be any commit requests yet.
382-
commitRequests := requestsOfType(requests, reflect.TypeOf(&sppb.CommitRequest{}))
395+
commitRequests := testutil.RequestsOfType(requests, reflect.TypeOf(&sppb.CommitRequest{}))
383396
if g, w := len(commitRequests), 0; g != w {
384397
t.Fatalf("commit requests count mismatch\nGot: %v\nWant: %v", g, w)
385398
}
@@ -391,8 +404,8 @@ func TestBufferWrite(t *testing.T) {
391404
}
392405

393406
// Verify that we have a commit request on the server.
394-
requests = drainRequestsFromServer(server.TestSpanner)
395-
beginRequests = requestsOfType(requests, reflect.TypeOf(&sppb.BeginTransactionRequest{}))
407+
requests = server.TestSpanner.DrainRequestsFromServer()
408+
beginRequests = testutil.RequestsOfType(requests, reflect.TypeOf(&sppb.BeginTransactionRequest{}))
396409
if g, w := len(beginRequests), 1; g != w {
397410
t.Fatalf("begin requests count mismatch\nGot: %v\nWant: %v", g, w)
398411
}
@@ -403,7 +416,7 @@ func TestBufferWrite(t *testing.T) {
403416
if req.Options.GetReadWrite() == nil {
404417
t.Fatalf("missing tx read write")
405418
}
406-
commitRequests = requestsOfType(requests, reflect.TypeOf(&sppb.CommitRequest{}))
419+
commitRequests = testutil.RequestsOfType(requests, reflect.TypeOf(&sppb.CommitRequest{}))
407420
if g, w := len(commitRequests), 1; g != w {
408421
t.Fatalf("commit requests count mismatch\nGot: %v\nWant: %v", g, w)
409422
}
@@ -459,9 +472,9 @@ func TestBufferWrite_RetryAborted(t *testing.T) {
459472
t.Fatal("response length mismatch")
460473
}
461474

462-
requests := drainRequestsFromServer(server.TestSpanner)
475+
requests := server.TestSpanner.DrainRequestsFromServer()
463476
// There should not be any commit requests yet.
464-
commitRequests := requestsOfType(requests, reflect.TypeOf(&sppb.CommitRequest{}))
477+
commitRequests := testutil.RequestsOfType(requests, reflect.TypeOf(&sppb.CommitRequest{}))
465478
if g, w := len(commitRequests), 0; g != w {
466479
t.Fatalf("commit requests count mismatch\nGot: %v\nWant: %v", g, w)
467480
}
@@ -478,8 +491,8 @@ func TestBufferWrite_RetryAborted(t *testing.T) {
478491
}
479492

480493
// Verify that we have both begin and commit requests on the server.
481-
requests = drainRequestsFromServer(server.TestSpanner)
482-
beginRequests := requestsOfType(requests, reflect.TypeOf(&sppb.BeginTransactionRequest{}))
494+
requests = server.TestSpanner.DrainRequestsFromServer()
495+
beginRequests := testutil.RequestsOfType(requests, reflect.TypeOf(&sppb.BeginTransactionRequest{}))
483496
if g, w := len(beginRequests), 2; g != w {
484497
t.Fatalf("begin requests count mismatch\nGot: %v\nWant: %v", g, w)
485498
}
@@ -492,7 +505,7 @@ func TestBufferWrite_RetryAborted(t *testing.T) {
492505
t.Fatalf("missing tx read write")
493506
}
494507
}
495-
commitRequests = requestsOfType(requests, reflect.TypeOf(&sppb.CommitRequest{}))
508+
commitRequests = testutil.RequestsOfType(requests, reflect.TypeOf(&sppb.CommitRequest{}))
496509
if g, w := len(commitRequests), 2; g != w {
497510
t.Fatalf("commit requests count mismatch\nGot: %v\nWant: %v", g, w)
498511
}
@@ -554,27 +567,3 @@ func setupMockedTestServerWithConfigAndClientOptionsAndDialect(t *testing.T, con
554567
serverTeardown()
555568
}
556569
}
557-
558-
func requestsOfType(requests []interface{}, t reflect.Type) []interface{} {
559-
res := make([]interface{}, 0)
560-
for _, req := range requests {
561-
if reflect.TypeOf(req) == t {
562-
res = append(res, req)
563-
}
564-
}
565-
return res
566-
}
567-
568-
func drainRequestsFromServer(server testutil.InMemSpannerServer) []interface{} {
569-
var reqs []interface{}
570-
loop:
571-
for {
572-
select {
573-
case req := <-server.ReceivedRequests():
574-
reqs = append(reqs, req)
575-
default:
576-
break loop
577-
}
578-
}
579-
return reqs
580-
}

transaction.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,17 @@ func (ri *readOnlyRowIterator) Metadata() (*sppb.ResultSetMetadata, error) {
8383
}
8484

8585
func (ri *readOnlyRowIterator) ResultSetStats() *sppb.ResultSetStats {
86+
return createResultSetStats(ri.RowIterator, ri.stmtType)
87+
}
88+
89+
func createResultSetStats(it *spanner.RowIterator, stmtType parser.StatementType) *sppb.ResultSetStats {
8690
// TODO: The Spanner client library should offer an option to get the full
8791
// ResultSetStats, instead of only the RowCount and QueryPlan.
8892
stats := &sppb.ResultSetStats{
89-
QueryPlan: ri.RowIterator.QueryPlan,
93+
QueryPlan: it.QueryPlan,
9094
}
91-
if ri.stmtType == parser.StatementTypeDml {
92-
stats.RowCount = &sppb.ResultSetStats_RowCountExact{RowCountExact: ri.RowIterator.RowCount}
95+
if stmtType == parser.StatementTypeDml {
96+
stats.RowCount = &sppb.ResultSetStats_RowCountExact{RowCountExact: it.RowCount}
9397
}
9498
return stats
9599
}

wrapped_row_iterator.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package spannerdriver
1717
import (
1818
"cloud.google.com/go/spanner"
1919
"cloud.google.com/go/spanner/apiv1/spannerpb"
20+
"github.com/googleapis/go-sql-spanner/parser"
2021
"google.golang.org/api/iterator"
2122
)
2223

@@ -50,9 +51,6 @@ func (ri *wrappedRowIterator) Metadata() (*spannerpb.ResultSetMetadata, error) {
5051
}
5152

5253
func (ri *wrappedRowIterator) ResultSetStats() *spannerpb.ResultSetStats {
53-
// Include the row count in the stats, as this is a DML statement.
54-
return &spannerpb.ResultSetStats{
55-
RowCount: &spannerpb.ResultSetStats_RowCountExact{RowCountExact: ri.RowIterator.RowCount},
56-
QueryPlan: ri.RowIterator.QueryPlan,
57-
}
54+
// wrappedRowIterator is only used for DML statements.
55+
return createResultSetStats(ri.RowIterator, parser.StatementTypeDml)
5856
}

0 commit comments

Comments
 (0)