Skip to content

Commit

Permalink
Exercise Iceberg applyFilter with non-pushdownable constraint
Browse files Browse the repository at this point in the history
  • Loading branch information
findepi committed Jul 25, 2021
1 parent cac8762 commit 28a1cfe
Showing 1 changed file with 55 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -750,6 +750,11 @@ public void testHourTransform()

assertQuery("SELECT d_hour, row_count, d.min, d.max, b.min, b.max FROM \"test_hour_transform$partitions\"", expected);

// Exercise IcebergMetadata.applyFilter with non-empty Constraint.predicate, via non-pushdownable predicates
assertQuery(
"SELECT * FROM test_hour_transform WHERE day_of_week(d) = 3 AND b % 7 = 3",
"VALUES (TIMESTAMP '1969-12-31 23:44:55.567890', 10)");

assertThat(query("SHOW STATS FOR test_hour_transform"))
.projected(0, 2, 3, 4, 5, 6) // ignore data size which is available for Parquet, but not for ORC
.skippingTypesCheck()
Expand Down Expand Up @@ -793,6 +798,11 @@ public void testDayTransformDate()
"(DATE '2015-05-15', 2, DATE '2015-05-15', DATE '2015-05-15', 6, 7), " +
"(DATE '2020-02-21', 2, DATE '2020-02-21', DATE '2020-02-21', 8, 9)");

// Exercise IcebergMetadata.applyFilter with non-empty Constraint.predicate, via non-pushdownable predicates
assertQuery(
"SELECT * FROM test_day_transform_date WHERE day_of_week(d) = 3 AND b % 7 = 3",
"VALUES (DATE '1969-01-01', 10)");

assertThat(query("SHOW STATS FOR test_day_transform_date"))
.projected(0, 2, 3, 4, 5, 6) // ignore data size which is available for Parquet, but not for ORC
.skippingTypesCheck()
Expand Down Expand Up @@ -847,6 +857,11 @@ public void testDayTransformTimestamp()

assertQuery("SELECT d_day, row_count, d.min, d.max, b.min, b.max FROM \"test_day_transform_timestamp$partitions\"", expected);

// Exercise IcebergMetadata.applyFilter with non-empty Constraint.predicate, via non-pushdownable predicates
assertQuery(
"SELECT * FROM test_day_transform_timestamp WHERE day_of_week(d) = 3 AND b % 7 = 3",
"VALUES (TIMESTAMP '1969-12-31 00:00:00.000000', 10)");

assertThat(query("SHOW STATS FOR test_day_transform_timestamp"))
.projected(0, 2, 3, 4, 5, 6) // ignore data size which is available for Parquet, but not for ORC
.skippingTypesCheck()
Expand Down Expand Up @@ -894,6 +909,11 @@ public void testMonthTransformDate()
"(606, 2, DATE '2020-07-18', DATE '2020-07-28', 12, 13), " +
"(611, 1, DATE '2020-12-31', DATE '2020-12-31', 14, 14)");

// Exercise IcebergMetadata.applyFilter with non-empty Constraint.predicate, via non-pushdownable predicates
assertQuery(
"SELECT * FROM test_month_transform_date WHERE day_of_week(d) = 7 AND b % 7 = 3",
"VALUES (DATE '2020-06-28', 10)");

assertThat(query("SHOW STATS FOR test_month_transform_date"))
.projected(0, 2, 3, 4, 5, 6) // ignore data size which is available for Parquet, but not for ORC
.skippingTypesCheck()
Expand Down Expand Up @@ -945,6 +965,11 @@ public void testMonthTransformTimestamp()

assertQuery("SELECT d_month, row_count, d.min, d.max, b.min, b.max FROM \"test_month_transform_timestamp$partitions\"", expected);

// Exercise IcebergMetadata.applyFilter with non-empty Constraint.predicate, via non-pushdownable predicates
assertQuery(
"SELECT * FROM test_month_transform_timestamp WHERE day_of_week(d) = 1 AND b % 7 = 3",
"VALUES (TIMESTAMP '1969-12-01 00:00:00.000000', 10)");

assertThat(query("SHOW STATS FOR test_month_transform_timestamp"))
.projected(0, 2, 3, 4, 5, 6) // ignore data size which is available for Parquet, but not for ORC
.skippingTypesCheck()
Expand Down Expand Up @@ -987,6 +1012,11 @@ public void testYearTransformDate()
"(46, 2, DATE '2016-05-15', DATE '2016-06-06', 9, 10), " +
"(50, 2, DATE '2020-02-21', DATE '2020-11-10', 11, 12)");

