Case: WITH-RECURSIVE Contains Conflict Distribution in None-RECURSIVE (Xxx) RECURSIVE (Xxx)
Possible Cause
The non-recursive part (before UNION ALL) uses a replicate plan, while the recursive part (after UNION ALL) uses a hash plan. These plans don't match.
Solution: Dump the non-recursive statements to a temporary table to ensure that the distribution of the temporary table is different from that of the plan.
Case 1: Using the Replicate Plan for Non-RECURSIVE Statements
Original statement
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
WITH RECURSIVE CTE AS ( SELECT AOH.ORG_CODE,1 AS LEVEL, 1 FLAG, LAST_UPDATE_DATE FROM SDIHR.HW_HR_ACCOUNT_ORG_HY_V_1100 AOH WHERE AOH.ORG_CODE IN (SELECT V.ORG_CODE FROM SDIHR.HW_HR_ACCOUNT_ORG_HY_V_1100 V WHERE V.ORG_CODE IS NOT NULL AND AOH.ORG_CODE = V.ORG_CODE ) UNION ALL SELECT AOH.ORG_CODE,T.LEVEL + 1 AS LEVEL, 1 FLAG, AOH.LAST_UPDATE_DATE FROM SDIHR.HW_HR_ACCOUNT_ORG_HY_V_1100 AOH INNER JOIN CTE T ON T.ORG_CODE = AOH.PARENT_ORG_CODE ) SELECT ORG_CODE, MAX(LEVEL) -1 AS AOH_LEVEL, 1 FLAG, LAST_UPDATE_DATE AS LAST_UPDATE_DATE1 FROM CTE GROUP BY ORG_CODE, LAST_UPDATE_DATE |
SQL self-diagnosis information

Rewritten statement
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
CREATE TEMP TABLE t WITH(orientation=column) DISTRIBUTE BY ROUNDROBIN AS SELECT AOH.ORG_CODE,1 AS LEVEL, 1 FLAG, LAST_UPDATE_DATE FROM SDIHR.HW_HR_ACCOUNT_ORG_HY_V_1100 AOH WHERE AOH.ORG_CODE IN (SELECT V.ORG_CODE FROM SDIHR.HW_HR_ACCOUNT_ORG_HY_V_1100 V WHERE V.ORG_CODE IS NOT NULL AND AOH.ORG_CODE = V.ORG_CODE ); WITH RECURSIVE CTE AS ( SELECT * FROM t UNION ALL SELECT AOH.ORG_CODE,T.LEVEL + 1 AS LEVEL, 1 FLAG, AOH.LAST_UPDATE_DATE FROM SDIHR.HW_HR_ACCOUNT_ORG_HY_V_1100 AOH INNER JOIN CTE T ON T.ORG_CODE = AOH.PARENT_ORG_CODE ) SELECT ORG_CODE, MAX(LEVEL) -1 AS AOH_LEVEL, 1 FLAG, LAST_UPDATE_DATE AS LAST_UPDATE_DATE1 FROM CTE GROUP BY ORG_CODE, LAST_UPDATE_DATE |
Modification comparison

Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot