Skip to content

Commit 0e59c73

Browse files
dbulahovstbischof
authored andcommitted
set catalog description as name if catalog description is null
Signed-off-by: dbulahov <bulahovdenis@gmail.com>
1 parent 9c1fbba commit 0e59c73

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

xmla/bridge/src/main/java/org/eclipse/daanse/olap/xmla/bridge/execute/OlapExecuteService.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@
122122
import org.eclipse.daanse.xmla.api.mddataset.RowSetRow;
123123
import org.eclipse.daanse.xmla.api.mddataset.RowSetRowItem;
124124
import org.eclipse.daanse.xmla.model.record.discover.PropertiesR;
125+
import org.eclipse.daanse.xmla.model.record.discover.dbschema.catalogs.DbSchemaCatalogsResponseRowR;
125126
import org.eclipse.daanse.xmla.model.record.discover.dbschema.providertypes.DbSchemaProviderTypesRequestR;
126127
import org.eclipse.daanse.xmla.model.record.discover.dbschema.providertypes.DbSchemaProviderTypesRestrictionsR;
127128
import 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

Comments
 (0)