http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-core/src/test/java/org/apache/tajo/cli/tsql/TestTajoCliNegatives.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/java/org/apache/tajo/cli/tsql/TestTajoCliNegatives.java b/tajo-core/src/test/java/org/apache/tajo/cli/tsql/TestTajoCliNegatives.java new file mode 100644 index 0000000..edbeff6 --- /dev/null +++ b/tajo-core/src/test/java/org/apache/tajo/cli/tsql/TestTajoCliNegatives.java @@ -0,0 +1,146 @@ +/* + * 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.tajo.cli.tsql; + +import org.apache.hadoop.fs.Path; +import org.apache.tajo.ConfigKey; +import org.apache.tajo.QueryTestCaseBase; +import org.apache.tajo.SessionVars; +import org.apache.tajo.client.QueryStatus; +import org.apache.tajo.util.FileUtil; +import org.junit.*; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; + +import static org.junit.Assert.assertEquals; + +public class TestTajoCliNegatives extends QueryTestCaseBase { + private static TajoCli tajoCli; + private static ByteArrayOutputStream out; + + @BeforeClass + public static void setUp() throws Exception { + out = new ByteArrayOutputStream(); + tajoCli = new TajoCli(testingCluster.getConfiguration(), new String[]{}, System.in, out); + } + + @AfterClass + public static void tearDown() throws IOException { + out.close(); + if (tajoCli != null) { + tajoCli.close(); + } + } + + @Before + public void resetConsole() throws IOException { + out.reset(); + } + + public void assertMetaCommandFailures(String cmd) throws Exception { + Path resultFile = getResultFile(getMethodName() + ".result"); + String expected = FileUtil.readTextFile(new File(resultFile.toUri())); + + tajoCli.executeMetaCommand(cmd); + String consoleResult = new String(out.toByteArray()); + assertEquals(expected, consoleResult); + } + + public void assertMetaCommandFailure(String cmd, String expectedMsg) throws Exception { + tajoCli.executeMetaCommand(cmd); + String consoleResult = new String(out.toByteArray()); + assertEquals(expectedMsg, consoleResult); + } + + public void assertScriptFailure(String cmd) throws Exception { + Path resultFile = getResultFile(getMethodName() + ".result"); + String expected = FileUtil.readTextFile(new File(resultFile.toUri())); + + tajoCli.executeScript(cmd); + String consoleResult = new String(out.toByteArray()); + assertEquals(expected, consoleResult); + } + + public void assertScriptFailure(String cmd, String expectedMsg) throws Exception { + tajoCli.executeScript(cmd); + String consoleResult = new String(out.toByteArray()); + assertEquals(expectedMsg, consoleResult); + } + + @Test + public void testConnectDatabase() throws Exception { + assertMetaCommandFailure("\\c unknown_db", "ERROR: database 'unknown_db' does not exist"); + } + + @Test + public void testDescTable() throws Exception { + assertMetaCommandFailure("\\d unknown_table", "ERROR: relation 'unknown_table' does not exist\n"); + } + + @Test + public void testQueryVerification() throws Exception { + assertScriptFailure("select * from unknown_table", "ERROR: relation 'default.unknown_table' does not exist\n"); + } + + @Test + public void testQuerySyntax() throws Exception { + assertScriptFailure("select * from unknown-table"); + } + + private static void setVar(TajoCli cli, ConfigKey key, String val) throws Exception { + cli.executeMetaCommand("\\set " + key.keyname() + " " + val); + } + + public static class TajoCliOutputTestFormatter extends DefaultTajoCliOutputFormatter { + @Override + protected String getResponseTimeReadable(float responseTime) { + return ""; + } + @Override + public void printProgress(PrintWriter sout, QueryStatus status) { + //nothing to do + } + } + + @Test + public void testQueryNotImplementedFeature() throws Exception { + + try { + client.updateQuery("CREATE DATABASE TestTajoCliNegatives"); + client.updateQuery("CREATE TABLE TestTajoCliNegatives.table12u79 ( name RECORD(last TEXT, first TEXT) )"); + + assertScriptFailure("select name FROM TestTajoCliNegatives.table12u79", + "ERROR: not implemented feature: record field projection\n"); + + } finally { + client.updateQuery("DROP TABLE IF EXISTS TestTajoCliNegatives.table12u79"); + client.updateQuery("DROP DATABASE IF EXISTS TestTajoCliNegatives"); + } + } + + @Test + public void testQueryFailure() throws Exception { + setVar(tajoCli, SessionVars.CLI_FORMATTER_CLASS, TajoCliOutputTestFormatter.class.getName()); + assertScriptFailure("select fail(3, l_orderkey, 'testQueryFailure') from default.lineitem" , + "ERROR: No error message\n"); + } +}
http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-core/src/test/java/org/apache/tajo/client/TestCatalogAdminClientExceptions.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/java/org/apache/tajo/client/TestCatalogAdminClientExceptions.java b/tajo-core/src/test/java/org/apache/tajo/client/TestCatalogAdminClientExceptions.java new file mode 100644 index 0000000..a92af58 --- /dev/null +++ b/tajo-core/src/test/java/org/apache/tajo/client/TestCatalogAdminClientExceptions.java @@ -0,0 +1,103 @@ +/* + * 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.tajo.client; + +import org.apache.hadoop.fs.Path; +import org.apache.tajo.LocalTajoTestingUtility; +import org.apache.tajo.QueryTestCaseBase; +import org.apache.tajo.TajoTestingCluster; +import org.apache.tajo.TpchTestBase; +import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.TableMeta; +import org.apache.tajo.conf.TajoConf; +import org.apache.tajo.exception.*; +import org.apache.tajo.util.CommonTestingUtil; +import org.apache.tajo.util.KeyValueSet; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.net.URI; + +import static org.junit.Assert.assertFalse; + +public class TestCatalogAdminClientExceptions extends QueryTestCaseBase { + private static TajoTestingCluster cluster; + private static TajoClient client; + + @BeforeClass + public static void setUp() throws Exception { + cluster = TpchTestBase.getInstance().getTestingCluster(); + client = cluster.newTajoClient(); + } + + @AfterClass + public static void tearDown() throws Exception { + client.close(); + } + + @Test(expected = DuplicateDatabaseException.class) + public final void testCreateDatabase() throws TajoException { + client.createDatabase("default"); // duplicate database + } + + @Test + public final void testExistDatabase() { + assertFalse(client.existDatabase("unknown-database")); // unknown database + } + + @Test(expected = UndefinedDatabaseException.class) + public final void testDropDatabase() throws TajoException { + client.dropDatabase("unknown-database"); // unknown database + } + + @Test(expected = UnavailableTableLocationException.class) + public final void testCreateExternalTableUnavailableLocation() throws TajoException { + client.createExternalTable("table128237", new Schema(), URI.create("/tajo/test1bcd"), + new TableMeta("TEXT", new KeyValueSet())); + } + + @Test(expected = DuplicateTableException.class) + public final void testCreateExternalTableDuplicated() throws TajoException { + client.createExternalTable("default.lineitem", new Schema(), URI.create("/"), + new TableMeta("TEXT", new KeyValueSet())); + } + + @Test(expected = InsufficientPrivilegeException.class) + public final void testCreateExternalTableInsufficientPrivilege() throws TajoException { + Path p = TajoConf.getWarehouseDir(conf); + client.createExternalTable("information_schema.table1237891", new Schema(), p.toUri(), + new TableMeta("TEXT", new KeyValueSet())); + } + + @Test(expected = UndefinedTableException.class) + public final void testDropTableAbsent() throws UndefinedTableException, InsufficientPrivilegeException { + client.dropTable("unknown-table"); // unknown table + } + + @Test(expected = InsufficientPrivilegeException.class) + public final void testDropTableInsufficient() throws UndefinedTableException, InsufficientPrivilegeException { + client.dropTable("information_schema.tables"); // cannot be dropped + } + + @Test(expected = UndefinedTableException.class) + public final void testGetTableDesc() throws UndefinedTableException { + client.getTableDesc("unknown-table"); + } +} http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-core/src/test/java/org/apache/tajo/client/TestQueryClientExceptions.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/java/org/apache/tajo/client/TestQueryClientExceptions.java b/tajo-core/src/test/java/org/apache/tajo/client/TestQueryClientExceptions.java new file mode 100644 index 0000000..6b11846 --- /dev/null +++ b/tajo-core/src/test/java/org/apache/tajo/client/TestQueryClientExceptions.java @@ -0,0 +1,126 @@ +/** + * 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.tajo.client; + +import com.facebook.presto.hive.shaded.com.google.common.collect.Maps; +import net.jcip.annotations.NotThreadSafe; +import org.apache.tajo.LocalTajoTestingUtility; +import org.apache.tajo.QueryId; +import org.apache.tajo.TajoTestingCluster; +import org.apache.tajo.TpchTestBase; +import org.apache.tajo.error.Errors; +import org.apache.tajo.exception.*; +import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.ReturnState; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.util.Map; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; + +@NotThreadSafe +public class TestQueryClientExceptions { + private static TajoTestingCluster cluster; + private static TajoClient client; + + @BeforeClass + public static void setUp() throws Exception { + cluster = TpchTestBase.getInstance().getTestingCluster(); + client = cluster.newTajoClient(); + } + + @AfterClass + public static void tearDown() throws Exception { + client.close(); + } + + @Test + public void testExecuteQuery() { + // This is just an error propagation unit test. Specified SQL errors will be addressed in other unit tests. + ReturnState state = client.executeQuery("select * from unknown_table").getState(); + assertEquals(Errors.ResultCode.UNDEFINED_TABLE, state.getReturnCode()); + + state = client.executeQuery("create table default.lineitem (name int);").getState(); + assertEquals(Errors.ResultCode.DUPLICATE_TABLE, state.getReturnCode()); + } + + @Test(expected = DuplicateTableException.class) + public void testUpdateQuery() throws TajoException { + client.updateQuery("create table default.lineitem (name int);"); + } + + @Test(expected = UndefinedTableException.class) + public void testExecuteQueryAndGetResult() throws TajoException { + // This is just an error propagation unit test. Specified SQL errors will be addressed in other unit tests. + client.executeQueryAndGetResult("select * from unknown_table"); + } + + @Test + public void testCloseQuery() { + // absent query id + client.closeQuery(LocalTajoTestingUtility.newQueryId()); + client.closeNonForwardQuery(LocalTajoTestingUtility.newQueryId()); + } + + @Test(expected = UndefinedDatabaseException .class) + public void testSelectDatabase() throws UndefinedDatabaseException { + // absent database name + client.selectDatabase("unknown_db"); + } + + @Test(expected = NoSuchSessionVariableException.class) + public void testGetSessionVar() throws NoSuchSessionVariableException { + // absent session variable + client.getSessionVariable("unknown-var"); + } + + @Test(expected = QueryNotFoundException.class) + public void testGetQueryResult() throws TajoException { + // absent query id + client.getQueryResult(LocalTajoTestingUtility.newQueryId()); + } + + @Test(expected = QueryNotFoundException.class) + public void testGetResultResponse() throws TajoException { + // absent query id + client.getResultResponse(LocalTajoTestingUtility.newQueryId()); + } + + @Test(expected = QueryNotFoundException.class) + public void testFetchNextQueryResult() throws TajoException { + client.fetchNextQueryResult(LocalTajoTestingUtility.newQueryId(), 100); + } + + @Test(expected = QueryNotFoundException.class) + public void testKillQuery() throws QueryNotFoundException { + client.killQuery(LocalTajoTestingUtility.newQueryId()); + } + + @Test(expected = QueryNotFoundException.class) + public void testGetQueryInfo() throws QueryNotFoundException { + client.getQueryInfo(LocalTajoTestingUtility.newQueryId()); + } + + @Test(expected = QueryNotFoundException.class) + public void testGetQueryHistory() throws QueryNotFoundException { + client.getQueryHistory(LocalTajoTestingUtility.newQueryId()); + } +} http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-core/src/test/java/org/apache/tajo/client/TestTajoClient.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/java/org/apache/tajo/client/TestTajoClient.java b/tajo-core/src/test/java/org/apache/tajo/client/TestTajoClient.java index 0ba0d76..13e9de9 100644 --- a/tajo-core/src/test/java/org/apache/tajo/client/TestTajoClient.java +++ b/tajo-core/src/test/java/org/apache/tajo/client/TestTajoClient.java @@ -96,7 +96,7 @@ public class TestTajoClient { // test existence assertFalse(client.existDatabase(prefix + i)); - assertTrue(client.createDatabase(prefix + i)); + client.createDatabase(prefix + i); assertTrue(client.existDatabase(prefix + i)); // test allDatabaseNames @@ -108,7 +108,7 @@ public class TestTajoClient { for (int i = 0; i < 10; i++) { assertTrue(client.existDatabase(prefix + i)); assertTrue(client.getAllDatabaseNames().contains(prefix + i)); - assertTrue(client.dropDatabase(prefix + i)); + client.dropDatabase(prefix + i); assertFalse(client.existDatabase(prefix + i)); assertFalse(client.getAllDatabaseNames().contains(prefix + i)); } @@ -122,13 +122,13 @@ public class TestTajoClient { assertEquals(TajoConstants.DEFAULT_DATABASE_NAME, client.getCurrentDatabase()); String databaseName = CatalogUtil.normalizeIdentifier("testcurrentdatabase"); - assertTrue(client.createDatabase(databaseName)); + client.createDatabase(databaseName); assertEquals(currentNum + 1, client.getAllDatabaseNames().size()); assertEquals(TajoConstants.DEFAULT_DATABASE_NAME, client.getCurrentDatabase()); - assertTrue(client.selectDatabase(databaseName)); + client.selectDatabase(databaseName); assertEquals(databaseName, client.getCurrentDatabase()); - assertTrue(client.selectDatabase(TajoConstants.DEFAULT_DATABASE_NAME)); - assertTrue(client.dropDatabase(databaseName)); + client.selectDatabase(TajoConstants.DEFAULT_DATABASE_NAME); + client.dropDatabase(databaseName); assertEquals(currentNum, client.getAllDatabaseNames().size()); } @@ -139,7 +139,7 @@ public class TestTajoClient { assertFalse(client.existDatabase("invaliddatabase")); try { - assertTrue(client.selectDatabase("invaliddatabase")); + client.selectDatabase("invaliddatabase"); assertFalse(true); } catch (Throwable t) { assertFalse(false); @@ -152,8 +152,8 @@ public class TestTajoClient { public final void testDropCurrentDatabase() throws IOException, TajoException, InterruptedException { int currentNum = client.getAllDatabaseNames().size(); String databaseName = CatalogUtil.normalizeIdentifier("testdropcurrentdatabase"); - assertTrue(client.createDatabase(databaseName)); - assertTrue(client.selectDatabase(databaseName)); + client.createDatabase(databaseName); + client.selectDatabase(databaseName); assertEquals(databaseName, client.getCurrentDatabase()); try { @@ -163,8 +163,8 @@ public class TestTajoClient { assertFalse(false); } - assertTrue(client.selectDatabase(TajoConstants.DEFAULT_DATABASE_NAME)); - assertTrue(client.dropDatabase(databaseName)); + client.selectDatabase(TajoConstants.DEFAULT_DATABASE_NAME); + client.dropDatabase(databaseName); assertEquals(currentNum, client.getAllDatabaseNames().size()); } http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-core/src/test/java/org/apache/tajo/client/TestTajoClientFailures.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/java/org/apache/tajo/client/TestTajoClientFailures.java b/tajo-core/src/test/java/org/apache/tajo/client/TestTajoClientFailures.java deleted file mode 100644 index b745caa..0000000 --- a/tajo-core/src/test/java/org/apache/tajo/client/TestTajoClientFailures.java +++ /dev/null @@ -1,79 +0,0 @@ -/** - * 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.tajo.client; - -import net.jcip.annotations.NotThreadSafe; -import org.apache.tajo.TajoTestingCluster; -import org.apache.tajo.TpchTestBase; -import org.apache.tajo.catalog.exception.DuplicateDatabaseException; -import org.apache.tajo.catalog.exception.UndefinedDatabaseException; -import org.apache.tajo.catalog.exception.UndefinedTableException; -import org.apache.tajo.error.Errors; -import org.apache.tajo.exception.TajoException; -import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.ReturnState; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; - -import java.sql.SQLException; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; - -@NotThreadSafe -public class TestTajoClientFailures { - private static TajoTestingCluster cluster; - private static TajoClient client; - - @BeforeClass - public static void setUp() throws Exception { - cluster = TpchTestBase.getInstance().getTestingCluster(); - client = cluster.newTajoClient(); - } - - @AfterClass - public static void tearDown() throws Exception { - client.close(); - } - - @Test(expected = DuplicateDatabaseException.class) - public final void testCreateDatabase() throws TajoException { - assertFalse(client.createDatabase("default")); // duplicate database - } - - @Test(expected = UndefinedDatabaseException.class) - public final void testDropDatabase() throws TajoException { - assertFalse(client.dropDatabase("unknown-database")); // unknown database - } - - @Test(expected = UndefinedTableException.class) - public final void testDropTable() throws UndefinedTableException { - assertFalse(client.dropTable("unknown-table")); // unknown table - } - - @Test - public void testExecuteSQL() throws SQLException { - // This is just an error propagation unit test. Specified SQL errors will be addressed in other unit tests. - ReturnState state = client.executeQuery("select * from unknown_table").getState(); - assertEquals(Errors.ResultCode.UNDEFINED_TABLE, state.getReturnCode()); - - state = client.executeQuery("create table default.lineitem (name int);").getState(); - assertEquals(Errors.ResultCode.DUPLICATE_TABLE, state.getReturnCode()); - } -} http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-core/src/test/java/org/apache/tajo/client/v2/TestTajoClientV2.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/java/org/apache/tajo/client/v2/TestTajoClientV2.java b/tajo-core/src/test/java/org/apache/tajo/client/v2/TestTajoClientV2.java index 99b7c15..e1fca63 100644 --- a/tajo-core/src/test/java/org/apache/tajo/client/v2/TestTajoClientV2.java +++ b/tajo-core/src/test/java/org/apache/tajo/client/v2/TestTajoClientV2.java @@ -20,10 +20,7 @@ package org.apache.tajo.client.v2; import com.facebook.presto.hive.shaded.com.google.common.collect.Lists; import org.apache.tajo.QueryTestCaseBase; -import org.apache.tajo.catalog.exception.DuplicateDatabaseException; -import org.apache.tajo.catalog.exception.UndefinedDatabaseException; -import org.apache.tajo.catalog.exception.UndefinedTableException; -import org.apache.tajo.exception.TajoException; +import org.apache.tajo.exception.*; import org.apache.tajo.service.ServiceTracker; import org.apache.tajo.service.ServiceTrackerFactory; import org.junit.AfterClass; @@ -196,8 +193,8 @@ public class TestTajoClientV2 extends QueryTestCaseBase { resultContainer.get(0).close(); } - @Test(timeout = 10 * 1000) - public void testQueryFutureKill() throws TajoException, ExecutionException, InterruptedException, SQLException { + @Test(expected = QueryKilledException.class, timeout = 10 * 1000) + public void testQueryFutureKill() throws Throwable { QueryFuture future = clientv2.executeQueryAsync("select sleep(1) from lineitem where l_orderkey > 4"); assertTrue(future.isOk()); @@ -216,6 +213,14 @@ public class TestTajoClientV2 extends QueryTestCaseBase { assertFalse(future.isSuccessful()); assertFalse(future.isFailed()); assertTrue(future.isKilled()); + + try { + future.get(); + } catch (ExecutionException e) { + throw e.getCause(); + } finally { + future.release(); + } } @@ -233,4 +238,37 @@ public class TestTajoClientV2 extends QueryTestCaseBase { public void testErrorOnExecuteQueryAsync() throws TajoException { clientv2.executeQueryAsync("select * from unknown_table"); } + + @Test(expected = SQLSyntaxError.class) + public void testSyntaxErrorOnUpdateQuery() throws TajoException { + clientv2.executeUpdate("drap table unknown-table"); + } + + @Test(expected = SQLSyntaxError.class) + public void testSyntaxErrorOnExecuteQuery() throws TajoException { + clientv2.executeQuery("select fail(3, "); + } + + @Test(expected = SQLSyntaxError.class) + public void testSyntaxErrorOnExecuteQueryAsync() throws TajoException { + clientv2.executeQueryAsync("select fail(3, "); + } + + @Test(expected = QueryFailedException.class) + public void testFailedExecuteQuery() throws TajoException { + clientv2.executeQuery("select fail(3, l_orderkey, 'testQueryFailure') from default.lineitem"); + } + + @Test(expected = QueryFailedException.class) + public void testFailedExecuteQueryAsync() throws Throwable { + QueryFuture future = clientv2.executeQueryAsync( + "select fail(3, l_orderkey, 'testQueryFailure') from default.lineitem"); + try { + future.get(); + } catch (ExecutionException e) { + throw e.getCause(); + } finally { + future.release(); + } + } } http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-core/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java b/tajo-core/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java index c08ea87..8c31550 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java @@ -33,7 +33,6 @@ import org.apache.tajo.datum.DatumFactory; import org.apache.tajo.engine.function.FunctionLoader; import org.apache.tajo.engine.parser.SQLAnalyzer; import org.apache.tajo.engine.query.QueryContext; -import org.apache.tajo.exception.InternalException; import org.apache.tajo.exception.TajoException; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.LogicalPlanner; @@ -212,7 +211,7 @@ public class TestEvalTreeUtil { }; @Test - public final void testGetSchemaFromTargets() throws InternalException { + public final void testGetSchemaFromTargets() { Target [] targets = getRawTargets(QUERIES[0]); Schema schema = EvalTreeUtil.getSchemaByTargets(null, targets); Column col1 = schema.getColumn(0); http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java b/tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java index 684f0f2..fe51aa4 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java @@ -21,7 +21,7 @@ package org.apache.tajo.engine.eval; import org.apache.tajo.SessionVars; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Schema; -import org.apache.tajo.catalog.exception.UndefinedFunctionException; +import org.apache.tajo.exception.UndefinedFunctionException; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.datum.DatumFactory; import org.apache.tajo.datum.TimestampDatum; http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-core/src/test/java/org/apache/tajo/engine/function/TestConditionalExpressions.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/function/TestConditionalExpressions.java b/tajo-core/src/test/java/org/apache/tajo/engine/function/TestConditionalExpressions.java index 7e63bc1..c214f66 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/function/TestConditionalExpressions.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/function/TestConditionalExpressions.java @@ -20,7 +20,7 @@ package org.apache.tajo.engine.function; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Schema; -import org.apache.tajo.catalog.exception.UndefinedFunctionException; +import org.apache.tajo.exception.UndefinedFunctionException; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.engine.eval.ExprTestBase; import org.apache.tajo.exception.TajoException; http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-core/src/test/java/org/apache/tajo/engine/planner/physical/TestPhysicalPlanner.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/planner/physical/TestPhysicalPlanner.java b/tajo-core/src/test/java/org/apache/tajo/engine/planner/physical/TestPhysicalPlanner.java index 0d4e6a4..69b36c5 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/planner/physical/TestPhysicalPlanner.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/planner/physical/TestPhysicalPlanner.java @@ -41,7 +41,7 @@ import org.apache.tajo.engine.planner.enforce.Enforcer; import org.apache.tajo.engine.planner.global.DataChannel; import org.apache.tajo.engine.planner.global.MasterPlan; import org.apache.tajo.engine.query.QueryContext; -import org.apache.tajo.exception.TajoException; +import org.apache.tajo.exception.*; import org.apache.tajo.plan.LogicalOptimizer; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.LogicalPlanner; @@ -173,7 +173,8 @@ public class TestPhysicalPlanner { createLargeScoreTable(); } - public static void createLargeScoreTable() throws IOException { + public static void createLargeScoreTable() throws IOException, TajoException { + // Preparing a large table Path scoreLargePath = new Path(testDir, "score_large"); CommonTestingUtil.cleanupTestDir(scoreLargePath.toString()); http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-core/src/test/java/org/apache/tajo/engine/query/TestAlterTablespace.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestAlterTablespace.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestAlterTablespace.java index b0ec92d..8509b07 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestAlterTablespace.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestAlterTablespace.java @@ -37,7 +37,7 @@ public class TestAlterTablespace extends QueryTestCaseBase { ////////////////////////////////////////////////////////////////////////////// assertFalse(catalog.existTablespace("space1")); - assertTrue(catalog.createTablespace("space1", "hdfs://xxx.com/warehouse")); + catalog.createTablespace("space1", "hdfs://xxx.com/warehouse"); assertTrue(catalog.existTablespace("space1")); // pre verification @@ -52,7 +52,7 @@ public class TestAlterTablespace extends QueryTestCaseBase { assertEquals("space1", space1.getSpaceName()); assertEquals("hdfs://yyy.com/warehouse", space1.getUri()); - assertTrue(catalog.dropTablespace("space1")); + catalog.dropTablespace("space1"); assertFalse(catalog.existTablespace("space1")); } } http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-core/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java index 7adb237..3a17c7b 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java @@ -35,6 +35,9 @@ import org.apache.tajo.catalog.TableDesc; import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.conf.TajoConf; import org.apache.tajo.datum.TextDatum; +import org.apache.tajo.error.Errors; +import org.apache.tajo.error.Errors.ResultCode; +import org.apache.tajo.exception.TajoException; import org.apache.tajo.plan.expr.*; import org.apache.tajo.plan.logical.ScanNode; import org.apache.tajo.storage.StorageConstants; @@ -98,10 +101,9 @@ public class TestHBaseTable extends QueryTestCaseBase { public void testVerifyCreateHBaseTableRequiredMeta() throws Exception { try { executeString("CREATE TABLE hbase_mapped_table1 (col1 text, col2 text) TABLESPACE cluster1 USING hbase").close(); - fail("hbase table must have 'table' meta"); - } catch (Exception e) { - assertTrue(e.getMessage().indexOf("HBase mapped table") >= 0); + } catch (TajoException e) { + assertEquals(e.getErrorCode(), ResultCode.MISSING_TABLE_PROPERTY); } try { @@ -110,8 +112,8 @@ public class TestHBaseTable extends QueryTestCaseBase { "WITH ('table'='hbase_table')").close(); fail("hbase table must have 'columns' meta"); - } catch (Exception e) { - assertTrue(e.getMessage().indexOf("'columns' property is required") >= 0); + } catch (TajoException e) { + assertEquals(e.getErrorCode(), ResultCode.MISSING_TABLE_PROPERTY); } } @@ -152,7 +154,7 @@ public class TestHBaseTable extends QueryTestCaseBase { try { executeString(sql).close(); fail("External table should be a existed table."); - } catch (Exception e) { + } catch (Throwable e) { assertTrue(e.getMessage().indexOf("External table should be a existed table.") >= 0); } } @@ -1126,8 +1128,8 @@ public class TestHBaseTable extends QueryTestCaseBase { executeString("insert into hbase_mapped_table " + "select id, name from base_table ").close(); fail("If inserting data type different with target table data type, should throw exception"); - } catch (Exception e) { - assertTrue(e.getMessage().indexOf("is different column type with") >= 0); + } catch (TajoException e) { + assertEquals(ResultCode.DATATYPE_MISMATCH, e.getErrorCode()); } finally { executeString("DROP TABLE base_table PURGE").close(); executeString("DROP TABLE hbase_mapped_table PURGE").close(); http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java index 4fb2d31..2fddbfa 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java @@ -18,7 +18,6 @@ package org.apache.tajo.engine.query; -import com.google.protobuf.ServiceException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.fs.FileStatus; @@ -31,7 +30,6 @@ import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; import org.apache.tajo.catalog.TableDesc; import org.apache.tajo.catalog.TableMeta; -import org.apache.tajo.catalog.exception.UndefinedTableException; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.conf.TajoConf.ConfVars; import org.apache.tajo.datum.Datum; http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-core/src/test/java/org/apache/tajo/engine/query/TestTruncateTable.java ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestTruncateTable.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestTruncateTable.java index 1be21e4..3ae0c60 100644 --- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestTruncateTable.java +++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestTruncateTable.java @@ -18,23 +18,20 @@ package org.apache.tajo.engine.query; -import org.apache.tajo.IntegrationTest; import org.apache.tajo.QueryTestCaseBase; -import org.apache.tajo.TajoConstants; +import org.apache.tajo.exception.TajoException; import org.junit.Test; -import org.junit.experimental.categories.Category; import java.sql.ResultSet; +import java.sql.SQLException; import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; -@Category(IntegrationTest.class) + public class TestTruncateTable extends QueryTestCaseBase { - public TestTruncateTable() { - super(TajoConstants.DEFAULT_DATABASE_NAME); - } + @Test public final void testTruncateTable() throws Exception { try { @@ -66,7 +63,7 @@ public class TestTruncateTable extends QueryTestCaseBase { } @Test - public final void testTruncateExternalTable() throws Exception { + public final void testTruncateExternalTable() throws TajoException, SQLException { try { List<String> createdNames = executeDDL("table2_ddl.sql", "truncate_table2", "truncate_table2"); assertTableExists(createdNames.get(0)); @@ -80,7 +77,6 @@ public class TestTruncateTable extends QueryTestCaseBase { res.close(); executeString("truncate table truncate_table2"); - fail("Can't truncate external table"); } catch (Exception e) { // succeeded http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-core/src/test/resources/queries/TestTruncateTable/table1_ddl.sql ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/resources/queries/TestTruncateTable/table1_ddl.sql b/tajo-core/src/test/resources/queries/TestTruncateTable/table1_ddl.sql index dc67e75..b6196ec 100644 --- a/tajo-core/src/test/resources/queries/TestTruncateTable/table1_ddl.sql +++ b/tajo-core/src/test/resources/queries/TestTruncateTable/table1_ddl.sql @@ -1 +1 @@ -CREATE TABLE truncate_table1 AS SELECT * FROM lineitem; \ No newline at end of file +CREATE TABLE truncate_table1 AS SELECT * FROM default.lineitem; \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-core/src/test/resources/results/TestTajoCli/testAlterTableAddDropPartition.result ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/resources/results/TestTajoCli/testAlterTableAddDropPartition.result b/tajo-core/src/test/resources/results/TestTajoCli/testAlterTableAddDropPartition.result index b09f134..fdb620d 100644 --- a/tajo-core/src/test/resources/results/TestTajoCli/testAlterTableAddDropPartition.result +++ b/tajo-core/src/test/resources/results/TestTajoCli/testAlterTableAddDropPartition.result @@ -1,5 +1,5 @@ OK -ERROR: 'key2' column is not the partition key +ERROR: 'key2' column is not a partition key OK OK ERROR: partition 'key=0.1' does not exist http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-core/src/test/resources/results/TestTajoCliNegatives/testQueryFailure.result ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/resources/results/TestTajoCliNegatives/testQueryFailure.result b/tajo-core/src/test/resources/results/TestTajoCliNegatives/testQueryFailure.result new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-core/src/test/resources/results/TestTajoCliNegatives/testQuerySyntax.result ---------------------------------------------------------------------- diff --git a/tajo-core/src/test/resources/results/TestTajoCliNegatives/testQuerySyntax.result b/tajo-core/src/test/resources/results/TestTajoCliNegatives/testQuerySyntax.result new file mode 100644 index 0000000..86b0b59 --- /dev/null +++ b/tajo-core/src/test/resources/results/TestTajoCliNegatives/testQuerySyntax.result @@ -0,0 +1,3 @@ +ERROR: mismatched input '-' expecting {<EOF>, EXCEPT, GROUP, HAVING, INTERSECT, LIMIT, ORDER, UNION, WHERE, WINDOW, ';', ','} +LINE 1:21 select * from unknown-table + ^ http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/ExprAnnotator.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/ExprAnnotator.java b/tajo-plan/src/main/java/org/apache/tajo/plan/ExprAnnotator.java index bc6acbe..a44b526 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/ExprAnnotator.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/ExprAnnotator.java @@ -27,12 +27,12 @@ import org.apache.tajo.catalog.CatalogService; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.FunctionDesc; -import org.apache.tajo.catalog.exception.UndefinedFunctionException; +import org.apache.tajo.exception.UndefinedFunctionException; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.datum.*; import org.apache.tajo.exception.TajoException; import org.apache.tajo.exception.TajoInternalError; -import org.apache.tajo.exception.UnimplementedException; +import org.apache.tajo.exception.NotImplementedException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.plan.algebra.BaseAlgebraVisitor; import org.apache.tajo.plan.expr.*; @@ -53,6 +53,7 @@ import static org.apache.tajo.algebra.WindowSpec.WindowFrameStartBoundType; import static org.apache.tajo.catalog.proto.CatalogProtos.FunctionType; import static org.apache.tajo.common.TajoDataTypes.DataType; import static org.apache.tajo.common.TajoDataTypes.Type; +import static org.apache.tajo.function.FunctionUtil.buildSimpleFunctionSignature; import static org.apache.tajo.plan.logical.WindowSpec.*; import static org.apache.tajo.plan.verifier.SyntaxErrorUtil.makeSyntaxError; @@ -386,7 +387,7 @@ public class ExprAnnotator extends BaseAlgebraVisitor<ExprAnnotator.Context, Eva @Override public EvalNode visitExistsPredicate(Context ctx, Stack<Expr> stack, ExistsPredicate expr) throws TajoException { - throw new UnimplementedException("EXISTS clause"); + throw new NotImplementedException("EXISTS clause"); } /////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -573,7 +574,7 @@ public class ExprAnnotator extends BaseAlgebraVisitor<ExprAnnotator.Context, Eva stack.pop(); // <--- Pop if (!catalog.containFunction(expr.getSignature(), paramTypes)) { - throw new UndefinedFunctionException(expr.getSignature(), paramTypes); + throw new UndefinedFunctionException(buildSimpleFunctionSignature(expr.getSignature(), paramTypes)); } FunctionDesc funcDesc = catalog.getFunction(expr.getSignature(), paramTypes); @@ -623,7 +624,7 @@ public class ExprAnnotator extends BaseAlgebraVisitor<ExprAnnotator.Context, Eva FunctionDesc countRows = catalog.getFunction("count", FunctionType.AGGREGATION, new DataType[] {}); if (countRows == null) { - throw new UndefinedFunctionException(expr.getSignature(), new DataType[]{}); + throw new UndefinedFunctionException(buildSimpleFunctionSignature(expr.getSignature(), new DataType[]{})); } ctx.currentBlock.setAggregationRequire(); @@ -648,7 +649,7 @@ public class ExprAnnotator extends BaseAlgebraVisitor<ExprAnnotator.Context, Eva } if (!catalog.containFunction(setFunction.getSignature(), functionType, paramTypes)) { - throw new UndefinedFunctionException(setFunction.getSignature(), paramTypes); + throw new UndefinedFunctionException(buildSimpleFunctionSignature(setFunction.getSignature(), paramTypes)); } FunctionDesc funcDesc = catalog.getFunction(setFunction.getSignature(), functionType, paramTypes); @@ -737,7 +738,7 @@ public class ExprAnnotator extends BaseAlgebraVisitor<ExprAnnotator.Context, Eva } if (!catalog.containFunction(windowFunc.getSignature(), functionType, paramTypes)) { - throw new UndefinedFunctionException(funcName, paramTypes); + throw new UndefinedFunctionException(buildSimpleFunctionSignature(funcName, paramTypes)); } FunctionDesc funcDesc = catalog.getFunction(funcName, functionType, paramTypes); http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/ExprNormalizer.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/ExprNormalizer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/ExprNormalizer.java index c89f10a..ff7eabd 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/ExprNormalizer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/ExprNormalizer.java @@ -21,7 +21,7 @@ package org.apache.tajo.plan; import com.google.common.collect.Sets; import org.apache.tajo.algebra.*; import org.apache.tajo.catalog.CatalogUtil; -import org.apache.tajo.catalog.exception.UndefinedColumnException; +import org.apache.tajo.exception.UndefinedColumnException; import org.apache.tajo.exception.TajoException; import org.apache.tajo.plan.nameresolver.NameResolver; import org.apache.tajo.plan.nameresolver.NameResolvingMode; http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanPreprocessor.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanPreprocessor.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanPreprocessor.java index f3743ee..76907f2 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanPreprocessor.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanPreprocessor.java @@ -21,7 +21,7 @@ package org.apache.tajo.plan; import org.apache.tajo.SessionVars; import org.apache.tajo.algebra.*; import org.apache.tajo.catalog.*; -import org.apache.tajo.catalog.exception.UndefinedColumnException; +import org.apache.tajo.exception.UndefinedColumnException; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.exception.TajoException; import org.apache.tajo.plan.LogicalPlan.QueryBlock; http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java index b1d3e2e..9b114f1 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java @@ -35,8 +35,8 @@ import org.apache.tajo.SessionVars; import org.apache.tajo.algebra.*; import org.apache.tajo.algebra.WindowSpec; import org.apache.tajo.catalog.*; -import org.apache.tajo.catalog.exception.UndefinedColumnException; -import org.apache.tajo.catalog.exception.UndefinedTableException; +import org.apache.tajo.exception.UndefinedColumnException; +import org.apache.tajo.exception.UndefinedTableException; import org.apache.tajo.catalog.partition.PartitionMethodDesc; import org.apache.tajo.catalog.proto.CatalogProtos; import org.apache.tajo.catalog.proto.CatalogProtos.IndexMethod; @@ -46,7 +46,7 @@ import org.apache.tajo.datum.NullDatum; import org.apache.tajo.exception.ExceptionUtil; import org.apache.tajo.exception.TajoException; import org.apache.tajo.exception.TajoInternalError; -import org.apache.tajo.exception.UnimplementedException; +import org.apache.tajo.exception.NotImplementedException; import org.apache.tajo.plan.LogicalPlan.QueryBlock; import org.apache.tajo.plan.algebra.BaseAlgebraVisitor; import org.apache.tajo.plan.expr.*; @@ -553,7 +553,7 @@ public class LogicalPlanner extends BaseAlgebraVisitor<LogicalPlanner.PlanContex throws TajoException { for (Target t : projectable.getTargets()) { if (t.getEvalTree().getValueType().getType() == TajoDataTypes.Type.RECORD) { - throw new UnimplementedException("record field projection"); + throw new NotImplementedException("record field projection"); } } } @@ -2003,7 +2003,7 @@ public class LogicalPlanner extends BaseAlgebraVisitor<LogicalPlanner.PlanContex partitionMethodDesc = new PartitionMethodDesc(context.queryContext.get(SessionVars.CURRENT_DATABASE), tableName, CatalogProtos.PartitionType.COLUMN, partitionExpression, convertColumnsToSchema(partition.getColumns())); } else { - throw new UnimplementedException("partition type '" + expr.getPartitionType() + "'"); + throw new NotImplementedException("partition type '" + expr.getPartitionType() + "'"); } return partitionMethodDesc; } http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/TypeDeterminant.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/TypeDeterminant.java b/tajo-plan/src/main/java/org/apache/tajo/plan/TypeDeterminant.java index a526efc..dfa8079 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/TypeDeterminant.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/TypeDeterminant.java @@ -25,11 +25,12 @@ import org.apache.tajo.catalog.CatalogService; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.FunctionDesc; -import org.apache.tajo.catalog.exception.UndefinedFunctionException; +import org.apache.tajo.exception.UndefinedFunctionException; import org.apache.tajo.catalog.proto.CatalogProtos; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.exception.TajoException; import org.apache.tajo.exception.TajoInternalError; +import org.apache.tajo.function.FunctionUtil; import org.apache.tajo.plan.visitor.SimpleAlgebraVisitor; import java.util.Stack; @@ -37,6 +38,7 @@ import java.util.Stack; import static org.apache.tajo.common.TajoDataTypes.DataType; import static org.apache.tajo.common.TajoDataTypes.Type.BOOLEAN; import static org.apache.tajo.common.TajoDataTypes.Type.NULL_TYPE; +import static org.apache.tajo.function.FunctionUtil.buildSimpleFunctionSignature; public class TypeDeterminant extends SimpleAlgebraVisitor<LogicalPlanner.PlanContext, DataType> { private DataType BOOL_TYPE = CatalogUtil.newSimpleDataType(BOOLEAN); @@ -171,7 +173,7 @@ public class TypeDeterminant extends SimpleAlgebraVisitor<LogicalPlanner.PlanCon stack.pop(); // <--- Pop if (!catalog.containFunction(expr.getSignature(), paramTypes)) { - throw new UndefinedFunctionException(expr.getSignature(), paramTypes); + throw new UndefinedFunctionException(FunctionUtil.buildSimpleFunctionSignature(expr.getSignature(), paramTypes)); } FunctionDesc funcDesc = catalog.getFunction(expr.getSignature(), paramTypes); @@ -207,7 +209,7 @@ public class TypeDeterminant extends SimpleAlgebraVisitor<LogicalPlanner.PlanCon stack.pop(); // <-- pop if (!catalog.containFunction(setFunction.getSignature(), functionType, paramTypes)) { - throw new UndefinedFunctionException(setFunction.getSignature(), paramTypes); + throw new UndefinedFunctionException(buildSimpleFunctionSignature(setFunction.getSignature(), paramTypes)); } FunctionDesc funcDesc = catalog.getFunction(setFunction.getSignature(), functionType, paramTypes); @@ -257,7 +259,7 @@ public class TypeDeterminant extends SimpleAlgebraVisitor<LogicalPlanner.PlanCon } if (!catalog.containFunction(windowFunc.getSignature(), functionType, paramTypes)) { - throw new UndefinedFunctionException(funcName, paramTypes); + throw new UndefinedFunctionException(FunctionUtil.buildSimpleFunctionSignature(funcName, paramTypes)); } FunctionDesc funcDesc = catalog.getFunction(funcName, functionType, paramTypes); http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/expr/AggregationFunctionCallEval.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/AggregationFunctionCallEval.java b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/AggregationFunctionCallEval.java index 1c29a6d..3ff0065 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/AggregationFunctionCallEval.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/AggregationFunctionCallEval.java @@ -23,7 +23,6 @@ import org.apache.tajo.catalog.FunctionDesc; import org.apache.tajo.catalog.Schema; import org.apache.tajo.common.TajoDataTypes.DataType; import org.apache.tajo.datum.Datum; -import org.apache.tajo.exception.InternalException; import org.apache.tajo.plan.function.AggFunctionInvoke; import org.apache.tajo.plan.function.FunctionContext; import org.apache.tajo.plan.function.FunctionInvokeContext; @@ -45,11 +44,7 @@ public class AggregationFunctionCallEval extends FunctionEval implements Cloneab protected AggregationFunctionCallEval(EvalType type, FunctionDesc desc, EvalNode[] givenArgs) { super(type, desc, givenArgs); this.invokeContext = new FunctionInvokeContext(null, getParamType()); - try { - this.functionInvoke = AggFunctionInvoke.newInstance(funcDesc); - } catch (InternalException e) { - throw new RuntimeException(e); - } + this.functionInvoke = AggFunctionInvoke.newInstance(funcDesc); } public AggregationFunctionCallEval(FunctionDesc desc, EvalNode[] givenArgs) { http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalTreeUtil.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalTreeUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalTreeUtil.java index 7ff695b..51534e1 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalTreeUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalTreeUtil.java @@ -29,10 +29,10 @@ import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; import org.apache.tajo.common.TajoDataTypes.DataType; import org.apache.tajo.datum.Datum; -import org.apache.tajo.exception.InternalException; -import org.apache.tajo.plan.util.ExprFinder; +import org.apache.tajo.exception.TajoInternalError; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.Target; +import org.apache.tajo.plan.util.ExprFinder; import org.apache.tajo.util.TUtil; import java.util.*; @@ -144,8 +144,7 @@ public class EvalTreeUtil { return finder.getColumnRefs(); } - public static Schema getSchemaByTargets(Schema inputSchema, Target[] targets) - throws InternalException { + public static Schema getSchemaByTargets(Schema inputSchema, Target[] targets) { Schema schema = new Schema(); for (Target target : targets) { schema.addColumn( @@ -167,8 +166,7 @@ public class EvalTreeUtil { return sb.toString(); } - public static DataType getDomainByExpr(Schema inputSchema, EvalNode expr) - throws InternalException { + public static DataType getDomainByExpr(Schema inputSchema, EvalNode expr) { switch (expr.getType()) { case AND: case OR: @@ -192,8 +190,7 @@ public class EvalTreeUtil { default: - throw new InternalException("Unknown expr type: " - + expr.getType().toString()); + throw new TajoInternalError("Unknown expr type: " + expr.getType().toString()); } } http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/function/AggFunctionInvoke.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/function/AggFunctionInvoke.java b/tajo-plan/src/main/java/org/apache/tajo/plan/function/AggFunctionInvoke.java index 2c2afbe..4930938 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/function/AggFunctionInvoke.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/function/AggFunctionInvoke.java @@ -22,7 +22,6 @@ import com.google.gson.annotations.Expose; import org.apache.tajo.catalog.FunctionDesc; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.datum.Datum; -import org.apache.tajo.exception.InternalException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.storage.Tuple; @@ -35,7 +34,7 @@ public abstract class AggFunctionInvoke implements Cloneable { this.functionDesc = functionDesc; } - public static AggFunctionInvoke newInstance(FunctionDesc desc) throws InternalException { + public static AggFunctionInvoke newInstance(FunctionDesc desc) { // TODO: The below line is due to the bug in the function type. The type of class-based functions is not set properly. if (desc.getInvocation().hasLegacy()) { return new ClassBasedAggFunctionInvoke(desc); http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/function/ClassBasedAggFunctionInvoke.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/function/ClassBasedAggFunctionInvoke.java b/tajo-plan/src/main/java/org/apache/tajo/plan/function/ClassBasedAggFunctionInvoke.java index 6657871..7caaef0 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/function/ClassBasedAggFunctionInvoke.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/function/ClassBasedAggFunctionInvoke.java @@ -22,7 +22,6 @@ import com.google.gson.annotations.Expose; import org.apache.tajo.catalog.FunctionDesc; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.datum.Datum; -import org.apache.tajo.exception.InternalException; import org.apache.tajo.storage.Tuple; import java.io.IOException; @@ -33,7 +32,7 @@ import java.io.IOException; public class ClassBasedAggFunctionInvoke extends AggFunctionInvoke implements Cloneable { @Expose private AggFunction function; - public ClassBasedAggFunctionInvoke(FunctionDesc functionDesc) throws InternalException { + public ClassBasedAggFunctionInvoke(FunctionDesc functionDesc) { super(functionDesc); function = (AggFunction) functionDesc.newInstance(); } http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/function/ClassBasedScalarFunctionInvoke.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/function/ClassBasedScalarFunctionInvoke.java b/tajo-plan/src/main/java/org/apache/tajo/plan/function/ClassBasedScalarFunctionInvoke.java index c3f4ad9..fcdb261 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/function/ClassBasedScalarFunctionInvoke.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/function/ClassBasedScalarFunctionInvoke.java @@ -21,7 +21,6 @@ package org.apache.tajo.plan.function; import com.google.gson.annotations.Expose; import org.apache.tajo.catalog.FunctionDesc; import org.apache.tajo.datum.Datum; -import org.apache.tajo.exception.InternalException; import org.apache.tajo.storage.Tuple; import org.apache.tajo.util.TUtil; @@ -35,13 +34,13 @@ public class ClassBasedScalarFunctionInvoke extends FunctionInvoke implements Cl } - public ClassBasedScalarFunctionInvoke(FunctionDesc funcDesc) throws InternalException { + public ClassBasedScalarFunctionInvoke(FunctionDesc funcDesc) { super(funcDesc); function = (GeneralFunction) funcDesc.newInstance(); } @Override - public void setFunctionDesc(FunctionDesc desc) throws InternalException { + public void setFunctionDesc(FunctionDesc desc) { super.setFunctionDesc(desc); function = (GeneralFunction) functionDesc.newInstance(); } http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/function/FunctionInvoke.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/function/FunctionInvoke.java b/tajo-plan/src/main/java/org/apache/tajo/plan/function/FunctionInvoke.java index b8b5cfe..b591b0a 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/function/FunctionInvoke.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/function/FunctionInvoke.java @@ -21,7 +21,6 @@ package org.apache.tajo.plan.function; import com.google.gson.annotations.Expose; import org.apache.tajo.catalog.FunctionDesc; import org.apache.tajo.datum.Datum; -import org.apache.tajo.exception.InternalException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.storage.Tuple; @@ -42,7 +41,7 @@ public abstract class FunctionInvoke implements Cloneable { this.functionDesc = functionDesc; } - public static FunctionInvoke newInstance(FunctionDesc desc) throws InternalException { + public static FunctionInvoke newInstance(FunctionDesc desc) { if (desc.getInvocation().hasLegacy()) { return new ClassBasedScalarFunctionInvoke(desc); } else if (desc.getInvocation().hasPython()) { @@ -52,7 +51,7 @@ public abstract class FunctionInvoke implements Cloneable { } } - public void setFunctionDesc(FunctionDesc functionDesc) throws InternalException { + public void setFunctionDesc(FunctionDesc functionDesc) { this.functionDesc = functionDesc; } http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/NameResolver.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/NameResolver.java b/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/NameResolver.java index c346ce9..3eb51ba 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/NameResolver.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/NameResolver.java @@ -26,9 +26,9 @@ import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.NestedPathUtil; import org.apache.tajo.catalog.Schema; -import org.apache.tajo.catalog.exception.AmbiguousTableException; -import org.apache.tajo.catalog.exception.UndefinedColumnException; -import org.apache.tajo.catalog.exception.UndefinedTableException; +import org.apache.tajo.exception.AmbiguousTableException; +import org.apache.tajo.exception.UndefinedColumnException; +import org.apache.tajo.exception.UndefinedTableException; import org.apache.tajo.exception.AmbiguousColumnException; import org.apache.tajo.exception.TajoException; import org.apache.tajo.plan.LogicalPlan; http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByLegacy.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByLegacy.java b/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByLegacy.java index 3bbb2be..8991b60 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByLegacy.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByLegacy.java @@ -22,11 +22,10 @@ import org.apache.tajo.algebra.ColumnReferenceExpr; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; -import org.apache.tajo.catalog.exception.UndefinedColumnException; +import org.apache.tajo.exception.UndefinedColumnException; import org.apache.tajo.exception.AmbiguousColumnException; import org.apache.tajo.exception.TajoException; import org.apache.tajo.plan.LogicalPlan; -import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.logical.LogicalNode; import org.apache.tajo.plan.logical.NodeType; import org.apache.tajo.plan.logical.RelationNode; http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByRels.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByRels.java b/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByRels.java index aee131b..82fbc21 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByRels.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByRels.java @@ -20,12 +20,11 @@ package org.apache.tajo.plan.nameresolver; import org.apache.tajo.algebra.ColumnReferenceExpr; import org.apache.tajo.catalog.Column; -import org.apache.tajo.catalog.exception.AmbiguousTableException; -import org.apache.tajo.catalog.exception.UndefinedColumnException; -import org.apache.tajo.catalog.exception.UndefinedTableException; +import org.apache.tajo.exception.AmbiguousTableException; +import org.apache.tajo.exception.UndefinedColumnException; +import org.apache.tajo.exception.UndefinedTableException; import org.apache.tajo.exception.AmbiguousColumnException; import org.apache.tajo.plan.LogicalPlan; -import org.apache.tajo.plan.PlanningException; public class ResolverByRels extends NameResolver { @Override http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByRelsAndSubExprs.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByRelsAndSubExprs.java b/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByRelsAndSubExprs.java index 560ae50..4bfdaf6 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByRelsAndSubExprs.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverByRelsAndSubExprs.java @@ -20,12 +20,11 @@ package org.apache.tajo.plan.nameresolver; import org.apache.tajo.algebra.ColumnReferenceExpr; import org.apache.tajo.catalog.Column; -import org.apache.tajo.catalog.exception.AmbiguousTableException; -import org.apache.tajo.catalog.exception.UndefinedColumnException; -import org.apache.tajo.catalog.exception.UndefinedTableException; +import org.apache.tajo.exception.AmbiguousTableException; +import org.apache.tajo.exception.UndefinedColumnException; +import org.apache.tajo.exception.UndefinedTableException; import org.apache.tajo.exception.AmbiguousColumnException; import org.apache.tajo.plan.LogicalPlan; -import org.apache.tajo.plan.PlanningException; public class ResolverByRelsAndSubExprs extends NameResolver { @Override http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverBySubExprsAndRels.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverBySubExprsAndRels.java b/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverBySubExprsAndRels.java index 39458ec..ea291f4 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverBySubExprsAndRels.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/nameresolver/ResolverBySubExprsAndRels.java @@ -20,12 +20,11 @@ package org.apache.tajo.plan.nameresolver; import org.apache.tajo.algebra.ColumnReferenceExpr; import org.apache.tajo.catalog.Column; -import org.apache.tajo.catalog.exception.AmbiguousTableException; -import org.apache.tajo.catalog.exception.UndefinedColumnException; -import org.apache.tajo.catalog.exception.UndefinedTableException; +import org.apache.tajo.exception.AmbiguousTableException; +import org.apache.tajo.exception.UndefinedColumnException; +import org.apache.tajo.exception.UndefinedTableException; import org.apache.tajo.exception.AmbiguousColumnException; import org.apache.tajo.plan.LogicalPlan; -import org.apache.tajo.plan.PlanningException; public class ResolverBySubExprsAndRels extends NameResolver { @Override http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/ProjectionPushDownRule.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/ProjectionPushDownRule.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/ProjectionPushDownRule.java index 18e001e..a7cf85e 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/ProjectionPushDownRule.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/ProjectionPushDownRule.java @@ -26,7 +26,7 @@ import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; import org.apache.tajo.catalog.SchemaUtil; import org.apache.tajo.catalog.SortSpec; -import org.apache.tajo.catalog.exception.DuplicateColumnException; +import org.apache.tajo.exception.DuplicateColumnException; import org.apache.tajo.exception.TajoException; import org.apache.tajo.exception.TajoInternalError; import org.apache.tajo.plan.LogicalPlan; http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeDeserializer.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeDeserializer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeDeserializer.java index 73a07d5..3a1d257 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeDeserializer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeDeserializer.java @@ -27,21 +27,21 @@ import org.apache.tajo.algebra.WindowSpec.WindowFrameStartBoundType; import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.FunctionDesc; import org.apache.tajo.catalog.SortSpec; -import org.apache.tajo.catalog.exception.UndefinedFunctionException; +import org.apache.tajo.exception.UndefinedFunctionException; import org.apache.tajo.catalog.proto.CatalogProtos; import org.apache.tajo.catalog.proto.CatalogProtos.FunctionSignatureProto; import org.apache.tajo.common.TajoDataTypes.DataType; import org.apache.tajo.datum.*; -import org.apache.tajo.exception.InternalException; import org.apache.tajo.exception.TajoInternalError; import org.apache.tajo.plan.expr.*; import org.apache.tajo.plan.function.python.PythonScriptEngine; import org.apache.tajo.plan.logical.WindowSpec; import org.apache.tajo.plan.serder.PlanProto.WinFunctionEvalSpec; -import java.io.IOException; import java.util.*; +import static org.apache.tajo.function.FunctionUtil.buildSimpleFunctionSignature; + /** * It deserializes a serialized eval tree consisting of a number of EvalNodes. * @@ -238,7 +238,9 @@ public class EvalNodeDeserializer { parameterTypes = funcSignatureProto.getParameterTypesList().toArray( new DataType[funcSignatureProto.getParameterTypesCount()]); } - throw new TajoInternalError(new UndefinedFunctionException(functionName, parameterTypes)); + throw new TajoInternalError( + new UndefinedFunctionException(buildSimpleFunctionSignature(functionName, parameterTypes)) + ); } } else { throw new TajoInternalError("Unknown EvalType: " + type.name()); http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeDeserializer.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeDeserializer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeDeserializer.java index d298cc8..dad9893 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeDeserializer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeDeserializer.java @@ -30,7 +30,7 @@ import org.apache.tajo.catalog.SortSpec; import org.apache.tajo.catalog.TableDesc; import org.apache.tajo.catalog.partition.PartitionMethodDesc; import org.apache.tajo.catalog.proto.CatalogProtos; -import org.apache.tajo.exception.UnimplementedException; +import org.apache.tajo.exception.NotImplementedException; import org.apache.tajo.plan.Target; import org.apache.tajo.plan.expr.*; import org.apache.tajo.plan.logical.*; @@ -596,7 +596,7 @@ public class LogicalNodeDeserializer { alterTablespace.setLocation(alterTablespaceProto.getSetLocation().getLocation()); break; default: - throw new UnimplementedException("Unknown SET type in ALTER TABLE: " + alterTablespaceProto.getSetType().name()); + throw new NotImplementedException("Unknown SET type in ALTER TABLE: " + alterTablespaceProto.getSetType().name()); } return alterTablespace; @@ -645,7 +645,7 @@ public class LogicalNodeDeserializer { alterTable.setIfExists(alterPartition.getIfExists()); break; default: - throw new UnimplementedException("Unknown SET type in ALTER TABLE: " + alterTableProto.getSetType().name()); + throw new NotImplementedException("Unknown SET type in ALTER TABLE: " + alterTableProto.getSetType().name()); } return alterTable; http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeSerializer.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeSerializer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeSerializer.java index fe69fc1..ae74e30 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeSerializer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeSerializer.java @@ -23,10 +23,9 @@ import org.apache.hadoop.fs.Path; import org.apache.tajo.algebra.JoinType; import org.apache.tajo.catalog.SortSpec; import org.apache.tajo.catalog.proto.CatalogProtos; -import org.apache.tajo.catalog.proto.CatalogProtos.SortSpecProto; import org.apache.tajo.exception.TajoException; import org.apache.tajo.exception.TajoInternalError; -import org.apache.tajo.exception.UnimplementedException; +import org.apache.tajo.exception.NotImplementedException; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.Target; import org.apache.tajo.plan.logical.*; @@ -567,7 +566,7 @@ public class LogicalNodeSerializer extends BasicLogicalPlanVisitor<LogicalNodeSe break; default: - throw new UnimplementedException("Unknown SET type in ALTER TABLESPACE: " + node.getSetType().name()); + throw new NotImplementedException("Unknown SET type in ALTER TABLESPACE: " + node.getSetType().name()); } PlanProto.LogicalNode.Builder nodeBuilder = createNodeBuilder(context, node); @@ -632,7 +631,7 @@ public class LogicalNodeSerializer extends BasicLogicalPlanVisitor<LogicalNodeSe alterTableBuilder.setAlterPartition(partitionBuilder); break; default: - throw new UnimplementedException("Unknown SET type in ALTER TABLE: " + node.getAlterTableOpType().name()); + throw new NotImplementedException("Unknown SET type in ALTER TABLE: " + node.getAlterTableOpType().name()); } PlanProto.LogicalNode.Builder nodeBuilder = createNodeBuilder(context, node); http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java index 445dc8a..e4bf8bc 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java @@ -27,6 +27,7 @@ import org.apache.tajo.catalog.*; import org.apache.tajo.common.TajoDataTypes.DataType; import org.apache.tajo.exception.TajoException; import org.apache.tajo.exception.TajoInternalError; +import org.apache.tajo.exception.UndefinedTableException; import org.apache.tajo.plan.InvalidQueryException; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.Target; @@ -923,7 +924,7 @@ public class PlannerUtil { } } - public static TableDesc getTableDesc(CatalogService catalog, LogicalNode node) throws IOException { + public static TableDesc getTableDesc(CatalogService catalog, LogicalNode node) throws UndefinedTableException { if (node.getType() == NodeType.ROOT) { node = ((LogicalRootNode)node).getChild(); } http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/PreLogicalPlanVerifier.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/PreLogicalPlanVerifier.java b/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/PreLogicalPlanVerifier.java index cfdb005..0ff6aba 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/PreLogicalPlanVerifier.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/PreLogicalPlanVerifier.java @@ -26,14 +26,7 @@ import org.apache.tajo.algebra.*; import org.apache.tajo.catalog.CatalogService; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.TableDesc; -import org.apache.tajo.catalog.exception.CatalogExceptionUtil; -import org.apache.tajo.catalog.exception.DuplicateDatabaseException; -import org.apache.tajo.catalog.exception.UndefinedDatabaseException; -import org.apache.tajo.catalog.exception.UndefinedTableException; -import org.apache.tajo.exception.ExceptionUtil; -import org.apache.tajo.exception.TajoException; -import org.apache.tajo.exception.TajoInternalError; -import org.apache.tajo.plan.PlanningException; +import org.apache.tajo.exception.*; import org.apache.tajo.plan.algebra.BaseAlgebraVisitor; import org.apache.tajo.plan.util.ExprFinder; import org.apache.tajo.util.TUtil; @@ -43,7 +36,6 @@ import java.util.Collection; import java.util.Set; import java.util.Stack; -import static org.apache.tajo.catalog.exception.CatalogExceptionUtil.makeUndefinedTable; import static org.apache.tajo.plan.verifier.SyntaxErrorUtil.makeSyntaxError; public class PreLogicalPlanVerifier extends BaseAlgebraVisitor<PreLogicalPlanVerifier.Context, Expr> { @@ -162,7 +154,7 @@ public class PreLogicalPlanVerifier extends BaseAlgebraVisitor<PreLogicalPlanVer } if (!catalog.existsTable(qualifiedName)) { - context.state.addVerification(makeUndefinedTable(qualifiedName)); + context.state.addVerification(new UndefinedTableException(qualifiedName)); return false; } return true; @@ -180,7 +172,7 @@ public class PreLogicalPlanVerifier extends BaseAlgebraVisitor<PreLogicalPlanVer System.out.println("A"); } if (catalog.existsTable(qualifiedName)) { - context.state.addVerification(CatalogExceptionUtil.makeDuplicateTable(qualifiedName)); + context.state.addVerification(new DuplicateTableException(qualifiedName)); return false; } return true; http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/VerificationState.java ---------------------------------------------------------------------- diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/VerificationState.java b/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/VerificationState.java index fd16d11..8a6aea1 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/VerificationState.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/VerificationState.java @@ -23,7 +23,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.tajo.exception.TajoError; import org.apache.tajo.exception.TajoException; -import org.apache.tajo.exception.TajoExceptionInterface; import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.util.TUtil; http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/AbstractScanner.java ---------------------------------------------------------------------- diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/AbstractScanner.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/AbstractScanner.java index 07fe353..b57782c 100644 --- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/AbstractScanner.java +++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/AbstractScanner.java @@ -21,7 +21,7 @@ package org.apache.tajo.storage; import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; import org.apache.tajo.catalog.statistics.TableStats; -import org.apache.tajo.exception.UnimplementedException; +import org.apache.tajo.exception.NotImplementedException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.plan.expr.EvalNode; @@ -34,22 +34,22 @@ public abstract class AbstractScanner implements Scanner { @Override public void init() throws IOException { - throw new UnimplementedException(); + throw new NotImplementedException(); } @Override public void reset() throws IOException { - throw new UnimplementedException(); + throw new NotImplementedException(); } @Override public void close() throws IOException { - throw new UnimplementedException(); + throw new NotImplementedException(); } @Override public boolean isProjectable() { - throw new UnimplementedException(); + throw new NotImplementedException(); } @Override @@ -59,7 +59,7 @@ public abstract class AbstractScanner implements Scanner { @Override public boolean isSelectable() { - throw new UnimplementedException(); + throw new NotImplementedException(); } @Override @@ -69,21 +69,21 @@ public abstract class AbstractScanner implements Scanner { @Override public boolean isSplittable() { - throw new UnimplementedException(); + throw new NotImplementedException(); } @Override public float getProgress() { - throw new UnimplementedException(); + throw new NotImplementedException(); } @Override public TableStats getInputStats() { - throw new UnimplementedException(); + throw new NotImplementedException(); } @Override public Schema getSchema() { - throw new UnimplementedException(); + throw new NotImplementedException(); } } http://git-wip-us.apache.org/repos/asf/tajo/blob/903151ea/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/RowStoreUtil.java ---------------------------------------------------------------------- diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/RowStoreUtil.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/RowStoreUtil.java index bfe4e55..42c015e 100644 --- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/RowStoreUtil.java +++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/RowStoreUtil.java @@ -24,7 +24,7 @@ import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.datum.DatumFactory; import org.apache.tajo.datum.IntervalDatum; import org.apache.tajo.datum.ProtobufDatum; -import org.apache.tajo.exception.UnknownDataTypeException; +import org.apache.tajo.exception.UnsupportedDataTypeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.exception.ValueTooLongForTypeCharactersException; import org.apache.tajo.tuple.offheap.RowWriter; @@ -160,7 +160,7 @@ public class RowStoreUtil { // TODO - to be implemented throw new UnsupportedException(type.getType().name()); default: - throw new RuntimeException(new UnknownDataTypeException(type.getType().name())); + throw new RuntimeException(new UnsupportedDataTypeException(type.getType().name())); } } return tuple; @@ -261,7 +261,7 @@ public class RowStoreUtil { bb.put(tuple.getBytes(i)); break; default: - throw new RuntimeException(new UnknownDataTypeException(col.getDataType().getType().name())); + throw new RuntimeException(new UnsupportedDataTypeException(col.getDataType().getType().name())); } } @@ -322,7 +322,7 @@ public class RowStoreUtil { size += tuple.getBytes(i).length; break; default: - throw new RuntimeException(new UnknownDataTypeException(col.getDataType().getType().name())); + throw new RuntimeException(new UnsupportedDataTypeException(col.getDataType().getType().name())); } }
