[hibernate-dev] SQM - alias registry

Sanne Grinovero sanne at hibernate.org
Wed Oct 7 10:19:42 EDT 2015


Hi Steve,
yes that seems very reasonable.

+1 for checking the parent "scope" too, I think that would feel
natural as it matches the scope rules of variables in Java.

On 7 October 2015 at 15:00, Steve Ebersole <steve at hibernate.org> wrote:
> At the moment the alias registry is global for the whole query.  I propose
> that we should scope this by "query spec" (combined with parent).  The
> reason being that reusing the same alias in unrelated subqueries is
> perfectly fine.
>
> select ...
> from Customer c
> where c.id in (
>     select o.customer.id
>     from Order o
>     ...
> )
> or c.id in (
>     select c1.id
>     from Outstanding o
>     ...
> )
>
> Here the aliases `o` don't ever infringe on each other.  So imo we should
> allow that.
>
> The piece about checking the parent is for a case like:
> select ...
> from Customer c
> where c.id in (
>     select c.id
>     from Order o
>         join o.customer c
>     ...
> )
>
> Here the aliases `c` do infringe.  In the subquery, we don't really know
> which reference the `c` alias should resolve to.  We *could* here assuming
> that the subquery is uncorrelated.  Bu without this rule we really would
> not know that the subquery is correlated.  Hopefully that makes sense, what
> I am getting at.
>
> WDYT?
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev


More information about the hibernate-dev mailing list