@Override public ResultSet getTableTypes() throws SQLException { String[] types = tableTypeClauses.keySet().toArray(new String[0]); Arrays.sort(types); Field[] f = new Field[1]; List<byte[][]> v = new ArrayList<byte[][]>(); f[0] = new Field("TABLE_TYPE", Oid.VARCHAR); for (String type : types) { byte[][] tuple = new byte[1][]; tuple[0] = connection.encodeString(type); v.add(tuple); } return ((BaseStatement) createMetaDataStatement()).createDriverResultSet(f, v); }
public static Map<String, Integer> createColumnNameIndexMap(Field[] fields, boolean isSanitiserDisabled) { Map<String, Integer> columnNameIndexMap = new HashMap<String, Integer>(fields.length * 2); // The JDBC spec says when you have duplicate columns names, // the first one should be returned. So load the map in // reverse order so the first ones will overwrite later ones. for (int i = fields.length - 1; i >= 0; i--) { String columnLabel = fields[i].getColumnLabel(); if (isSanitiserDisabled) { columnNameIndexMap.put(columnLabel, i + 1); } else { columnNameIndexMap.put(columnLabel.toLowerCase(Locale.US), i + 1); } } return columnNameIndexMap; }
/** * Returns true if the value of the given column is in binary format. * * @param column The column to check. Range starts from 1. * @return True if the column is in binary format. */ protected boolean isBinary(int column) { return fields[column - 1].getFormat() == Field.BINARY_FORMAT; }
private void initSqlType(Field field) throws SQLException { if (field.isTypeInitialized()) { return; } TypeInfo typeInfo = connection.getTypeInfo(); int oid = field.getOID(); String pgType = typeInfo.getPGType(oid); int sqlType = typeInfo.getSQLType(pgType); field.setSQLType(sqlType); field.setPGType(pgType); }
private boolean populateFieldsWithMetadata(Gettable<FieldMetadata.Key, FieldMetadata> metadata) { boolean allOk = true; for (Field field : fields) { if (field.getMetadata() != null) { // No need to update metadata continue; } final FieldMetadata fieldMetadata = metadata.get(new FieldMetadata.Key(field.getTableOid(), field.getPositionInTable())); if (fieldMetadata == null) { allOk = false; } else { field.setMetadata(fieldMetadata); } } fieldInfoFetched |= allOk; return allOk; }
public String getBaseColumnName(int column) throws SQLException { Field field = getField(column); if (field.getTableOid() == 0) { return ""; } fetchFieldMetaData(); return field.getMetadata().columnName; }
if (fields[i].getTableOid() == 0) continue; sql.append(fields[i].getTableOid()); if (!hasSourceInfo) sql.append(" AS oid "); sql.append(", "); sql.append(fields[i].getPositionInTable()); if (!hasSourceInfo) sql.append(" AS attnum"); boolean autoIncrement = rs.getBoolean(7); for (int i=0; i<fields.length; i++) { if (fields[i].getTableOid() == table && fields[i].getPositionInTable() == column) { fields[i].setColumnName(columnName); fields[i].setTableName(tableName); fields[i].setSchemaName(schemaName); fields[i].setNullable(nullable); fields[i].setAutoIncrement(autoIncrement);
fields[0] = new Field("INDEX", Oid.INT4); fields[0].setFormat(Field.BINARY_FORMAT); fields[1] = new Field("VALUE", elementOid); fields[1].setFormat(Field.BINARY_FORMAT); for (int i = 1; i < index; ++i) { int len = ByteConverter.int4(fieldBytes, pos); fields[0] = new Field("INDEX", Oid.INT4); fields[0].setFormat(Field.BINARY_FORMAT); fields[1] = new Field("VALUE", elementOid); fields[1].setFormat(Field.BINARY_FORMAT); for (int i = 1; i < index; ++i) { int len = ByteConverter.int4(fieldBytes, pos); fields[0] = new Field("INDEX", Oid.INT4); fields[0].setFormat(Field.BINARY_FORMAT); fields[1] = new Field("VALUE", oid); fields[1].setFormat(Field.BINARY_FORMAT); int nextDimension = thisDimension + 1; int dimensionsLeft = dims.length - nextDimension;
/** * Returns the OID of a field. It is used internally by the driver. * * @param field field index * @return OID of a field */ public int getColumnOID(int field) { return fields[field - 1].getOID(); }
if (field.getMetadata() != null) { continue; sql.append(field.getTableOid()); if (!hasSourceInfo) { sql.append(" AS oid "); sql.append(field.getPositionInTable()); if (!hasSourceInfo) { sql.append(" AS attnum");
fields[i].setFormat(Field.BINARY_FORMAT); //Set the field to binary format if (maxRows == 0 || tuples.size() < maxRows) tuples.addElement(tuple);
public String getBaseColumnName(int column) throws SQLException { fetchFieldMetaData(); Field field = getField(column); return field.getColumnName(); }
public String getBaseTableName(int column) throws SQLException if (field.getTableOid() == 0) Integer tableOid = new Integer(field.getTableOid()); if (tableNameCache == null)
public int isNullable(int column) throws SQLException { fetchFieldMetaData(); Field field = getField(column); return field.getNullable(); }
public boolean isAutoIncrement(int column) throws SQLException { fetchFieldMetaData(); Field field = getField(column); return field.getAutoIncrement(); }