Do Redshift tables with SUPER data type support joins with recursive CTEs?

0

This sql in Redshift

WITH RECURSIVE

item_array AS (
    SELECT JSON_PARSE('[7, 8, 9]') AS items
),

idx_array(idx) AS (
SELECT 1 AS idx
UNION ALL
SELECT idx + 1 AS idx
FROM idx_array
WHERE idx < 2
)

SELECT
    items[0]
FROM item_array
CROSS JOIN idx_array

produces the error

[XX000] ERROR: Query unsupported due to an internal error. Detail: Unsupported query. Where: RTE kind: 11.

But if CROSS JOIN idx_array line removed, it works.

Can we not join tables with SUPER types in Recursive CTEs?

vida
asked 2 years ago1359 views
1 Answer
0

Hi, The problem seems to be in the select statement and not cross join. If I use the below statement instead, cross join works as expected.

WITH RECURSIVE

item_array AS ( SELECT JSON_PARSE('[7, 8, 9]') AS items ),

idx_array(idx) AS ( SELECT 1 AS idx UNION ALL SELECT idx + 1 AS idx FROM idx_array WHERE idx < 2 )

SELECT * FROM item_array CROSS JOIN idx_array;

It gives me

items | idx

---------+-----

[7,8,9] | 1

[7,8,9] | 2

(2 rows)

AWS
SUPPORT ENGINEER
answered 2 years ago
  • Firstly, thank you for looking into this! It works with SELECT * or SELECT items. But when you index items as in SELECT items[0], it fails. So, does that mean items is no longer SUPER?; which goes back to the original question whether SUPER types are not supported with recursive CTEs. Thank you!

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions