@@ -264,10 +264,8 @@ public StatementResponse statement(StatementRequest statementRequest, RequestMet
264264 } else if (queryComponent instanceof CalculatedFormula calculatedFormula ) {
265265 return executeCalculatedFormula (connection , calculatedFormula );
266266 } else if (queryComponent instanceof DmvQuery dmvQuery ) {
267- return executeDmvQuery (connection , dmvQuery , metaData , statementRequest ); // toto:
268- // remove
269- // userRolePrincipal,
270- // metaData,
267+ return executeDmvQuery (connection , dmvQuery , metaData , statementRequest );
268+ // TODO: remove userRolePrincipal, metaData,
271269 } else if (queryComponent instanceof Refresh refresh ) {
272270 return executeRefresh (connection , refresh );
273271 } else if (queryComponent instanceof Update update ) {
@@ -287,17 +285,42 @@ public StatementResponse statement(StatementRequest statementRequest, RequestMet
287285 && !contextsListSupplyer .getContexts ().isEmpty ()) {
288286 Connection connection = contextsListSupplyer .getContexts ().get (0 ).getConnection (new ConnectionProps (RoleUtils .getRoles (contextsListSupplyer , r -> userRolePrincipal .hasRole (r ))));
289287 QueryComponent queryComponent = connection .parseStatement (statement );
290- if (queryComponent instanceof DmvQuery dmvQuery
291- && dmvQuery .getTableName ().equals (OperationNames .DBSCHEMA_CATALOGS )) {
292- List <DbSchemaCatalogsResponseRow > dbSchemaCatalogsResponseRowSetList = new ArrayList <DbSchemaCatalogsResponseRow >();
293- for (Context c : contextsListSupplyer .getContexts ()) {
294- dbSchemaCatalogsResponseRowSetList .add (dbSchemaService .dbSchemaCatalogsRow (c ));
288+ if (queryComponent instanceof DmvQuery dmvQuery ) {
289+
290+ System .out .println ("!!!! use sesscioncach to et the open connection is session exists" );
291+ String tableName = dmvQuery .getTableName ();
292+ if (tableName .equalsIgnoreCase (OperationNames .DBSCHEMA_CATALOGS )) {
293+ List <DbSchemaCatalogsResponseRow > dbSchemaCatalogsResponseRowSetList = new ArrayList <DbSchemaCatalogsResponseRow >();
294+ for (Context c : contextsListSupplyer .getContexts ()) {
295+ dbSchemaCatalogsResponseRowSetList .add (dbSchemaService .dbSchemaCatalogsRow (c ));
296+ }
297+ RowSetR rowSet = DiscoveryResponseConvertor
298+ .dbSchemaCatalogsResponseRowToRowSet (dbSchemaCatalogsResponseRowSetList );
299+ return new StatementResponseR (null , filterRowSetByColumns (rowSet , dmvQuery .getColumns (),
300+ dmvQuery .getWhereExpression (), statementRequest .parameters ()));
301+ } else if (tableName .equalsIgnoreCase (OperationNames .MDSCHEMA_CUBES )) {
302+ // special case for MDSCHEMA_CUBES without catalog : return from all catalogs
303+ List <RowSetRow > rsrs = new ArrayList <>();
304+ for (Context <?> c : contextsListSupplyer .getContexts ()) {
305+ Connection conn = c .getConnection (new ConnectionProps (
306+ RoleUtils .getRoles (contextsListSupplyer , r -> userRolePrincipal .hasRole (r ))));
307+ Catalog catalog = conn .getCatalog ();
308+ System .out .println ("!!!!!!!!!!!!!!!!USE Catalogreader to enforce the roles" );
309+ MdSchemaCubesRequest mdSchemaCubesRequest = new MdSchemaCubesRequestR (
310+ (PropertiesR ) statementRequest .properties (),
311+ new MdSchemaCubesRestrictionsR (null , empty (), empty (), empty (), empty (), empty ()));
312+ RowSetR rowSet = DiscoveryResponseConvertor .mdSchemaCubesResponseRowToRowSet (
313+ mdSchemaService .mdSchemaCubes (mdSchemaCubesRequest , metaData ));
314+ rsrs .addAll (rowSet .rowSetRows ());
315+ }
316+ RowSetR combinedRowSet = new RowSetR (rsrs );
317+ return new StatementResponseR (null , filterRowSetByColumns (combinedRowSet , dmvQuery .getColumns (),
318+ dmvQuery .getWhereExpression (), statementRequest .parameters ()));
319+
295320 }
296- RowSetR rowSet = DiscoveryResponseConvertor
297- .dbSchemaCatalogsResponseRowToRowSet (dbSchemaCatalogsResponseRowSetList );
298- return new StatementResponseR (null , filterRowSetByColumns (rowSet , dmvQuery .getColumns (),
299- dmvQuery .getWhereExpression (), statementRequest .parameters ()));
321+
300322 }
323+ // here
301324 }
302325 }
303326
0 commit comments