@@ -22,6 +22,7 @@ import (
2222
2323 "cloud.google.com/go/spanner"
2424 sppb "cloud.google.com/go/spanner/apiv1/spannerpb"
25+ "google.golang.org/protobuf/types/known/structpb"
2526)
2627
2728type testIterator struct {
@@ -81,6 +82,9 @@ func TestRows_Next(t *testing.T) {
8182 if err == io .EOF {
8283 break
8384 }
85+ if err != nil {
86+ t .Fatal (err )
87+ }
8488 row := make ([]driver.Value , 3 )
8589 copy (row , dest )
8690 values = append (values , row )
@@ -109,3 +113,37 @@ func TestRows_Next(t *testing.T) {
109113 }
110114 }
111115}
116+
117+ func TestRows_Next_Unsupported (t * testing.T ) {
118+ unspecifiedType := & sppb.Type {Code : sppb .TypeCode_TYPE_CODE_UNSPECIFIED }
119+
120+ it := testIterator {
121+ metadata : & sppb.ResultSetMetadata {
122+ RowType : & sppb.StructType {
123+ Fields : []* sppb.StructType_Field {
124+ {Name : "COL1" , Type : unspecifiedType },
125+ },
126+ },
127+ },
128+ rows : []* spanner.Row {
129+ newRow (t , []string {"COL1" }, []any {
130+ spanner.GenericColumnValue {
131+ Type : unspecifiedType ,
132+ Value : & structpb.Value {},
133+ },
134+ }),
135+ },
136+ }
137+
138+ rows := rows {it : & it }
139+
140+ dest := make ([]driver.Value , 1 )
141+ err := rows .Next (dest )
142+ if err == nil {
143+ t .Fatal ("expected an error, but got nil" )
144+ }
145+ const expectedError = "unsupported element type TYPE_CODE_UNSPECIFIED"
146+ if err .Error () != expectedError {
147+ t .Fatalf ("expected error %q, but got %q" , expectedError , err .Error ())
148+ }
149+ }
0 commit comments