/*
 * Copyright (c) 2004, PostgreSQL Global Development Group
 * See the LICENSE file in the project root for more information.
 */

package org.postgresql.core;

import org.postgresql.util.GT;
import org.postgresql.util.PSQLException;
import org.postgresql.util.PSQLState;

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

Provides constants for well-known backend OIDs for the types we commonly use.
/** * Provides constants for well-known backend OIDs for the types we commonly use. */
public class Oid { public static final int UNSPECIFIED = 0; public static final int INT2 = 21; public static final int INT2_ARRAY = 1005; public static final int INT4 = 23; public static final int INT4_ARRAY = 1007; public static final int INT8 = 20; public static final int INT8_ARRAY = 1016; public static final int TEXT = 25; public static final int TEXT_ARRAY = 1009; public static final int NUMERIC = 1700; public static final int NUMERIC_ARRAY = 1231; public static final int FLOAT4 = 700; public static final int FLOAT4_ARRAY = 1021; public static final int FLOAT8 = 701; public static final int FLOAT8_ARRAY = 1022; public static final int BOOL = 16; public static final int BOOL_ARRAY = 1000; public static final int DATE = 1082; public static final int DATE_ARRAY = 1182; public static final int TIME = 1083; public static final int TIME_ARRAY = 1183; public static final int TIMETZ = 1266; public static final int TIMETZ_ARRAY = 1270; public static final int TIMESTAMP = 1114; public static final int TIMESTAMP_ARRAY = 1115; public static final int TIMESTAMPTZ = 1184; public static final int TIMESTAMPTZ_ARRAY = 1185; public static final int BYTEA = 17; public static final int BYTEA_ARRAY = 1001; public static final int VARCHAR = 1043; public static final int VARCHAR_ARRAY = 1015; public static final int OID = 26; public static final int OID_ARRAY = 1028; public static final int BPCHAR = 1042; public static final int BPCHAR_ARRAY = 1014; public static final int MONEY = 790; public static final int MONEY_ARRAY = 791; public static final int NAME = 19; public static final int NAME_ARRAY = 1003; public static final int BIT = 1560; public static final int BIT_ARRAY = 1561; public static final int VOID = 2278; public static final int INTERVAL = 1186; public static final int INTERVAL_ARRAY = 1187; public static final int CHAR = 18; // This is not char(N), this is "char" a single byte type. public static final int CHAR_ARRAY = 1002; public static final int VARBIT = 1562; public static final int VARBIT_ARRAY = 1563; public static final int UUID = 2950; public static final int UUID_ARRAY = 2951; public static final int XML = 142; public static final int XML_ARRAY = 143; public static final int POINT = 600; public static final int POINT_ARRAY = 1017; public static final int BOX = 603; public static final int JSONB_ARRAY = 3807; public static final int JSON = 114; public static final int JSON_ARRAY = 199; public static final int REF_CURSOR = 1790; public static final int REF_CURSOR_ARRAY = 2201; private static final Map<Integer, String> OID_TO_NAME = new HashMap<Integer, String>(100); private static final Map<String, Integer> NAME_TO_OID = new HashMap<String, Integer>(100); static { for (Field field : Oid.class.getFields()) { try { int oid = field.getInt(null); String name = field.getName().toUpperCase(); OID_TO_NAME.put(oid, name); NAME_TO_OID.put(name, oid); } catch (IllegalAccessException e) { // ignore } } }
Returns the name of the oid as string.
Params:
  • oid – The oid to convert to name.
Returns:The name of the oid or "<unknown>" if oid no constant for oid value has been defined.
/** * Returns the name of the oid as string. * * @param oid The oid to convert to name. * @return The name of the oid or {@code "<unknown>"} if oid no constant for oid value has been * defined. */
public static String toString(int oid) { String name = OID_TO_NAME.get(oid); if (name == null) { name = "<unknown:" + oid + ">"; } return name; } public static int valueOf(String oid) throws PSQLException { if (oid.length() > 0 && !Character.isDigit(oid.charAt(0))) { Integer id = NAME_TO_OID.get(oid); if (id == null) { id = NAME_TO_OID.get(oid.toUpperCase()); } if (id != null) { return id; } } else { try { // OID are unsigned 32bit integers, so Integer.parseInt is not enough return (int) Long.parseLong(oid); } catch (NumberFormatException ex) { } } throw new PSQLException(GT.tr("oid type {0} not known and not a number", oid), PSQLState.INVALID_PARAMETER_VALUE); } }