Skip to content

org.eclipse.daanse.dmv

DMV (Dynamic Management View) query parser, model and predicate evaluation — Eclipse Daanse.

DMV queries are how XMLA/Analysis-Services clients ask schema rowsets with SQL-like text:

SELECT [DISTINCT] [TOP n] ( * | column [, column]* )
FROM ( $SYSTEM.<rowset>
     | SYSTEMRESTRICTSCHEMA ( $SYSTEM.<rowset> [, restriction = literal]* ) )
[WHERE predicate]
[ORDER BY column [ASC|DESC] [, column [ASC|DESC]]*]

JOIN, GROUP BY, LIKE, CAST and CONVERT are not part of the language (Microsoft's DMV documentation).

Modules

Module Content
model.api The statement model (DmvStatement: columns or star, rowset, restrictions, where, order by, distinct, top), the sealed predicate hierarchy, and DmvPredicates — the one shared WHERE evaluation
model.record Immutable record implementations
parser.api DmvParserProvider / DmvParser / DmvParserException
parser.ccc The CongoCC-generated parser, registered as an OSGi DS service
parser.tck The conformance suite every parser implementation has to pass

Example

DmvStatement statement = dmvParserProvider
        .newParser("SELECT [CUBE_NAME] FROM $SYSTEM.MDSCHEMA_CUBES WHERE [CUBE_SOURCE] = 1")
        .parseDmvStatement();

statement.table();      // "MDSCHEMA_CUBES"
statement.columns();    // ["CUBE_NAME"] - empty list means SELECT *
statement.where();      // Optional<DmvPredicate>
statement.orderBy();    // List<OrderByItem>

boolean keep = DmvPredicates.matches(statement.where().orElse(null), row::get);

Build

Requires JDK 25+ and Maven 3.9+.

mvn clean verify

The parser is generated by CongoCC into parser.ccc/src/gen/java; run mvn generate-sources once before importing into an IDE.

About

Repository for the dmv language

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages