[ https://issues.apache.org/jira/browse/RYA-260?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15978997#comment-15978997 ]
ASF GitHub Bot commented on RYA-260: ------------------------------------ Github user kchilton2 commented on a diff in the pull request: https://github.com/apache/incubator-rya/pull/156#discussion_r112725587 --- Diff: extras/rya.pcj.fluo/pcj.fluo.app/src/main/java/org/apache/rya/indexing/pcj/fluo/app/QueryResultUpdater.java --- @@ -53,32 +54,46 @@ * @param tx - The transaction all Fluo queries will use. (not null) * @param childBindingSet - A binding set that the query's child node has emmitted. (not null) * @param queryMetadata - The metadata of the Query whose results will be updated. (not null) + * @throws Exception A problem caused the update to fail. */ public void updateQueryResults( final TransactionBase tx, final VisibilityBindingSet childBindingSet, - final QueryMetadata queryMetadata) { + final QueryMetadata queryMetadata) throws Exception { checkNotNull(tx); checkNotNull(childBindingSet); checkNotNull(queryMetadata); + log.trace( + "Transaction ID: " + tx.getStartTimestamp() + "\n" + + "Join Node ID: " + queryMetadata.getNodeId() + "\n" + + "Child Node ID: " + queryMetadata.getChildNodeId() + "\n" + + "Child Binding Set:\n" + childBindingSet + "\n"); + // Create the query's Binding Set from the child node's binding set. final VariableOrder queryVarOrder = queryMetadata.getVariableOrder(); + final BindingSet queryBindingSet = BindingSetUtil.keepBindings(queryVarOrder, childBindingSet); - final MapBindingSet queryBindingSet = new MapBindingSet(); - for(final String bindingName : queryVarOrder) { - if(childBindingSet.hasBinding(bindingName)) { - final Binding binding = childBindingSet.getBinding(bindingName); - queryBindingSet.addBinding(binding); - } + // Create the Row Key for the result. If the child node groups results, then the key must only contain the Group By variables. + final Bytes resultRow; + + final String childNodeId = queryMetadata.getChildNodeId(); + final boolean isGrouped = childNodeId.startsWith( IncrementalUpdateConstants.AGGREGATION_PREFIX ); + if(isGrouped) { --- End diff -- I'm actually not sure. Let me check that. > Add Aggregation support for Fluo/PCJ app > ---------------------------------------- > > Key: RYA-260 > URL: https://issues.apache.org/jira/browse/RYA-260 > Project: Rya > Issue Type: New Feature > Reporter: Andrew Smith > Assignee: Kevin Chilton > > A user must be able to submit a PCJ query that contains the following > aggregation functions from SPARQL: > * Sum > * Count > * Average > * Min > * Max > This task does not include any aggregations that appear within a GroupBy > clause. We only need to support queries that have the aggregation within the > SELECT section. > For example, the following query should be processed: > {code} > SELECT (avg(?price) as ?averagePrice) > { > urn:BookA urn:price ?price. > } > {code} > And the following query should not be processed because it requires a group > by: > {code} > SELECT ?title (avg(?price) as ?averagePrice) > { > ?title urn:price ?price. > } > GROUP BY ?title > {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)