chemistry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Speakman, Randy" <randy.speak...@fmr.com>
Subject RE: OpenCMIS Query Parsing Failure with Repeating Attribute and Not Equal Operator
Date Mon, 18 Apr 2011 12:52:18 GMT
Hi Florent, thank you for responding. I think the problem was that I had been basing the query
on an older document from EMC https://community.emc.com/docs/DOC-1582, when I should have
been referring to the 1.0 specs from OASIS directly.

Inside of this document it has the following description which differs from the OASIS spec.

<quantified comparison predicate> ::= <literal> <comp op> ANY <multi-valued-column
reference>

<comp op> ::= "=" | "<>" | "<" | ">" | "<=" | ">="

So this led me to believe that the query I had written was a valid query. This query was just
part of a Junit test suite that I had written to test my custom repository connector. It was
one of many queries that I wrote to test my code. The query always failed and I was never
able to determine why.

Many thanks,

Randy

-----Original Message-----
From: Florent Guillaume [mailto:fg@nuxeo.com] 
Sent: Sunday, April 17, 2011 11:33 AM
To: dev@chemistry.apache.org
Cc: Speakman, Randy
Subject: Re: OpenCMIS Query Parsing Failure with Repeating Attribute and Not Equal Operator

The BNF grammar of the CMIS 1.0 specification (§ 2.1.10.2.1 at
http://docs.oasis-open.org/cmis/CMIS/v1.0/cmis-spec-v1.0.html) has:

<quantified comparison predicate> ::= <literal> "=" ANY
<multi-valued-column reference>

So only the "=" operator is allowed by the strict spec, not "<>".

Your query would be a straightforward extension that OpenCMIS could
very reasonably allow in non-strict mode (if the server chooses to
support it), but it's not in it at the moment.

Florent

PS: are you sure that you don't want to write ... WHERE NOT('keyword1'
= ANY keywords), which is legal? This is the semantics people usually
want.


On Fri, Apr 15, 2011 at 8:29 PM, Speakman, Randy <randy.speakman@fmr.com> wrote:
> Hi,
>
> I am having an issue with a specific type of CMISQL query that fails to be parsed in
OpenCMIS 0.3.0 by the CmisQlStrictParser class. I have checked the CMIS 1.0 specs and believe
the query I have written is valid, however I would like someone else to look at the query
and double check it. The query criteria filters on a repeating attribute that is not equal
to a specific value. In the query below, the keywords attribute is a repeating string. The
exception is thrown when QueryUtil.getWalker(...) is called and hits line 57, where it checks
the parser for errors. The error message in the parser says "line 1:114 mismatched input '&lt;&gt;'
expecting EQ".
>
> /*
> Lines 56 to 59 from QueryWalker class
> */
>        query_return parsedStatement = parser.query();
>        if (parser.hasErrors()) {
>            throw new CmisInvalidArgumentException(parser.getErrorMessages());
>        }
>
> /*
> My query
> */
> select cmis:objectId, cmis:name, cmis:contentStreamLength, keywords from my_doc_type
where 'keyword1' <> any keywords
>
>
>
> Thanks,
>
> Randy
>



-- 
Florent Guillaume, Director of R&D, Nuxeo
Open Source, Java EE based, Enterprise Content Management (ECM)
http://www.nuxeo.com   http://www.nuxeo.org   +33 1 40 33 79 87

Mime
View raw message