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.
PostgreSQL compatible JSONB type. This annotation needs to be applied to
Type instances having
JSON type code to specify that values of
this type should be treated as PostgreSQL JSONB values. Currently this
annotation is always needed for JSON
when a client interacts with PostgreSQL-enabled Spanner databases.
PG_JSONB = 3;
PG_JSONB_VALUE
PostgreSQL compatible JSONB type. This annotation needs to be applied to
Type instances having
JSON type code to specify that values of
this type should be treated as PostgreSQL JSONB values. Currently this
annotation is always needed for JSON
when a client interacts with PostgreSQL-enabled Spanner databases.
PG_JSONB = 3;
PG_NUMERIC
PostgreSQL compatible NUMERIC type. This annotation needs to be applied to
Type instances having
NUMERIC type code to specify that
values of this type should be treated as PostgreSQL NUMERIC values.
Currently this annotation is always needed for
NUMERIC when a client interacts with
PostgreSQL-enabled Spanner databases.
PG_NUMERIC = 2;
PG_NUMERIC_VALUE
PostgreSQL compatible NUMERIC type. This annotation needs to be applied to
Type instances having
NUMERIC type code to specify that
values of this type should be treated as PostgreSQL NUMERIC values.
Currently this annotation is always needed for
NUMERIC when a client interacts with
PostgreSQL-enabled Spanner databases.
PG_NUMERIC = 2;
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.
PG_OID = 4;
PG_OID_VALUE
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.
[[["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,["# Enum TypeAnnotationCode (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.TypeAnnotationCode)\n- [6.98.0](/java/docs/reference/google-cloud-spanner/6.98.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.97.1](/java/docs/reference/google-cloud-spanner/6.97.1/com.google.spanner.v1.TypeAnnotationCode)\n- [6.96.1](/java/docs/reference/google-cloud-spanner/6.96.1/com.google.spanner.v1.TypeAnnotationCode)\n- [6.95.1](/java/docs/reference/google-cloud-spanner/6.95.1/com.google.spanner.v1.TypeAnnotationCode)\n- [6.94.0](/java/docs/reference/google-cloud-spanner/6.94.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.93.0](/java/docs/reference/google-cloud-spanner/6.93.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.89.0](/java/docs/reference/google-cloud-spanner/6.89.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.88.0](/java/docs/reference/google-cloud-spanner/6.88.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.87.0](/java/docs/reference/google-cloud-spanner/6.87.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.86.0](/java/docs/reference/google-cloud-spanner/6.86.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.85.0](/java/docs/reference/google-cloud-spanner/6.85.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.83.0](/java/docs/reference/google-cloud-spanner/6.83.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.82.0](/java/docs/reference/google-cloud-spanner/6.82.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.80.1](/java/docs/reference/google-cloud-spanner/6.80.1/com.google.spanner.v1.TypeAnnotationCode)\n- [6.79.0](/java/docs/reference/google-cloud-spanner/6.79.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.77.0](/java/docs/reference/google-cloud-spanner/6.77.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.74.1](/java/docs/reference/google-cloud-spanner/6.74.1/com.google.spanner.v1.TypeAnnotationCode)\n- [6.72.0](/java/docs/reference/google-cloud-spanner/6.72.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.71.0](/java/docs/reference/google-cloud-spanner/6.71.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.69.0](/java/docs/reference/google-cloud-spanner/6.69.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.68.0](/java/docs/reference/google-cloud-spanner/6.68.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.66.0](/java/docs/reference/google-cloud-spanner/6.66.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.65.1](/java/docs/reference/google-cloud-spanner/6.65.1/com.google.spanner.v1.TypeAnnotationCode)\n- [6.62.0](/java/docs/reference/google-cloud-spanner/6.62.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.60.0](/java/docs/reference/google-cloud-spanner/6.60.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.58.0](/java/docs/reference/google-cloud-spanner/6.58.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.57.0](/java/docs/reference/google-cloud-spanner/6.57.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.56.0](/java/docs/reference/google-cloud-spanner/6.56.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.55.0](/java/docs/reference/google-cloud-spanner/6.55.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.54.0](/java/docs/reference/google-cloud-spanner/6.54.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.53.0](/java/docs/reference/google-cloud-spanner/6.53.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.52.1](/java/docs/reference/google-cloud-spanner/6.52.1/com.google.spanner.v1.TypeAnnotationCode)\n- [6.51.0](/java/docs/reference/google-cloud-spanner/6.51.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.50.1](/java/docs/reference/google-cloud-spanner/6.50.1/com.google.spanner.v1.TypeAnnotationCode)\n- [6.49.0](/java/docs/reference/google-cloud-spanner/6.49.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.25.1](/java/docs/reference/google-cloud-spanner/6.25.1/com.google.spanner.v1.TypeAnnotationCode)\n- [6.24.0](/java/docs/reference/google-cloud-spanner/6.24.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.23.4](/java/docs/reference/google-cloud-spanner/6.23.4/com.google.spanner.v1.TypeAnnotationCode)\n- [6.22.0](/java/docs/reference/google-cloud-spanner/6.22.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.21.2](/java/docs/reference/google-cloud-spanner/6.21.2/com.google.spanner.v1.TypeAnnotationCode)\n- [6.20.0](/java/docs/reference/google-cloud-spanner/6.20.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.19.1](/java/docs/reference/google-cloud-spanner/6.19.1/com.google.spanner.v1.TypeAnnotationCode)\n- [6.18.0](/java/docs/reference/google-cloud-spanner/6.18.0/com.google.spanner.v1.TypeAnnotationCode)\n- [6.17.4](/java/docs/reference/google-cloud-spanner/6.17.4/com.google.spanner.v1.TypeAnnotationCode)\n- [6.14.1](/java/docs/reference/google-cloud-spanner/6.14.1/com.google.spanner.v1.TypeAnnotationCode) \n\n public enum TypeAnnotationCode extends Enum\u003cTypeAnnotationCode\u003e implements ProtocolMessageEnum\n\n`TypeAnnotationCode` is used as a part of Type to\ndisambiguate SQL types that should be used for a given Cloud Spanner value.\nDisambiguation is needed because the same Cloud Spanner type can be mapped to\ndifferent SQL types depending on SQL dialect. TypeAnnotationCode doesn't\naffect the way value is serialized.\n\nProtobuf enum `google.spanner.v1.TypeAnnotationCode` \n\nImplements\n----------\n\n[ProtocolMessageEnum](https://cloud.google.com/java/docs/reference/protobuf/latest/com.google.protobuf.ProtocolMessageEnum.html) \n\nInherited Members\n-----------------\n\n[Enum.\\\u003cT\\\u003evalueOf(Class\\\u003cT\\\u003e,String)](https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html#valueOf-java.lang.Class-java.lang.String-) \n[Enum.clone()](https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html#clone--) \n[Enum.compareTo(E)](https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html#compareTo-E-) \n[Enum.equals(Object)](https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html#equals-java.lang.Object-) \n[Enum.finalize()](https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html#finalize--) \n[Enum.getDeclaringClass()](https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html#getDeclaringClass--) \n[Enum.hashCode()](https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html#hashCode--) \n[Enum.name()](https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html#name--) \n[Enum.ordinal()](https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html#ordinal--) \n[Enum.toString()](https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html#toString--) \n[Object.getClass()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--) \n[Object.notify()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify--) \n[Object.notifyAll()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notifyAll--) \n[Object.wait()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait--) \n[Object.wait(long)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-) \n[Object.wait(long,int)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-int-)"]]