This problem only occurs in large IN-lists, because small IN-lists - those smaller than SqlToRelConverter.Config.InSubQueryThreshold - are always converted to OR, and converting to OR always gives correct results. For correct results, IN-lists that reference column values must be converted to OR, no matter how large they are.
According CALCITE-1155[Support columns for IN list]. We support
by expands to
In Calcite. Only the list size smaller than the value of the sub-query threshold can convert. We should ignore the the value of the sub-query threshold to convert this.
This issue can reproduce by add a unit test in SqlToRelConverterTest: