Github user xubo245 commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/1856#discussion_r174119683
--- Diff:
integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/timeseries/TestTimeSeriesCreateTable.scala
---
@@ -82,149 +92,209 @@ class TestTimeSeriesCreateTable extends QueryTest
with BeforeAndAfterAll {
""".stripMargin)
}
+ override def afterEach(): Unit = {
+ dropDataMaps("mainTable", "agg1_second", "agg1_minute",
+ "agg1_hour", "agg1_day", "agg1_month", "agg1_year")
+ }
+
test("test timeseries create table 1") {
checkExistence(sql("DESCRIBE FORMATTED mainTable_agg0_second"), true,
"maintable_agg0_second")
- sql("drop datamap agg0_second on table mainTable")
+ sql("DROP DATAMAP agg0_second ON TABLE mainTable")
}
test("test timeseries create table 2") {
checkExistence(sql("DESCRIBE FORMATTED mainTable_agg0_hour"), true,
"maintable_agg0_hour")
- sql("drop datamap agg0_hour on table mainTable")
+ sql("DROP DATAMAP agg0_hour ON TABLE mainTable")
}
+
test("test timeseries create table 3") {
checkExistence(sql("DESCRIBE FORMATTED maintable_agg0_day"), true,
"maintable_agg0_day")
- sql("drop datamap agg0_day on table mainTable")
+ sql("DROP DATAMAP agg0_day ON TABLE mainTable")
}
+
test("test timeseries create table 4") {
checkExistence(sql("DESCRIBE FORMATTED mainTable_agg0_month"), true,
"maintable_agg0_month")
- sql("drop datamap agg0_month on table mainTable")
+ sql("DROP DATAMAP agg0_month ON TABLE mainTable")
}
+
test("test timeseries create table 5") {
checkExistence(sql("DESCRIBE FORMATTED mainTable_agg0_year"), true,
"maintable_agg0_year")
- sql("drop datamap agg0_year on table mainTable")
+ sql("DROP DATAMAP agg0_year ON TABLE mainTable")
}
- test("test timeseries create table 6") {
- intercept[Exception] {
+ test("test timeseries create table 6: TIMESERIES should define time
granularity") {
+ sql("DROP DATAMAP IF EXISTS agg0_second ON TABLE mainTable")
+ val e = intercept[MalformedCarbonCommandException] {
sql(
- s"""
- | CREATE DATAMAP agg0_second ON TABLE mainTable
- | USING '$timeSeries'
- | DMPROPERTIES (
- | 'EVENT_TIME'='dataTime',
- | 'SEC_GRANULARITY'='1')
- | AS SELECT dataTime, SUM(age) FROM mainTable
- | GROUP BY dataTime
+ s"""CREATE DATAMAP agg0_second ON TABLE mainTable USING
'$timeSeries'
+ |DMPROPERTIES (
+ | 'event_time'='dataTime',
+ | 'SEC_GRANULARITY'='1')
+ |AS SELECT dataTime, SUM(age) FROM mainTable
+ |GROUP BY dataTime
""".stripMargin)
}
+ assert(e.getMessage.contains("TIMESERIES should define time
granularity"))
}
- test("test timeseries create table 7") {
- intercept[Exception] {
+ test("test timeseries create table 7: Granularity only support 1") {
+ sql("DROP DATAMAP IF EXISTS agg0_second ON TABLE mainTable")
+ val e = intercept[MalformedDataMapCommandException] {
sql(
s"""
| CREATE DATAMAP agg0_second ON TABLE mainTable
| USING '$timeSeries'
| DMPROPERTIES (
| 'EVENT_TIME'='dataTime',
- | 'SECOND_GRANULARITY'='2')
+ | 'DAY_GRANULARITY'='1.5')
| AS SELECT dataTime, SUM(age) FROM mainTable
| GROUP BY dataTime
""".stripMargin)
}
+ assert(e.getMessage.equals("Granularity only support 1"))
}
- test("test timeseries create table 8") {
- intercept[Exception] {
+ test("test timeseries create table 8: Granularity only support 1") {
+ dropDataMaps("mainTable", "agg1_hour")
+ val e = intercept[MalformedCarbonCommandException] {
sql(
- s"""
- | CREATE DATAMAP agg0_second ON TABLE mainTable
- | USING '$timeSeries'
- | DMPROPERTIES (
- | 'EVENT_TIME'='dataTime',
- | 'SECOND_GRANULARITY'='1')
- | AS SELECT dataTime, SUM(age) FROM mainTable
- | GROUP BY dataTime
- """.stripMargin)
+ s"""CREATE DATAMAP agg1_hour ON TABLE mainTable USING '$timeSeries'
+ |DMPROPERTIES (
+ | 'event_time'='dataTime',
+ | 'HOUR_GRANULARITY'='hour=-2')
+ |AS SELECT dataTime, SUM(age) FROM mainTable
+ |GROUP BY dataTime
+ """.stripMargin)
+ }
+ assert(e.getMessage.contains("Granularity only support "))
+ checkExistence(sql("SHOW DATAMAP ON TABLE mainTable"), false,
"maintable_agg1_hour")
+ }
+
+ test("test timeseries create table 9: SECOND_GRANULARITY is null") {
+ sql("DROP DATAMAP IF EXISTS agg1 ON TABLE mainTable")
+ val e = intercept[MalformedCarbonCommandException] {
sql(
- s"""
- | CREATE DATAMAP agg0_second ON TABLE mainTable
- | USING '$timeSeries'
- | DMPROPERTIES (
- | 'EVENT_TIME'='dataTime',
- | 'SECOND_GRANULARITY'='1')
- | AS SELECT dataTime, SUM(age) FROM mainTable
- | GROUP BY dataTime
- """.stripMargin)
+ s"""CREATE DATAMAP agg0_hour ON TABLE mainTable
+ |USING '$timeSeries'
+ |DMPROPERTIES (
+ | 'event_time'='dataTime',
+ | 'HOUR_GRANULARITY'='')
+ |AS SELECT dataTime, SUM(age) FROM mainTable
+ |GROUP BY dataTime
+ """.stripMargin)
+ }
+ assert(e.getMessage.contains("Granularity only support 1"))
+ }
+
+ test("test timeseries create table 10: Table already exists in
database") {
+ val e = intercept[MalformedDataMapCommandException] {
+ sql(
+ s"""CREATE DATAMAP agg1_hour ON TABLE mainTable USING '$timeSeries'
+ |DMPROPERTIES (
+ | 'event_time'='dataTime',
+ | 'HOUR_GRANULARITY'='1')
+ |AS SELECT dataTime, SUM(age) FROM mainTable
+ |GROUP BY dataTime
+ """.stripMargin)
+ sql(
+ s"""CREATE DATAMAP agg1_hour ON TABLE mainTable USING '$timeSeries'
+ |DMPROPERTIES (
+ | 'event_time'='dataTime',
+ | 'HOUR_GRANULARITY'='1')
+ |AS SELECT dataTime, SUM(age) FROM mainTable
+ |GROUP BY dataTime
+ """.stripMargin)
}
+ assert(e.getMessage.contains(
+ "DataMap name 'agg1_hour' already exist"))
}
- test("test timeseries create table 9") {
- intercept[Exception] {
+ test("test timeseries create table 11: don't support create timeseries
table on non timestamp") {
+ sql("DROP DATAMAP IF EXISTS agg0_hour ON TABLE mainTable")
+ val e = intercept[MalformedCarbonCommandException] {
sql(
s"""
- | CREATE DATAMAP agg0_second ON TABLE mainTable
+ | CREATE DATAMAP agg0_hour ON TABLE mainTable
| USING '$timeSeries'
| DMPROPERTIES (
| 'EVENT_TIME'='name',
- | 'SECOND_GRANULARITY'='1')
+ | 'HOUR_GRANULARITY'='1')
| AS SELECT dataTime, SUM(age) FROM mainTable
| GROUP BY dataTime
""".stripMargin)
}
+ assert(e.getMessage.equals("Timeseries event time is only supported on
Timestamp column"))
}
- test("test timeseries create table 10") {
- intercept[Exception] {
+ test("test timeseries create table 12: Time series column dataTime does
not exists in select") {
+ sql("DROP DATAMAP IF EXISTS agg0_hour ON TABLE mainTable")
+ val e = intercept[MalformedCarbonCommandException] {
sql(
s"""
- | CREATE DATAMAP agg0_second ON TABLE mainTable
+ | CREATE DATAMAP agg0_hour ON TABLE mainTable
| USING '$timeSeries'
| DMPROPERTIES (
- | 'EVENT_TIME'='name',
- | 'SECOND_GRANULARITY'='1')
- | AS SELECT dataTime, SUM(age) FROM mainTable
- | GROUP BY dataTime
- """.stripMargin)
+ | 'EVENT_TIME'='dataTime',
+ | 'HOUR_GRANULARITY'='1')
+ | AS SELECT name, SUM(age) FROM mainTable
+ | GROUP BY name
+ """.stripMargin)
+ }
+ assert(e.getMessage.equals("Time series column dataTime does not
exists in select"))
+ }
+
+ test("test timeseries create table 13: don't support create timeseries
table on non timestamp") {
+ sql("DROP DATAMAP IF EXISTS agg0_hour ON TABLE mainTable")
+ val e = intercept[MalformedCarbonCommandException] {
+ sql(
+ s"""CREATE DATAMAP agg0_hour ON TABLE mainTable
+ |USING '$timeSeries'
+ |DMPROPERTIES (
+ | 'event_time'='name',
+ | 'HOUR_GRANULARITY'='1')
+ |AS SELECT name, SUM(age) FROM mainTable
+ |GROUP BY name
+ """.stripMargin)
}
+ assert(e.getMessage.contains("Timeseries event time is only supported
on Timestamp column"))
}
- test("test timeseries create table 11: USING") {
+ test("test timeseries create table 14: USING") {
val e: Exception = intercept[MalformedDataMapCommandException] {
sql(
- """CREATE DATAMAP agg1 ON TABLE mainTable
+ """CREATE DATAMAP agg0_hour ON TABLE mainTable
| USING 'abc'
| DMPROPERTIES (
| 'EVENT_TIME'='dataTime',
- | 'SECOND_GRANULARITY'='1')
+ | 'HOUR_GRANULARITY'='1')
| AS SELECT dataTime, SUM(age) FROM mainTable
| GROUP BY dataTime
""".stripMargin)
}
assert(e.getMessage.equals("DataMap 'abc' not found"))
}
- test("test timeseries create table 12: USING and catch
MalformedCarbonCommandException") {
+ test("test timeseries create table 15: USING and catch
MalformedCarbonCommandException") {
val e: Exception = intercept[MalformedCarbonCommandException] {
sql(
- """CREATE DATAMAP agg1 ON TABLE mainTable
+ """CREATE DATAMAP agg0_hour ON TABLE mainTable
| USING 'abc'
| DMPROPERTIES (
| 'EVENT_TIME'='dataTime',
- | 'SECOND_GRANULARITY'='1')
+ | 'HOUR_GRANULARITY'='1')
| AS SELECT dataTime, SUM(age) FROM mainTable
| GROUP BY dataTime
""".stripMargin)
}
assert(e.getMessage.equals("DataMap 'abc' not found"))
}
- test("test timeseries create table 13: Only one granularity level can be
defined 1") {
- sql("DROP DATAMAP IF EXISTS agg0_second ON TABLE mainTable")
+ test("test timeseries create table 16: Only one granularity level can be
defined 1") {
+ sql("DROP DATAMAP IF EXISTS agg0_hour ON TABLE mainTable")
val e: Exception = intercept[MalformedCarbonCommandException] {
sql(
s"""
- | CREATE DATAMAP agg0_second ON TABLE mainTable
+ | CREATE DATAMAP agg0_hour ON TABLE mainTable
--- End diff --
It's unreasonable to create pre-aggregate with second granularity, second
aggregate is used less than hour in reality life.
---