From 75a92ce44a841d04e3bcd7d09cb27ad83a13c5e2 Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Wed, 19 Aug 2015 15:43:14 +0900 Subject: [PATCH 1/4] TAJO-1758: Some TajoRuntimeException should be restored as TajoException in client side. --- .../tajo/catalog/store/HiveCatalogStore.java | 18 +++++---- .../tajo/catalog/store/HiveCatalogUtil.java | 8 ++-- .../apache/tajo/exception/ExceptionUtil.java | 13 +++--- .../exception/InvalidDataTypeException.java | 1 - .../client/InvalidDataTypeException.java | 35 ++++++++++++++++ .../client/NotImplementedException.java | 40 +++++++++++++++++++ .../tajo/exception/client/SQLSyntaxError.java | 37 +++++++++++++++++ .../client/UnsupportedException.java | 39 ++++++++++++++++++ .../tajo/session/InvalidSessionException.java | 3 +- 9 files changed, 174 insertions(+), 20 deletions(-) create mode 100644 tajo-common/src/main/java/org/apache/tajo/exception/client/InvalidDataTypeException.java create mode 100644 tajo-common/src/main/java/org/apache/tajo/exception/client/NotImplementedException.java create mode 100644 tajo-common/src/main/java/org/apache/tajo/exception/client/SQLSyntaxError.java create mode 100644 tajo-common/src/main/java/org/apache/tajo/exception/client/UnsupportedException.java diff --git a/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogStore.java b/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogStore.java index b3e2b8e758..d625d6405c 100644 --- a/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogStore.java +++ b/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogStore.java @@ -190,7 +190,7 @@ public final CatalogProtos.TableDescProto getTable(String databaseName, final St } else if (ColumnarSerDe.class.getName().equals(serde)) { options.set(StorageConstants.RCFILE_SERDE, StorageConstants.DEFAULT_TEXT_SERDE); } - } else if (storeType.equals("SEQUENCEFILE") ) { + } else if (storeType.equals("SEQUENCEFILE")) { options.set(StorageConstants.SEQUENCEFILE_DELIMITER, StringEscapeUtils.escapeJava(fieldDelimiter)); options.set(StorageConstants.SEQUENCEFILE_NULL, StringEscapeUtils.escapeJava(nullFormat)); String serde = properties.getProperty(serdeConstants.SERIALIZATION_LIB); @@ -244,6 +244,8 @@ public final CatalogProtos.TableDescProto getTable(String databaseName, final St expressionSchema); } } + } catch (Throwable t) { + throw new TajoInternalError(t); } finally { if(client != null) client.release(); } @@ -780,7 +782,7 @@ public CatalogProtos.PartitionMethodProto getPartitionMethod(String databaseName FieldSchema fieldSchema = partitionKeys.get(i); TajoDataTypes.Type dataType = HiveCatalogUtil.getTajoFieldType(fieldSchema.getType().toString()); String fieldName = databaseName + CatalogConstants.IDENTIFIER_DELIMITER + tableName + - CatalogConstants.IDENTIFIER_DELIMITER + fieldSchema.getName(); + CatalogConstants.IDENTIFIER_DELIMITER + fieldSchema.getName(); expressionSchema.addColumn(new Column(fieldName, dataType)); if (i > 0) { sb.append(","); @@ -788,15 +790,17 @@ public CatalogProtos.PartitionMethodProto getPartitionMethod(String databaseName sb.append(fieldSchema.getName()); } partitionMethodDesc = new PartitionMethodDesc( - databaseName, - tableName, - PartitionType.COLUMN, - sb.toString(), - expressionSchema); + databaseName, + tableName, + PartitionType.COLUMN, + sb.toString(), + expressionSchema); } } else { throw new UndefinedPartitionMethodException(tableName); } + } catch (Throwable t) { + throw new TajoInternalError(t); } finally { if(client != null) client.release(); } diff --git a/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogUtil.java b/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogUtil.java index 7779b4f357..a8c2af988c 100644 --- a/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogUtil.java +++ b/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogUtil.java @@ -48,7 +48,7 @@ public static void validateSchema(Table tblSchema) { } } - public static TajoDataTypes.Type getTajoFieldType(String dataType) { + public static TajoDataTypes.Type getTajoFieldType(String dataType) throws LMDNoMatchedDatatypeException { Preconditions.checkNotNull(dataType); if(dataType.equalsIgnoreCase(serdeConstants.INT_TYPE_NAME)) { @@ -74,11 +74,11 @@ public static TajoDataTypes.Type getTajoFieldType(String dataType) { } else if(dataType.equalsIgnoreCase(serdeConstants.DATE_TYPE_NAME)) { return TajoDataTypes.Type.DATE; } else { - throw new TajoRuntimeException(new LMDNoMatchedDatatypeException(dataType)); + throw new LMDNoMatchedDatatypeException(dataType); } } - public static String getHiveFieldType(TajoDataTypes.DataType dataType) { + public static String getHiveFieldType(TajoDataTypes.DataType dataType) throws LMDNoMatchedDatatypeException { Preconditions.checkNotNull(dataType); switch (dataType.getType()) { @@ -100,7 +100,7 @@ public static String getHiveFieldType(TajoDataTypes.DataType dataType) { case DATE: return serdeConstants.DATE_TYPE_NAME; case TIMESTAMP: return serdeConstants.TIMESTAMP_TYPE_NAME; default: - throw ExceptionUtil.makeInvalidDataType(dataType); + throw new LMDNoMatchedDatatypeException(dataType.getType().name()); } } diff --git a/tajo-common/src/main/java/org/apache/tajo/exception/ExceptionUtil.java b/tajo-common/src/main/java/org/apache/tajo/exception/ExceptionUtil.java index 71dcfc4211..03cc0c600e 100644 --- a/tajo-common/src/main/java/org/apache/tajo/exception/ExceptionUtil.java +++ b/tajo-common/src/main/java/org/apache/tajo/exception/ExceptionUtil.java @@ -23,6 +23,8 @@ import org.apache.hadoop.util.StringUtils; import org.apache.tajo.common.TajoDataTypes.DataType; import org.apache.tajo.error.Errors; +import org.apache.tajo.exception.client.*; +import org.apache.tajo.exception.client.InvalidDataTypeException; import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.ReturnState; import java.lang.reflect.Constructor; @@ -39,15 +41,15 @@ public class ExceptionUtil { // General Errors ADD_EXCEPTION(INTERNAL_ERROR, TajoInternalError.class); - ADD_EXCEPTION(FEATURE_NOT_SUPPORTED, UnsupportedException.class); - ADD_EXCEPTION(NOT_IMPLEMENTED, NotImplementedException.class); + ADD_EXCEPTION(FEATURE_NOT_SUPPORTED, org.apache.tajo.exception.client.UnsupportedException.class); + ADD_EXCEPTION(NOT_IMPLEMENTED, org.apache.tajo.exception.client.NotImplementedException.class); // Query Management and Scheduler ADD_EXCEPTION(QUERY_NOT_FOUND, QueryNotFoundException.class); // Syntax Error or Access Rule Violation ADD_EXCEPTION(SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION, SQLSyntaxError.class); - ADD_EXCEPTION(SYNTAX_ERROR, SQLSyntaxError.class); + ADD_EXCEPTION(SYNTAX_ERROR, org.apache.tajo.exception.client.SQLSyntaxError.class); ADD_EXCEPTION(INSUFFICIENT_PRIVILEGE, InsufficientPrivilegeException.class); ADD_EXCEPTION(UNDEFINED_TABLESPACE, UndefinedTablespaceException.class); @@ -78,6 +80,7 @@ public class ExceptionUtil { ADD_EXCEPTION(UNAVAILABLE_TABLE_LOCATION, UnavailableTableLocationException.class); ADD_EXCEPTION(UNKNOWN_DATAFORMAT, UnknownDataFormatException.class); ADD_EXCEPTION(UNSUPPORTED_DATATYPE, UnsupportedDataTypeException.class); + ADD_EXCEPTION(INVALID_DATATYPE, InvalidDataTypeException.class); ADD_EXCEPTION(INVALID_TABLE_PROPERTY, InvalidTablePropertyException.class); ADD_EXCEPTION(MISSING_TABLE_PROPERTY, MissingTablePropertyException.class); } @@ -188,8 +191,4 @@ public static void printStackTraceIfError(Log log, Throwable t) { public static UnsupportedException makeNotSupported(String feature) { return new UnsupportedException(feature); } - - public static InvalidDataTypeException makeInvalidDataType(DataType dataType) { - return new InvalidDataTypeException(dataType); - } } diff --git a/tajo-common/src/main/java/org/apache/tajo/exception/InvalidDataTypeException.java b/tajo-common/src/main/java/org/apache/tajo/exception/InvalidDataTypeException.java index fd2f0de7b4..48206259e0 100644 --- a/tajo-common/src/main/java/org/apache/tajo/exception/InvalidDataTypeException.java +++ b/tajo-common/src/main/java/org/apache/tajo/exception/InvalidDataTypeException.java @@ -20,7 +20,6 @@ import org.apache.tajo.common.TajoDataTypes.DataType; import org.apache.tajo.error.Errors; -import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos; import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.ReturnState; public class InvalidDataTypeException extends TajoRuntimeException { diff --git a/tajo-common/src/main/java/org/apache/tajo/exception/client/InvalidDataTypeException.java b/tajo-common/src/main/java/org/apache/tajo/exception/client/InvalidDataTypeException.java new file mode 100644 index 0000000000..9e64399034 --- /dev/null +++ b/tajo-common/src/main/java/org/apache/tajo/exception/client/InvalidDataTypeException.java @@ -0,0 +1,35 @@ +/** + * 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.exception.client; + +import org.apache.tajo.common.TajoDataTypes.DataType; +import org.apache.tajo.error.Errors; +import org.apache.tajo.exception.TajoException; +import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.ReturnState; + +public class InvalidDataTypeException extends TajoException { + + public InvalidDataTypeException(ReturnState state) { + super(state); + } + + public InvalidDataTypeException(DataType dataType) { + super(Errors.ResultCode.INVALID_DATATYPE, dataType.getType().name()); + } +} diff --git a/tajo-common/src/main/java/org/apache/tajo/exception/client/NotImplementedException.java b/tajo-common/src/main/java/org/apache/tajo/exception/client/NotImplementedException.java new file mode 100644 index 0000000000..ebe70aad0c --- /dev/null +++ b/tajo-common/src/main/java/org/apache/tajo/exception/client/NotImplementedException.java @@ -0,0 +1,40 @@ +/** + * 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.exception.client; + +import org.apache.tajo.error.Errors; +import org.apache.tajo.exception.TajoException; +import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.ReturnState; + +public class NotImplementedException extends TajoException { + private static final long serialVersionUID = -5467580471721530536L; + + public NotImplementedException() { + super(Errors.ResultCode.NOT_IMPLEMENTED, + Thread.currentThread().getStackTrace()[1].getClassName()); + } + + public NotImplementedException(ReturnState state) { + super(state); + } + + public NotImplementedException(String featureName) { + super(Errors.ResultCode.NOT_IMPLEMENTED, featureName); + } +} diff --git a/tajo-common/src/main/java/org/apache/tajo/exception/client/SQLSyntaxError.java b/tajo-common/src/main/java/org/apache/tajo/exception/client/SQLSyntaxError.java new file mode 100644 index 0000000000..f30100ce82 --- /dev/null +++ b/tajo-common/src/main/java/org/apache/tajo/exception/client/SQLSyntaxError.java @@ -0,0 +1,37 @@ +/** + * 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.exception.client; + + +import org.apache.tajo.error.Errors; +import org.apache.tajo.exception.TajoException; +import org.apache.tajo.exception.TajoRuntimeException; +import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.ReturnState; + +public class SQLSyntaxError extends TajoException { + private static final long serialVersionUID = 5388279335175632067L; + + public SQLSyntaxError(ReturnState state) { + super(state); + } + + public SQLSyntaxError(String errorMessage) { + super(Errors.ResultCode.SYNTAX_ERROR, errorMessage); + } +} diff --git a/tajo-common/src/main/java/org/apache/tajo/exception/client/UnsupportedException.java b/tajo-common/src/main/java/org/apache/tajo/exception/client/UnsupportedException.java new file mode 100644 index 0000000000..16d0fec665 --- /dev/null +++ b/tajo-common/src/main/java/org/apache/tajo/exception/client/UnsupportedException.java @@ -0,0 +1,39 @@ +/** + * 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.exception.client; + +import org.apache.tajo.error.Errors; +import org.apache.tajo.exception.TajoException; +import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.ReturnState; + +public class UnsupportedException extends TajoException { + private static final long serialVersionUID = 6702291354858193578L; + + public UnsupportedException(ReturnState state) { + super(state); + } + + public UnsupportedException(String featureName) { + super(Errors.ResultCode.FEATURE_NOT_SUPPORTED, featureName); + } + + public UnsupportedException() { + super(Errors.ResultCode.FEATURE_NOT_SUPPORTED, Thread.currentThread().getStackTrace()[1].getClassName()); + } +} diff --git a/tajo-core/src/main/java/org/apache/tajo/session/InvalidSessionException.java b/tajo-core/src/main/java/org/apache/tajo/session/InvalidSessionException.java index 5aedffb17e..00085e56b1 100644 --- a/tajo-core/src/main/java/org/apache/tajo/session/InvalidSessionException.java +++ b/tajo-core/src/main/java/org/apache/tajo/session/InvalidSessionException.java @@ -19,9 +19,10 @@ package org.apache.tajo.session; import org.apache.tajo.error.Errors; +import org.apache.tajo.exception.TajoException; import org.apache.tajo.exception.TajoRuntimeException; -public class InvalidSessionException extends TajoRuntimeException { +public class InvalidSessionException extends TajoException { public InvalidSessionException(String sessionId) { super(Errors.ResultCode.INVALID_SESSION, sessionId); } From 669f4c6bdfb02b050f54f513bce55f95d943a499 Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Wed, 19 Aug 2015 18:32:13 +0900 Subject: [PATCH 2/4] TAJO-1758: Some TajoRuntimeException should be restored as TajoException in client side. --- .../tajo/catalog/store/HiveCatalogStore.java | 4 +- .../tajo/catalog/store/HiveCatalogUtil.java | 11 ++--- .../tajo/client/DummyServiceTracker.java | 11 ++--- .../org/apache/tajo/client/ResultSetUtil.java | 3 +- .../tajo/client/v2/LegacyClientDelegate.java | 20 +++++----- .../org/apache/tajo/storage/RowStoreUtil.java | 15 +++---- .../apache/tajo/exception/ExceptionUtil.java | 9 ++--- .../exception/InvalidDataTypeException.java | 2 +- .../exception/NotImplementedException.java | 2 +- .../apache/tajo/exception/SQLSyntaxError.java | 2 +- .../tajo/exception/TajoRuntimeException.java | 20 +++++----- .../UnsupportedDataTypeException.java | 2 +- .../tajo/exception/UnsupportedException.java | 10 ++--- .../client/InvalidDataTypeException.java | 35 ---------------- .../client/NotImplementedException.java | 40 ------------------- .../tajo/exception/client/SQLSyntaxError.java | 37 ----------------- .../client/UnsupportedException.java | 39 ------------------ .../java/org/apache/tajo/storage/VTuple.java | 5 ++- .../tajo/cli/tsql/TestTajoCliNegatives.java | 9 ----- .../engine/codegen/TajoGeneratorAdapter.java | 3 +- .../tajo/engine/parser/SQLAnalyzer.java | 13 +++--- .../engine/planner/global/GlobalPlanner.java | 2 +- .../planner/physical/ComparableVector.java | 6 ++- .../planner/physical/VectorizedSorter.java | 3 +- .../org/apache/tajo/master/GlobalEngine.java | 17 +++----- .../apache/tajo/master/exec/DDLExecutor.java | 6 ++- .../org/apache/tajo/jdbc/MetaDataTuple.java | 16 ++++---- .../tajo/plan/expr/BasicEvalNodeVisitor.java | 3 +- .../apache/tajo/plan/expr/SubqueryEval.java | 7 ++-- .../tajo/plan/function/AggFunctionInvoke.java | 3 +- .../tajo/plan/function/FunctionInvoke.java | 3 +- .../function/stream/CSVLineSerializer.java | 3 +- .../TextFieldSerializerDeserializer.java | 3 +- .../tajo/plan/logical/SetSessionNode.java | 5 ++- .../tajo/plan/nameresolver/NameResolver.java | 2 +- .../plan/serder/LogicalNodeDeserializer.java | 7 +++- .../plan/serder/LogicalNodeSerializer.java | 4 +- .../plan/verifier/LogicalPlanVerifier.java | 2 +- .../apache/tajo/storage/AbstractScanner.java | 23 ++++++----- .../org/apache/tajo/storage/FrameTuple.java | 17 ++++---- .../org/apache/tajo/storage/LazyTuple.java | 3 +- .../org/apache/tajo/storage/MergeScanner.java | 3 +- .../org/apache/tajo/storage/NullScanner.java | 3 +- .../org/apache/tajo/storage/RowStoreUtil.java | 17 ++++---- .../org/apache/tajo/storage/Tablespace.java | 3 +- .../apache/tajo/tuple/offheap/HeapTuple.java | 9 +++-- .../tajo/tuple/offheap/UnSafeTuple.java | 9 +++-- .../tajo/storage/hbase/HBaseScanner.java | 2 +- .../java/org/apache/tajo/storage/RawFile.java | 3 +- .../java/org/apache/tajo/storage/RowFile.java | 3 +- .../apache/tajo/storage/avro/AvroScanner.java | 3 +- .../storage/json/JsonLineDeserializer.java | 4 +- .../tajo/storage/json/JsonLineSerializer.java | 4 +- .../apache/tajo/storage/orc/ORCScanner.java | 6 +-- .../tajo/storage/parquet/ParquetScanner.java | 3 +- .../apache/tajo/storage/rcfile/RCFile.java | 3 +- .../sequencefile/SequenceFileScanner.java | 3 +- .../storage/text/DelimitedLineReader.java | 6 ++- .../tajo/storage/text/DelimitedTextFile.java | 3 +- 59 files changed, 195 insertions(+), 319 deletions(-) delete mode 100644 tajo-common/src/main/java/org/apache/tajo/exception/client/InvalidDataTypeException.java delete mode 100644 tajo-common/src/main/java/org/apache/tajo/exception/client/NotImplementedException.java delete mode 100644 tajo-common/src/main/java/org/apache/tajo/exception/client/SQLSyntaxError.java delete mode 100644 tajo-common/src/main/java/org/apache/tajo/exception/client/UnsupportedException.java diff --git a/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogStore.java b/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogStore.java index d625d6405c..2b03fec48b 100644 --- a/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogStore.java +++ b/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogStore.java @@ -316,7 +316,7 @@ public TablespaceProto getTablespace(String spaceName) { builder.setUri(defaultTableSpaceUri); return builder.build(); } else { - throw new UnsupportedException("Tablespace in HiveMeta"); + throw new TajoRuntimeException(new UnsupportedException("Tablespace in HiveMeta")); } } @@ -327,7 +327,7 @@ public void updateTableStats(CatalogProtos.UpdateTableStatsProto statsProto) { @Override public void alterTablespace(CatalogProtos.AlterTablespaceProto alterProto) { - throw new UnsupportedException("Tablespace in HiveMeta"); + throw new TajoRuntimeException(new UnsupportedException("Tablespace in HiveMeta")); } @Override diff --git a/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogUtil.java b/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogUtil.java index a8c2af988c..67a1488143 100644 --- a/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogUtil.java +++ b/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogUtil.java @@ -28,10 +28,7 @@ import org.apache.tajo.BuiltinStorages; import org.apache.tajo.catalog.proto.CatalogProtos; import org.apache.tajo.common.TajoDataTypes; -import org.apache.tajo.exception.ExceptionUtil; -import org.apache.tajo.exception.LMDNoMatchedDatatypeException; -import org.apache.tajo.exception.TajoException; -import org.apache.tajo.exception.TajoRuntimeException; +import org.apache.tajo.exception.*; import org.apache.thrift.TException; import parquet.hadoop.mapred.DeprecatedParquetOutputFormat; @@ -43,7 +40,7 @@ public static void validateSchema(Table tblSchema) { String fieldType = fieldSchema.getType(); if (fieldType.equalsIgnoreCase("ARRAY") || fieldType.equalsIgnoreCase("STRUCT") || fieldType.equalsIgnoreCase("MAP")) { - throw makeNotSupported(fieldType.toUpperCase()); + throw new TajoRuntimeException(new UnsupportedException("data type '" + fieldType.toUpperCase() + "'")); } } } @@ -109,7 +106,7 @@ public static String getStoreType(String fileFormat) { String[] fileFormatArrary = fileFormat.split("\\."); if(fileFormatArrary.length < 1) { - throw makeNotSupported(fileFormat); + throw new TajoRuntimeException(new UnknownDataFormatException(fileFormat)); } String outputFormatClass = fileFormatArrary[fileFormatArrary.length-1]; @@ -122,7 +119,7 @@ public static String getStoreType(String fileFormat) { } else if(outputFormatClass.equals(DeprecatedParquetOutputFormat.class.getSimpleName())) { return CatalogProtos.StoreType.PARQUET.name(); } else { - throw makeNotSupported(fileFormat); + throw new TajoRuntimeException(new UnknownDataFormatException(fileFormat)); } } diff --git a/tajo-client/src/main/java/org/apache/tajo/client/DummyServiceTracker.java b/tajo-client/src/main/java/org/apache/tajo/client/DummyServiceTracker.java index cf826ea285..fb2ba0c445 100644 --- a/tajo-client/src/main/java/org/apache/tajo/client/DummyServiceTracker.java +++ b/tajo-client/src/main/java/org/apache/tajo/client/DummyServiceTracker.java @@ -19,6 +19,7 @@ package org.apache.tajo.client; import org.apache.tajo.conf.TajoConf; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.service.ServiceTracker; import org.apache.tajo.service.ServiceTrackerException; @@ -43,7 +44,7 @@ public boolean isHighAvailable() { @Override public InetSocketAddress getUmbilicalAddress() { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override @@ -53,17 +54,17 @@ public InetSocketAddress getClientServiceAddress() { @Override public InetSocketAddress getResourceTrackerAddress() { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override public InetSocketAddress getCatalogAddress() { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override public InetSocketAddress getMasterHttpInfo() throws ServiceTrackerException { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override @@ -96,6 +97,6 @@ public boolean isActiveMaster() { @Override public List getMasters() throws IOException { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } } diff --git a/tajo-client/src/main/java/org/apache/tajo/client/ResultSetUtil.java b/tajo-client/src/main/java/org/apache/tajo/client/ResultSetUtil.java index 9211a1b851..7f4746c743 100644 --- a/tajo-client/src/main/java/org/apache/tajo/client/ResultSetUtil.java +++ b/tajo-client/src/main/java/org/apache/tajo/client/ResultSetUtil.java @@ -19,6 +19,7 @@ package org.apache.tajo.client; import org.apache.tajo.common.TajoDataTypes; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import java.sql.ResultSet; @@ -84,7 +85,7 @@ public static String toSqlType(TajoDataTypes.DataType type) { case TEXT: return "varchar"; default: - throw new UnsupportedException("Unrecognized column type:" + type); + throw new TajoRuntimeException(new UnsupportedException("unknown data type '" + type.getType().name() + "'")); } } diff --git a/tajo-client/src/main/java/org/apache/tajo/client/v2/LegacyClientDelegate.java b/tajo-client/src/main/java/org/apache/tajo/client/v2/LegacyClientDelegate.java index 12f8812cb8..42edadf35b 100644 --- a/tajo-client/src/main/java/org/apache/tajo/client/v2/LegacyClientDelegate.java +++ b/tajo-client/src/main/java/org/apache/tajo/client/v2/LegacyClientDelegate.java @@ -434,52 +434,52 @@ public InetSocketAddress getClientServiceAddress() throws ServiceTrackerExceptio @Override public InetSocketAddress getResourceTrackerAddress() throws ServiceTrackerException { - throw new NotImplementedException(); + throw new TajoRuntimeException(new NotImplementedException()); } @Override public InetSocketAddress getCatalogAddress() throws ServiceTrackerException { - throw new NotImplementedException(); + throw new TajoRuntimeException(new NotImplementedException()); } @Override public InetSocketAddress getMasterHttpInfo() throws ServiceTrackerException { - throw new NotImplementedException(); + throw new TajoRuntimeException(new NotImplementedException()); } @Override public int getState(String masterName, TajoConf conf) throws ServiceTrackerException { - throw new NotImplementedException(); + throw new TajoRuntimeException(new NotImplementedException()); } @Override public int formatHA(TajoConf conf) throws ServiceTrackerException { - throw new NotImplementedException(); + throw new TajoRuntimeException(new NotImplementedException()); } @Override public List getMasters(TajoConf conf) throws ServiceTrackerException { - throw new NotImplementedException(); + throw new TajoRuntimeException(new NotImplementedException()); } @Override public void register() throws IOException { - throw new NotImplementedException(); + throw new TajoRuntimeException(new NotImplementedException()); } @Override public void delete() throws IOException { - throw new NotImplementedException(); + throw new TajoRuntimeException(new NotImplementedException()); } @Override public boolean isActiveMaster() { - throw new NotImplementedException(); + throw new TajoRuntimeException(new NotImplementedException()); } @Override public List getMasters() throws IOException { - throw new NotImplementedException(); + throw new TajoRuntimeException(new NotImplementedException()); } } diff --git a/tajo-client/src/main/java/org/apache/tajo/storage/RowStoreUtil.java b/tajo-client/src/main/java/org/apache/tajo/storage/RowStoreUtil.java index 13b02015b6..4c7fe0a91e 100644 --- a/tajo-client/src/main/java/org/apache/tajo/storage/RowStoreUtil.java +++ b/tajo-client/src/main/java/org/apache/tajo/storage/RowStoreUtil.java @@ -23,7 +23,7 @@ import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.datum.DatumFactory; import org.apache.tajo.datum.IntervalDatum; -import org.apache.tajo.exception.UnsupportedDataTypeException; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.exception.ValueTooLongForTypeCharactersException; import org.apache.tajo.util.BitArray; @@ -153,11 +153,10 @@ public Tuple toTuple(byte [] bytes) { bb.get(_ipv4); tuple.put(i, DatumFactory.createInet4(_ipv4)); break; - case INET6: - // TODO - to be implemented - throw new UnsupportedException(type.getType().name()); + default: - throw new RuntimeException(new UnsupportedDataTypeException(type.getType().name())); + throw new TajoRuntimeException( + new UnsupportedException("data type '" + col.getDataType().getType().name() + "'")); } } return tuple; @@ -258,7 +257,8 @@ public byte[] toBytes(Tuple tuple) { bb.put(tuple.getBytes(i)); break; default: - throw new RuntimeException(new UnsupportedDataTypeException(col.getDataType().getType().name())); + throw new TajoRuntimeException( + new UnsupportedException("data type '" + col.getDataType().getType().name() + "'")); } } @@ -319,7 +319,8 @@ private int estimateTupleDataSize(Tuple tuple) { size += tuple.getBytes(i).length; break; default: - throw new RuntimeException(new UnsupportedDataTypeException(col.getDataType().getType().name())); + throw new TajoRuntimeException( + new UnsupportedException("data type '" + col.getDataType().getType().name() + "'")); } } diff --git a/tajo-common/src/main/java/org/apache/tajo/exception/ExceptionUtil.java b/tajo-common/src/main/java/org/apache/tajo/exception/ExceptionUtil.java index 03cc0c600e..73a03cb0e9 100644 --- a/tajo-common/src/main/java/org/apache/tajo/exception/ExceptionUtil.java +++ b/tajo-common/src/main/java/org/apache/tajo/exception/ExceptionUtil.java @@ -21,10 +21,7 @@ import com.google.common.collect.Maps; import org.apache.commons.logging.Log; import org.apache.hadoop.util.StringUtils; -import org.apache.tajo.common.TajoDataTypes.DataType; import org.apache.tajo.error.Errors; -import org.apache.tajo.exception.client.*; -import org.apache.tajo.exception.client.InvalidDataTypeException; import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.ReturnState; import java.lang.reflect.Constructor; @@ -41,15 +38,15 @@ public class ExceptionUtil { // General Errors ADD_EXCEPTION(INTERNAL_ERROR, TajoInternalError.class); - ADD_EXCEPTION(FEATURE_NOT_SUPPORTED, org.apache.tajo.exception.client.UnsupportedException.class); - ADD_EXCEPTION(NOT_IMPLEMENTED, org.apache.tajo.exception.client.NotImplementedException.class); + ADD_EXCEPTION(FEATURE_NOT_SUPPORTED, UnsupportedException.class); + ADD_EXCEPTION(NOT_IMPLEMENTED, NotImplementedException.class); // Query Management and Scheduler ADD_EXCEPTION(QUERY_NOT_FOUND, QueryNotFoundException.class); // Syntax Error or Access Rule Violation ADD_EXCEPTION(SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION, SQLSyntaxError.class); - ADD_EXCEPTION(SYNTAX_ERROR, org.apache.tajo.exception.client.SQLSyntaxError.class); + ADD_EXCEPTION(SYNTAX_ERROR, SQLSyntaxError.class); ADD_EXCEPTION(INSUFFICIENT_PRIVILEGE, InsufficientPrivilegeException.class); ADD_EXCEPTION(UNDEFINED_TABLESPACE, UndefinedTablespaceException.class); diff --git a/tajo-common/src/main/java/org/apache/tajo/exception/InvalidDataTypeException.java b/tajo-common/src/main/java/org/apache/tajo/exception/InvalidDataTypeException.java index 48206259e0..d231762d8d 100644 --- a/tajo-common/src/main/java/org/apache/tajo/exception/InvalidDataTypeException.java +++ b/tajo-common/src/main/java/org/apache/tajo/exception/InvalidDataTypeException.java @@ -22,7 +22,7 @@ import org.apache.tajo.error.Errors; import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.ReturnState; -public class InvalidDataTypeException extends TajoRuntimeException { +public class InvalidDataTypeException extends TajoException { public InvalidDataTypeException(ReturnState state) { super(state); diff --git a/tajo-common/src/main/java/org/apache/tajo/exception/NotImplementedException.java b/tajo-common/src/main/java/org/apache/tajo/exception/NotImplementedException.java index 822eea15c4..3ba6739e1b 100644 --- a/tajo-common/src/main/java/org/apache/tajo/exception/NotImplementedException.java +++ b/tajo-common/src/main/java/org/apache/tajo/exception/NotImplementedException.java @@ -21,7 +21,7 @@ import org.apache.tajo.error.Errors; import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.ReturnState; -public class NotImplementedException extends TajoRuntimeException { +public class NotImplementedException extends TajoException { private static final long serialVersionUID = -5467580471721530536L; public NotImplementedException() { diff --git a/tajo-common/src/main/java/org/apache/tajo/exception/SQLSyntaxError.java b/tajo-common/src/main/java/org/apache/tajo/exception/SQLSyntaxError.java index 512ba361fc..886032196d 100644 --- a/tajo-common/src/main/java/org/apache/tajo/exception/SQLSyntaxError.java +++ b/tajo-common/src/main/java/org/apache/tajo/exception/SQLSyntaxError.java @@ -22,7 +22,7 @@ import org.apache.tajo.error.Errors; import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.ReturnState; -public class SQLSyntaxError extends TajoRuntimeException { +public class SQLSyntaxError extends TajoException { private static final long serialVersionUID = 5388279335175632067L; public SQLSyntaxError(ReturnState state) { diff --git a/tajo-common/src/main/java/org/apache/tajo/exception/TajoRuntimeException.java b/tajo-common/src/main/java/org/apache/tajo/exception/TajoRuntimeException.java index 071efa065c..300f677a79 100644 --- a/tajo-common/src/main/java/org/apache/tajo/exception/TajoRuntimeException.java +++ b/tajo-common/src/main/java/org/apache/tajo/exception/TajoRuntimeException.java @@ -22,7 +22,7 @@ import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.ReturnState; /** - * It is used in unexpected cases or error that we know the cause. + * This is an runtime exception container to enclose a TajoException, an actual cause. * * @see @{link TajoException} */ @@ -30,22 +30,24 @@ public class TajoRuntimeException extends RuntimeException implements DefaultTaj private ResultCode code; public TajoRuntimeException(ReturnState state) { - super(state.getMessage()); + super(ExceptionUtil.toTajoException(state)); this.code = state.getReturnCode(); } - public TajoRuntimeException(ResultCode code) { - super(ErrorMessages.getMessage(code)); - this.code = code; - } - public TajoRuntimeException(ResultCode code, String ... args) { - super(ErrorMessages.getMessage(code, args)); + super( + ExceptionUtil.toTajoException( + ReturnState.newBuilder() + .setReturnCode(code) + .setMessage(ErrorMessages.getMessage(code, args)) + .build() + ) + ); this.code = code; } public TajoRuntimeException(TajoException e) { - super(e.getMessage()); + super(e); this.code = e.getErrorCode(); } diff --git a/tajo-common/src/main/java/org/apache/tajo/exception/UnsupportedDataTypeException.java b/tajo-common/src/main/java/org/apache/tajo/exception/UnsupportedDataTypeException.java index 65ec7772a6..b45199b0a1 100644 --- a/tajo-common/src/main/java/org/apache/tajo/exception/UnsupportedDataTypeException.java +++ b/tajo-common/src/main/java/org/apache/tajo/exception/UnsupportedDataTypeException.java @@ -30,6 +30,6 @@ public UnsupportedDataTypeException(ReturnState state) { } public UnsupportedDataTypeException(String dataType) { - super(Errors.ResultCode.UNKNOWN_DATAFORMAT, dataType); + super(Errors.ResultCode.UNSUPPORTED_DATATYPE, dataType); } } diff --git a/tajo-common/src/main/java/org/apache/tajo/exception/UnsupportedException.java b/tajo-common/src/main/java/org/apache/tajo/exception/UnsupportedException.java index a7a3915de0..6b98d9c50e 100644 --- a/tajo-common/src/main/java/org/apache/tajo/exception/UnsupportedException.java +++ b/tajo-common/src/main/java/org/apache/tajo/exception/UnsupportedException.java @@ -21,18 +21,18 @@ import org.apache.tajo.error.Errors; import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.ReturnState; -public class UnsupportedException extends TajoRuntimeException { +public class UnsupportedException extends TajoException { private static final long serialVersionUID = 6702291354858193578L; public UnsupportedException(ReturnState state) { super(state); } - public UnsupportedException(String featureName) { - super(Errors.ResultCode.FEATURE_NOT_SUPPORTED, featureName); - } - public UnsupportedException() { super(Errors.ResultCode.FEATURE_NOT_SUPPORTED, Thread.currentThread().getStackTrace()[1].getClassName()); } + + public UnsupportedException(String featureName) { + super(Errors.ResultCode.FEATURE_NOT_SUPPORTED, featureName); + } } diff --git a/tajo-common/src/main/java/org/apache/tajo/exception/client/InvalidDataTypeException.java b/tajo-common/src/main/java/org/apache/tajo/exception/client/InvalidDataTypeException.java deleted file mode 100644 index 9e64399034..0000000000 --- a/tajo-common/src/main/java/org/apache/tajo/exception/client/InvalidDataTypeException.java +++ /dev/null @@ -1,35 +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.exception.client; - -import org.apache.tajo.common.TajoDataTypes.DataType; -import org.apache.tajo.error.Errors; -import org.apache.tajo.exception.TajoException; -import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.ReturnState; - -public class InvalidDataTypeException extends TajoException { - - public InvalidDataTypeException(ReturnState state) { - super(state); - } - - public InvalidDataTypeException(DataType dataType) { - super(Errors.ResultCode.INVALID_DATATYPE, dataType.getType().name()); - } -} diff --git a/tajo-common/src/main/java/org/apache/tajo/exception/client/NotImplementedException.java b/tajo-common/src/main/java/org/apache/tajo/exception/client/NotImplementedException.java deleted file mode 100644 index ebe70aad0c..0000000000 --- a/tajo-common/src/main/java/org/apache/tajo/exception/client/NotImplementedException.java +++ /dev/null @@ -1,40 +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.exception.client; - -import org.apache.tajo.error.Errors; -import org.apache.tajo.exception.TajoException; -import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.ReturnState; - -public class NotImplementedException extends TajoException { - private static final long serialVersionUID = -5467580471721530536L; - - public NotImplementedException() { - super(Errors.ResultCode.NOT_IMPLEMENTED, - Thread.currentThread().getStackTrace()[1].getClassName()); - } - - public NotImplementedException(ReturnState state) { - super(state); - } - - public NotImplementedException(String featureName) { - super(Errors.ResultCode.NOT_IMPLEMENTED, featureName); - } -} diff --git a/tajo-common/src/main/java/org/apache/tajo/exception/client/SQLSyntaxError.java b/tajo-common/src/main/java/org/apache/tajo/exception/client/SQLSyntaxError.java deleted file mode 100644 index f30100ce82..0000000000 --- a/tajo-common/src/main/java/org/apache/tajo/exception/client/SQLSyntaxError.java +++ /dev/null @@ -1,37 +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.exception.client; - - -import org.apache.tajo.error.Errors; -import org.apache.tajo.exception.TajoException; -import org.apache.tajo.exception.TajoRuntimeException; -import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.ReturnState; - -public class SQLSyntaxError extends TajoException { - private static final long serialVersionUID = 5388279335175632067L; - - public SQLSyntaxError(ReturnState state) { - super(state); - } - - public SQLSyntaxError(String errorMessage) { - super(Errors.ResultCode.SYNTAX_ERROR, errorMessage); - } -} diff --git a/tajo-common/src/main/java/org/apache/tajo/exception/client/UnsupportedException.java b/tajo-common/src/main/java/org/apache/tajo/exception/client/UnsupportedException.java deleted file mode 100644 index 16d0fec665..0000000000 --- a/tajo-common/src/main/java/org/apache/tajo/exception/client/UnsupportedException.java +++ /dev/null @@ -1,39 +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.exception.client; - -import org.apache.tajo.error.Errors; -import org.apache.tajo.exception.TajoException; -import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.ReturnState; - -public class UnsupportedException extends TajoException { - private static final long serialVersionUID = 6702291354858193578L; - - public UnsupportedException(ReturnState state) { - super(state); - } - - public UnsupportedException(String featureName) { - super(Errors.ResultCode.FEATURE_NOT_SUPPORTED, featureName); - } - - public UnsupportedException() { - super(Errors.ResultCode.FEATURE_NOT_SUPPORTED, Thread.currentThread().getStackTrace()[1].getClassName()); - } -} diff --git a/tajo-common/src/main/java/org/apache/tajo/storage/VTuple.java b/tajo-common/src/main/java/org/apache/tajo/storage/VTuple.java index 90bb7fa39e..e8d0b05eb0 100644 --- a/tajo-common/src/main/java/org/apache/tajo/storage/VTuple.java +++ b/tajo-common/src/main/java/org/apache/tajo/storage/VTuple.java @@ -25,6 +25,7 @@ import org.apache.tajo.datum.IntervalDatum; import org.apache.tajo.datum.ProtobufDatum; import org.apache.tajo.exception.NotImplementedException; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.util.datetime.TimeMeta; import java.net.InetAddress; @@ -185,11 +186,11 @@ public Inet4Datum getIPv4(int fieldId) { } public InetAddress getIPv6(int fieldId) { - throw new NotImplementedException("IPv6 is unsupported yet"); + throw new TajoRuntimeException(new NotImplementedException()); } public byte[] getIPv6Bytes(int fieldId) { - throw new NotImplementedException("IPv6 is unsupported yet"); + throw new TajoRuntimeException(new NotImplementedException()); } @Override diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCliNegatives.java b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCliNegatives.java index edbeff6c8a..c593859ea0 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCliNegatives.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCliNegatives.java @@ -56,15 +56,6 @@ 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()); diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/codegen/TajoGeneratorAdapter.java b/tajo-core/src/main/java/org/apache/tajo/engine/codegen/TajoGeneratorAdapter.java index 8c45fae74b..2fdafa0710 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/codegen/TajoGeneratorAdapter.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/codegen/TajoGeneratorAdapter.java @@ -23,6 +23,7 @@ import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.datum.*; import org.apache.tajo.exception.InvalidCastException; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.org.objectweb.asm.Label; import org.apache.tajo.org.objectweb.asm.MethodVisitor; @@ -620,7 +621,7 @@ public void convertToPrimitive(TajoDataTypes.DataType type) { invokeVirtual(Datum.class, "asChars", String.class, new Class[]{}); break; default: - throw new UnsupportedException("Unsupported type: " + type); + throw new TajoRuntimeException(new UnsupportedException("data type '" + type + "'")); } pushNullFlag(true); diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java b/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java index 6d00dded7f..246a366c35 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java @@ -32,6 +32,7 @@ import org.apache.tajo.algebra.Sort.SortSpec; import org.apache.tajo.engine.parser.SQLParser.*; import org.apache.tajo.exception.SQLSyntaxError; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.storage.StorageConstants; import org.apache.tajo.util.StringUtils; @@ -60,7 +61,7 @@ public Expr parse(String sql) { parser.addErrorListener(new SQLErrorListener()); context = parser.sql(); } catch (SQLParseError e) { - throw new SQLSyntaxError(e.getMessage()); + throw new TajoRuntimeException(new SQLSyntaxError(e.getMessage())); } return visitSql(context); } @@ -113,7 +114,7 @@ public Expr visitSession_statement(@NotNull SQLParser.Session_statementContext c return new SetSession(SessionVars.TIMEZONE.name(), value); } else { - throw new SQLSyntaxError("Unsupported session statement"); + throw new TajoRuntimeException(new SQLSyntaxError("Unsupported session statement")); } } @@ -1016,7 +1017,7 @@ public Expr visitPattern_matching_predicate(SQLParser.Pattern_matching_predicate } else if (checkIfExist(matcher.REGEXP()) || checkIfExist(matcher.RLIKE())) { return new PatternMatchPredicate(OpType.Regexp, not, predicand, pattern); } else { - throw new SQLSyntaxError("Unsupported predicate: " + matcher.getText()); + throw new TajoRuntimeException(new SQLSyntaxError("Unsupported predicate: " + matcher.getText())); } } else if (checkIfExist(ctx.pattern_matcher().regex_matcher())) { Regex_matcherContext matcher = ctx.pattern_matcher().regex_matcher(); @@ -1029,10 +1030,10 @@ public Expr visitPattern_matching_predicate(SQLParser.Pattern_matching_predicate } else if (checkIfExist(matcher.Not_Similar_To_Case_Insensitive())) { return new PatternMatchPredicate(OpType.Regexp, true, predicand, pattern, true); } else { - throw new SQLSyntaxError("Unsupported predicate: " + matcher.getText()); + throw new TajoRuntimeException(new SQLSyntaxError("Unsupported predicate: " + matcher.getText())); } } else { - throw new SQLSyntaxError("Unsupported predicate: " + ctx.pattern_matcher().getText()); + throw new TajoRuntimeException(new SQLSyntaxError("Unsupported predicate: " + ctx.pattern_matcher().getText())); } } @@ -1413,7 +1414,7 @@ public PartitionMethodDescExpr parseTablePartitioningClause(SQLParser.Table_part } else if (checkIfExist(ctx.column_partitions())) { // For Column Partition (Hive Style) return new CreateTable.ColumnPartition(getDefinitions(ctx.column_partitions().table_elements())); } else { - throw new SQLSyntaxError("Invalid Partition Type: " + ctx.toStringTree()); + throw new TajoRuntimeException(new SQLSyntaxError("Invalid Partition Type: " + ctx.toStringTree())); } } diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/GlobalPlanner.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/GlobalPlanner.java index b10dd1bc1c..8c6aa8c520 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/GlobalPlanner.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/GlobalPlanner.java @@ -474,7 +474,7 @@ private RewrittenFunctions rewriteAggFunctionsForDistinctAggregation(GlobalPlanC rewritten.secondStageEvals = createMinFunction(new EvalNode[]{fieldEval}); } else { - throw new UnsupportedException("Cannot support a mix of other functions"); + throw new UnsupportedException("a mix of other functions"); } return rewritten; diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/ComparableVector.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/ComparableVector.java index a298564f9a..7f398503bc 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/ComparableVector.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/ComparableVector.java @@ -32,6 +32,7 @@ import org.apache.tajo.datum.DatumFactory; import org.apache.tajo.datum.NullDatum; import org.apache.tajo.datum.TextDatum; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.storage.Tuple; import org.apache.tajo.storage.VTuple; @@ -356,9 +357,10 @@ private static int vectorType(TajoDataTypes.Type type) { case TEXT: case CHAR: case BLOB: return 7; case INET4: return 8; case NULL_TYPE: return -1; + default: + throw new TajoRuntimeException(new UnsupportedException("data type '" + type.name() + "'")); } - // todo - throw new UnsupportedException(type.name()); + } private static TupleType[] tupleTypes(Schema schema, int[] keyIndex) { diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/VectorizedSorter.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/VectorizedSorter.java index d750f15786..82f7153a2a 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/VectorizedSorter.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/VectorizedSorter.java @@ -21,6 +21,7 @@ import org.apache.hadoop.util.IndexedSortable; import org.apache.hadoop.util.QuickSort; import org.apache.tajo.catalog.SortSpec; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.storage.Tuple; @@ -68,7 +69,7 @@ public Iterator iterator() { int index; public boolean hasNext() { return index < mappings.length; } public Tuple next() { return tuples[mappings[index++]]; } - public void remove() { throw new UnsupportedException(); } + public void remove() { throw new TajoRuntimeException(new UnsupportedException()); } }; } }; diff --git a/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java b/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java index f1f1e3e6d7..3e94083b1d 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java @@ -36,12 +36,8 @@ import org.apache.tajo.catalog.TableDesc; import org.apache.tajo.conf.TajoConf; import org.apache.tajo.engine.parser.SQLAnalyzer; -import org.apache.tajo.exception.SQLSyntaxError; +import org.apache.tajo.exception.*; import org.apache.tajo.engine.query.QueryContext; -import org.apache.tajo.exception.ExceptionUtil; -import org.apache.tajo.exception.ReturnStateUtil; -import org.apache.tajo.exception.TajoException; -import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.master.TajoMaster.MasterContext; import org.apache.tajo.master.exec.DDLExecutor; import org.apache.tajo.master.exec.QueryExecutor; @@ -215,19 +211,18 @@ public Expr buildExpressionFromJson(String json) { return JsonHelper.fromJson(json, Expr.class); } - public Expr buildExpressionFromSql(String sql, Session session) throws InterruptedException, IOException, - IllegalQueryStatusException { + public Expr buildExpressionFromSql(String sql, Session session) throws TajoException { try { if (session.getQueryCache() == null) { return analyzer.parse(sql); } else { return (Expr) session.getQueryCache().get(sql.trim()).clone(); } - } catch (Exception e) { - if (e.getCause() instanceof SQLSyntaxError) { - throw (SQLSyntaxError) e.getCause(); + } catch (Throwable t) { + if (t instanceof TajoRuntimeException) { + throw (TajoException)t.getCause(); } else { - throw new SQLSyntaxError(e.getCause().getMessage()); + throw new TajoInternalError(t); } } } diff --git a/tajo-core/src/main/java/org/apache/tajo/master/exec/DDLExecutor.java b/tajo-core/src/main/java/org/apache/tajo/master/exec/DDLExecutor.java index f7e2fe99e8..09bef448de 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/exec/DDLExecutor.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/DDLExecutor.java @@ -359,7 +359,8 @@ public void truncateTable(final QueryContext queryContext, final TruncateTableNo TableDesc tableDesc = catalog.getTableDesc(databaseName, simpleTableName); if (tableDesc.isExternal()) { - throw new UnsupportedException("table truncation on an external table '" + eachTableName + "'"); + throw new TajoRuntimeException( + new UnsupportedException("table truncation on an external table '" + eachTableName + "'")); } Tablespace space = TablespaceManager.get(tableDesc.getUri()).get(); @@ -367,7 +368,8 @@ public void truncateTable(final QueryContext queryContext, final TruncateTableNo if (space instanceof FileTablespace) { tableDescList.add(tableDesc); } else { - throw new UnsupportedException("table truncation on " + space.getName() + " storage"); + throw new TajoRuntimeException( + new UnsupportedException("table truncation on " + space.getName() + " storage")); } } diff --git a/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/MetaDataTuple.java b/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/MetaDataTuple.java index 28b6b3c63c..bd078f6532 100644 --- a/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/MetaDataTuple.java +++ b/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/MetaDataTuple.java @@ -95,7 +95,7 @@ public int size(int fieldId) { @Override public void clearOffset() { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override @@ -105,12 +105,12 @@ public Datum asDatum(int fieldId) { @Override public void setOffset(long offset) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override public long getOffset() { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override @@ -130,7 +130,7 @@ public char getChar(int fieldId) { @Override public byte [] getBytes(int fieldId) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override @@ -175,12 +175,12 @@ public TimeMeta getTimeDate(int fieldId) { @Override public ProtobufDatum getProtobufDatum(int fieldId) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override public IntervalDatum getInterval(int fieldId) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override @@ -190,11 +190,11 @@ public char[] getUnicodeChars(int fieldId) { @Override public Tuple clone() throws CloneNotSupportedException { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override public Datum[] getValues(){ - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/BasicEvalNodeVisitor.java b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/BasicEvalNodeVisitor.java index 84da79ed89..b0df318c9b 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/BasicEvalNodeVisitor.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/BasicEvalNodeVisitor.java @@ -18,6 +18,7 @@ package org.apache.tajo.plan.expr; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import java.util.Stack; @@ -141,7 +142,7 @@ public RESULT visit(CONTEXT context, EvalNode evalNode, Stack stack) { break; default: - throw new UnsupportedException("Unknown EvalType: " + evalNode); + throw new TajoRuntimeException(new UnsupportedException("EvalType '" + evalNode + "'")); } return result; diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/SubqueryEval.java b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/SubqueryEval.java index 98c36a13d3..f2af073c99 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/SubqueryEval.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/SubqueryEval.java @@ -22,6 +22,7 @@ import org.apache.tajo.catalog.Schema; import org.apache.tajo.common.TajoDataTypes.DataType; import org.apache.tajo.datum.Datum; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.plan.logical.TableSubQueryNode; import org.apache.tajo.storage.Tuple; @@ -54,12 +55,12 @@ public String getName() { @Override public EvalNode bind(@Nullable EvalContext evalContext, Schema schema) { - throw new UnsupportedException("Cannot call bind()"); + throw new TajoRuntimeException(new UnsupportedException()); } @Override public Datum eval(Tuple tuple) { - throw new UnsupportedException("Cannot call eval()"); + throw new TajoRuntimeException(new UnsupportedException()); } public TableSubQueryNode getSubQueryNode() { @@ -94,6 +95,6 @@ public String toString() { @Override public Datum[] getValues() { - throw new UnsupportedException("Cannot call getValues()"); + throw new TajoRuntimeException(new UnsupportedException()); } } 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 4930938e6b..bed7dd6cbb 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,6 +22,7 @@ import org.apache.tajo.catalog.FunctionDesc; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.datum.Datum; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.storage.Tuple; @@ -41,7 +42,7 @@ public static AggFunctionInvoke newInstance(FunctionDesc desc) { } else if (desc.getInvocation().hasPythonAggregation()) { return new PythonAggFunctionInvoke(desc); } else { - throw new UnsupportedException(desc.getInvocation() + " is not supported"); + throw new TajoRuntimeException(new UnsupportedException(desc.getInvocation().toString())); } } 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 b591b0a149..8db90ec1ce 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,6 +21,7 @@ import com.google.gson.annotations.Expose; import org.apache.tajo.catalog.FunctionDesc; import org.apache.tajo.datum.Datum; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.storage.Tuple; @@ -47,7 +48,7 @@ public static FunctionInvoke newInstance(FunctionDesc desc) { } else if (desc.getInvocation().hasPython()) { return new PythonFunctionInvoke(desc); } else { - throw new UnsupportedException(desc.getInvocation() + " is not supported"); + throw new TajoRuntimeException(new UnsupportedException("function invocation '" + desc.getInvocation() + "'")); } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/function/stream/CSVLineSerializer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/function/stream/CSVLineSerializer.java index 77f0a03f20..08874fd450 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/function/stream/CSVLineSerializer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/function/stream/CSVLineSerializer.java @@ -23,6 +23,7 @@ import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.datum.AnyDatum; import org.apache.tajo.datum.Datum; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.plan.function.FunctionContext; import org.apache.tajo.plan.function.PythonAggFunctionInvoke.PythonAggFunctionContext; @@ -142,7 +143,7 @@ public static String getTypeString(Datum val) { case INET6: return "A"; default: - throw new UnsupportedException(val.type().name()); + throw new TajoRuntimeException(new UnsupportedException("data type '" + val.type().name() + "'")); } } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/function/stream/TextFieldSerializerDeserializer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/function/stream/TextFieldSerializerDeserializer.java index c22a0f2ac9..5bd157b78b 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/function/stream/TextFieldSerializerDeserializer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/function/stream/TextFieldSerializerDeserializer.java @@ -28,6 +28,7 @@ import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.datum.*; import org.apache.tajo.datum.protobuf.ProtobufJsonFormat; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.exception.ValueTooLongForTypeCharactersException; import org.apache.tajo.storage.StorageConstants; @@ -148,7 +149,7 @@ public int serialize(OutputStream out, Datum datum, TajoDataTypes.DataType dataT nullChars); break; default: - throw new UnsupportedException(dataType.getType().name()); + throw new TajoRuntimeException(new UnsupportedException("data type '" + dataType.getType().name() + "'")); } return length; } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/SetSessionNode.java b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/SetSessionNode.java index 117315f104..487684569b 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/SetSessionNode.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/SetSessionNode.java @@ -19,7 +19,8 @@ package org.apache.tajo.plan.logical; import com.google.gson.annotations.Expose; -import org.apache.tajo.exception.UnsupportedException; +import org.apache.tajo.exception.NotImplementedException; +import org.apache.tajo.exception.TajoInternalError; import org.apache.tajo.plan.PlanString; public class SetSessionNode extends LogicalNode { @@ -61,7 +62,7 @@ public int childNum() { @Override public LogicalNode getChild(int idx) { - throw new UnsupportedException(); + throw new TajoInternalError(new NotImplementedException()); } @Override 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 f5b9c4367b..3b39a101b1 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 @@ -163,7 +163,7 @@ static Column resolveFromRelsWithinBlock(LogicalPlan plan, LogicalPlan.QueryBloc LogicalPlan.QueryBlock parentBlock = plan.getParentBlock(current); for (RelationNode relationNode : parentBlock.getRelations()) { if (relationNode.getLogicalSchema().containsByQualifiedName(columnRef.getCanonicalName())) { - throw new NotImplementedException("Correlated subquery"); + throw new TajoRuntimeException(new NotImplementedException("Correlated subquery")); } } current = parentBlock; 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 6ba525d2d7..d90f1b0eb4 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 @@ -31,6 +31,7 @@ import org.apache.tajo.catalog.partition.PartitionMethodDesc; import org.apache.tajo.catalog.proto.CatalogProtos; import org.apache.tajo.exception.NotImplementedException; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.plan.Target; import org.apache.tajo.plan.expr.*; import org.apache.tajo.plan.logical.*; @@ -598,7 +599,8 @@ private static AlterTablespaceNode convertAlterTablespace(PlanProto.LogicalNode alterTablespace.setLocation(alterTablespaceProto.getSetLocation().getLocation()); break; default: - throw new NotImplementedException("Unknown SET type in ALTER TABLE: " + alterTablespaceProto.getSetType().name()); + throw new TajoRuntimeException( + new NotImplementedException("Unknown SET type in ALTER TABLE: " + alterTablespaceProto.getSetType().name())); } return alterTablespace; @@ -647,7 +649,8 @@ private static AlterTableNode convertAlterTable(PlanProto.LogicalNode protoNode) alterTable.setIfExists(alterPartition.getIfExists()); break; default: - throw new NotImplementedException("Unknown SET type in ALTER TABLE: " + alterTableProto.getSetType().name()); + throw new TajoRuntimeException( + new NotImplementedException("Unknown SET type in ALTER TABLE: " + alterTableProto.getSetType().name())); } return alterTable; 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 13d6433159..7e61f30e00 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 @@ -26,6 +26,7 @@ import org.apache.tajo.exception.TajoException; import org.apache.tajo.exception.TajoInternalError; import org.apache.tajo.exception.NotImplementedException; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.Target; import org.apache.tajo.plan.logical.*; @@ -633,7 +634,8 @@ public LogicalNode visitAlterTable(SerializeContext context, LogicalPlan plan, L alterTableBuilder.setAlterPartition(partitionBuilder); break; default: - throw new NotImplementedException("Unknown SET type in ALTER TABLE: " + node.getAlterTableOpType().name()); + throw new TajoRuntimeException( + new NotImplementedException("Unknown SET type in ALTER TABLE: " + node.getAlterTableOpType().name())); } PlanProto.LogicalNode.Builder nodeBuilder = createNodeBuilder(context, node); diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/LogicalPlanVerifier.java b/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/LogicalPlanVerifier.java index 57e8e3e030..0b0968e747 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/LogicalPlanVerifier.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/verifier/LogicalPlanVerifier.java @@ -72,7 +72,7 @@ private static void verifyProjectableOutputSchema(Context context, Projectable n Column outputColumn = outputSchema.getColumn(i); if (outputColumn.getDataType().getType() == Type.RECORD) { - context.state.addVerification(new UnsupportedException("RECORD field projection")); + context.state.addVerification(new UnsupportedException("record field in select list")); } if (!outputColumn.getDataType().equals(targetSchema.getColumn(i).getDataType())) { 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 b57782c14a..c3dc9595f7 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 @@ -22,6 +22,7 @@ import org.apache.tajo.catalog.Schema; import org.apache.tajo.catalog.statistics.TableStats; import org.apache.tajo.exception.NotImplementedException; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.plan.expr.EvalNode; @@ -34,56 +35,56 @@ public abstract class AbstractScanner implements Scanner { @Override public void init() throws IOException { - throw new NotImplementedException(); + throw new TajoRuntimeException(new NotImplementedException()); } @Override public void reset() throws IOException { - throw new NotImplementedException(); + throw new TajoRuntimeException(new NotImplementedException()); } @Override public void close() throws IOException { - throw new NotImplementedException(); + throw new TajoRuntimeException(new NotImplementedException()); } @Override public boolean isProjectable() { - throw new NotImplementedException(); + throw new TajoRuntimeException(new NotImplementedException()); } @Override public void setTarget(Column[] targets) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override public boolean isSelectable() { - throw new NotImplementedException(); + throw new TajoRuntimeException(new NotImplementedException()); } @Override public void setFilter(EvalNode filter) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override public boolean isSplittable() { - throw new NotImplementedException(); + throw new TajoRuntimeException(new NotImplementedException()); } @Override public float getProgress() { - throw new NotImplementedException(); + throw new TajoRuntimeException(new NotImplementedException()); } @Override public TableStats getInputStats() { - throw new NotImplementedException(); + throw new TajoRuntimeException(new NotImplementedException()); } @Override public Schema getSchema() { - throw new NotImplementedException(); + throw new TajoRuntimeException(new NotImplementedException()); } } diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/FrameTuple.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/FrameTuple.java index de39d0893a..ce473370b1 100644 --- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/FrameTuple.java +++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/FrameTuple.java @@ -26,6 +26,7 @@ import org.apache.tajo.datum.Datum; import org.apache.tajo.datum.IntervalDatum; import org.apache.tajo.datum.ProtobufDatum; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.util.datetime.TimeMeta; @@ -96,22 +97,22 @@ public boolean isBlankOrNull(int fieldid) { @Override public void put(int fieldId, Tuple tuple) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override public void clear() { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override public void put(int fieldId, Datum value) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override public void put(Datum[] values) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override @@ -126,17 +127,17 @@ public int size(int fieldId) { @Override public void clearOffset() { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override public void setOffset(long offset) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override public long getOffset() { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override @@ -235,7 +236,7 @@ public Tuple clone() throws CloneNotSupportedException { @Override public Datum[] getValues(){ - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } public String toString() { diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/LazyTuple.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/LazyTuple.java index d4597fa547..819e4d089b 100644 --- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/LazyTuple.java +++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/LazyTuple.java @@ -24,6 +24,7 @@ import org.apache.tajo.datum.IntervalDatum; import org.apache.tajo.datum.NullDatum; import org.apache.tajo.datum.ProtobufDatum; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.util.datetime.TimeMeta; @@ -222,7 +223,7 @@ public TimeMeta getTimeDate(int fieldId) { @Override public ProtobufDatum getProtobufDatum(int fieldId) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/MergeScanner.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/MergeScanner.java index 87f0310e56..db6499254e 100644 --- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/MergeScanner.java +++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/MergeScanner.java @@ -25,6 +25,7 @@ import org.apache.tajo.catalog.statistics.ColumnStats; import org.apache.tajo.catalog.statistics.TableStats; import org.apache.tajo.conf.TajoConf; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.storage.fragment.Fragment; @@ -168,7 +169,7 @@ public boolean isSelectable() { @Override public void setFilter(EvalNode filter) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/NullScanner.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/NullScanner.java index 46b17263ff..9c025f7a42 100644 --- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/NullScanner.java +++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/NullScanner.java @@ -23,6 +23,7 @@ import org.apache.tajo.catalog.Schema; import org.apache.tajo.catalog.TableMeta; import org.apache.tajo.catalog.statistics.TableStats; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.storage.fragment.Fragment; @@ -88,7 +89,7 @@ public boolean isSelectable() { @Override public void setFilter(EvalNode filter) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override 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 42c015e3a1..7708d529db 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.datum.DatumFactory; import org.apache.tajo.datum.IntervalDatum; import org.apache.tajo.datum.ProtobufDatum; -import org.apache.tajo.exception.UnsupportedDataTypeException; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.exception.ValueTooLongForTypeCharactersException; import org.apache.tajo.tuple.offheap.RowWriter; @@ -156,11 +156,9 @@ public Tuple toTuple(byte [] bytes) { bb.get(_ipv4); tuple.put(i, DatumFactory.createInet4(_ipv4)); break; - case INET6: - // TODO - to be implemented - throw new UnsupportedException(type.getType().name()); default: - throw new RuntimeException(new UnsupportedDataTypeException(type.getType().name())); + throw new TajoRuntimeException( + new UnsupportedException("data type '" + type.getType().name() + "'")); } } return tuple; @@ -261,7 +259,8 @@ public byte[] toBytes(Tuple tuple) { bb.put(tuple.getBytes(i)); break; default: - throw new RuntimeException(new UnsupportedDataTypeException(col.getDataType().getType().name())); + throw new TajoRuntimeException( + new UnsupportedException("data type '" + col.getDataType().getType().name() + "'")); } } @@ -322,7 +321,8 @@ private int estimateTupleDataSize(Tuple tuple) { size += tuple.getBytes(i).length; break; default: - throw new RuntimeException(new UnsupportedDataTypeException(col.getDataType().getType().name())); + throw new TajoRuntimeException( + new UnsupportedException("data type '" + col.getDataType().getType().name() + "'")); } } @@ -381,7 +381,8 @@ public static void convert(Tuple tuple, RowWriter writer) { writer.skipField(); break; default: - throw new UnsupportedException("data type " + writer.dataTypes()[i]); + throw new TajoRuntimeException( + new UnsupportedException("unknown data type '" + writer.dataTypes()[i].getType().name() + "'")); } } writer.endRow(); diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/Tablespace.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/Tablespace.java index 0094310998..09d8deb01e 100644 --- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/Tablespace.java +++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/Tablespace.java @@ -29,6 +29,7 @@ import org.apache.tajo.catalog.proto.CatalogProtos.FragmentProto; import org.apache.tajo.conf.TajoConf; import org.apache.tajo.exception.TajoException; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.logical.LogicalNode; @@ -107,7 +108,7 @@ public String toString() { * @return Root URI */ public URI getRootUri() { - throw new UnsupportedException(String.format("artibrary path '%s'", uri.toString())); + throw new TajoRuntimeException(new UnsupportedException(String.format("artibrary path '%s'", uri.toString()))); } /** diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/tuple/offheap/HeapTuple.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/tuple/offheap/HeapTuple.java index 97be316bdc..9b69536c0f 100644 --- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/tuple/offheap/HeapTuple.java +++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/tuple/offheap/HeapTuple.java @@ -22,6 +22,7 @@ import com.google.protobuf.Message; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.datum.*; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.storage.Tuple; import org.apache.tajo.storage.VTuple; @@ -100,7 +101,7 @@ public boolean isBlankOrNull(int fieldid) { @Override public void put(int fieldId, Tuple tuple) { - throw new UnsupportedException("UnSafeTuple does not support put(int, Tuple)."); + throw new TajoRuntimeException(new UnsupportedException()); } @Override @@ -110,12 +111,12 @@ public void clear() { @Override public void put(int fieldId, Datum value) { - throw new UnsupportedException("UnSafeTuple does not support put(int, Datum)."); + throw new TajoRuntimeException(new UnsupportedException()); } @Override public void put(Datum[] values) { - throw new UnsupportedException("UnSafeTuple does not support put(Datum[])."); + throw new TajoRuntimeException(new UnsupportedException()); } @Override @@ -153,7 +154,7 @@ public Datum asDatum(int fieldId) { case PROTOBUF: return getProtobufDatum(fieldId); default: - throw new UnsupportedException("Unknown type: " + types[fieldId]); + throw new TajoRuntimeException(new UnsupportedException("data type '" + types[fieldId] + "'")); } } diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/tuple/offheap/UnSafeTuple.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/tuple/offheap/UnSafeTuple.java index 167519b349..3756064eac 100644 --- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/tuple/offheap/UnSafeTuple.java +++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/tuple/offheap/UnSafeTuple.java @@ -23,6 +23,7 @@ import com.google.protobuf.Message; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.datum.*; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.storage.Tuple; import org.apache.tajo.storage.VTuple; @@ -131,17 +132,17 @@ public void clear() { @Override public void put(int fieldId, Datum value) { - throw new UnsupportedException("UnSafeTuple does not support put(int, Datum)."); + throw new TajoRuntimeException(new UnsupportedException()); } @Override public void put(int fieldId, Tuple tuple) { - throw new UnsupportedException("UnSafeTuple does not support put(int, Tuple)."); + throw new TajoRuntimeException(new UnsupportedException()); } @Override public void put(Datum[] values) { - throw new UnsupportedException("UnSafeTuple does not support put(Datum[])."); + throw new TajoRuntimeException(new UnsupportedException()); } @Override @@ -179,7 +180,7 @@ public Datum asDatum(int fieldId) { case PROTOBUF: return getProtobufDatum(fieldId); default: - throw new UnsupportedException("Unknown type: " + types[fieldId]); + throw new TajoRuntimeException(new UnsupportedException("data type '" + types[fieldId] + "'")); } } diff --git a/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseScanner.java b/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseScanner.java index beae5928db..7fc6d2ab89 100644 --- a/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseScanner.java +++ b/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseScanner.java @@ -434,7 +434,7 @@ public boolean isSelectable() { @Override public void setFilter(EvalNode filter) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override diff --git a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/RawFile.java b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/RawFile.java index 20c5d6dcfd..4994b0e9fa 100644 --- a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/RawFile.java +++ b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/RawFile.java @@ -33,6 +33,7 @@ import org.apache.tajo.datum.DatumFactory; import org.apache.tajo.datum.NullDatum; import org.apache.tajo.datum.ProtobufDatumFactory; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.plan.serder.PlanProto.ShuffleType; @@ -431,7 +432,7 @@ public boolean isSelectable() { @Override public void setFilter(EvalNode filter) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override diff --git a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/RowFile.java b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/RowFile.java index dbe438c1db..45206f5ddf 100644 --- a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/RowFile.java +++ b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/RowFile.java @@ -34,6 +34,7 @@ import org.apache.tajo.conf.TajoConf.ConfVars; import org.apache.tajo.datum.Datum; import org.apache.tajo.datum.DatumFactory; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.plan.serder.PlanProto.ShuffleType; @@ -305,7 +306,7 @@ public boolean isSelectable() { @Override public void setFilter(EvalNode filter) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override diff --git a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/avro/AvroScanner.java b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/avro/AvroScanner.java index 217acba37c..5946e08327 100644 --- a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/avro/AvroScanner.java +++ b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/avro/AvroScanner.java @@ -35,6 +35,7 @@ import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.common.TajoDataTypes.DataType; import org.apache.tajo.datum.*; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.storage.FileScanner; @@ -279,7 +280,7 @@ public boolean isSelectable() { @Override public void setFilter(EvalNode filter) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } /** diff --git a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/json/JsonLineDeserializer.java b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/json/JsonLineDeserializer.java index 9216025c20..0ce4a9c6a5 100644 --- a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/json/JsonLineDeserializer.java +++ b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/json/JsonLineDeserializer.java @@ -31,6 +31,7 @@ import org.apache.tajo.datum.DatumFactory; import org.apache.tajo.datum.NullDatum; import org.apache.tajo.exception.NotImplementedException; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.storage.Tuple; import org.apache.tajo.storage.text.TextLineDeserializer; import org.apache.tajo.storage.text.TextLineParsingError; @@ -208,7 +209,8 @@ private void getValue(JSONObject object, break; default: - throw new NotImplementedException(types.get(fullPath).name() + " is not supported."); + throw new TajoRuntimeException( + new NotImplementedException("" + types.get(fullPath).name() + " for json")); } } diff --git a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/json/JsonLineSerializer.java b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/json/JsonLineSerializer.java index 0fd9e02719..f2837142ff 100644 --- a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/json/JsonLineSerializer.java +++ b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/json/JsonLineSerializer.java @@ -28,6 +28,7 @@ import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.datum.TextDatum; import org.apache.tajo.exception.NotImplementedException; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.storage.Tuple; import org.apache.tajo.storage.text.TextLineSerializer; @@ -119,7 +120,8 @@ private void putValue(JSONObject json, break; default: - throw new NotImplementedException(fieldName + "(" + types.get(fullPath).name() + ") is not supported."); + throw new TajoRuntimeException( + new NotImplementedException("" + types.get(fullPath).name() + " for json")); } } diff --git a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/orc/ORCScanner.java b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/orc/ORCScanner.java index dfb44d3684..1652d24b33 100644 --- a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/orc/ORCScanner.java +++ b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/orc/ORCScanner.java @@ -30,6 +30,7 @@ import org.apache.tajo.conf.TajoConf; import org.apache.tajo.datum.*; import org.apache.tajo.exception.NotImplementedException; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.storage.FileScanner; import org.apache.tajo.storage.StorageConstants; @@ -84,8 +85,7 @@ private Vector createOrcVector(TajoDataTypes.DataType type) { return new SliceVector(); default: - LOG.error("Not supported type for "+type.toString()); - throw new NotImplementedException("ORC type: "+type.toString()); + throw new TajoRuntimeException(new NotImplementedException(type.getType().name() + " for orc")); } } @@ -267,7 +267,7 @@ private Datum createValueDatum(Vector vector, TajoDataTypes.DataType type) { return NullDatum.get(); default: - throw new NotImplementedException("ORC type: "+type.toString()); + throw new TajoRuntimeException(new NotImplementedException(type.getType().name() + " for orc")); } } diff --git a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/parquet/ParquetScanner.java b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/parquet/ParquetScanner.java index 822151ac7a..ef74a9033c 100644 --- a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/parquet/ParquetScanner.java +++ b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/parquet/ParquetScanner.java @@ -21,6 +21,7 @@ import org.apache.hadoop.conf.Configuration; import org.apache.tajo.catalog.Schema; import org.apache.tajo.catalog.TableMeta; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.storage.FileScanner; @@ -111,7 +112,7 @@ public boolean isSelectable() { @Override public void setFilter(EvalNode filter) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } /** diff --git a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/rcfile/RCFile.java b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/rcfile/RCFile.java index 4cd51e6c5e..38a476149b 100644 --- a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/rcfile/RCFile.java +++ b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/rcfile/RCFile.java @@ -36,6 +36,7 @@ import org.apache.tajo.conf.TajoConf; import org.apache.tajo.datum.Datum; import org.apache.tajo.datum.NullDatum; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.storage.*; @@ -1781,7 +1782,7 @@ public boolean isSelectable() { @Override public void setFilter(EvalNode filter) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override diff --git a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/sequencefile/SequenceFileScanner.java b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/sequencefile/SequenceFileScanner.java index bac87792c3..5009701dd0 100644 --- a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/sequencefile/SequenceFileScanner.java +++ b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/sequencefile/SequenceFileScanner.java @@ -32,6 +32,7 @@ import org.apache.tajo.conf.TajoConf; import org.apache.tajo.datum.Datum; import org.apache.tajo.datum.NullDatum; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.storage.*; @@ -353,7 +354,7 @@ public boolean isSelectable() { @Override public void setFilter(EvalNode filter) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override diff --git a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/text/DelimitedLineReader.java b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/text/DelimitedLineReader.java index 6d6cf72460..964a58ab53 100644 --- a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/text/DelimitedLineReader.java +++ b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/text/DelimitedLineReader.java @@ -32,6 +32,7 @@ import org.apache.hadoop.io.compress.SplittableCompressionCodec; import org.apache.tajo.conf.TajoConf; import org.apache.tajo.exception.NotImplementedException; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.storage.*; import org.apache.tajo.storage.compress.CodecPool; @@ -72,7 +73,8 @@ public DelimitedLineReader(Configuration conf, final FileFragment fragment, int this.bufferSize = bufferSize; if (this.codec instanceof SplittableCompressionCodec) { // bzip2 does not support multi-thread model - throw new NotImplementedException(this.getClass() + " does not support " + this.codec.getDefaultExtension()); + throw new TajoRuntimeException( + new NotImplementedException(this.getClass() + " does not support " + this.codec.getDefaultExtension())); } } @@ -126,7 +128,7 @@ public void init() throws IOException { } public void seek(long offset) throws IOException { - if (isCompressed()) throw new UnsupportedException(); + if (isCompressed()) throw new TajoRuntimeException(new UnsupportedException()); lineReader.seek(offset); pos = offset; diff --git a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/text/DelimitedTextFile.java b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/text/DelimitedTextFile.java index 4a691df3a7..650aa60b44 100644 --- a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/text/DelimitedTextFile.java +++ b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/text/DelimitedTextFile.java @@ -34,6 +34,7 @@ import org.apache.tajo.catalog.Schema; import org.apache.tajo.catalog.TableMeta; import org.apache.tajo.catalog.statistics.TableStats; +import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.exception.UnsupportedException; import org.apache.tajo.plan.expr.EvalNode; import org.apache.tajo.storage.*; @@ -479,7 +480,7 @@ public boolean isSelectable() { @Override public void setFilter(EvalNode filter) { - throw new UnsupportedException(); + throw new TajoRuntimeException(new UnsupportedException()); } @Override From 13bbd8423d2ab1ebb88af8590a6d236bd01cbd31 Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Wed, 19 Aug 2015 18:47:57 +0900 Subject: [PATCH 3/4] Removed unused lines. --- .../src/test/java/org/apache/tajo/client/TestTajoClient.java | 1 - 1 file changed, 1 deletion(-) diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/client/TestTajoClient.java b/tajo-core-tests/src/test/java/org/apache/tajo/client/TestTajoClient.java index 93a48f0a05..efadc7aee7 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/client/TestTajoClient.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/client/TestTajoClient.java @@ -527,7 +527,6 @@ public final void testCreateAndDropTablePartitionedRangeByExecuteQuery() throws @Test public final void testFailCreateTablePartitionedOtherExceptColumn() throws IOException, TajoException { - TajoConf conf = cluster.getConfiguration(); final String tableName = "testFailCreateTablePartitionedOtherExceptColumn"; assertFalse(client.existTable(tableName)); From d095b4a6bf6db2d43e08bdcdfef3aebc454a0bca Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Wed, 19 Aug 2015 20:25:18 +0900 Subject: [PATCH 4/4] Fixed unit test failures. --- .../org/apache/tajo/exception/ExceptionUtil.java | 3 ++- .../apache/tajo/engine/eval/TestEvalTreeUtil.java | 2 +- .../apache/tajo/engine/query/TestInSubquery.java | 10 +++------- .../org/apache/tajo/engine/parser/SQLAnalyzer.java | 4 ++-- .../java/org/apache/tajo/master/GlobalEngine.java | 14 ++++++++++++-- 5 files changed, 20 insertions(+), 13 deletions(-) diff --git a/tajo-common/src/main/java/org/apache/tajo/exception/ExceptionUtil.java b/tajo-common/src/main/java/org/apache/tajo/exception/ExceptionUtil.java index 73a03cb0e9..2fd49ac299 100644 --- a/tajo-common/src/main/java/org/apache/tajo/exception/ExceptionUtil.java +++ b/tajo-common/src/main/java/org/apache/tajo/exception/ExceptionUtil.java @@ -139,7 +139,8 @@ public static DefaultTajoException toTajoExceptionCommon(ReturnState state) { } } else { - throw new TajoInternalError("Unknown exception: [" + state.getReturnCode().name() +"] " + state.getMessage()); + throw new TajoInternalError( + "Cannot restore the exception for [" + state.getReturnCode().name() +"] '" + state.getMessage() +"'"); } } diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java index 8c31550110..5b6fda4fd3 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java @@ -136,9 +136,9 @@ public static void tearDown() throws Exception { } public static Target [] getRawTargets(String query) { - Expr expr = analyzer.parse(query); LogicalPlan plan = null; try { + Expr expr = analyzer.parse(query); plan = planner.createPlan(defaultContext, expr); } catch (TajoException e) { throw new RuntimeException(e); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestInSubquery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestInSubquery.java index fe465f16ba..3d7152ad1d 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestInSubquery.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestInSubquery.java @@ -21,6 +21,7 @@ import org.apache.tajo.IntegrationTest; import org.apache.tajo.NamedTest; import org.apache.tajo.error.Errors.ResultCode; +import org.apache.tajo.exception.NotImplementedException; import org.apache.tajo.exception.TajoRuntimeException; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -148,15 +149,10 @@ public final void testNestedInSubQuery2() throws Exception { runSimpleTests(); } - @Test() + @Test(expected = NotImplementedException.class) public final void testCorrelatedSubQuery() throws Exception { // Use try-catch clause to verify the exact error message - try { - executeString("select * from nation where n_regionkey in (select r_regionkey from region where n_name > r_name)"); - fail("Correlated subquery must raise the UnimplementedException."); - } catch (TajoRuntimeException e) { - assertEquals(ResultCode.NOT_IMPLEMENTED, e.getErrorCode()); - } + executeString("select * from nation where n_regionkey in (select r_regionkey from region where n_name > r_name)"); } @Test diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java b/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java index 246a366c35..357c176a02 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/parser/SQLAnalyzer.java @@ -47,7 +47,7 @@ public class SQLAnalyzer extends SQLParserBaseVisitor { - public Expr parse(String sql) { + public Expr parse(String sql) throws SQLSyntaxError { ANTLRInputStream input = new ANTLRInputStream(sql); SQLLexer lexer = new SQLLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); @@ -61,7 +61,7 @@ public Expr parse(String sql) { parser.addErrorListener(new SQLErrorListener()); context = parser.sql(); } catch (SQLParseError e) { - throw new TajoRuntimeException(new SQLSyntaxError(e.getMessage())); + throw new SQLSyntaxError(e.getMessage()); } return visitSql(context); } diff --git a/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java b/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java index 3e94083b1d..11bbe33c34 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java @@ -60,6 +60,7 @@ import java.io.IOException; import java.sql.SQLException; +import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import static org.apache.tajo.ipc.ClientProtos.SubmitQueryResponse; @@ -213,13 +214,22 @@ public Expr buildExpressionFromJson(String json) { public Expr buildExpressionFromSql(String sql, Session session) throws TajoException { try { + if (session.getQueryCache() == null) { return analyzer.parse(sql); + } else { - return (Expr) session.getQueryCache().get(sql.trim()).clone(); + try { + return (Expr) session.getQueryCache().get(sql.trim()).clone(); + } catch (ExecutionException e) { + throw e.getCause(); + } } + } catch (Throwable t) { - if (t instanceof TajoRuntimeException) { + if (t instanceof TajoException) { + throw (TajoException)t; + } else if (t instanceof TajoRuntimeException) { throw (TajoException)t.getCause(); } else { throw new TajoInternalError(t);