Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -1322,7 +1322,11 @@ private void assertTableStatsComputed(

assertEquals(columnsStatistics.keySet(), expectedColumnStatsColumns, "columns with statistics");

Map<String, ColumnHandle> columnHandles = metadata.getColumnHandles(session, tableHandle);
columnsStatistics.forEach((columnName, columnStatistics) -> {
ColumnHandle columnHandle = columnHandles.get(columnName);
Type columnType = metadata.getColumnMetadata(session, tableHandle, columnHandle).getType();

assertFalse(
columnStatistics.getNullsFraction().isValueUnknown(),
"unknown nulls fraction for " + columnName);
Expand All @@ -1334,6 +1338,17 @@ private void assertTableStatsComputed(
assertFalse(
rangeColumnStatistics.getFraction().isValueUnknown(),
"unknown range non-null fraction for " + columnName);

if (isVarcharType(columnType)) {
assertFalse(
rangeColumnStatistics.getDataSize().isValueUnknown(),
"unknown range data size for " + columnName);
}
else {
assertTrue(
rangeColumnStatistics.getDataSize().isValueUnknown(),
"known range data size for" + columnName);
}
});
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2589,7 +2589,7 @@ public void testCollectColumnStatisticsOnCreateTable()
"('c_timestamp', null, 2.0E0, 0.5E0, null, '2012-08-08 00:00:00.000', '2012-08-08 01:00:00.000'), " +
"('c_varchar', null, 2.0E0, 0.5E0, null, null, null), " +
"('c_varbinary', null, null, 0.5E0, null, null, null), " +
"('p_varchar', null, 1.0E0, 0.0E0, null, null, null), " +
"('p_varchar', 8.0E0, 1.0E0, 0.0E0, null, null, null), " +
"(null, null, null, null, 4.0E0, null, null)");
assertQuery(format("SHOW STATS FOR (SELECT * FROM %s WHERE p_varchar = 'p2')", tableName),
"SELECT * FROM VALUES " +
Expand All @@ -2599,7 +2599,7 @@ public void testCollectColumnStatisticsOnCreateTable()
"('c_timestamp', null, 2.0E0, 0.5E0, null, '2012-09-09 00:00:00.000', '2012-09-09 01:00:00.000'), " +
"('c_varchar', null, 2.0E0, 0.5E0, null, null, null), " +
"('c_varbinary', null, null, 0.5E0, null, null, null), " +
"('p_varchar', null, 1.0E0, 0.0E0, null, null, null), " +
"('p_varchar', 8.0E0, 1.0E0, 0.0E0, null, null, null), " +
"(null, null, null, null, 4.0E0, null, null)");

assertUpdate(format("DROP TABLE %s", tableName));
Expand Down Expand Up @@ -2646,7 +2646,7 @@ public void testCollectColumnStatisticsOnInsert()
"('c_timestamp', null, 2.0E0, 0.5E0, null, '2012-08-08 00:00:00.000', '2012-08-08 01:00:00.000'), " +
"('c_varchar', null, 2.0E0, 0.5E0, null, null, null), " +
"('c_varbinary', null, null, 0.5E0, null, null, null), " +
"('p_varchar', null, 1.0E0, 0.0E0, null, null, null), " +
"('p_varchar', 8.0E0, 1.0E0, 0.0E0, null, null, null), " +
"(null, null, null, null, 4.0E0, null, null)");
assertQuery(format("SHOW STATS FOR (SELECT * FROM %s WHERE p_varchar = 'p2')", tableName),
"SELECT * FROM VALUES " +
Expand All @@ -2656,7 +2656,7 @@ public void testCollectColumnStatisticsOnInsert()
"('c_timestamp', null, 2.0E0, 0.5E0, null, '2012-09-09 00:00:00.000', '2012-09-09 01:00:00.000'), " +
"('c_varchar', null, 2.0E0, 0.5E0, null, null, null), " +
"('c_varbinary', null, null, 0.5E0, null, null, null), " +
"('p_varchar', null, 1.0E0, 0.0E0, null, null, null), " +
"('p_varchar', 8.0E0, 1.0E0, 0.0E0, null, null, null), " +
"(null, null, null, null, 4.0E0, null, null)");

assertUpdate(format("DROP TABLE %s", tableName));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import io.prestodb.tempto.fulfillment.table.hive.HiveTableDefinition;

import static io.prestodb.tempto.fulfillment.table.hive.InlineDataSource.createResourceDataSource;
import static java.lang.String.format;

