[ https://issues.apache.org/jira/browse/OAK-28?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Dürig updated OAK-28: ----------------------------- Component/s: jcr Description: A query engine needs to be implemented. A query parser in oak-core should be able to handle xpath, sql2 and optionally other query languages. The jcr component must generate a valid query in one of those languages from JQOM queries and pass that statement along with name space mappings to the oak-core. We need to: * Define the oak-core API for handling queries. How are do we handle name space mappings, limit and size * Implement a query builder in the jcr component which takes care of translating JQOM queries * Implement a query parser in oak-core and decide on a versatile AST representation which works with all query languages and which is extensible to future query languages. * Implement the actual query execution engine which interprets the query AST was: A query engine needs to be implemented. This includes a query parser in oak-core (where we don't want to use the JCR API), and a query parser in oak-jcr (where the parsed query tree needs to implement the JCR API). To avoid writing two independent parsers, I suggest to change the parser to emit a non-JCR query tree (so the parser can be used in oak-core). There needs to be a converter from the non-JCR query tree to a JCR query tree, so the same parser can be used in oak-jcr. This will still require two independent query tree implementations (about 37 duplicated classes: 37 classes for oak-core and 37 classes in oak-jcr). Plus it requires a tree converter. If somebody has a better idea please tell me :-) Prototype implementation of the query tree converter. Please note the class names are only to for illustration, but I don't know yet a good naming convention. Ideas are welcome! > Query implementation > -------------------- > > Key: OAK-28 > URL: https://issues.apache.org/jira/browse/OAK-28 > Project: Jackrabbit Oak > Issue Type: New Feature > Components: core, jcr > Reporter: Thomas Mueller > Assignee: Thomas Mueller > Attachments: OakToJcrQueryTreeConverter.java > > > A query engine needs to be implemented. > A query parser in oak-core should be able to handle xpath, sql2 and > optionally other query languages. The jcr component must generate a valid > query in one of those languages from JQOM queries and pass that statement > along with name space mappings to the oak-core. > We need to: > * Define the oak-core API for handling queries. How are do we handle name > space mappings, limit and size > * Implement a query builder in the jcr component which takes care of > translating JQOM queries > * Implement a query parser in oak-core and decide on a versatile AST > representation which works with all query languages and which is extensible > to future query languages. > * Implement the actual query execution engine which interprets the query AST -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira