protected TypeInfo createTypeInfo(BaseConnection conn, int unknownLength) { return new TypeInfoCache(conn, unknownLength); }
public TypeInfoCache(BaseConnection conn, int unknownLength) { _conn = conn; _unknownLength = unknownLength; _oidToPgName = new HashMap(); _pgNameToOid = new HashMap(); _pgNameToJavaClass = new HashMap(); _pgNameToPgObject = new HashMap(); _pgArrayToPgType = new HashMap(); _arrayOidToDelimiter = new HashMap(); // needs to be synchronized because the iterator is returned // from getPGTypeNamesWithSQLTypes() _pgNameToSQLType = Collections.synchronizedMap(new HashMap()); for (int i=0; i<types.length; i++) { String pgTypeName = (String)types[i][0]; Integer oid = (Integer)types[i][1]; Integer sqlType = (Integer)types[i][2]; String javaClass = (String)types[i][3]; Integer arrayOid = (Integer)types[i][4]; addCoreType(pgTypeName, oid, sqlType, javaClass, arrayOid); } }
public boolean isSigned(int oid) { oid = convertArrayToBaseOid(oid); switch(oid) { case Oid.INT2: case Oid.INT4: case Oid.INT8: case Oid.FLOAT4: case Oid.FLOAT8: case Oid.NUMERIC: return true; default: return false; } }
public int getPGArrayType(String elementTypeName) throws SQLException { elementTypeName = getTypeForAlias(elementTypeName); return getPGType("_" + elementTypeName); }
public int getSQLType(int oid) throws SQLException { return getSQLType(getPGType(oid)); }
public int getPrecision(int oid, int typmod) { oid = convertArrayToBaseOid(oid); switch (oid) { case Oid.INT2: case Oid.TIMESTAMP: case Oid.TIMESTAMPTZ: return getDisplaySize(oid, typmod);
public boolean requiresQuoting(int oid) throws SQLException { int sqlType = getSQLType(oid); switch(sqlType) { case Types.BIGINT: case Types.DOUBLE: case Types.FLOAT: case Types.INTEGER: case Types.REAL: case Types.SMALLINT: case Types.TINYINT: case Types.NUMERIC: case Types.DECIMAL: return false; } return true; }
public synchronized String getJavaClass(int oid) throws SQLException { String pgTypeName = getPGType(oid); String result = (String)_pgNameToJavaClass.get(pgTypeName); if (result != null) { return result; } if (getSQLType(pgTypeName) == Types.ARRAY) { result = "java.sql.Array"; _pgNameToJavaClass.put(pgTypeName, result); } return result; }
public int getPGArrayType(String elementTypeName) throws SQLException { elementTypeName = getTypeForAlias(elementTypeName); return getPGType("_" + elementTypeName); }
public int getPrecision(int oid, int typmod) { oid = convertArrayToBaseOid(oid); switch (oid) { case Oid.INT2: case Oid.TIMESTAMP: case Oid.TIMESTAMPTZ: return getDisplaySize(oid, typmod);
public boolean requiresQuoting(int oid) throws SQLException { int sqlType = getSQLType(oid); switch(sqlType) { case Types.BIGINT: case Types.DOUBLE: case Types.FLOAT: case Types.INTEGER: case Types.REAL: case Types.SMALLINT: case Types.TINYINT: case Types.NUMERIC: case Types.DECIMAL: return false; } return true; }
public int getSQLType(int oid) throws SQLException { return getSQLType(getPGType(oid)); }
public boolean isCaseSensitive(int oid) { oid = convertArrayToBaseOid(oid); switch(oid) { case Oid.OID: case Oid.INT2: case Oid.INT4: case Oid.INT8: case Oid.FLOAT4: case Oid.FLOAT8: case Oid.NUMERIC: case Oid.BOOL: case Oid.BIT: case Oid.VARBIT: case Oid.DATE: case Oid.TIME: case Oid.TIMETZ: case Oid.TIMESTAMP: case Oid.TIMESTAMPTZ: case Oid.INTERVAL: return false; default: return true; } }
public int getPGArrayType(String elementTypeName) throws SQLException { elementTypeName = getTypeForAlias(elementTypeName); return getPGType("_" + elementTypeName); }
public int getPrecision(int oid, int typmod) { oid = convertArrayToBaseOid(oid); switch (oid) { case Oid.INT2: case Oid.TIMESTAMP: case Oid.TIMESTAMPTZ: return getDisplaySize(oid, typmod);
protected TypeInfo createTypeInfo(BaseConnection conn, int unknownLength) { return new TypeInfoCache(conn, unknownLength); }
public boolean requiresQuoting(int oid) throws SQLException { int sqlType = getSQLType(oid); switch(sqlType) { case Types.BIGINT: case Types.DOUBLE: case Types.FLOAT: case Types.INTEGER: case Types.REAL: case Types.SMALLINT: case Types.TINYINT: case Types.NUMERIC: case Types.DECIMAL: return false; } return true; }
public TypeInfoCache(BaseConnection conn, int unknownLength) { _conn = conn; _unknownLength = unknownLength; _oidToPgName = new HashMap(); _pgNameToOid = new HashMap(); _pgNameToJavaClass = new HashMap(); _pgNameToPgObject = new HashMap(); _pgArrayToPgType = new HashMap(); _arrayOidToDelimiter = new HashMap(); // needs to be synchronized because the iterator is returned // from getPGTypeNamesWithSQLTypes() _pgNameToSQLType = Collections.synchronizedMap(new HashMap()); for (int i=0; i<types.length; i++) { String pgTypeName = (String)types[i][0]; Integer oid = (Integer)types[i][1]; Integer sqlType = (Integer)types[i][2]; String javaClass = (String)types[i][3]; Integer arrayOid = (Integer)types[i][4]; addCoreType(pgTypeName, oid, sqlType, javaClass, arrayOid); } }
public int getSQLType(int oid) throws SQLException { return getSQLType(getPGType(oid)); }
public int getMaximumPrecision(int oid) { oid = convertArrayToBaseOid(oid); switch(oid) { case Oid.NUMERIC: return 1000; case Oid.TIME: case Oid.TIMETZ: // Technically this depends on the --enable-integer-datetimes // configure setting. It is 6 with integer and 10 with float. return 6; case Oid.TIMESTAMP: case Oid.TIMESTAMPTZ: case Oid.INTERVAL: return 6; case Oid.BPCHAR: case Oid.VARCHAR: return 10485760; case Oid.BIT: case Oid.VARBIT: return 83886080; default: return 0; } }