> MV datamap throw exception because its rewrite algorithm when multiply subquery
> -------------------------------------------------------------------------------
>
> Key: CARBONDATA-3295
> URL:
https://issues.apache.org/jira/browse/CARBONDATA-3295> Project: CarbonData
> Issue Type: Bug
> Reporter: Chenjian Qiu
> Priority: Blocker
> Fix For: 1.6.0
>
> Time Spent: 4.5h
> Remaining Estimate: 0h
>
> error:
> java.lang.UnsupportedOperationException was thrown.
> java.lang.UnsupportedOperationException
> at org.apache.carbondata.mv.plans.util.SQLBuildDSL$Fragment.productArity(SQLBuildDSL.scala:36)
> at scala.runtime.ScalaRunTime$$anon$1.<init>(ScalaRunTime.scala:174)
> at scala.runtime.ScalaRunTime$.typedProductIterator(ScalaRunTime.scala:172)
>
> mv sql:
> sql(s"""create datamap data_table_mv using 'mv' as
> | SELECT STARTTIME,LAYER4ID,
> | COALESCE (SUM(seq),0) AS seq_c,
> | COALESCE (SUM(succ),0) AS succ_c
> | FROM data_table
> | GROUP BY STARTTIME,LAYER4ID""".stripMargin)
>
> Query sql:
> sql(s"""SELECT MT.`3600` AS `3600`,
> | MT.`2250410101` AS `2250410101`,
> | (CASE WHEN (SUM(COALESCE(seq_c, 0))) = 0 THEN NULL
> | ELSE
> | (CASE WHEN (CAST((SUM(COALESCE(seq_c, 0))) AS int)) = 0 THEN 0
> | ELSE ((CAST((SUM(COALESCE(succ_c, 0))) AS double))
> | / (CAST((SUM(COALESCE(seq_c, 0))) AS double)))
> | END) * 100
> | END) AS rate
> | FROM (
> | SELECT sum_result.*, H_REGION.`2250410101` FROM
> | (SELECT cast(floor((starttime + 28800) / 3600) * 3600 - 28800 as int) AS `3600`,
> | LAYER4ID,
> | COALESCE(SUM(seq), 0) AS seq_c,
> | COALESCE(SUM(succ), 0) AS succ_c
> | FROM data_table
> | WHERE STARTTIME >= 1549866600 AND STARTTIME < 1549899900
> | GROUP BY cast(floor((STARTTIME + 28800) / 3600) * 3600 - 28800 as int),LAYER4ID
> | )sum_result
> | LEFT JOIN
> | (SELECT l4id AS `225040101`,
> | l4name AS `2250410101`,
> | l4name AS NAME_2250410101
> | FROM region
> | GROUP BY l4id, l4name) H_REGION
> | ON sum_result.LAYER4ID = H_REGION.`225040101`
> | WHERE H_REGION.NAME_2250410101 IS NOT NULL
> | ) MT
> | GROUP BY MT.`3600`, MT.`2250410101`
> | ORDER BY `3600` ASC LIMIT 5000""".stripMargin)