Github user arina-ielchiieva commented on a diff in the pull request:

    https://github.com/apache/drill/pull/1131#discussion_r170630734
  
    --- Diff: 
exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetFilterPushDownForDateTimeCasts.java
 ---
    @@ -0,0 +1,127 @@
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one
    + * or more contributor license agreements.  See the NOTICE file
    + * distributed with this work for additional information
    + * regarding copyright ownership.  The ASF licenses this file
    + * to you under the Apache License, Version 2.0 (the
    + * "License"); you may not use this file except in compliance
    + * with the License.  You may obtain a copy of the License at
    + *
    + * http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +package org.apache.drill.exec.store.parquet;
    +
    +import org.apache.drill.PlanTestBase;
    +import org.junit.AfterClass;
    +import org.junit.BeforeClass;
    +import org.junit.Test;
    +
    +import static org.junit.Assert.assertEquals;
    +
    +public class TestParquetFilterPushDownForDateTimeCasts extends 
PlanTestBase {
    +
    +  private static final String TABLE_NAME = "dateTimeCasts";
    +
    +  @BeforeClass
    +  public static void init() throws Exception {
    +    test("use dfs.tmp");
    +    test("create table `%s/p1` as\n" +
    +        "select timestamp '2017-01-01 00:00:00' as col_timestamp, date 
'2017-01-01' as col_date, time '00:00:00' as col_time from (values(1)) union 
all\n" +
    +        "select timestamp '2017-01-02 00:00:00' as col_timestamp, date 
'2017-01-02' as col_date, time '00:00:00' as col_time from (values(1)) union 
all\n" +
    +        "select timestamp '2017-01-02 21:01:15' as col_timestamp, date 
'2017-01-02' as col_date, time '21:01:15' as col_time from (values(1))", 
TABLE_NAME);
    +
    +    test("create table `%s/p2` as\n" +
    +        "select timestamp '2017-01-03 08:50:00' as col_timestamp, date 
'2017-01-03' as col_date, time '08:50:00' as col_time from (values(1)) union 
all\n" +
    +        "select timestamp '2017-01-04 15:25:00' as col_timestamp, date 
'2017-01-04' as col_date, time '15:25:00' as col_time from (values(1)) union 
all\n" +
    +        "select timestamp '2017-01-04 22:14:29' as col_timestamp, date 
'2017-01-04' as col_date, time '22:14:29' as col_time from (values(1))", 
TABLE_NAME);
    +
    +    test("create table `%s/p3` as\n" +
    +        "select timestamp '2017-01-05 05:46:11' as col_timestamp, date 
'2017-01-05' as col_date, time '05:46:11' as col_time from (values(1)) union 
all\n" +
    +        "select timestamp '2017-01-06 06:17:59' as col_timestamp, date 
'2017-01-06' as col_date, time '06:17:59' as col_time from (values(1)) union 
all\n" +
    +        "select timestamp '2017-01-06 06:17:59' as col_timestamp, date 
'2017-01-06' as col_date, time '06:17:59' as col_time from (values(1)) union 
all\n" +
    +        "select cast(null as timestamp) as col_timestamp, cast(null as 
date) as col_date, cast(null as time) as col_time from (values(1))", 
TABLE_NAME);
    +  }
    +
    +  @AfterClass
    +  public static void tearDown() throws Exception {
    +    test("drop table if exists `%s`", TABLE_NAME);
    +  }
    +
    +  @Test
    +  public void testCastTimestampVarchar() throws Exception {
    +    testParquetFilterPushDown("col_timestamp = '2017-01-05 05:46:11'", 1, 
1);
    +    testParquetFilterPushDown("col_timestamp = cast('2017-01-05 05:46:11' 
as varchar)", 1, 1);
    +    testParquetFilterPushDown("col_timestamp = cast('2017-01-05 05:46:11' 
as timestamp)", 1, 1);
    +    testParquetFilterPushDown("col_timestamp > '2017-01-02 00:00:00'", 7, 
3);
    +    testParquetFilterPushDown("col_timestamp between '2017-01-03 21:01:15' 
and '2017-01-06 05:46:11'", 3, 2);
    +    testParquetFilterPushDown("col_timestamp between '2017-01-03' and 
'2017-01-06'", 4, 2);
    +  }
    +
    +  @Test
    +  public void testCastTimestampDate() throws Exception {
    +    testParquetFilterPushDown("col_timestamp = date '2017-01-02'", 1, 1);
    +    testParquetFilterPushDown("col_timestamp = cast(date '2017-01-02' as 
timestamp)", 1, 1);
    +    testParquetFilterPushDown("col_timestamp > date '2017-01-02'", 7, 3);
    +    testParquetFilterPushDown("col_timestamp between date '2017-01-03' and 
date '2017-01-06'", 4, 2);
    +  }
    +
    +  @Test
    +  public void testCastDateVarchar() throws Exception {
    +    testParquetFilterPushDown("col_date = '2017-01-02'", 2, 1);
    +    testParquetFilterPushDown("col_date = cast('2017-01-02' as varchar)", 
2, 1);
    +    testParquetFilterPushDown("col_date = cast('2017-01-02' as date)", 2, 
1);
    +    testParquetFilterPushDown("col_date > '2017-01-02'", 6, 2);
    +    testParquetFilterPushDown("col_date between '2017-01-02' and 
'2017-01-04'", 5, 2);
    +  }
    +
    +  @Test
    +  public void testCastDateTimestamp() throws Exception {
    +    testParquetFilterPushDown("col_date = timestamp '2017-01-02 
00:00:00'", 2, 1);
    +    testParquetFilterPushDown("col_date = cast(timestamp '2017-01-02 
00:00:00' as date)", 2, 1);
    +    testParquetFilterPushDown("col_date > timestamp '2017-01-02 
21:01:15'", 6, 2);
    +    testParquetFilterPushDown("col_date between timestamp '2017-01-03 
08:50:00' and timestamp '2017-01-06 06:17:59'", 5, 2);
    +  }
    +
    +  @Test
    +  public void testCastTimeVarchar() throws Exception {
    +    testParquetFilterPushDown("col_time = '00:00:00'", 2, 1);
    +    testParquetFilterPushDown("col_time = cast('00:00:00' as varchar)", 2, 
1);
    +    testParquetFilterPushDown("col_time = cast('00:00:00' as time)", 2, 1);
    +    testParquetFilterPushDown("col_time > '15:25:00'", 2, 2);
    +    testParquetFilterPushDown("col_time between '08:00:00' and 
'23:00:00'", 4, 2);
    +  }
    +
    +  @Test
    +  public void testCastTimeTimestamp() throws Exception {
    +    testParquetFilterPushDown("col_time = timestamp '2017-01-01 
05:46:11'", 1, 2);
    +    testParquetFilterPushDown("col_time = cast(timestamp '2017-01-01 
05:46:11' as time)", 1, 2);
    +    testParquetFilterPushDown("col_time = timestamp '2017-01-01 
00:00:00'", 2, 1);
    +    testParquetFilterPushDown("col_time > timestamp '2017-01-01 
15:25:00'", 2, 2);
    +    testParquetFilterPushDown("col_time between timestamp '2017-01-01 
08:00:00' and timestamp '2017-01-01 23:00:00'", 4, 2);
    +  }
    +
    +  @Test
    +  public void testCastTimeDate() throws Exception {
    +    testParquetFilterPushDown("col_time = date '2017-01-01'", 2, 1);
    +    testParquetFilterPushDown("col_time = cast(date '2017-01-01' as 
time)", 2, 1);
    +    testParquetFilterPushDown("col_time > date '2017-01-01'", 7, 3);
    +    testParquetFilterPushDown("col_time between date '2017-01-01' and date 
'2017-01-02'", 2, 1);
    +  }
    +
    +  private void testParquetFilterPushDown(String predicate, int 
expectedRowCount, int expectedFilesNumber) throws Exception {
    +    String query = String.format("select * from `%s` where %s", 
TABLE_NAME, predicate);
    +
    +    int actualRowCount = testSql(query);
    +    assertEquals("Expected and actual row count should match", 
expectedRowCount, actualRowCount);
    +
    +    String numFilesPattern = "numFiles=" + expectedFilesNumber;
    +    testPlanMatchingPatterns(query, new String[]{numFilesPattern}, new 
String[] {});
    --- End diff --
    
    Please add space: `new String[]{numFilesPattern}` -> `new String[] 
{numFilesPattern}`.


---

Reply via email to