I'was trying to get meta data of a column and discovered that the column name is case sensitive though it should be case insensitive. I don't know if this can be somehow determined by a configuration or environment change because I believe that till recently it worked in a case-insensitive manner.
I've the table studna_monitor.mon_user_session with the column "username". The following code wrongly returns null (notice "username".toUpperCase()): --- String col = null; Class.forName("org.postgresql.Driver"); String url = "jdbc:postgresql://localhost/mydb?user=me&password=secret"; Connection conn = DriverManager.getConnection(url); DatabaseMetaData databaseMetaData = conn.getMetaData(); ResultSet columnsMD = databaseMetaData.getColumns(null, "studna_monitor", "mon_user_session", "username".toUpperCase()); while(columnsMD.next()) { col = columnsMD.getString("COLUMN_NAME"); } return col; --- While the following returns the column name "username": --- ... ResultSet columnsMD = databaseMetaData.getColumns(null, "studna_monitor", "mon_user_session", "username".toLowerCase()); ... ---
BTW, the metadata reports: supportsMixedCaseIdentifiers: false supportsMixedCaseQuotedIdentifiers: true (which is pretty much expected)
Driver: postgresql-8.3-604.jdbc3.jar, postgresql-jdbc3-8.2.jar (as distributed with Ubuntu, doesn't provide build number) Server: Postgres 8.2.6 for Solaris