Skip to content

Instantly share code, notes, and snippets.

@sns-seb
Last active September 25, 2020 14:18
Show Gist options
  • Save sns-seb/12cd1950b67b26807153072100a19436 to your computer and use it in GitHub Desktop.
Save sns-seb/12cd1950b67b26807153072100a19436 to your computer and use it in GitHub Desktop.
Exploring Postgres driver defaults on sonarcould-core
@Override
public void start() {
try (Connection connection = database.getDataSource().getConnection()) {
try (ResultSet typeInfo = connection.getMetaData().getTypeInfo()) {
int fetchSize = typeInfo.getFetchSize();
int fetchDirection = typeInfo.getFetchDirection();
LOG.info("fetchSize=" + fetchSize + " fetchDirection=" + toFetchDirectionName(fetchDirection));
while (typeInfo.next()) {
int dataTypeId = typeInfo.getInt("DATA_TYPE");
String dataTypeName = toSqlTypeName(dataTypeId);
if (dataTypeName != null) {
LOG.info("{}\t{}\t{}\t{}", typeInfo.getString("TYPE_NAME"), dataTypeName,
typeInfo.getInt("PRECISION"),
typeInfo.getString("LITERAL_PREFIX"));
}
}
}
}
}
private static String toFetchDirectionName(int i) {
switch (i) {
case 1000: return "FETCH_FORWARD";
case 1001: return "FETCH_REVERSE";
case 1002: return "FETCH_UNKNOWN";
}
throw new IllegalArgumentException(i + " not supported value");
}
@Nullable
private static String toSqlTypeName(int i) {
switch (i) {
case -7: return "BIT";
case -6: return "TINYINT";
case 5: return "SMALLINT";
case 4: return "INTEGER";
case -5: return "BIGINT";
case 6: return "FLOAT";
case 7: return "REAL";
case 8: return "DOUBLE";
case 2: return "NUMERIC";
case 3: return "DECIMAL";
case 1: return "CHAR";
case 12: return "VARCHAR";
case -1: return "LONGVARCHAR";
case 91: return "DATE";
case 92: return "TIME";
case 93: return "TIMESTAMP";
case -2: return "BINARY";
case -3: return "VARBINARY";
case -4: return "LONGVARBINARY";
case 0: return "NULL";
case 1111: return "OTHER";
case 2000: return "JAVA_OBJECT";
case 2001: return "DISTINCT";
case 2002: return "STRUCT";
case 2003: return "ARRAY";
case 2004: return "BLOB";
case 2005: return "CLOB";
case 2006: return "REF";
case 70: return "DATALINK";
case 16: return "BOOLEAN";
case -8: return "ROWID";
case -15: return "NCHAR";
case -9: return "NVARCHAR";
case -16: return "LONGNVARCHAR";
case 2011: return "NCLOB";
case 2009: return "SQLXML";
case 2012: return "REF_CURSOR";
case 2013: return "TIME_WITH_TIMEZONE";
case 2014: return "TIMESTAMP_WITH_TIMEZONE";
default: return null;
}
}
bool BIT
bit BIT
int8 BIGINT
bigserial BIGINT
oid BIGINT
bytea BINARY
char CHAR
bpchar CHAR
numeric NUMERIC
int4 INTEGER
serial INTEGER
int2 SMALLINT
float4 REAL
float8 DOUBLE
money DOUBLE
name VARCHAR
text VARCHAR
varchar VARCHAR
date DATE
time TIME
timetz TIME
timestamp TIMESTAMP
timestamptz TIMESTAMP
int2vector OTHER
regproc OTHER
tid OTHER
xid OTHER
cid OTHER
oidvector OTHER
json OTHER
pg_node_tree OTHER
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment