diff --git a/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java b/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java index 1383110..9e8efaa 100644 --- a/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java +++ b/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java @@ -138,6 +138,8 @@ abstract class XmlaOlap4jConnection implements OlapConnection { private final URL serverUrlObject; + private HashSet olap4jDatabaseProperties; + /** * This is a private property used for development only. * Enabling it makes the connection print out all queries @@ -255,6 +257,22 @@ public void setSessionId(String sessionId) { null, null, null, null, null, null), new XmlaOlap4jConnection.DatabaseHandler(), null); + + this.olap4jDatabaseProperties = new HashSet(); + final ResultSet rs = + this.olap4jDatabaseMetaData.getDatabaseProperties(null, null); + try { + while (rs.next()) { + String property = + rs.getString(XmlaConstants.Literal.PROPERTY_NAME.name()); + if (property != null) { + property = property.toUpperCase(); + olap4jDatabaseProperties.add(property); + } + } + } finally { + rs.close(); + } } /** @@ -326,13 +344,15 @@ String makeConnectionPropertyList() { XmlaOlap4jDriver.Property.valueOf(prop); continue; } catch (IllegalArgumentException e) { - buf.append(" <"); - xmlEncode(buf, prop); - buf.append(">"); - xmlEncode(buf, databaseProperties.get(prop)); - buf.append("\n"); + if (olap4jDatabaseProperties.contains(prop)) { + buf.append(" <"); + xmlEncode(buf, prop); + buf.append(">"); + xmlEncode(buf, databaseProperties.get(prop)); + buf.append("\n"); + } } } return buf.toString();