122122import org .eclipse .daanse .xmla .api .mddataset .RowSetRow ;
123123import org .eclipse .daanse .xmla .api .mddataset .RowSetRowItem ;
124124import org .eclipse .daanse .xmla .model .record .discover .PropertiesR ;
125+ import org .eclipse .daanse .xmla .model .record .discover .dbschema .catalogs .DbSchemaCatalogsResponseRowR ;
125126import org .eclipse .daanse .xmla .model .record .discover .dbschema .providertypes .DbSchemaProviderTypesRequestR ;
126127import org .eclipse .daanse .xmla .model .record .discover .dbschema .providertypes .DbSchemaProviderTypesRestrictionsR ;
127128import org .eclipse .daanse .xmla .model .record .discover .dbschema .schemata .DbSchemaSchemataRequestR ;
@@ -256,7 +257,10 @@ public StatementResponse statement(StatementRequest statementRequest, RequestMet
256257 }
257258
258259 Optional <String > oCatalog = statementRequest .properties ().catalog ();
259-
260+ //some clients (Power BI send empty catalog if only one catalog)
261+ if (!oCatalog .isPresent () && contextsListSupplyer .getContexts () != null && contextsListSupplyer .getContexts ().size () == 1 ) {
262+ oCatalog = Optional .ofNullable (contextsListSupplyer .getContexts ().get (0 ).getName ());
263+ }
260264 if (oCatalog .isPresent ()) {
261265 String catalogName = oCatalog .get ();
262266 Optional <Context <?>> oContext = contextsListSupplyer .getContexts ().stream ()
@@ -271,7 +275,7 @@ public StatementResponse statement(StatementRequest statementRequest, RequestMet
271275 } else if (queryComponent instanceof CalculatedFormula calculatedFormula ) {
272276 return executeCalculatedFormula (connection , calculatedFormula );
273277 } else if (queryComponent instanceof DmvQuery dmvQuery ) {
274- return executeDmvQuery (connection , dmvQuery , metaData , statementRequest );
278+ return executeDmvQuery (connection , dmvQuery , metaData , statementRequest );
275279 // TODO: remove userRolePrincipal, metaData,
276280 } else if (queryComponent instanceof Refresh refresh ) {
277281 return executeRefresh (connection , refresh );
@@ -325,7 +329,7 @@ public StatementResponse statement(StatementRequest statementRequest, RequestMet
325329 dmvQuery .getWhereExpression (), statementRequest .parameters ()));
326330
327331 }
328-
332+
329333 }
330334// here
331335 }
@@ -527,9 +531,8 @@ private StatementResponse executeDmvQuery(Connection connection, DmvQuery dmvQue
527531 rowSet = DiscoveryResponseConvertor .dbSchemaTablesResponseRowToRowSet (dbSchemaTablesResponseRows );
528532 break ;
529533 case OperationNames .DBSCHEMA_CATALOGS :
530-
531534 rowSet = DiscoveryResponseConvertor .dbSchemaCatalogsResponseRowToRowSet (
532- List .of (dbSchemaService .dbSchemaCatalogsRow (connection .getContext ())));
535+ List .of (correctDescription ( dbSchemaService .dbSchemaCatalogsRow (connection .getContext () ))));
533536 break ;
534537 case OperationNames .DBSCHEMA_PROVIDER_TYPES :
535538 DbSchemaProviderTypesRestrictionsR dbSchemaProviderTypesRestrictions = new DbSchemaProviderTypesRestrictionsR (
@@ -732,6 +735,17 @@ private StatementResponse executeDmvQuery(Connection connection, DmvQuery dmvQue
732735 filterRowSetByColumns (rowSet , columns , dmvQuery .getWhereExpression (), statementRequest .parameters ()));
733736 }
734737
738+ private DbSchemaCatalogsResponseRow correctDescription (DbSchemaCatalogsResponseRow r ) {
739+ if (!r .description ().isPresent ()) {
740+ return new DbSchemaCatalogsResponseRowR (r .catalogName (), Optional .of ("" ),
741+ r .roles (), r .dateModified (), r .compatibilityLevel (),
742+ r .type (), r .version (), r .databaseId (),
743+ r .dateQueried (), r .currentlyUsed (), r .popularity (),
744+ r .weightedPopularity (), r .clientCacheRefreshPolicy ());
745+ }
746+ return r ;
747+ }
748+
735749 private boolean isCompatible (RowSetRow row , Expression exp , List <ExecuteParameter > parameters ) {
736750 if (exp == null ) {
737751 return true ;
0 commit comments