@@ -16,6 +16,7 @@ syntax = "proto3";
1616
1717package google.spanner.v1 ;
1818
19+ import "google/api/field_behavior.proto" ;
1920import "google/api/annotations.proto" ;
2021
2122option csharp_namespace = "Google.Cloud.Spanner.V1" ;
@@ -26,6 +27,47 @@ option java_package = "com.google.spanner.v1";
2627option php_namespace = "Google\\Cloud\\Spanner\\V1" ;
2728option ruby_package = "Google::Cloud::Spanner::V1" ;
2829
30+ // `Type` indicates the type of a Cloud Spanner value, as might be stored in a
31+ // table cell or returned from an SQL query.
32+ message Type {
33+ // Required. The [TypeCode][google.spanner.v1.TypeCode] for this type.
34+ TypeCode code = 1 [(google.api.field_behavior ) = REQUIRED ];
35+
36+ // If [code][google.spanner.v1.Type.code] == [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type`
37+ // is the type of the array elements.
38+ Type array_element_type = 2 ;
39+
40+ // If [code][google.spanner.v1.Type.code] == [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type`
41+ // provides type information for the struct's fields.
42+ StructType struct_type = 3 ;
43+ }
44+
45+ // `StructType` defines the fields of a [STRUCT][google.spanner.v1.TypeCode.STRUCT] type.
46+ message StructType {
47+ // Message representing a single field of a struct.
48+ message Field {
49+ // The name of the field. For reads, this is the column name. For
50+ // SQL queries, it is the column alias (e.g., `"Word"` in the
51+ // query `"SELECT 'hello' AS Word"`), or the column name (e.g.,
52+ // `"ColName"` in the query `"SELECT ColName FROM Table"`). Some
53+ // columns might have an empty name (e.g., !"SELECT
54+ // UPPER(ColName)"`). Note that a query result can contain
55+ // multiple fields with the same name.
56+ string name = 1 ;
57+
58+ // The type of the field.
59+ Type type = 2 ;
60+ }
61+
62+ // The list of fields that make up this struct. Order is
63+ // significant, because values of this struct type are represented as
64+ // lists, where the order of field values matches the order of
65+ // fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields
66+ // matches the order of columns in a read request, or the order of
67+ // fields in the `SELECT` clause of a query.
68+ repeated Field fields = 1 ;
69+ }
70+
2971// `TypeCode` is used as part of [Type][google.spanner.v1.Type] to
3072// indicate the type of a Cloud Spanner value.
3173//
@@ -75,45 +117,15 @@ enum TypeCode {
75117 // Encoded as `list`, where list element `i` is represented according
76118 // to [struct_type.fields[i]][google.spanner.v1.StructType.fields].
77119 STRUCT = 9 ;
78- }
79-
80- // `Type` indicates the type of a Cloud Spanner value, as might be stored in a
81- // table cell or returned from an SQL query.
82- message Type {
83- // Required. The [TypeCode][google.spanner.v1.TypeCode] for this type.
84- TypeCode code = 1 ;
85-
86- // If [code][google.spanner.v1.Type.code] == [ARRAY][google.spanner.v1.TypeCode.ARRAY], then `array_element_type`
87- // is the type of the array elements.
88- Type array_element_type = 2 ;
89-
90- // If [code][google.spanner.v1.Type.code] == [STRUCT][google.spanner.v1.TypeCode.STRUCT], then `struct_type`
91- // provides type information for the struct's fields.
92- StructType struct_type = 3 ;
93- }
94-
95- // `StructType` defines the fields of a [STRUCT][google.spanner.v1.TypeCode.STRUCT] type.
96- message StructType {
97- // Message representing a single field of a struct.
98- message Field {
99- // The name of the field. For reads, this is the column name. For
100- // SQL queries, it is the column alias (e.g., `"Word"` in the
101- // query `"SELECT 'hello' AS Word"`), or the column name (e.g.,
102- // `"ColName"` in the query `"SELECT ColName FROM Table"`). Some
103- // columns might have an empty name (e.g., !"SELECT
104- // UPPER(ColName)"`). Note that a query result can contain
105- // multiple fields with the same name.
106- string name = 1 ;
107-
108- // The type of the field.
109- Type type = 2 ;
110- }
111120
112- // The list of fields that make up this struct. Order is
113- // significant, because values of this struct type are represented as
114- // lists, where the order of field values matches the order of
115- // fields in the [StructType][google.spanner.v1.StructType]. In turn, the order of fields
116- // matches the order of columns in a read request, or the order of
117- // fields in the `SELECT` clause of a query.
118- repeated Field fields = 1 ;
121+ // Encoded as `string`, in decimal format or scientific notation format.
122+ // <br>Decimal format:
123+ // <br>`[+-]Digits[.[Digits]]` or
124+ // <br>`[+-][Digits].Digits`
125+ //
126+ // Scientific notation:
127+ // <br>`[+-]Digits[.[Digits]][ExponentIndicator[+-]Digits]` or
128+ // <br>`[+-][Digits].Digits[ExponentIndicator[+-]Digits]`
129+ // <br>(ExponentIndicator is `"e"` or `"E"`)
130+ NUMERIC = 10 ;
119131}
0 commit comments