You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@carbondata.apache.org by in...@apache.org on 2021/06/23 05:08:52 UTC
[carbondata] branch master updated: [CARBONDATA-4214] inserting
NULL value when timestamp value received from FROM_UNIXTIME(0)
This is an automated email from the ASF dual-hosted git repository.
indhumuthumurugesh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/carbondata.git
The following commit(s) were added to refs/heads/master by this push:
new 18665cc [CARBONDATA-4214] inserting NULL value when timestamp value received from FROM_UNIXTIME(0)
18665cc is described below
commit 18665cc0b72d455ff66bfa63501faec94025b492
Author: Mahesh Raju Somalaraju <ma...@huawei.com>
AuthorDate: Fri Jun 18 00:40:18 2021 +0530
[CARBONDATA-4214] inserting NULL value when timestamp value received from FROM_UNIXTIME(0)
Why is this PR needed?
Filling null in case of timestamp value is received from FROM_UNIXTIME(0) as spark original
insert rdd value[internalRow] received in this case zero. if the original column
value[internalRow] is zero then in insert flow adding NULL and giving NULL to spark.
When query happens on the same column received NULL value instead of timestamp value.
Problem code: if (internalRow.getLong(index) == 0) { internalRow.setNullAt(index) }
What changes were proposed in this PR?
Removed the null filling check for zero value case and if internalRow value is non
null/empty then only set the internalRow timestamp value.
Does this PR introduce any user interface change?
No
Is any new testcase added?
Yes
This closes #4154
---
.../command/management/CommonLoadUtils.scala | 5 ++--
.../allqueries/AllDataTypesTestCase.scala | 29 ++++++++++++++++++++++
2 files changed, 31 insertions(+), 3 deletions(-)
diff --git a/integration/spark/src/main/scala/org/apache/spark/sql/execution/command/management/CommonLoadUtils.scala b/integration/spark/src/main/scala/org/apache/spark/sql/execution/command/management/CommonLoadUtils.scala
index 695681a..f2a8280 100644
--- a/integration/spark/src/main/scala/org/apache/spark/sql/execution/command/management/CommonLoadUtils.scala
+++ b/integration/spark/src/main/scala/org/apache/spark/sql/execution/command/management/CommonLoadUtils.scala
@@ -781,9 +781,8 @@ object CommonLoadUtils {
internalRowOriginal
}
for (index <- timeStampIndex) {
- if (internalRow.getLong(index) == 0) {
- internalRow.setNullAt(index)
- } else {
+ // timestmap value can be set other than null/empty case
+ if (!internalRow.isNullAt(index)) {
internalRow.setLong(
index,
internalRow.getLong(index) / TimeStampGranularityTypeValue.MILLIS_SECONDS.getValue)
diff --git a/integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/allqueries/AllDataTypesTestCase.scala b/integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/allqueries/AllDataTypesTestCase.scala
index 7044729..b95755c 100644
--- a/integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/allqueries/AllDataTypesTestCase.scala
+++ b/integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/allqueries/AllDataTypesTestCase.scala
@@ -17,6 +17,8 @@
package org.apache.carbondata.spark.testsuite.allqueries
+import java.sql.Timestamp
+
import org.apache.spark.sql.{Row, SaveMode}
import org.apache.spark.sql.test.util.QueryTest
import org.scalatest.BeforeAndAfterAll
@@ -73,6 +75,33 @@ class AllDataTypesTestCase extends QueryTest with BeforeAndAfterAll {
}
}
+ test("insert data with from_unixtime(0) and query") {
+ sql("drop table if exists time_carbon1")
+ sql("drop table if exists time_parquet")
+ sql("create table if not exists time_carbon1(time1 timestamp) stored as carbondata")
+ sql("create table if not exists time_parquet(time1 timestamp) stored as parquet")
+ sql("insert into time_carbon1 select from_unixtime(0)")
+ sql("insert into time_parquet select from_unixtime(0)")
+ sql("insert into time_carbon1 select from_unixtime(123456)")
+ sql("insert into time_parquet select from_unixtime(123456)")
+ checkAnswer(sql("select * from time_carbon1"),
+ sql("select * from time_parquet"))
+ sql("drop table if exists time_carbon1")
+ sql("drop table if exists time_parquet")
+ }
+
+ test("insert data with empty/null and query") {
+ sql("drop table if exists time_carbon2")
+ sql("create table if not exists time_carbon2(time1 timestamp) stored as carbondata")
+ sql("insert into time_carbon2 select null")
+ checkAnswer(sql("select count(*) from time_carbon2"), Seq(Row(1)))
+ checkAnswer(sql("select * from time_carbon2"), Seq(Row(null)))
+ sql("insert into time_carbon2 select ''")
+ checkAnswer(sql("select count(*) from time_carbon2"), Seq(Row(2)))
+ checkAnswer(sql("select * from time_carbon2"), Seq(Row(null), Row(null)))
+ sql("drop table if exists time_carbon2")
+ }
+
// Test-24
test("select channelsId, sum(channelsId+ 10) Total from Carbon_automation_test group by channelsId order by Total") {
checkAnswer(