Type indicates the type of a Cloud Spanner value, as might be stored in a table cell or returned from an SQL query.
| JSON representation | 
|---|
| { "code": enum ( | 
| Fields | |
|---|---|
| code | 
 Required. The  | 
| arrayElementType | 
 If  | 
| structType | 
 If  | 
| typeAnnotation | 
 The  | 
| protoTypeFqn | 
 If  | 
TypeCode
TypeCode is used as part of Type to indicate the type of a Cloud Spanner value.
Each legal value of a type can be encoded to or decoded from a JSON value, using the encodings described below. All Cloud Spanner values can be null, regardless of type; nulls are always encoded as a JSON null.
| Enums | |
|---|---|
| TYPE_CODE_UNSPECIFIED | Not specified. | 
| BOOL | Encoded as JSON trueorfalse. | 
| INT64 | Encoded as string, in decimal format. | 
| FLOAT64 | Encoded as number, or the strings"NaN","Infinity", or"-Infinity". | 
| FLOAT32 | Encoded as number, or the strings"NaN","Infinity", or"-Infinity". | 
| TIMESTAMP | Encoded as  If the schema has the column option  | 
| DATE | Encoded as stringin RFC 3339 date format. | 
| STRING | Encoded as string. | 
| BYTES | Encoded as a base64-encoded string, as described in RFC 4648, section 4. | 
| ARRAY | Encoded as list, where the list elements are represented according toarrayElementType. | 
| STRUCT | Encoded as list, where list elementiis represented according tostructType.fields[i]. | 
| NUMERIC | Encoded as  Scientific notation:  | 
| JSON | Encoded as a JSON-formatted  
 | 
| PROTO | Encoded as a base64-encoded string, as described in RFC 4648, section 4. | 
| ENUM | Encoded as string, in decimal format. | 
TypeAnnotationCode
TypeAnnotationCode is used as a part of Type to disambiguate SQL types that should be used for a given Cloud Spanner value. Disambiguation is needed because the same Cloud Spanner type can be mapped to different SQL types depending on SQL dialect. TypeAnnotationCode doesn't affect the way value is serialized.
| Enums | |
|---|---|
| TYPE_ANNOTATION_CODE_UNSPECIFIED | Not specified. | 
| PG_NUMERIC | PostgreSQL compatible NUMERIC type. This annotation needs to be applied to Typeinstances havingNUMERICtype code to specify that values of this type should be treated as PostgreSQL NUMERIC values. Currently this annotation is always needed forNUMERICwhen a client interacts with PostgreSQL-enabled Spanner databases. | 
| PG_JSONB | PostgreSQL compatible JSONB type. This annotation needs to be applied to Typeinstances havingJSONtype code to specify that values of this type should be treated as PostgreSQL JSONB values. Currently this annotation is always needed forJSONwhen a client interacts with PostgreSQL-enabled Spanner databases. | 
| PG_OID | PostgreSQL compatible OID type. This annotation can be used by a client interacting with PostgreSQL-enabled Spanner database to specify that a value should be treated using the semantics of the OID type. |