[
https://issues.apache.org/jira/browse/TAJO-1926?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14956658#comment-14956658
]
ASF GitHub Bot commented on TAJO-1926:
--------------------------------------
Github user jihoonson commented on a diff in the pull request:
https://github.com/apache/tajo/pull/824#discussion_r41978151
--- Diff:
tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTablePartitions.java
---
@@ -1340,411 +1327,12 @@ public final void testDuplicatedPartitions()
throws Exception {
}
@Test
- public final void testPatternMatchingPredicatesAndStringFunctions()
throws Exception {
- ResultSet res = null;
- String tableName =
CatalogUtil.normalizeIdentifier("testPatternMatchingPredicatesAndStringFunctions");
- String expectedResult;
-
- if (nodeType == NodeType.INSERT) {
- executeString("create table " + tableName
- + " (col1 int4, col2 int4) partition by column(l_shipdate text,
l_returnflag text) ").close();
-
- assertTrue(catalog.existsTable(DEFAULT_DATABASE_NAME, tableName));
- assertEquals(2, catalog.getTableDesc(DEFAULT_DATABASE_NAME,
tableName).getSchema().size());
- assertEquals(4, catalog.getTableDesc(DEFAULT_DATABASE_NAME,
tableName).getLogicalSchema().size());
-
- executeString(
- "insert overwrite into " + tableName + " select l_orderkey,
l_partkey, l_shipdate, l_returnflag from lineitem");
- } else {
- executeString(
- "create table " + tableName + "(col1 int4, col2 int4) partition by
column(l_shipdate text, l_returnflag text) "
- + " as select l_orderkey, l_partkey, l_shipdate, l_returnflag
from lineitem");
- }
-
- assertTrue(client.existTable(tableName));
-
- // Like
- res = executeString("SELECT * FROM " + tableName
- + " WHERE l_shipdate LIKE '1996%' and l_returnflag = 'N' order by
l_shipdate");
-
- expectedResult = "col1,col2,l_shipdate,l_returnflag\n" +
- "-------------------------------\n" +
- "1,1,1996-03-13,N\n" +
- "1,1,1996-04-12,N\n";
-
- assertEquals(expectedResult, resultSetToString(res));
- res.close();
-
- // Not like
- res = executeString("SELECT * FROM " + tableName
- + " WHERE l_shipdate NOT LIKE '1996%' and l_returnflag IN ('R')
order by l_shipdate");
-
- expectedResult = "col1,col2,l_shipdate,l_returnflag\n" +
- "-------------------------------\n" +
- "3,3,1993-11-09,R\n" +
- "3,2,1994-02-02,R\n";
-
- assertEquals(expectedResult, resultSetToString(res));
- res.close();
-
- // In
- res = executeString("SELECT * FROM " + tableName
- + " WHERE l_shipdate IN ('1993-11-09', '1994-02-02', '1997-01-28')
AND l_returnflag = 'R' order by l_shipdate");
-
- expectedResult = "col1,col2,l_shipdate,l_returnflag\n" +
- "-------------------------------\n" +
- "3,3,1993-11-09,R\n" +
- "3,2,1994-02-02,R\n";
-
- assertEquals(expectedResult, resultSetToString(res));
- res.close();
-
- // Similar to
- res = executeString("SELECT * FROM " + tableName + " WHERE l_shipdate
similar to '1993%' order by l_shipdate");
-
- expectedResult = "col1,col2,l_shipdate,l_returnflag\n" +
- "-------------------------------\n" +
- "3,3,1993-11-09,R\n";
-
- assertEquals(expectedResult, resultSetToString(res));
- res.close();
-
- // Regular expression
- res = executeString("SELECT * FROM " + tableName
- + " WHERE l_shipdate regexp
'[1-2][0-9][0-9][3-9]-[0-1][0-9]-[0-3][0-9]' "
- + " AND l_returnflag <> 'N' ORDER BY l_shipdate");
-
- expectedResult = "col1,col2,l_shipdate,l_returnflag\n" +
- "-------------------------------\n" +
- "3,3,1993-11-09,R\n" +
- "3,2,1994-02-02,R\n";
-
- assertEquals(expectedResult, resultSetToString(res));
- res.close();
-
- // Concatenate
- res = executeString("SELECT * FROM " + tableName
- + " WHERE l_shipdate = ( '1996' || '-' || '03' || '-' || '13' )
order by l_shipdate");
-
- expectedResult = "col1,col2,l_shipdate,l_returnflag\n" +
- "-------------------------------\n" +
- "1,1,1996-03-13,N\n";
-
- assertEquals(expectedResult, resultSetToString(res));
- res.close();
-
- executeString("DROP TABLE " + tableName + " PURGE").close();
- res.close();
- }
-
- @Test
- public final void testDatePartitionColumn() throws Exception {
- ResultSet res = null;
- String tableName =
CatalogUtil.normalizeIdentifier("testDatePartitionColumn");
- String expectedResult;
-
- if (nodeType == NodeType.INSERT) {
- executeString("create table " + tableName + " (col1 int4, col2 int4)
partition by column(key date) ").close();
-
- assertTrue(catalog.existsTable(DEFAULT_DATABASE_NAME, tableName));
- assertEquals(2, catalog.getTableDesc(DEFAULT_DATABASE_NAME,
tableName).getSchema().size());
- assertEquals(3, catalog.getTableDesc(DEFAULT_DATABASE_NAME,
tableName).getLogicalSchema().size());
-
- executeString(
- "insert overwrite into " + tableName + " select l_orderkey,
l_partkey, l_shipdate from lineitem");
- } else {
- executeString(
- "create table " + tableName + "(col1 int4, col2 int4) partition by
column(key date) "
- + " as select l_orderkey, l_partkey, l_shipdate::date from
lineitem");
- }
-
- assertTrue(client.existTable(tableName));
-
- // LessThanOrEquals
- res = executeString("SELECT * FROM " + tableName + " WHERE key <= date
'1995-09-01' order by col1, col2, key");
-
- expectedResult = "col1,col2,key\n" +
- "-------------------------------\n" +
- "3,2,1994-02-02\n" +
- "3,3,1993-11-09\n";
-
- assertEquals(expectedResult, resultSetToString(res));
- res.close();
-
- // LessThan and GreaterThan
- res = executeString("SELECT * FROM " + tableName
- + " WHERE key > to_date('1993-01-01', 'YYYY-MM-DD') " +
- " and key < to_date('1996-01-01', 'YYYY-MM-DD') order by col1, col2,
key desc");
-
- expectedResult = "col1,col2,key\n" +
- "-------------------------------\n" +
- "3,2,1994-02-02\n" +
- "3,3,1993-11-09\n";
-
- assertEquals(expectedResult, resultSetToString(res));
- res.close();
-
- // Between
- res = executeString("SELECT * FROM " + tableName
- + " WHERE key between date '1993-01-01' and date '1997-01-01' order
by col1, col2, key desc");
-
- expectedResult = "col1,col2,key\n" +
- "-------------------------------\n" +
- "1,1,1996-04-12\n" +
- "1,1,1996-03-13\n" +
- "3,2,1994-02-02\n" +
- "3,3,1993-11-09\n";
-
- assertEquals(expectedResult, resultSetToString(res));
- res.close();
-
- // Cast
- res = executeString("SELECT * FROM " + tableName
- + " WHERE key > '1993-01-01'::date " +
- " and key < '1997-01-01'::timestamp order by col1, col2, key ");
-
- expectedResult = "col1,col2,key\n" +
- "-------------------------------\n" +
- "1,1,1996-03-13\n" +
- "1,1,1996-04-12\n" +
- "3,2,1994-02-02\n" +
- "3,3,1993-11-09\n";
-
- assertEquals(expectedResult, resultSetToString(res));
- res.close();
-
- // Interval
- res = executeString("SELECT * FROM " + tableName
- + " WHERE key > '1993-01-01'::date " +
- " and key < date '1994-01-01' + interval '1 year' order by col1,
col2, key ");
-
- expectedResult = "col1,col2,key\n" +
- "-------------------------------\n" +
- "3,2,1994-02-02\n" +
- "3,3,1993-11-09\n";
-
- assertEquals(expectedResult, resultSetToString(res));
- res.close();
-
- // DateTime Function #1
- res = executeString("SELECT * FROM " + tableName
- + " WHERE key > '1993-01-01'::date " +
- " and key < add_months(date '1994-01-01', 12) order by col1, col2,
key ");
-
- assertEquals(expectedResult, resultSetToString(res));
- res.close();
-
- // DateTime Function #2
- res = executeString("SELECT * FROM " + tableName
- + " WHERE key > '1993-01-01'::date " +
- " and key < add_months('1994-01-01'::timestamp, 12) order by col1,
col2, key ");
-
- assertEquals(expectedResult, resultSetToString(res));
- res.close();
-
- executeString("DROP TABLE " + tableName + " PURGE").close();
- res.close();
- }
-
- @Test
- public final void testTimestampPartitionColumn() throws Exception {
- ResultSet res = null;
- String tableName =
CatalogUtil.normalizeIdentifier("testTimestampPartitionColumn");
- String expectedResult;
-
- if (nodeType == NodeType.INSERT) {
- executeString("create table " + tableName
- + " (col1 int4, col2 int4) partition by column(key timestamp)
").close();
-
- assertTrue(catalog.existsTable(DEFAULT_DATABASE_NAME, tableName));
- assertEquals(2, catalog.getTableDesc(DEFAULT_DATABASE_NAME,
tableName).getSchema().size());
- assertEquals(3, catalog.getTableDesc(DEFAULT_DATABASE_NAME,
tableName).getLogicalSchema().size());
-
- executeString(
- "insert overwrite into " + tableName
- + " select l_orderkey, l_partkey, to_timestamp(l_shipdate,
'YYYY-MM-DD') from lineitem");
- } else {
- executeString(
- "create table " + tableName + "(col1 int4, col2 int4) partition by
column(key timestamp) "
- + " as select l_orderkey, l_partkey, to_timestamp(l_shipdate,
'YYYY-MM-DD') from lineitem");
- }
-
- assertTrue(client.existTable(tableName));
-
- // LessThanOrEquals
- res = executeString("SELECT * FROM " + tableName
- + " WHERE key <= to_timestamp('1995-09-01', 'YYYY-MM-DD') order by
col1, col2, key");
-
- expectedResult = "col1,col2,key\n" +
- "-------------------------------\n" +
- "3,2,1994-02-02 00:00:00\n" +
- "3,3,1993-11-09 00:00:00\n";
-
- assertEquals(expectedResult, resultSetToString(res));
- res.close();
-
- // LessThan and GreaterThan
- res = executeString("SELECT * FROM " + tableName
- + " WHERE key > to_timestamp('1993-01-01', 'YYYY-MM-DD') and " +
- "key < to_timestamp('1996-01-01', 'YYYY-MM-DD') order by col1, col2,
key desc");
-
- expectedResult = "col1,col2,key\n" +
- "-------------------------------\n" +
- "3,2,1994-02-02 00:00:00\n" +
- "3,3,1993-11-09 00:00:00\n";
-
- assertEquals(expectedResult, resultSetToString(res));
- res.close();
-
- // Between
- res = executeString("SELECT * FROM " + tableName
- + " WHERE key between to_timestamp('1993-01-01', 'YYYY-MM-DD') " +
- "and to_timestamp('1997-01-01', 'YYYY-MM-DD') order by col1, col2,
key desc");
-
- expectedResult = "col1,col2,key\n" +
- "-------------------------------\n" +
- "1,1,1996-04-12 00:00:00\n" +
- "1,1,1996-03-13 00:00:00\n" +
- "3,2,1994-02-02 00:00:00\n" +
- "3,3,1993-11-09 00:00:00\n";
-
- assertEquals(expectedResult, resultSetToString(res));
- res.close();
-
- executeString("DROP TABLE " + tableName + " PURGE").close();
- res.close();
- }
-
- @Test
- public final void testTimePartitionColumn() throws Exception {
- ResultSet res = null;
- String tableName =
CatalogUtil.normalizeIdentifier("testTimePartitionColumn");
- String expectedResult;
-
- if (nodeType == NodeType.INSERT) {
- executeString("create table " + tableName
- + " (col1 int4, col2 int4) partition by column(key time)
").close();
-
- assertTrue(catalog.existsTable(DEFAULT_DATABASE_NAME, tableName));
- assertEquals(2, catalog.getTableDesc(DEFAULT_DATABASE_NAME,
tableName).getSchema().size());
- assertEquals(3, catalog.getTableDesc(DEFAULT_DATABASE_NAME,
tableName).getLogicalSchema().size());
-
- executeString(
- "insert overwrite into " + tableName
- + " select l_orderkey, l_partkey " +
- " , CASE l_shipdate WHEN '1996-03-13' THEN cast ('11:20:40' as
time) " +
- " WHEN '1997-01-28' THEN cast ('12:10:20' as time) " +
- " WHEN '1994-02-02' THEN cast ('12:10:30' as time) " +
- " ELSE cast ('00:00:00' as time) END " +
- " from lineitem");
- } else {
- executeString(
- "create table " + tableName + "(col1 int4, col2 int4) partition by
column(key time) "
- + " as select l_orderkey, l_partkey " +
- " , CASE l_shipdate WHEN '1996-03-13' THEN cast ('11:20:40' as
time) " +
- " WHEN '1997-01-28' THEN cast ('12:10:20' as time) " +
- " WHEN '1994-02-02' THEN cast ('12:10:30' as time) " +
- " ELSE cast ('00:00:00' as time) END " +
- " from lineitem");
- }
-
- assertTrue(client.existTable(tableName));
- // LessThanOrEquals
- res = executeString("SELECT * FROM " + tableName
- + " WHERE key <= cast('12:10:20' as time) order by col1, col2, key");
-
- expectedResult = "col1,col2,key\n" +
- "-------------------------------\n" +
- "1,1,00:00:00\n" +
- "1,1,11:20:40\n" +
- "2,2,12:10:20\n" +
- "3,3,00:00:00\n";
-
- assertEquals(expectedResult, resultSetToString(res));
- res.close();
-
- // LessThan and GreaterThan
- res = executeString("SELECT * FROM " + tableName
- + " WHERE key > cast('00:00:00' as time) and " +
- "key < cast('12:10:00' as time) order by col1, col2, key desc");
-
- expectedResult = "col1,col2,key\n" +
- "-------------------------------\n" +
- "1,1,11:20:40\n";
-
- assertEquals(expectedResult, resultSetToString(res));
- res.close();
-
- // Between
- res = executeString("SELECT * FROM " + tableName
- + " WHERE key between cast('11:00:00' as time) " +
- "and cast('13:00:00' as time) order by col1, col2, key desc");
-
- expectedResult = "col1,col2,key\n" +
- "-------------------------------\n" +
- "1,1,11:20:40\n" +
- "2,2,12:10:20\n" +
- "3,2,12:10:30\n";
-
- assertEquals(expectedResult, resultSetToString(res));
- res.close();
-
- executeString("DROP TABLE " + tableName + " PURGE").close();
- res.close();
- }
-
- @Test
- public final void testDatabaseNameIncludeTableName() throws Exception {
- executeString("create database test_partition").close();
-
- String databaseName = "test_partition";
- String tableName = CatalogUtil.normalizeIdentifier("part");
-
- if (nodeType == NodeType.INSERT) {
- executeString(
- "create table " + databaseName + "." + tableName + " (col1 int4,
col2 int4) partition by column(key float8) ");
-
- assertTrue(catalog.existsTable(databaseName, tableName));
- assertEquals(2, catalog.getTableDesc(databaseName,
tableName).getSchema().size());
- assertEquals(3, catalog.getTableDesc(databaseName,
tableName).getLogicalSchema().size());
-
- executeString(
- "insert overwrite into " + databaseName + "." + tableName + "
select l_orderkey, l_partkey, " +
- "l_quantity from lineitem");
- } else {
- executeString(
- "create table "+ databaseName + "." + tableName + "(col1 int4,
col2 int4) partition by column(key float8) "
- + " as select l_orderkey, l_partkey, l_quantity from lineitem");
- }
-
- TableDesc tableDesc = catalog.getTableDesc(databaseName, tableName);
- verifyPartitionDirectoryFromCatalog(databaseName, tableName, new
String[]{"key"},
- tableDesc.getStats().getNumRows());
-
- ResultSet res = executeString("select * from " + databaseName + "." +
tableName + " ORDER BY key");
-
- String result = resultSetToString(res);
- String expectedResult = "col1,col2,key\n" +
- "-------------------------------\n" +
- "1,1,17.0\n" +
- "1,1,36.0\n" +
- "2,2,38.0\n" +
- "3,2,45.0\n" +
- "3,3,49.0\n";
- res.close();
- assertEquals(expectedResult, result);
-
- executeString("DROP TABLE " + databaseName + "." + tableName + "
PURGE").close();
- executeString("DROP database " + databaseName).close();
- }
-
- @Test
- public void testAbnormalDirectories() throws Exception {
+ public void testExternalTable() throws Exception {
--- End diff --
This test includes testing on managed tables as well as external tables.
Please change the name.
> Disable partition pruning using catalog temporarily.
> ----------------------------------------------------
>
> Key: TAJO-1926
> URL: https://issues.apache.org/jira/browse/TAJO-1926
> Project: Tajo
> Issue Type: Sub-task
> Components: Catalog, Physical Operator, Planner/Optimizer
> Affects Versions: 0.11.0, 0.12.0
> Reporter: Jaehwa Jung
> Assignee: Jaehwa Jung
> Priority: Critical
> Fix For: 0.11.0
>
>
> We disabled alter table add partition temporarily at TAJO-1887. But when
> adding partitions with dfs command for external partitioned table, there is
> no way to add partition to catalog. As a result, users can't scan their
> partitions which are added manually to file system. So, we need to disable
> partition pruning using catalog until implement TAJO-1891.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)