// Exercise IcebergMetadata.applyFilter with non-empty Constraint.predicate, via non-pushdownable predicates
assertQuery(
"SELECT * FROM test_year_transform_date WHERE day_of_week(d) = 1 AND b % 7 = 3",
"VALUES (DATE '2016-06-06', 10)");

assertThat(query("SHOW STATS FOR test_year_transform_date"))
.projected(0, 2, 3, 4, 5, 6) // ignore data size which is available for Parquet, but not for ORC
.skippingTypesCheck()
Expand Down Expand Up @@ -1036,6 +1066,11 @@ public void testYearTransformTimestamp()

assertQuery("SELECT d_year, row_count, d.min, d.max, b.min, b.max FROM \"test_year_transform_timestamp$partitions\"", expected);

// Exercise IcebergMetadata.applyFilter with non-empty Constraint.predicate, via non-pushdownable predicates
assertQuery(
"SELECT * FROM test_year_transform_timestamp WHERE day_of_week(d) = 2 AND b % 7 = 3",
"VALUES (TIMESTAMP '2015-09-15 14:21:02.345678', 10)");

assertThat(query("SHOW STATS FOR test_year_transform_timestamp"))
.projected(0, 2, 3, 4, 5, 6) // ignore data size which is available for Parquet, but not for ORC
.skippingTypesCheck()
Expand Down Expand Up @@ -1073,6 +1108,11 @@ public void testTruncateTextTransform()
assertQuery("SELECT b FROM test_truncate_text_transform WHERE substring(d, 1, 2) = 'Gr'", "VALUES 6, 7");
assertQuery(select + " WHERE d_trunc = 'Gr'", "VALUES ('Gr', 2, 'Greece', 'Grozny', 6, 7)");

// Exercise IcebergMetadata.applyFilter with non-empty Constraint.predicate, via non-pushdownable predicates
assertQuery(
"SELECT * FROM test_truncate_text_transform WHERE length(d) = 4 AND b % 7 = 2",
"VALUES ('abxy', 2)");

assertThat(query("SHOW STATS FOR test_truncate_text_transform"))
.projected(0, 2, 3, 4, 5, 6) // ignore data size which is available for Parquet, but not for ORC
.skippingTypesCheck()
Expand Down Expand Up @@ -1128,6 +1168,11 @@ public void testTruncateIntegerTransform(String dataType)
assertQuery("SELECT b FROM " + table + " WHERE d IN (-123, -130)", "VALUES 14, 15");
assertQuery(select + " WHERE d_trunc = -130", "VALUES (-130, 2, -130, -123, 14, 15)");

// Exercise IcebergMetadata.applyFilter with non-empty Constraint.predicate, via non-pushdownable predicates
assertQuery(
"SELECT * FROM " + table + " WHERE d % 10 = -1 AND b % 7 = 3",
"VALUES (-1, 10)");

assertThat(query("SHOW STATS FOR " + table))
.projected(0, 2, 3, 4, 5, 6) // ignore data size which is available for Parquet, but not for ORC
.skippingTypesCheck()
Expand Down Expand Up @@ -1175,6 +1220,11 @@ public void testTruncateDecimalTransform()
assertQuery("SELECT b FROM test_truncate_decimal_transform WHERE d = -0.05", "VALUES 5");
assertQuery(select + " WHERE d_trunc = -0.10", "VALUES (-0.10, 1, -0.05, -0.05, 5, 5)");

// Exercise IcebergMetadata.applyFilter with non-empty Constraint.predicate, via non-pushdownable predicates
assertQuery(
"SELECT * FROM test_truncate_decimal_transform WHERE d * 100 % 10 = 9 AND b % 7 = 3",
"VALUES (12.29, 3)");

assertThat(query("SHOW STATS FOR test_truncate_decimal_transform"))
.projected(0, 2, 3, 4, 5, 6) // ignore data size which is available for Parquet, but not for ORC
.skippingTypesCheck()
Expand Down Expand Up @@ -1209,6 +1259,11 @@ public void testBucketTransform()

assertQuery(select + " WHERE d_bucket = 1", "VALUES(1, 4, 'Greece', 'moscow', 2, 6)");

// Exercise IcebergMetadata.applyFilter with non-empty Constraint.predicate, via non-pushdownable predicates
assertQuery(
"SELECT * FROM test_bucket_transform WHERE length(d) = 4 AND b % 7 = 2",
"VALUES ('abxy', 2)");

assertThat(query("SHOW STATS FOR test_bucket_transform"))
.projected(0, 2, 3, 4, 5, 6) // ignore data size which is available for Parquet, but not for ORC
.skippingTypesCheck()
Expand Down

0 comments on commit 28a1cfe

Please sign in to comment.