This is an automated email from the ASF dual-hosted git repository.

nehapawar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new c7ecd5e  Include DATE_TIME in BaseDefaultColumnsHandler (#5379)
c7ecd5e is described below

commit c7ecd5e9a0d4a559e2e2ca628a6078ec1718f945
Author: Neha Pawar <[email protected]>
AuthorDate: Wed May 13 15:58:46 2020 -0700

    Include DATE_TIME in BaseDefaultColumnsHandler (#5379)
---
 .../defaultcolumn/BaseDefaultColumnHandler.java    | 34 +++++++++++++++++-----
 .../BaseDefaultColumnHandlerTest.java              | 29 +++++++++++++++---
 2 files changed, 52 insertions(+), 11 deletions(-)

diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/segment/index/loader/defaultcolumn/BaseDefaultColumnHandler.java
 
b/pinot-core/src/main/java/org/apache/pinot/core/segment/index/loader/defaultcolumn/BaseDefaultColumnHandler.java
index df8b6cf..d7277b9 100644
--- 
a/pinot-core/src/main/java/org/apache/pinot/core/segment/index/loader/defaultcolumn/BaseDefaultColumnHandler.java
+++ 
b/pinot-core/src/main/java/org/apache/pinot/core/segment/index/loader/defaultcolumn/BaseDefaultColumnHandler.java
@@ -62,19 +62,23 @@ public abstract class BaseDefaultColumnHandler implements 
DefaultColumnHandler {
     // Present in schema but not in segment.
     ADD_DIMENSION,
     ADD_METRIC,
+    ADD_DATE_TIME,
     // Present in segment but not in schema
     REMOVE_DIMENSION,
     REMOVE_METRIC,
+    REMOVE_DATE_TIME,
     // Present in both segment and schema but one of the following updates is 
needed
     UPDATE_DIMENSION_DATA_TYPE,
     UPDATE_DIMENSION_DEFAULT_VALUE,
     UPDATE_DIMENSION_NUMBER_OF_VALUES,
     UPDATE_METRIC_DATA_TYPE,
     UPDATE_METRIC_DEFAULT_VALUE,
-    UPDATE_METRIC_NUMBER_OF_VALUES;
+    UPDATE_METRIC_NUMBER_OF_VALUES,
+    UPDATE_DATE_TIME_DATA_TYPE,
+    UPDATE_DATE_TIME_DEFAULT_VALUE;
 
     boolean isAddAction() {
-      return this == ADD_DIMENSION || this == ADD_METRIC;
+      return this == ADD_DIMENSION || this == ADD_METRIC || this == 
ADD_DATE_TIME;
     }
 
     boolean isUpdateAction() {
@@ -82,7 +86,7 @@ public abstract class BaseDefaultColumnHandler implements 
DefaultColumnHandler {
     }
 
     boolean isRemoveAction() {
-      return this == REMOVE_DIMENSION || this == REMOVE_METRIC;
+      return this == REMOVE_DIMENSION || this == REMOVE_METRIC || this == 
REMOVE_DATE_TIME;
     }
   }
 
@@ -125,6 +129,8 @@ public abstract class BaseDefaultColumnHandler implements 
DefaultColumnHandler {
         
LoaderUtils.getStringListFromSegmentProperties(V1Constants.MetadataKeys.Segment.DIMENSIONS,
 _segmentProperties);
     List<String> metricColumns =
         
LoaderUtils.getStringListFromSegmentProperties(V1Constants.MetadataKeys.Segment.METRICS,
 _segmentProperties);
+    List<String> dateTimeColumns =
+        
LoaderUtils.getStringListFromSegmentProperties(V1Constants.MetadataKeys.Segment.DATETIME_COLUMNS,
 _segmentProperties);
     for (Map.Entry<String, DefaultColumnAction> entry : 
defaultColumnActionMap.entrySet()) {
       String column = entry.getKey();
       DefaultColumnAction action = entry.getValue();
@@ -135,18 +141,24 @@ public abstract class BaseDefaultColumnHandler implements 
DefaultColumnHandler {
         case ADD_METRIC:
           metricColumns.add(column);
           break;
+        case ADD_DATE_TIME:
+          dateTimeColumns.add(column);
+          break;
         case REMOVE_DIMENSION:
           dimensionColumns.remove(column);
           break;
         case REMOVE_METRIC:
           metricColumns.remove(column);
           break;
+        case REMOVE_DATE_TIME:
+          dateTimeColumns.remove(column);
         default:
           break;
       }
     }
     
_segmentProperties.setProperty(V1Constants.MetadataKeys.Segment.DIMENSIONS, 
dimensionColumns);
     _segmentProperties.setProperty(V1Constants.MetadataKeys.Segment.METRICS, 
metricColumns);
+    
_segmentProperties.setProperty(V1Constants.MetadataKeys.Segment.DATETIME_COLUMNS,
 dateTimeColumns);
 
     // Create a back up for origin metadata.
     File metadataFile = _segmentProperties.getFile();
@@ -215,8 +227,7 @@ public abstract class BaseDefaultColumnHandler implements 
DefaultColumnHandler {
           } else if (isSingleValueInMetadata != isSingleValueInSchema) {
             defaultColumnActionMap.put(column, 
DefaultColumnAction.UPDATE_DIMENSION_NUMBER_OF_VALUES);
           }
-        } else {
-          Preconditions.checkState(fieldTypeInMetadata == 
FieldSpec.FieldType.METRIC);
+        } else if (fieldTypeInMetadata == FieldSpec.FieldType.METRIC){
           if (dataTypeInMetadata != dataTypeInSchema) {
             defaultColumnActionMap.put(column, 
DefaultColumnAction.UPDATE_METRIC_DATA_TYPE);
           } else if (!defaultValueInSchema.equals(defaultValueInMetadata)) {
@@ -224,6 +235,12 @@ public abstract class BaseDefaultColumnHandler implements 
DefaultColumnHandler {
           } else if (isSingleValueInMetadata != isSingleValueInSchema) {
             defaultColumnActionMap.put(column, 
DefaultColumnAction.UPDATE_METRIC_NUMBER_OF_VALUES);
           }
+        } else if (fieldTypeInMetadata == FieldSpec.FieldType.DATE_TIME){
+          if (dataTypeInMetadata != dataTypeInSchema) {
+            defaultColumnActionMap.put(column, 
DefaultColumnAction.UPDATE_DATE_TIME_DATA_TYPE);
+          } else if (!defaultValueInSchema.equals(defaultValueInMetadata)) {
+            defaultColumnActionMap.put(column, 
DefaultColumnAction.UPDATE_DATE_TIME_DEFAULT_VALUE);
+          }
         }
       } else {
         // Column does not exist in the segment, add default value for it.
@@ -235,6 +252,8 @@ public abstract class BaseDefaultColumnHandler implements 
DefaultColumnHandler {
           case METRIC:
             defaultColumnActionMap.put(column, DefaultColumnAction.ADD_METRIC);
             break;
+          case DATE_TIME:
+            defaultColumnActionMap.put(column, 
DefaultColumnAction.ADD_DATE_TIME);
           default:
             LOGGER.warn("Skip adding default column for column: {} with field 
type: {}", column, fieldTypeInSchema);
             break;
@@ -253,9 +272,10 @@ public abstract class BaseDefaultColumnHandler implements 
DefaultColumnHandler {
           FieldSpec.FieldType fieldTypeInMetadata = 
columnMetadata.getFieldType();
           if (fieldTypeInMetadata == FieldSpec.FieldType.DIMENSION) {
             defaultColumnActionMap.put(column, 
DefaultColumnAction.REMOVE_DIMENSION);
-          } else {
-            Preconditions.checkState(fieldTypeInMetadata == 
FieldSpec.FieldType.METRIC);
+          } else if (fieldTypeInMetadata == FieldSpec.FieldType.METRIC){
             defaultColumnActionMap.put(column, 
DefaultColumnAction.REMOVE_METRIC);
+          } else if (fieldTypeInMetadata == FieldSpec.FieldType.DATE_TIME) {
+            defaultColumnActionMap.put(column, 
DefaultColumnAction.REMOVE_DATE_TIME);
           }
         }
       }
diff --git 
a/pinot-core/src/test/java/org/apache/pinot/core/segment/index/loader/defaultcolumn/BaseDefaultColumnHandlerTest.java
 
b/pinot-core/src/test/java/org/apache/pinot/core/segment/index/loader/defaultcolumn/BaseDefaultColumnHandlerTest.java
index b1e8d83..d4132b0 100644
--- 
a/pinot-core/src/test/java/org/apache/pinot/core/segment/index/loader/defaultcolumn/BaseDefaultColumnHandlerTest.java
+++ 
b/pinot-core/src/test/java/org/apache/pinot/core/segment/index/loader/defaultcolumn/BaseDefaultColumnHandlerTest.java
@@ -168,8 +168,29 @@ public class BaseDefaultColumnHandlerTest {
     Assert.assertEquals(defaultColumnHandler.computeDefaultColumnActionMap(),
         ImmutableMap.of("column11", DefaultColumnAction.ADD_METRIC));
 
+    // Add metric in the schema
+    Schema schema4=
+        new 
Schema.SchemaBuilder().setSchemaName("testTable").addSingleValueDimension("column1",
 FieldSpec.DataType.INT)
+            .addSingleValueDimension("column2", FieldSpec.DataType.INT)
+            .addSingleValueDimension("column3", FieldSpec.DataType.STRING)
+            .addSingleValueDimension("column4", FieldSpec.DataType.STRING)
+            .addSingleValueDimension("column5", FieldSpec.DataType.STRING)
+            .addSingleValueDimension("column6", FieldSpec.DataType.INT)
+            .addSingleValueDimension("column7", FieldSpec.DataType.INT)
+            .addSingleValueDimension("column8", FieldSpec.DataType.INT)
+            .addSingleValueDimension("column9", FieldSpec.DataType.INT)
+            .addSingleValueDimension("column10", FieldSpec.DataType.INT)
+            .addSingleValueDimension("column13", FieldSpec.DataType.INT)
+            .addSingleValueDimension("count", FieldSpec.DataType.INT)
+            .addSingleValueDimension("daysSinceEpoch", FieldSpec.DataType.INT)
+            .addSingleValueDimension("weeksSinceEpochSunday", 
FieldSpec.DataType.INT)
+            .addDateTime("column11", FieldSpec.DataType.INT, "1:HOURS:EPOCH", 
"1:HOURS").build(); // add column11
+    defaultColumnHandler = new V3DefaultColumnHandler(segmentDirectory, 
schema4, committedSegmentMetadata, writer);
+    Assert.assertEquals(defaultColumnHandler.computeDefaultColumnActionMap(),
+        ImmutableMap.of("column11", DefaultColumnAction.ADD_DATE_TIME));
+
     // Do not remove non-autogenerated column in the segmentMetadata
-    Schema schema4 =
+    Schema schema5 =
         new 
Schema.SchemaBuilder().setSchemaName("testTable").addSingleValueDimension("column1",
 FieldSpec.DataType.INT)
             .addSingleValueDimension("column3", FieldSpec.DataType.STRING) // 
remove column2
             .addSingleValueDimension("column4", FieldSpec.DataType.STRING)
@@ -183,11 +204,11 @@ public class BaseDefaultColumnHandlerTest {
             .addSingleValueDimension("count", FieldSpec.DataType.INT)
             .addSingleValueDimension("daysSinceEpoch", FieldSpec.DataType.INT)
             .addSingleValueDimension("weeksSinceEpochSunday", 
FieldSpec.DataType.INT).build();
-    defaultColumnHandler = new V3DefaultColumnHandler(segmentDirectory, 
schema4, committedSegmentMetadata, writer);
+    defaultColumnHandler = new V3DefaultColumnHandler(segmentDirectory, 
schema5, committedSegmentMetadata, writer);
     Assert.assertEquals(defaultColumnHandler.computeDefaultColumnActionMap(), 
Collections.EMPTY_MAP);
 
     // Do not update non-autogenerated column in the schema
-    Schema schema5 =
+    Schema schema6 =
         new 
Schema.SchemaBuilder().setSchemaName("testTable").addSingleValueDimension("column1",
 FieldSpec.DataType.INT)
             .addSingleValueDimension("column2", FieldSpec.DataType.STRING) // 
update datatype
             .addSingleValueDimension("column3", FieldSpec.DataType.STRING)
@@ -202,7 +223,7 @@ public class BaseDefaultColumnHandlerTest {
             .addSingleValueDimension("count", FieldSpec.DataType.INT)
             .addSingleValueDimension("daysSinceEpoch", FieldSpec.DataType.INT)
             .addSingleValueDimension("weeksSinceEpochSunday", 
FieldSpec.DataType.INT).build();
-    defaultColumnHandler = new V3DefaultColumnHandler(segmentDirectory, 
schema5, committedSegmentMetadata, writer);
+    defaultColumnHandler = new V3DefaultColumnHandler(segmentDirectory, 
schema6, committedSegmentMetadata, writer);
     Assert.assertEquals(defaultColumnHandler.computeDefaultColumnActionMap(), 
Collections.EMPTY_MAP);
   }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to