diff --git a/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java b/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java index b75be7d..5bf3998 100644 --- a/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java +++ b/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java @@ -1687,7 +1687,7 @@ public boolean requiresDatasourceName() { * @return whether this request requires a CatalogName element */ public boolean requiresCatalogName() { - return this != DBSCHEMA_CATALOGS; + return (this != DBSCHEMA_CATALOGS && this != DISCOVER_DATASOURCES); } } diff --git a/testsrc/org/olap4j/ConnectionTest.java b/testsrc/org/olap4j/ConnectionTest.java index f67cff8..3e48714 100644 --- a/testsrc/org/olap4j/ConnectionTest.java +++ b/testsrc/org/olap4j/ConnectionTest.java @@ -316,6 +316,16 @@ public void testXmlaCatalogParameter() throws Exception { tester.getURL().replaceFirst("\\;Catalog=FoodMart", ""), info); assertEquals("FoodMart", connection.getCatalog()); + ((OlapConnection)connection).getCatalogs(); + Statement statement = connection.createStatement(); + OlapStatement olapStatement = + tester.getWrapper().unwrap(statement, OlapStatement.class); + CellSet cellSet = + olapStatement.executeOlapQuery( + "SELECT FROM [Sales]"); + List axesList = cellSet.getAxes(); + assertNotNull(axesList); + assertEquals(0, axesList.size()); info.setProperty( XmlaOlap4jDriver.Property.Catalog.name(), "FoodMart"); @@ -333,7 +343,11 @@ public void testXmlaCatalogParameter() throws Exception { info); connection.getCatalog(); } catch (OlapException e) { - return; + if (e.getMessage().equals( + "There is no catalog named FoodMartError available to query against.")) + { + return; + } } fail("XmlaOlap4jConnection did not detect an inexistant catalog name."); }