public class HiveTableDefinitions
{
Expand All @@ -25,7 +26,7 @@ public class HiveTableDefinitions

public static final int NATION_PARTITIONED_BY_REGIONKEY_NUMBER_OF_LINES_PER_SPLIT = 5;

public static final HiveTableDefinition NATION_PARTITIONED_BY_REGIONKEY =
public static final HiveTableDefinition NATION_PARTITIONED_BY_BIGINT_REGIONKEY =
HiveTableDefinition.builder(NATION_PARTITIONED_BY_REGIONKEY_TABLE_NAME)
.setCreateTableDDLTemplate(
"CREATE %EXTERNAL% TABLE %NAME%(" +
Expand All @@ -39,24 +40,53 @@ public class HiveTableDefinitions
createResourceDataSource(
NATION_PARTITIONED_BY_REGIONKEY_TABLE_NAME,
DATA_REVISION,
partitionDataFileResource(1)))
partitionDataFileResource("bigint", "1")))
.addPartition(
"p_regionkey=2",
createResourceDataSource(
NATION_PARTITIONED_BY_REGIONKEY_TABLE_NAME,
DATA_REVISION,
partitionDataFileResource(2)))
partitionDataFileResource("bigint", "2")))
.addPartition(
"p_regionkey=3",
createResourceDataSource(
NATION_PARTITIONED_BY_REGIONKEY_TABLE_NAME,
DATA_REVISION,
partitionDataFileResource(3)))
partitionDataFileResource("bigint", "3")))
.build();

private static String partitionDataFileResource(int region)
public static final HiveTableDefinition NATION_PARTITIONED_BY_VARCHAR_REGIONKEY =
HiveTableDefinition.builder(NATION_PARTITIONED_BY_REGIONKEY_TABLE_NAME)
.setCreateTableDDLTemplate(
"CREATE %EXTERNAL% TABLE %NAME%(" +
" p_nationkey BIGINT," +
" p_name VARCHAR(25)," +
" p_comment VARCHAR(152)) " +
"PARTITIONED BY (p_regionkey VARCHAR(20))" +
"ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' ")
.addPartition(
"p_regionkey='AMERICA'",
createResourceDataSource(
NATION_PARTITIONED_BY_REGIONKEY_TABLE_NAME,
DATA_REVISION,
partitionDataFileResource("varchar", "america")))
.addPartition(
"p_regionkey='ASIA'",
createResourceDataSource(
NATION_PARTITIONED_BY_REGIONKEY_TABLE_NAME,
DATA_REVISION,
partitionDataFileResource("varchar", "asia")))
.addPartition(
"p_regionkey='EUROPE'",
createResourceDataSource(
NATION_PARTITIONED_BY_REGIONKEY_TABLE_NAME,
DATA_REVISION,
partitionDataFileResource("varchar", "europe")))
.build();

private static String partitionDataFileResource(String key, String partition)
{
return "com/facebook/presto/tests/hive/data/partitioned_nation/nation_region_" + region + ".textfile";
return format("com/facebook/presto/tests/hive/data/partitioned_nation_%s/nation_region_%s.textfile", key, partition);
}

private HiveTableDefinitions()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import org.testng.annotations.Test;

import static com.facebook.presto.tests.TestGroups.HIVE_CONNECTOR;
import static com.facebook.presto.tests.hive.HiveTableDefinitions.NATION_PARTITIONED_BY_REGIONKEY;
import static com.facebook.presto.tests.hive.HiveTableDefinitions.NATION_PARTITIONED_BY_BIGINT_REGIONKEY;
import static com.facebook.presto.tests.hive.HiveTableDefinitions.NATION_PARTITIONED_BY_REGIONKEY_NUMBER_OF_LINES_PER_SPLIT;
import static com.facebook.presto.tests.utils.QueryExecutors.onHive;
import static com.facebook.presto.tests.utils.QueryExecutors.onPresto;
Expand All @@ -41,7 +41,7 @@ public Requirement getRequirements(Configuration configuration)
{
return compose(
mutableTable(NATION),
mutableTable(NATION_PARTITIONED_BY_REGIONKEY));
mutableTable(NATION_PARTITIONED_BY_BIGINT_REGIONKEY));
}

@Test(groups = {HIVE_CONNECTOR})
Expand All @@ -68,7 +68,7 @@ public void testDeleteFromExternalTable()
@Test(groups = {HIVE_CONNECTOR})
public void testDeleteFromExternalPartitionedTableTable()
{
TableInstance nation = mutableTablesState().get(NATION_PARTITIONED_BY_REGIONKEY.getName());
TableInstance nation = mutableTablesState().get(NATION_PARTITIONED_BY_BIGINT_REGIONKEY.getName());
onHive().executeQuery("DROP TABLE IF EXISTS " + EXTERNAL_TABLE_NAME);
onHive().executeQuery("CREATE EXTERNAL TABLE " + EXTERNAL_TABLE_NAME + " LIKE " + nation.getNameInDatabase() + " LOCATION '/tmp/" + EXTERNAL_TABLE_NAME + "_" + nation.getNameInDatabase() + "'");
insertNationPartition(nation, 1);
Expand Down
Loading