[ 
https://jira.nuxeo.com/browse/NXP-8001?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=107059#comment-107059
 ] 

Florent Guillaume commented on NXP-8001:
----------------------------------------

There are two methods to do queries in Nuxeo using NXQL, and they return 
different kinds of results.
- {{CoreSession.query()}} returns documents, so it must get unique document ids 
from the query. Whenever a query with a complex property like {{foo/*/bar}} is 
used, there are internal {{JOINs}} used which mean that you could get several 
rows for the same document id, so a {{DISTINCT}} has to be added internally to 
the SQL query.
- {{CoreSession.queryAndFetch()}} returns arbitrary columns and closely mirrors 
an actual SQL query, you can specify exactly which columns you want, and you 
can put or not an explicit {{DISTINCT}}. You're in control of the query.

But in both cases you must deal with the fact that in SQL, if you do a {{SELECT 
DISTINCT}} that has an {{ORDER BY}} then the {{ORDER BY}} columns must be in 
the {{SELECT DISTINCT}} list. That's imposed by SQL.

In NXQL a {{SELECT *}} is actually turned into a {{SELECT ecm:uuid}} and is 
mostly used for {{CoreSession.query()}}, conversely this method just needs the 
document id so {{SELECT *}} is always enough for it.

For {{CoreSession.queryAndFetch()}} you usually specify the columns you want 
explicitly, and when you just want the ids then {{SELECT ecm:uuid}} is usually 
more explicit than doing {{SELECT *}}, but the latter is legal.


> querying for complex types and ordering is failing
> --------------------------------------------------
>
>                 Key: NXP-8001
>                 URL: https://jira.nuxeo.com/browse/NXP-8001
>             Project: Nuxeo Enterprise Platform
>          Issue Type: Bug
>          Components: Core SQL Storage
>    Affects Versions: 5.5-SNAPSHOT
>            Reporter: Stéphane Lacoin
>            Assignee: Florent Guillaume
>            Priority: Major
>             Fix For: 5.5
>
>
> Cannot execute queries with constraints on complex types and with an ordering 
> clause. The generated SQL statements is not correct. The ordering field is 
> not included in the output fields, but it's required (on PostgreSQL at least) 
> when there's a {{DISTINCT}}.
> {code}
> SELECT * from Document where ecm:isProxy = 0 and content/name = 
> 'testfile.txt' ORDER BY dc:title 
> {code}
> {noformat}
> SELECT DISTINCT "HIERARCHY"."ID" AS "_C1"
>      FROM "HIERARCHY"
>      JOIN "HIERARCHY" "_H1" ON "HIERARCHY"."ID" = "_H1"."PARENTID"
> LEFT JOIN "CONTENT" "_F1" ON "_H1"."ID" = "_F1"."ID"
> LEFT JOIN "DUBLINCORE" "_F2" ON "HIERARCHY"."ID" = "_F2"."ID"
> WHERE "HIERARCHY"."PRIMARYTYPE" IN ('Document', '...')
> AND "_F1"."NAME" = 'testfile.txt'
> AND "_H1"."NAME" = 'content'
> ORDER BY "_F2"."TITLE"
> {noformat}
> {noformat}
> ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
> {noformat}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
_______________________________________________
ECM-tickets mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm-tickets

Reply via email to