Last active
September 25, 2020 14:18
-
-
Save sns-seb/12cd1950b67b26807153072100a19436 to your computer and use it in GitHub Desktop.
Exploring Postgres driver defaults on sonarcould-core
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@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; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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