The TypeAnnotationCode that
disambiguates SQL type that Spanner will use to represent values of this
type during query processing. This is necessary for some type codes because
a single TypeCode can be mapped to different
SQL types depending on the SQL dialect.
type_annotation typically is not
needed to process the content of a value (it doesn't affect serialization)
and clients can ignore it on the read path.
The TypeAnnotationCode that
disambiguates SQL type that Spanner will use to represent values of this
type during query processing. This is necessary for some type codes because
a single TypeCode can be mapped to different
SQL types depending on the SQL dialect.
type_annotation typically is not
needed to process the content of a value (it doesn't affect serialization)
and clients can ignore it on the read path.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[],[],null,["# Interface TypeOrBuilder (6.98.1)\n\nVersion latestkeyboard_arrow_down\n\n- [6.98.1 (latest)](/java/docs/reference/google-cloud-spanner/latest/com.google.spanner.v1.TypeOrBuilder)\n- [6.98.0](/java/docs/reference/google-cloud-spanner/6.98.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.97.1](/java/docs/reference/google-cloud-spanner/6.97.1/com.google.spanner.v1.TypeOrBuilder)\n- [6.96.1](/java/docs/reference/google-cloud-spanner/6.96.1/com.google.spanner.v1.TypeOrBuilder)\n- [6.95.1](/java/docs/reference/google-cloud-spanner/6.95.1/com.google.spanner.v1.TypeOrBuilder)\n- [6.94.0](/java/docs/reference/google-cloud-spanner/6.94.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.93.0](/java/docs/reference/google-cloud-spanner/6.93.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.89.0](/java/docs/reference/google-cloud-spanner/6.89.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.88.0](/java/docs/reference/google-cloud-spanner/6.88.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.87.0](/java/docs/reference/google-cloud-spanner/6.87.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.86.0](/java/docs/reference/google-cloud-spanner/6.86.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.85.0](/java/docs/reference/google-cloud-spanner/6.85.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.83.0](/java/docs/reference/google-cloud-spanner/6.83.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.82.0](/java/docs/reference/google-cloud-spanner/6.82.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.80.1](/java/docs/reference/google-cloud-spanner/6.80.1/com.google.spanner.v1.TypeOrBuilder)\n- [6.79.0](/java/docs/reference/google-cloud-spanner/6.79.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.77.0](/java/docs/reference/google-cloud-spanner/6.77.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.74.1](/java/docs/reference/google-cloud-spanner/6.74.1/com.google.spanner.v1.TypeOrBuilder)\n- [6.72.0](/java/docs/reference/google-cloud-spanner/6.72.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.71.0](/java/docs/reference/google-cloud-spanner/6.71.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.69.0](/java/docs/reference/google-cloud-spanner/6.69.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.68.0](/java/docs/reference/google-cloud-spanner/6.68.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.66.0](/java/docs/reference/google-cloud-spanner/6.66.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.65.1](/java/docs/reference/google-cloud-spanner/6.65.1/com.google.spanner.v1.TypeOrBuilder)\n- [6.62.0](/java/docs/reference/google-cloud-spanner/6.62.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.60.0](/java/docs/reference/google-cloud-spanner/6.60.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.58.0](/java/docs/reference/google-cloud-spanner/6.58.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.57.0](/java/docs/reference/google-cloud-spanner/6.57.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.56.0](/java/docs/reference/google-cloud-spanner/6.56.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.55.0](/java/docs/reference/google-cloud-spanner/6.55.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.54.0](/java/docs/reference/google-cloud-spanner/6.54.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.53.0](/java/docs/reference/google-cloud-spanner/6.53.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.52.1](/java/docs/reference/google-cloud-spanner/6.52.1/com.google.spanner.v1.TypeOrBuilder)\n- [6.51.0](/java/docs/reference/google-cloud-spanner/6.51.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.50.1](/java/docs/reference/google-cloud-spanner/6.50.1/com.google.spanner.v1.TypeOrBuilder)\n- [6.49.0](/java/docs/reference/google-cloud-spanner/6.49.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.25.1](/java/docs/reference/google-cloud-spanner/6.25.1/com.google.spanner.v1.TypeOrBuilder)\n- [6.24.0](/java/docs/reference/google-cloud-spanner/6.24.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.23.4](/java/docs/reference/google-cloud-spanner/6.23.4/com.google.spanner.v1.TypeOrBuilder)\n- [6.22.0](/java/docs/reference/google-cloud-spanner/6.22.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.21.2](/java/docs/reference/google-cloud-spanner/6.21.2/com.google.spanner.v1.TypeOrBuilder)\n- [6.20.0](/java/docs/reference/google-cloud-spanner/6.20.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.19.1](/java/docs/reference/google-cloud-spanner/6.19.1/com.google.spanner.v1.TypeOrBuilder)\n- [6.18.0](/java/docs/reference/google-cloud-spanner/6.18.0/com.google.spanner.v1.TypeOrBuilder)\n- [6.17.4](/java/docs/reference/google-cloud-spanner/6.17.4/com.google.spanner.v1.TypeOrBuilder)\n- [6.14.1](/java/docs/reference/google-cloud-spanner/6.14.1/com.google.spanner.v1.TypeOrBuilder) \n\n public interface TypeOrBuilder extends MessageOrBuilder\n\nImplements\n----------\n\n[MessageOrBuilder](https://cloud.google.com/java/docs/reference/protobuf/latest/com.google.protobuf.MessageOrBuilder.html)\n\nMethods\n-------\n\n### getArrayElementType()\n\n public abstract Type getArrayElementType()\n\nIf code ==\nARRAY, then `array_element_type` is the\ntype of the array elements.\n\n`.google.spanner.v1.Type array_element_type = 2;`\n\n### getArrayElementTypeOrBuilder()\n\n public abstract TypeOrBuilder getArrayElementTypeOrBuilder()\n\nIf code ==\nARRAY, then `array_element_type` is the\ntype of the array elements.\n\n`.google.spanner.v1.Type array_element_type = 2;`\n\n### getCode()\n\n public abstract TypeCode getCode()\n\nRequired. The TypeCode for this type.\n\n`.google.spanner.v1.TypeCode code = 1 [(.google.api.field_behavior) = REQUIRED];`\n\n### getCodeValue()\n\n public abstract int getCodeValue()\n\nRequired. The TypeCode for this type.\n\n`.google.spanner.v1.TypeCode code = 1 [(.google.api.field_behavior) = REQUIRED];`\n\n### getProtoTypeFqn()\n\n public abstract String getProtoTypeFqn()\n\nIf code ==\nPROTO or\ncode ==\nENUM, then `proto_type_fqn` is the fully\nqualified name of the proto type representing the proto/enum definition.\n\n`string proto_type_fqn = 5;`\n\n### getProtoTypeFqnBytes()\n\n public abstract ByteString getProtoTypeFqnBytes()\n\nIf code ==\nPROTO or\ncode ==\nENUM, then `proto_type_fqn` is the fully\nqualified name of the proto type representing the proto/enum definition.\n\n`string proto_type_fqn = 5;`\n\n### getStructType()\n\n public abstract StructType getStructType()\n\nIf code ==\nSTRUCT, then `struct_type` provides\ntype information for the struct's fields.\n\n`.google.spanner.v1.StructType struct_type = 3;`\n\n### getStructTypeOrBuilder()\n\n public abstract StructTypeOrBuilder getStructTypeOrBuilder()\n\nIf code ==\nSTRUCT, then `struct_type` provides\ntype information for the struct's fields.\n\n`.google.spanner.v1.StructType struct_type = 3;`\n\n### getTypeAnnotation()\n\n public abstract TypeAnnotationCode getTypeAnnotation()\n\nThe TypeAnnotationCode that\ndisambiguates SQL type that Spanner will use to represent values of this\ntype during query processing. This is necessary for some type codes because\na single TypeCode can be mapped to different\nSQL types depending on the SQL dialect.\ntype_annotation typically is not\nneeded to process the content of a value (it doesn't affect serialization)\nand clients can ignore it on the read path.\n\n`.google.spanner.v1.TypeAnnotationCode type_annotation = 4;`\n\n### getTypeAnnotationValue()\n\n public abstract int getTypeAnnotationValue()\n\nThe TypeAnnotationCode that\ndisambiguates SQL type that Spanner will use to represent values of this\ntype during query processing. This is necessary for some type codes because\na single TypeCode can be mapped to different\nSQL types depending on the SQL dialect.\ntype_annotation typically is not\nneeded to process the content of a value (it doesn't affect serialization)\nand clients can ignore it on the read path.\n\n`.google.spanner.v1.TypeAnnotationCode type_annotation = 4;`\n\n### hasArrayElementType()\n\n public abstract boolean hasArrayElementType()\n\nIf code ==\nARRAY, then `array_element_type` is the\ntype of the array elements.\n\n`.google.spanner.v1.Type array_element_type = 2;`\n\n### hasStructType()\n\n public abstract boolean hasStructType()\n\nIf code ==\nSTRUCT, then `struct_type` provides\ntype information for the struct's fields.\n\n`.google.spanner.v1.StructType struct_type = 3;`"]]