[ 
https://issues.apache.org/jira/browse/OPTIQ-439?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14172888#comment-14172888
 ] 

Julian Hyde commented on OPTIQ-439:
-----------------------------------

Hah! This query reproduces it, by cunningly using exactly the same alias as the 
uniquifier would be inclined to generate:

{code:sql}
select "$f2", max(x), max(x + 1)
from (values (1, 2)) as t("$f2", x)
group by "$f2"
{code}

> SqlValidatorUtil.uniquify() may not terminate under some conditions
> -------------------------------------------------------------------
>
>                 Key: OPTIQ-439
>                 URL: https://issues.apache.org/jira/browse/OPTIQ-439
>             Project: Optiq
>          Issue Type: Bug
>    Affects Versions: 0.9.0-incubating
>            Reporter: Aman Sinha
>            Assignee: Julian Hyde
>
> The uniquify(String, Set<String>, Suggester) method in SqlValidatorUtil tries 
> to create a unique name for the supplied name.  It does it inside the 
> following loop which does not have an upper bound check.  If the suggester 
> returns a name that already exists in the nameList, then the loop will never 
> terminate.  I encountered this issue while doing some testing with a 3 way 
> join query in Drill against text data. 
> {code:sql}
>     for (int j = 0;; j++) {
>       name = suggester.apply(originalName, j, nameList.size());
>       if (nameList.add(name)) {
>         return name;
>       }
>     }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to