[
https://issues.apache.org/jira/browse/PHOENIX-945?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14162897#comment-14162897
]
James Taylor commented on PHOENIX-945:
--------------------------------------
Wow, +1. You implemented correlated subquery support by adding about 50 lines
of code?! That's pretty awesome! What kind of limitations are there outside of
only allowing the correlation in a comparison expression?
Minor nit: might be worth having a copy constructor to help with readability:
{code}
+ subquery = NODE_FACTORY.select(subquery.getFrom(), subquery.getHint(),
subquery.isDistinct(),
+ selectNodes, where, groupbyNodes, subquery.getHaving(),
subquery.getOrderBy(),
+ subquery.getLimit(), subquery.getBindCount(), true,
subquery.hasSequence());
+
{code}
> Support correlated subqueries in comparison without ANY/SOME/ALL
> ----------------------------------------------------------------
>
> Key: PHOENIX-945
> URL: https://issues.apache.org/jira/browse/PHOENIX-945
> Project: Phoenix
> Issue Type: Sub-task
> Affects Versions: 3.0.0, 4.0.0, 5.0.0
> Reporter: Maryann Xue
> Assignee: Maryann Xue
> Fix For: 3.0.0, 4.0.0, 5.0.0
>
> Attachments: 945.patch
>
> Original Estimate: 336h
> Remaining Estimate: 336h
>
> Example:
> SELECT employee_number, name
> FROM employees AS Bob
> WHERE salary > (
> SELECT AVG(salary)
> FROM employees
> WHERE department = Bob.department);
> Basically we can optimize these queries into join queries, like:
> SELECT employees.employee_number, employees.name
> FROM employees INNER JOIN
> (SELECT department, AVG(salary) AS department_average
> FROM employees
> GROUP BY department) AS temp ON employees.department = temp.department
> WHERE employees.salary > temp.department_average;
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)