Can someone explain this semi-join behaviour?

I am trying to filter out some IDs using semi-join in druid sql [… WHERE id IN (<nested_query>) …].

Below are four queries, out of which two of them work, two of them throw error

**SELECT id, audio_title, audio_duration FROM druid.ds1 WHERE id IN (SELECT content_id FROM druid.ds2 WHERE content_id_type=‘audio’) – Doesn’t work **
__SELECT * FROM druid.ds1 WHERE id IN (SELECT content_id FROM druid.ds2 WHERE content_id_type=‘audio’) – Works __

**SELECT id FROM druid.ds1 WHERE id IN (SELECT content_id FROM druid.ds2 WHERE content_id_type=‘audio’) – Works **
SELECT audio_title FROM druid.ds1 WHERE id IN (SELECT content_id FROM druid.ds2 WHERE content_id_type=‘audio’) – Doesn’t work

The one’s that don’t work, throw the following error

: Remote driver error: CannotPlanException: Node [rel#65725:Subset#8.DRUID.] could not be implemented; planner state:

SQLState: 00000
ErrorCode: -1

This is on druid 0.13.0-incubating and all the fields (id, audio_title, audio_duration) are dimensions (string datatype, no NULLs).

It seems the thing in common between the ones that work is that they include the join key “id” in the SELECT list (either explicitly or through the star *).

If you notice the same behavior on the latest Druid could you please raise an issue here: https://github.com/apache/incubator-druid/issues/new/choose