Github user cloud-fan commented on the issue:

    https://github.com/apache/spark/pull/21403
  
    I'd like to avoid changing the signature of an existing expression if 
possible. It's not public so we can change it, but I believe some advanced 
users use these internal classes and we should keep these classes unchanged as 
possible as we can.
    
    For this particular case, what we want is to special handle the case `(a, 
b) in (SELECT c,d FROM ...)`. Actually we have a dedicated parser rule for it
    ```
    | NOT? kind=IN '(' expression (',' expression)* ')' // normal IN expression
    | NOT? kind=IN '(' query ')'  // IN list query
    ```
    
    I think it makes more sense to create a dedicated expression for IN list 
query, but we should not make it temporary. We can create a base class for the 
normal IN expression and IN list query, but these 2 should be 2 different 
expressions. Then we don't need the `ResolveInValues` rule which is hacky.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to