You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by ti...@apache.org on 2016/02/02 06:19:16 UTC

[3/3] incubator-asterixdb git commit: Some exception cleanup

Some exception cleanup

- Use HyracksDataException and IOException for errors ingesting external
  data (instead of a mixture of AlgebricksException, AsterixException, and
  HyracksDataException).
- Avoid unnecessary wrapping of exceptions.
- Wrap exception at boundaries (e.g. HiveRecordParser)
- ADMLexerException and ADMDataParser.ParseException extend
  HyracksDataException
- Tighter exception declarations and handling for internal methods.

Change-Id: Icf9591046c44f5fa2281874ff0c98d780e741267
Reviewed-on: https://asterix-gerrit.ics.uci.edu/603
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Murtadha Hubail <hu...@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/commit/9dcba3c9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/tree/9dcba3c9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/diff/9dcba3c9

Branch: refs/heads/master
Commit: 9dcba3c9fec7c83b9f834c1289fe8dca70be4d32
Parents: f79a896
Author: Till Westmann <ti...@apache.org>
Authored: Mon Feb 1 19:42:32 2016 -0800
Committer: Till Westmann <ti...@apache.org>
Committed: Mon Feb 1 21:14:27 2016 -0800

----------------------------------------------------------------------
 .../optimizer/rules/ConstantFoldingRule.java    |  20 +-
 .../LangExpressionToPlanTranslator.java         |   6 +-
 .../queries/records/RecordsQueries.xml          |   4 +-
 .../queries_sqlpp/records/RecordsQueries.xml    |   4 +-
 .../src/test/resources/runtimets/testsuite.xml  |   2 +-
 .../asterix/external/api/IDataParser.java       |   8 +-
 .../asterix/external/api/IFunctionHelper.java   |   6 +-
 .../apache/asterix/external/api/IJObject.java   |   3 +-
 .../asterix/external/api/IRecordDataParser.java |   3 +-
 .../asterix/external/api/IStreamDataParser.java |   6 +-
 .../external/library/JavaFunctionHelper.java    |  22 +-
 .../external/library/java/JObjectAccessors.java |  19 +-
 .../external/library/java/JObjectUtil.java      |  13 +-
 .../asterix/external/library/java/JObjects.java |  17 +-
 .../asterix/external/parser/ADMDataParser.java  |  67 ++----
 .../external/parser/AbstractDataParser.java     | 232 +++++++------------
 .../external/parser/DelimitedDataParser.java    |   9 +-
 .../external/parser/HiveRecordParser.java       |  39 ++--
 .../asterix/external/parser/RSSParser.java      |   2 +-
 .../parser/RecordWithMetadataParser.java        |  28 ++-
 .../asterix/external/parser/TweetParser.java    |   2 +-
 .../src/main/resources/adm.grammar              |   5 +-
 .../asterix/lexergenerator/LexerGenerator.java  |   8 +-
 .../src/main/resources/LexerException.java      |   2 +-
 .../src/main/resources/default.config           |   7 +-
 .../asterix/metadata/MetadataManager.java       |   4 +-
 .../apache/asterix/metadata/MetadataNode.java   | 174 ++++++--------
 .../metadata/MetadataTransactionContext.java    |   2 +-
 .../asterix/metadata/api/IValueExtractor.java   |   2 +-
 .../entities/ExternalDatasetDetails.java        |   9 +-
 .../apache/asterix/metadata/entities/Index.java |  22 +-
 .../entities/InternalDatasetDetails.java        |  28 +--
 .../CompactionPolicyTupleTranslator.java        |  13 +-
 .../DatasetTupleTranslator.java                 |  13 +-
 .../DatasourceAdapterTupleTranslator.java       |  15 +-
 .../DatatypeTupleTranslator.java                |  27 +--
 .../DataverseTupleTranslator.java               |   7 +-
 .../ExternalFileTupleTranslator.java            |  18 +-
 .../FeedPolicyTupleTranslator.java              |  16 +-
 .../FeedTupleTranslator.java                    |  25 +-
 .../FunctionTupleTranslator.java                |  11 +-
 .../IndexTupleTranslator.java                   |  29 +--
 .../LibraryTupleTranslator.java                 |   7 +-
 .../NodeGroupTupleTranslator.java               |  11 +-
 .../NodeTupleTranslator.java                    |   7 +-
 .../asterix/metadata/utils/DatasetUtils.java    |   8 +-
 .../MetadataEntityValueExtractor.java           |   3 +-
 .../NestedDatatypeNameValueExtractor.java       |  25 +-
 .../TupleCopyValueExtractor.java                |   4 +-
 .../asterix/builders/IARecordBuilder.java       |   5 +-
 .../apache/asterix/builders/RecordBuilder.java  |  83 ++++---
 .../serde/ARecordSerializerDeserializer.java    |   6 +-
 .../asterix/om/base/AMutableInterval.java       |   6 +-
 .../impl/RecordAddFieldsTypeComputer.java       |  17 +-
 .../impl/RecordMergeTypeComputer.java           |  32 ++-
 .../impl/RecordRemoveFieldsTypeComputer.java    |  34 ++-
 .../asterix/om/types/AOrderedListType.java      |   3 +-
 .../apache/asterix/om/types/ARecordType.java    |  19 +-
 .../asterix/om/types/AUnorderedListType.java    |   3 +-
 .../asterix/om/types/EnumDeserializer.java      |   3 +-
 .../apache/asterix/om/types/TypeHierarchy.java  |  44 ----
 .../ClosedRecordConstructorEvalFactory.java     |   3 +-
 .../OpenRecordConstructorDescriptor.java        |   3 +-
 .../records/RecordAddFieldsDescriptor.java      |   2 +-
 .../temporal/IntervalBinDescriptor.java         |  64 +++--
 65 files changed, 490 insertions(+), 851 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java
----------------------------------------------------------------------
diff --git a/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java b/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java
index f51d454..effb973 100644
--- a/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java
+++ b/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/ConstantFoldingRule.java
@@ -20,22 +20,19 @@
 package org.apache.asterix.optimizer.rules;
 
 import java.io.DataInputStream;
-import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.List;
 
-import org.apache.commons.lang3.mutable.Mutable;
-
 import org.apache.asterix.common.config.GlobalConfig;
 import org.apache.asterix.dataflow.data.common.AqlExpressionTypeComputer;
 import org.apache.asterix.dataflow.data.common.AqlNullableTypeComputer;
 import org.apache.asterix.dataflow.data.nontagged.AqlNullWriterFactory;
+import org.apache.asterix.formats.nontagged.AqlADMPrinterFactoryProvider;
 import org.apache.asterix.formats.nontagged.AqlBinaryBooleanInspectorImpl;
 import org.apache.asterix.formats.nontagged.AqlBinaryComparatorFactoryProvider;
 import org.apache.asterix.formats.nontagged.AqlBinaryHashFunctionFactoryProvider;
 import org.apache.asterix.formats.nontagged.AqlBinaryHashFunctionFamilyProvider;
 import org.apache.asterix.formats.nontagged.AqlBinaryIntegerInspector;
-import org.apache.asterix.formats.nontagged.AqlADMPrinterFactoryProvider;
 import org.apache.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
 import org.apache.asterix.formats.nontagged.AqlTypeTraitProvider;
 import org.apache.asterix.jobgen.QueryLogicalExpressionJobGen;
@@ -47,6 +44,7 @@ import org.apache.asterix.om.typecomputer.base.TypeComputerUtilities;
 import org.apache.asterix.om.types.ARecordType;
 import org.apache.asterix.om.types.ATypeTag;
 import org.apache.asterix.om.types.AbstractCollectionType;
+import org.apache.commons.lang3.mutable.Mutable;
 import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
@@ -123,7 +121,8 @@ public class ConstantFoldingRule implements IAlgebraicRewriteRule {
     private static final IOperatorSchema[] _emptySchemas = new IOperatorSchema[] {};
 
     @Override
-    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context) throws AlgebricksException {
+    public boolean rewritePre(Mutable<ILogicalOperator> opRef, IOptimizationContext context)
+            throws AlgebricksException {
         return false;
     }
 
@@ -182,8 +181,8 @@ public class ConstantFoldingRule implements IAlgebraicRewriteRule {
             if (expr.getFunctionIdentifier().equals(AsterixBuiltinFunctions.UNORDERED_LIST_CONSTRUCTOR)
                     || expr.getFunctionIdentifier().equals(AsterixBuiltinFunctions.ORDERED_LIST_CONSTRUCTOR)) {
                 AbstractCollectionType listType = (AbstractCollectionType) TypeComputerUtilities.getRequiredType(expr);
-                if (listType != null
-                        && (listType.getItemType().getTypeTag() == ATypeTag.ANY || listType.getItemType() instanceof AbstractCollectionType)) {
+                if (listType != null && (listType.getItemType().getTypeTag() == ATypeTag.ANY
+                        || listType.getItemType() instanceof AbstractCollectionType)) {
                     //case1: listType == null,  could be a nested list inside a list<ANY>
                     //case2: itemType = ANY
                     //case3: itemType = a nested list
@@ -194,12 +193,7 @@ public class ConstantFoldingRule implements IAlgebraicRewriteRule {
                 ARecordType rt = (ARecordType) _emptyTypeEnv.getType(expr.getArguments().get(0).getValue());
                 String str = ((AString) ((AsterixConstantValue) ((ConstantExpression) expr.getArguments().get(1)
                         .getValue()).getValue()).getObject()).getStringValue();
-                int k;
-                try {
-                    k = rt.getFieldIndex(str);
-                } catch (IOException e) {
-                    throw new AlgebricksException(e);
-                }
+                int k = rt.getFieldIndex(str);
                 if (k >= 0) {
                     // wait for the ByNameToByIndex rule to apply
                     return new Pair<Boolean, ILogicalExpression>(changed, expr);

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
----------------------------------------------------------------------
diff --git a/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java b/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
index b8fe0e1..a1a6d4b 100644
--- a/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
+++ b/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
@@ -364,11 +364,7 @@ class LangExpressionToPlanTranslator
                     upsertOp.setPrevRecordType(recordType);
                     if (additionalFilteringField != null) {
                         upsertOp.setPrevFilterVar(context.newVar());
-                        try {
-                            upsertOp.setPrevFilterType(recordType.getFieldType(additionalFilteringField.get(0)));
-                        } catch (IOException e) {
-                            throw new AlgebricksException("unable to get the type of filter field");
-                        }
+                        upsertOp.setPrevFilterType(recordType.getFieldType(additionalFilteringField.get(0)));
                     }
                     leafOperator = new SinkOperator();
                     leafOperator.getInputs().add(new MutableObject<ILogicalOperator>(upsertOp));

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-app/src/test/resources/runtimets/queries/records/RecordsQueries.xml
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries/records/RecordsQueries.xml b/asterix-app/src/test/resources/runtimets/queries/records/RecordsQueries.xml
index ad30289..0e89dd8 100644
--- a/asterix-app/src/test/resources/runtimets/queries/records/RecordsQueries.xml
+++ b/asterix-app/src/test/resources/runtimets/queries/records/RecordsQueries.xml
@@ -120,13 +120,13 @@
         <test-case FilePath="records">
             <compilation-unit name="open-closed-fieldname-conflict_issue173">
                 <output-dir compare="Text">open-closed-fieldname-conflict_issue173</output-dir>
-                <expected-error>org.apache.asterix.common.exceptions.AsterixException</expected-error>
+                <expected-error>org.apache.hyracks.api.exceptions.HyracksDataException: Open field "name" has the same field name as closed field at index 0</expected-error>
             </compilation-unit>
         </test-case>
         <test-case FilePath="records">
             <compilation-unit name="open-open-fieldname-conflict_issue173">
                 <output-dir compare="Text">open-open-fieldname-conflict_issue173</output-dir>
-                <expected-error>org.apache.asterix.common.exceptions.AsterixException</expected-error>
+                <expected-error>org.apache.hyracks.api.exceptions.HyracksDataException: Open fields 0 and 1 have the same field name "name"</expected-error>
             </compilation-unit>
         </test-case>
         <!-- RECORD MANIPULATION TESTS -->

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-app/src/test/resources/runtimets/queries_sqlpp/records/RecordsQueries.xml
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/queries_sqlpp/records/RecordsQueries.xml b/asterix-app/src/test/resources/runtimets/queries_sqlpp/records/RecordsQueries.xml
index 48ce410..a4121ea 100644
--- a/asterix-app/src/test/resources/runtimets/queries_sqlpp/records/RecordsQueries.xml
+++ b/asterix-app/src/test/resources/runtimets/queries_sqlpp/records/RecordsQueries.xml
@@ -121,13 +121,13 @@
         <test-case FilePath="records">
             <compilation-unit name="open-closed-fieldname-conflict_issue173">
                 <output-dir compare="Text">open-closed-fieldname-conflict_issue173</output-dir>
-                <expected-error>org.apache.asterix.common.exceptions.AsterixException</expected-error>
+                <expected-error>org.apache.hyracks.api.exceptions.HyracksDataException: Open field "name" has the same field name as closed field at index 0</expected-error>
             </compilation-unit>
         </test-case>
         <test-case FilePath="records">
             <compilation-unit name="open-open-fieldname-conflict_issue173">
                 <output-dir compare="Text">open-open-fieldname-conflict_issue173</output-dir>
-                <expected-error>org.apache.asterix.common.exceptions.AsterixException</expected-error>
+                <expected-error>org.apache.hyracks.api.exceptions.HyracksDataException: Open fields 0 and 1 have the same field name "name"</expected-error>
             </compilation-unit>
         </test-case>
     </test-group>

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-app/src/test/resources/runtimets/testsuite.xml
----------------------------------------------------------------------
diff --git a/asterix-app/src/test/resources/runtimets/testsuite.xml b/asterix-app/src/test/resources/runtimets/testsuite.xml
index 621c73a..d593039 100644
--- a/asterix-app/src/test/resources/runtimets/testsuite.xml
+++ b/asterix-app/src/test/resources/runtimets/testsuite.xml
@@ -5706,7 +5706,7 @@
         <test-case FilePath="cross-dataverse">
             <compilation-unit name="drop-dataverse">
                 <output-dir compare="Text">drop-dataverse</output-dir>
-                <expected-error>SyntaxError: org.apache.asterix.metadata.MetadataException: Cannot drop dataverse. Type a.a used by dataset b.b1</expected-error>
+                <expected-error>org.apache.asterix.metadata.MetadataException: Cannot drop dataverse. Type a.a used by dataset b.b1</expected-error>
             </compilation-unit>
         </test-case>
         <test-case FilePath="cross-dataverse">

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-external-data/src/main/java/org/apache/asterix/external/api/IDataParser.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/api/IDataParser.java b/asterix-external-data/src/main/java/org/apache/asterix/external/api/IDataParser.java
index 4ad4c4f..e680822 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/api/IDataParser.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/api/IDataParser.java
@@ -55,18 +55,16 @@ public interface IDataParser {
      *            2. The query compiler.
      * @param recordType
      *            The expected record type
-     * @throws HyracksDataException
      * @throws IOException
      */
-    public void configure(Map<String, String> configuration, ARecordType recordType)
-            throws HyracksDataException, IOException;
+    public void configure(Map<String, String> configuration, ARecordType recordType) throws IOException;
 
     /*
      * The following two static methods are expensive. right now, they are used by RSSFeeds and Twitter feed
      * TODO: Get rid of them
      */
     public static void writeRecord(AMutableRecord record, DataOutput dataOutput, IARecordBuilder recordBuilder)
-            throws IOException, AsterixException {
+            throws HyracksDataException {
         ArrayBackedValueStorage fieldValue = new ArrayBackedValueStorage();
         int numFields = record.getType().getFieldNames().length;
         for (int pos = 0; pos < numFields; pos++) {
@@ -79,7 +77,7 @@ public interface IDataParser {
     }
 
     @SuppressWarnings("unchecked")
-    public static void writeObject(IAObject obj, DataOutput dataOutput) throws IOException, AsterixException {
+    public static void writeObject(IAObject obj, DataOutput dataOutput) throws HyracksDataException {
         switch (obj.getType().getTypeTag()) {
             case RECORD: {
                 IARecordBuilder recordBuilder = new RecordBuilder();

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-external-data/src/main/java/org/apache/asterix/external/api/IFunctionHelper.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/api/IFunctionHelper.java b/asterix-external-data/src/main/java/org/apache/asterix/external/api/IFunctionHelper.java
index ebd0757..b8be685 100755
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/api/IFunctionHelper.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/api/IFunctionHelper.java
@@ -18,10 +18,8 @@
  */
 package org.apache.asterix.external.api;
 
-import org.apache.asterix.common.exceptions.AsterixException;
 import org.apache.asterix.external.library.java.JTypeTag;
-
-import java.io.IOException;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public interface IFunctionHelper {
 
@@ -29,7 +27,7 @@ public interface IFunctionHelper {
 
     public IJObject getResultObject();
 
-    public void setResult(IJObject result) throws IOException, AsterixException;
+    public void setResult(IJObject result) throws HyracksDataException;
 
     public boolean isValidResult();
 

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-external-data/src/main/java/org/apache/asterix/external/api/IJObject.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/api/IJObject.java b/asterix-external-data/src/main/java/org/apache/asterix/external/api/IJObject.java
index a88f47d..250e4fa 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/api/IJObject.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/api/IJObject.java
@@ -22,7 +22,6 @@ import java.io.DataOutput;
 
 import org.apache.asterix.om.base.IAObject;
 import org.apache.asterix.om.types.ATypeTag;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public interface IJObject {
@@ -33,5 +32,5 @@ public interface IJObject {
 
     public void serialize(DataOutput dataOutput, boolean writeTypeTag) throws HyracksDataException;
 
-    public void reset() throws AlgebricksException;
+    public void reset() throws HyracksDataException;
 }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordDataParser.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordDataParser.java b/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordDataParser.java
index cc24847..3cb8f37 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordDataParser.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/api/IRecordDataParser.java
@@ -19,6 +19,7 @@
 package org.apache.asterix.external.api;
 
 import java.io.DataOutput;
+import java.io.IOException;
 
 public interface IRecordDataParser<T> extends IDataParser {
 
@@ -27,7 +28,7 @@ public interface IRecordDataParser<T> extends IDataParser {
      * @param out
      * @throws Exception
      */
-    public void parse(IRawRecord<? extends T> record, DataOutput out) throws Exception;
+    public void parse(IRawRecord<? extends T> record, DataOutput out) throws IOException;
 
     /**
      * @return the record class

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-external-data/src/main/java/org/apache/asterix/external/api/IStreamDataParser.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/api/IStreamDataParser.java b/asterix-external-data/src/main/java/org/apache/asterix/external/api/IStreamDataParser.java
index 531d050..f596efa 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/api/IStreamDataParser.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/api/IStreamDataParser.java
@@ -26,20 +26,22 @@ public interface IStreamDataParser extends IDataParser {
     /**
      * Sets the inputStream for the parser. called only for parsers that support InputStreams
      */
-    public void setInputStream(InputStream in) throws Exception;
+    public void setInputStream(InputStream in) throws IOException;
 
     /**
      * Parse data into output AsterixDataModel binary records.
      * Used with parsers that support stream sources
+     *
      * @param out
      *            DataOutput instance that for writing the parser output.
      */
-    public boolean parse(DataOutput out) throws Exception;
+    public boolean parse(DataOutput out) throws IOException;
 
     /**
      * reset the parser state. this is called when a failure takes place
      * and the job needs to continue and to do that, the parser need to
      * be in a consistent state
+     *
      * @return true if reset was successful, false, otherwise
      * @throws IOException
      */

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-external-data/src/main/java/org/apache/asterix/external/library/JavaFunctionHelper.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/library/JavaFunctionHelper.java b/asterix-external-data/src/main/java/org/apache/asterix/external/library/JavaFunctionHelper.java
index 13ea589..34e3878 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/library/JavaFunctionHelper.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/library/JavaFunctionHelper.java
@@ -18,6 +18,10 @@
  */
 package org.apache.asterix.external.library;
 
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
 import org.apache.asterix.common.exceptions.AsterixException;
 import org.apache.asterix.external.api.IFunctionHelper;
 import org.apache.asterix.external.api.IJObject;
@@ -40,10 +44,6 @@ import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.api.IDataOutputProvider;
 import org.apache.hyracks.data.std.api.IValueReference;
 
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
 public class JavaFunctionHelper implements IFunctionHelper {
 
     private final IExternalFunctionInfo finfo;
@@ -80,18 +80,14 @@ public class JavaFunctionHelper implements IFunctionHelper {
     }
 
     @Override
-    public void setResult(IJObject result) throws IOException, AsterixException {
+    public void setResult(IJObject result) throws HyracksDataException {
         if (result == null) {
             JNull.INSTANCE.serialize(outputProvider.getDataOutput(), true);
             isValidResult = false;
         } else {
-            try {
-                isValidResult = true;
-                result.serialize(outputProvider.getDataOutput(), true);
-                result.reset();
-            } catch (IOException | AlgebricksException e) {
-                throw new HyracksDataException(e);
-            }
+            isValidResult = true;
+            result.serialize(outputProvider.getDataOutput(), true);
+            result.reset();
         }
     }
 
@@ -99,7 +95,7 @@ public class JavaFunctionHelper implements IFunctionHelper {
      * Gets the value of the result flag
      *
      * @return
-     *    boolean True is the setResult is called and result is not null
+     *         boolean True is the setResult is called and result is not null
      */
     @Override
     public boolean isValidResult() {

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjectAccessors.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjectAccessors.java b/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjectAccessors.java
index 1835739..5923354 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjectAccessors.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjectAccessors.java
@@ -88,7 +88,6 @@ import org.apache.asterix.om.types.BuiltinType;
 import org.apache.asterix.om.types.EnumDeserializer;
 import org.apache.asterix.om.types.IAType;
 import org.apache.asterix.om.util.container.IObjectPool;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.util.string.UTF8StringReader;
 
@@ -337,11 +336,7 @@ public class JObjectAccessors {
             long intervalEnd = AIntervalSerializerDeserializer.getIntervalEnd(b, s);
             byte intervalType = AIntervalSerializerDeserializer.getIntervalTimeType(b, s);
             IJObject jObject = objectPool.allocate(BuiltinType.AINTERVAL);
-            try {
-                ((JInterval) jObject).setValue(intervalStart, intervalEnd, intervalType);
-            } catch (AlgebricksException e) {
-                throw new HyracksDataException(e);
-            }
+            ((JInterval) jObject).setValue(intervalStart, intervalEnd, intervalType);
             return jObject;
         }
     }
@@ -464,11 +459,7 @@ public class JObjectAccessors {
         @Override
         public JRecord access(ARecordVisitablePointable pointable, IObjectPool<IJObject, IAType> objectPool,
                 ARecordType recordType, JObjectPointableVisitor pointableVisitor) throws HyracksDataException {
-            try {
-                jRecord.reset();
-            } catch (AlgebricksException e) {
-                throw new HyracksDataException(e);
-            }
+            jRecord.reset();
             ARecordVisitablePointable recordPointable = pointable;
             List<IVisitablePointable> fieldPointables = recordPointable.getFieldValues();
             List<IVisitablePointable> fieldTypeTags = recordPointable.getFieldTypeTags();
@@ -525,11 +516,7 @@ public class JObjectAccessors {
         }
 
         public void reset() throws HyracksDataException {
-            try {
-                jRecord.reset();
-            } catch (AlgebricksException e) {
-                throw new HyracksDataException(e);
-            }
+            jRecord.reset();
             openFields.clear();
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjectUtil.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjectUtil.java b/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjectUtil.java
index e7c1ec1..ed3cd32 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjectUtil.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjectUtil.java
@@ -22,7 +22,6 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.asterix.common.exceptions.AsterixException;
 import org.apache.asterix.dataflow.data.nontagged.serde.AStringSerializerDeserializer;
 import org.apache.asterix.dataflow.data.nontagged.serde.SerializerDeserializerUtil;
 import org.apache.asterix.external.api.IJObject;
@@ -57,13 +56,13 @@ import org.apache.asterix.om.types.EnumDeserializer;
 import org.apache.asterix.om.types.IAType;
 import org.apache.asterix.om.util.NonTaggedFormatUtil;
 import org.apache.asterix.om.util.container.IObjectPool;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 
 public class JObjectUtil {
 
     /**
      * Normalize an input string by removing linebreaks, and replace them with space
      * Also remove non-readable special characters
+     *
      * @param originalString
      *            The input String
      * @return
@@ -88,7 +87,7 @@ public class JObjectUtil {
     }
 
     public static IJObject getJType(ATypeTag typeTag, IAType type, ByteArrayAccessibleDataInputStream dis,
-            IObjectPool<IJObject, IAType> objectPool) throws IOException, AsterixException {
+            IObjectPool<IJObject, IAType> objectPool) throws IOException {
         IJObject jObject;
 
         switch (typeTag) {
@@ -160,11 +159,7 @@ public class JObjectUtil {
                 long start = dis.readLong();
                 long end = dis.readLong();
                 byte intervalType = dis.readByte();
-                try {
-                    ((JInterval) jObject).setValue(start, end, intervalType);
-                } catch (AlgebricksException e) {
-                    throw new AsterixException(e);
-                }
+                ((JInterval) jObject).setValue(start, end, intervalType);
                 break;
             }
 
@@ -408,7 +403,7 @@ public class JObjectUtil {
         return fields;
     }
 
-    private static ARecordType mergeRecordTypes(ARecordType recType1, ARecordType recType2) throws AsterixException {
+    private static ARecordType mergeRecordTypes(ARecordType recType1, ARecordType recType2) {
 
         String[] fieldNames = new String[recType1.getFieldNames().length + recType2.getFieldNames().length];
         IAType[] fieldTypes = new IAType[recType1.getFieldTypes().length + recType2.getFieldTypes().length];

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjects.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjects.java b/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjects.java
index 97fe983..d5e849c 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjects.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/library/java/JObjects.java
@@ -91,7 +91,6 @@ import org.apache.asterix.om.types.ARecordType;
 import org.apache.asterix.om.types.ATypeTag;
 import org.apache.asterix.om.types.AUnorderedListType;
 import org.apache.asterix.om.types.IAType;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
 
@@ -548,7 +547,7 @@ public class JObjects {
             super(new AMutableInterval(intervalStart, intervalEnd, (byte) 0));
         }
 
-        public void setValue(long intervalStart, long intervalEnd, byte typetag) throws AlgebricksException {
+        public void setValue(long intervalStart, long intervalEnd, byte typetag) throws HyracksDataException {
             ((AMutableInterval) value).setValue(intervalStart, intervalEnd, typetag);
         }
 
@@ -577,7 +576,7 @@ public class JObjects {
         }
 
         @Override
-        public void reset() throws AlgebricksException {
+        public void reset() throws HyracksDataException {
             ((AMutableInterval) value).setValue(0L, 0L, (byte) 0);
         }
 
@@ -1097,14 +1096,10 @@ public class JObjects {
                         recordBuilder.addField(openFieldName, openFieldValue);
                     }
                 }
-            } catch (IOException | AsterixException ae) {
+            } catch (IOException ae) {
                 throw new HyracksDataException(ae);
             }
-            try {
-                recordBuilder.write(output, writeTypeTag);
-            } catch (IOException | AsterixException e) {
-                throw new HyracksDataException(e);
-            }
+            recordBuilder.write(output, writeTypeTag);
         }
 
         @Override
@@ -1113,7 +1108,7 @@ public class JObjects {
         }
 
         @Override
-        public void reset() throws AlgebricksException {
+        public void reset() throws HyracksDataException {
             if (openFields != null && !openFields.isEmpty()) {
                 openFields.clear();
             }
@@ -1126,7 +1121,7 @@ public class JObjects {
             }
         }
 
-        public void reset(IJObject[] fields, LinkedHashMap<String, IJObject> openFields) throws AlgebricksException {
+        public void reset(IJObject[] fields, LinkedHashMap<String, IJObject> openFields) throws HyracksDataException {
             this.reset();
             this.fields = fields;
             this.openFields = openFields;

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-external-data/src/main/java/org/apache/asterix/external/parser/ADMDataParser.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/ADMDataParser.java b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/ADMDataParser.java
index d523c6e..d9a93ff 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/ADMDataParser.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/ADMDataParser.java
@@ -33,7 +33,6 @@ import org.apache.asterix.builders.ListBuilderFactory;
 import org.apache.asterix.builders.OrderedListBuilder;
 import org.apache.asterix.builders.RecordBuilderFactory;
 import org.apache.asterix.builders.UnorderedListBuilder;
-import org.apache.asterix.common.exceptions.AsterixException;
 import org.apache.asterix.dataflow.data.nontagged.serde.APolygonSerializerDeserializer;
 import org.apache.asterix.external.api.IExternalDataSourceFactory.DataSourceType;
 import org.apache.asterix.external.api.IRawRecord;
@@ -54,7 +53,6 @@ import org.apache.asterix.om.util.NonTaggedFormatUtil;
 import org.apache.asterix.om.util.container.IObjectPool;
 import org.apache.asterix.om.util.container.ListObjectPool;
 import org.apache.asterix.runtime.operators.file.adm.AdmLexer;
-import org.apache.asterix.runtime.operators.file.adm.AdmLexerException;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.data.std.api.IMutableValueStorage;
 import org.apache.hyracks.data.std.util.ArrayBackedValueStorage;
@@ -82,7 +80,7 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
     private String mismatchErrorMessage2 = " got a value of type ";
     private Map<String, String> configuration;
 
-    static class ParseException extends AsterixException {
+    static class ParseException extends HyracksDataException {
         private static final long serialVersionUID = 1L;
         private String filename;
         private int line = -1;
@@ -137,17 +135,15 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
     }
 
     @Override
-    public boolean parse(DataOutput out) throws AsterixException {
+    public boolean parse(DataOutput out) throws IOException {
         try {
             resetPools();
             return parseAdmInstance(recordType, out);
-        } catch (IOException e) {
-            throw new ParseException(e, filename, admLexer.getLine(), admLexer.getColumn());
-        } catch (AdmLexerException e) {
-            throw new AsterixException(e);
         } catch (ParseException e) {
             e.setLocation(filename, admLexer.getLine(), admLexer.getColumn());
             throw e;
+        } catch (IOException e) {
+            throw new ParseException(e, filename, admLexer.getLine(), admLexer.getColumn());
         }
     }
 
@@ -168,18 +164,16 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
     }
 
     @Override
-    public void parse(IRawRecord<? extends char[]> record, DataOutput out) throws Exception {
+    public void parse(IRawRecord<? extends char[]> record, DataOutput out) throws IOException {
         try {
             resetPools();
             admLexer.setBuffer(record.get());
             parseAdmInstance(recordType, out);
-        } catch (IOException e) {
-            throw new ParseException(e, filename, admLexer.getLine(), admLexer.getColumn());
-        } catch (AdmLexerException e) {
-            throw new AsterixException(e);
         } catch (ParseException e) {
             e.setLocation(filename, admLexer.getLine(), admLexer.getColumn());
             throw e;
+        } catch (IOException e) {
+            throw new ParseException(e, filename, admLexer.getLine(), admLexer.getColumn());
         }
     }
 
@@ -189,12 +183,11 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
     }
 
     @Override
-    public void setInputStream(InputStream in) throws Exception {
+    public void setInputStream(InputStream in) throws IOException {
         admLexer = new AdmLexer(new java.io.InputStreamReader(in));
     }
 
-    protected boolean parseAdmInstance(IAType objectType, DataOutput out)
-            throws AsterixException, IOException, AdmLexerException {
+    protected boolean parseAdmInstance(IAType objectType, DataOutput out) throws IOException {
         int token = admLexer.next();
         if (token == AdmLexer.TOKEN_EOF) {
             return false;
@@ -204,8 +197,7 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
         }
     }
 
-    private void admFromLexerStream(int token, IAType objectType, DataOutput out)
-            throws AsterixException, IOException, AdmLexerException {
+    private void admFromLexerStream(int token, IAType objectType, DataOutput out) throws IOException {
 
         switch (token) {
             case AdmLexer.TOKEN_NULL_LITERAL: {
@@ -529,7 +521,7 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
         return null; // wont get here
     }
 
-    private ATypeTag getTargetTypeTag(ATypeTag expectedTypeTag, IAType aObjectType) throws IOException {
+    private ATypeTag getTargetTypeTag(ATypeTag expectedTypeTag, IAType aObjectType) throws HyracksDataException {
         if (aObjectType == null) {
             return expectedTypeTag;
         }
@@ -559,8 +551,7 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
         return getTargetTypeTag(expectedTypeTag, aObjectType) != null;
     }
 
-    private void parseRecord(ARecordType recType, DataOutput out)
-            throws IOException, AsterixException, AdmLexerException {
+    private void parseRecord(ARecordType recType, DataOutput out) throws IOException {
 
         ArrayBackedValueStorage fieldValueBuffer = getTempBuffer();
         ArrayBackedValueStorage fieldNameBuffer = getTempBuffer();
@@ -702,8 +693,7 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
         return -1;
     }
 
-    private void parseOrderedList(AOrderedListType oltype, DataOutput out)
-            throws IOException, AsterixException, AdmLexerException {
+    private void parseOrderedList(AOrderedListType oltype, DataOutput out) throws IOException {
         ArrayBackedValueStorage itemBuffer = getTempBuffer();
         OrderedListBuilder orderedListBuilder = (OrderedListBuilder) getOrderedListBuilder();
 
@@ -744,8 +734,7 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
         orderedListBuilder.write(out, true);
     }
 
-    private void parseUnorderedList(AUnorderedListType uoltype, DataOutput out)
-            throws IOException, AsterixException, AdmLexerException {
+    private void parseUnorderedList(AUnorderedListType uoltype, DataOutput out) throws IOException {
         ArrayBackedValueStorage itemBuffer = getTempBuffer();
         UnorderedListBuilder unorderedListBuilder = (UnorderedListBuilder) getUnorderedListBuilder();
 
@@ -821,16 +810,14 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
         }
     }
 
-    private void parseToNumericTarget(ATypeTag typeTag, IAType objectType, DataOutput out)
-            throws AsterixException, IOException {
+    private void parseToNumericTarget(ATypeTag typeTag, IAType objectType, DataOutput out) throws IOException {
         final ATypeTag targetTypeTag = getTargetTypeTag(typeTag, objectType);
         if (targetTypeTag == null || !parseValue(admLexer.getLastTokenImage(), targetTypeTag, out)) {
             throw new ParseException(mismatchErrorMessage + objectType.getTypeName() + mismatchErrorMessage2 + typeTag);
         }
     }
 
-    private void parseAndCastNumeric(ATypeTag typeTag, IAType objectType, DataOutput out)
-            throws AsterixException, IOException {
+    private void parseAndCastNumeric(ATypeTag typeTag, IAType objectType, DataOutput out) throws IOException {
         final ATypeTag targetTypeTag = getTargetTypeTag(typeTag, objectType);
         DataOutput dataOutput = out;
         if (targetTypeTag != typeTag) {
@@ -848,8 +835,7 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
                 // can promote typeTag to targetTypeTag
                 ITypeConvertComputer promoteComputer = ATypeHierarchy.getTypePromoteComputer(typeTag, targetTypeTag);
                 if (promoteComputer == null) {
-                    throw new AsterixException(
-                            "Can't cast the " + typeTag + " type to the " + targetTypeTag + " type.");
+                    throw new ParseException("Can't cast the " + typeTag + " type to the " + targetTypeTag + " type.");
                 }
                 // do the promotion; note that the type tag field should be skipped
                 promoteComputer.convertType(castBuffer.getByteArray(), castBuffer.getStartOffset() + 1,
@@ -858,8 +844,7 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
                 //can demote source type to the target type
                 ITypeConvertComputer demoteComputer = ATypeHierarchy.getTypeDemoteComputer(typeTag, targetTypeTag);
                 if (demoteComputer == null) {
-                    throw new AsterixException(
-                            "Can't cast the " + typeTag + " type to the " + targetTypeTag + " type.");
+                    throw new ParseException("Can't cast the " + typeTag + " type to the " + targetTypeTag + " type.");
                 }
                 // do the demotion; note that the type tag field should be skipped
                 demoteComputer.convertType(castBuffer.getByteArray(), castBuffer.getStartOffset() + 1,
@@ -868,8 +853,7 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
         }
     }
 
-    private void parseConstructor(ATypeTag typeTag, IAType objectType, DataOutput out)
-            throws AsterixException, AdmLexerException, IOException {
+    private void parseConstructor(ATypeTag typeTag, IAType objectType, DataOutput out) throws IOException {
         final ATypeTag targetTypeTag = getTargetTypeTag(typeTag, objectType);
         if (targetTypeTag != null) {
             DataOutput dataOutput = out;
@@ -906,8 +890,7 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
         throw new ParseException(mismatchErrorMessage + objectType.getTypeName() + ". Got " + typeTag + " instead.");
     }
 
-    private boolean parseValue(final String unquoted, ATypeTag typeTag, DataOutput out)
-            throws AsterixException, HyracksDataException, IOException {
+    private boolean parseValue(final String unquoted, ATypeTag typeTag, DataOutput out) throws HyracksDataException {
         switch (typeTag) {
             case BOOLEAN:
                 parseBoolean(unquoted, out);
@@ -981,7 +964,7 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
         }
     }
 
-    private void parseBoolean(String bool, DataOutput out) throws AsterixException, HyracksDataException {
+    private void parseBoolean(String bool, DataOutput out) throws HyracksDataException {
         String errorMessage = "This can not be an instance of boolean";
         if (bool.equals("true")) {
             booleanSerde.serialize(ABoolean.TRUE, out);
@@ -992,7 +975,7 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
         }
     }
 
-    private void parseInt8(String int8, DataOutput out) throws AsterixException, HyracksDataException {
+    private void parseInt8(String int8, DataOutput out) throws HyracksDataException {
         String errorMessage = "This can not be an instance of int8";
         boolean positive = true;
         byte value = 0;
@@ -1023,7 +1006,7 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
         int8Serde.serialize(aInt8, out);
     }
 
-    private void parseInt16(String int16, DataOutput out) throws AsterixException, HyracksDataException {
+    private void parseInt16(String int16, DataOutput out) throws HyracksDataException {
         String errorMessage = "This can not be an instance of int16";
         boolean positive = true;
         short value = 0;
@@ -1055,7 +1038,7 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
         int16Serde.serialize(aInt16, out);
     }
 
-    private void parseInt32(String int32, DataOutput out) throws AsterixException, HyracksDataException {
+    private void parseInt32(String int32, DataOutput out) throws HyracksDataException {
         String errorMessage = "This can not be an instance of int32";
         boolean positive = true;
         int value = 0;
@@ -1088,7 +1071,7 @@ public class ADMDataParser extends AbstractDataParser implements IStreamDataPars
         int32Serde.serialize(aInt32, out);
     }
 
-    private void parseInt64(String int64, DataOutput out) throws AsterixException, HyracksDataException {
+    private void parseInt64(String int64, DataOutput out) throws HyracksDataException {
         String errorMessage = "This can not be an instance of int64";
         boolean positive = true;
         long value = 0;

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractDataParser.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractDataParser.java b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractDataParser.java
index f5f2793..20b4124 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractDataParser.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/AbstractDataParser.java
@@ -73,7 +73,6 @@ import org.apache.asterix.om.base.temporal.ATimeParserFactory;
 import org.apache.asterix.om.base.temporal.GregorianCalendarSystem;
 import org.apache.asterix.om.types.ATypeTag;
 import org.apache.asterix.om.types.BuiltinType;
-import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
 import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.util.bytes.Base64Parser;
@@ -198,23 +197,13 @@ public abstract class AbstractDataParser implements IDataParser {
     }
 
     protected void parseTime(String time, DataOutput out) throws HyracksDataException {
-        int chrononTimeInMs;
-        try {
-            chrononTimeInMs = ATimeParserFactory.parseTimePart(time, 0, time.length());
-        } catch (Exception e) {
-            throw new HyracksDataException(e);
-        }
+        int chrononTimeInMs = ATimeParserFactory.parseTimePart(time, 0, time.length());
         aTime.setValue(chrononTimeInMs);
         timeSerde.serialize(aTime, out);
     }
 
     protected void parseDate(String date, DataOutput out) throws HyracksDataException {
-        long chrononTimeInMs = 0;
-        try {
-            chrononTimeInMs = ADateParserFactory.parseDatePart(date, 0, date.length());
-        } catch (Exception e) {
-            throw new HyracksDataException(e);
-        }
+        long chrononTimeInMs = ADateParserFactory.parseDatePart(date, 0, date.length());
         short temp = 0;
         if (chrononTimeInMs < 0 && chrononTimeInMs % GregorianCalendarSystem.CHRONON_OF_DAY != 0) {
             temp = 1;
@@ -224,56 +213,39 @@ public abstract class AbstractDataParser implements IDataParser {
     }
 
     protected void parseDateTime(String datetime, DataOutput out) throws HyracksDataException {
-        long chrononTimeInMs = 0;
-        try {
-            // +1 if it is negative (-)
-            short timeOffset = (short) ((datetime.charAt(0) == '-') ? 1 : 0);
+        // +1 if it is negative (-)
+        short timeOffset = (short) ((datetime.charAt(0) == '-') ? 1 : 0);
 
-            timeOffset += 8;
+        timeOffset += 8;
 
+        if (datetime.charAt(timeOffset) != 'T') {
+            timeOffset += 2;
             if (datetime.charAt(timeOffset) != 'T') {
-                timeOffset += 2;
-                if (datetime.charAt(timeOffset) != 'T') {
-                    throw new AlgebricksException("This can not be an instance of datetime: missing T");
-                }
+                throw new HyracksDataException("This can not be an instance of datetime: missing T");
             }
-            chrononTimeInMs = ADateParserFactory.parseDatePart(datetime, 0, timeOffset);
-            chrononTimeInMs += ATimeParserFactory.parseTimePart(datetime, timeOffset + 1,
-                    datetime.length() - timeOffset - 1);
-        } catch (Exception e) {
-            throw new HyracksDataException(e);
         }
+        long chrononTimeInMs = ADateParserFactory.parseDatePart(datetime, 0, timeOffset);
+        chrononTimeInMs += ATimeParserFactory.parseTimePart(datetime, timeOffset + 1,
+                datetime.length() - timeOffset - 1);
         aDateTime.setValue(chrononTimeInMs);
         datetimeSerde.serialize(aDateTime, out);
     }
 
     protected void parseDuration(String duration, DataOutput out) throws HyracksDataException {
-        try {
-            ADurationParserFactory.parseDuration(duration, 0, duration.length(), aDuration, ADurationParseOption.All);
-            durationSerde.serialize(aDuration, out);
-        } catch (Exception e) {
-            throw new HyracksDataException(e);
-        }
+        ADurationParserFactory.parseDuration(duration, 0, duration.length(), aDuration, ADurationParseOption.All);
+        durationSerde.serialize(aDuration, out);
     }
 
     protected void parseDateTimeDuration(String durationString, DataOutput out) throws HyracksDataException {
-        try {
-            ADurationParserFactory.parseDuration(durationString, 0, durationString.length(), aDayTimeDuration,
-                    ADurationParseOption.All);
-            dayTimeDurationSerde.serialize(aDayTimeDuration, out);
-        } catch (Exception e) {
-            throw new HyracksDataException(e);
-        }
+        ADurationParserFactory.parseDuration(durationString, 0, durationString.length(), aDayTimeDuration,
+                ADurationParseOption.All);
+        dayTimeDurationSerde.serialize(aDayTimeDuration, out);
     }
 
     protected void parseYearMonthDuration(String durationString, DataOutput out) throws HyracksDataException {
-        try {
-            ADurationParserFactory.parseDuration(durationString, 0, durationString.length(), aYearMonthDuration,
-                    ADurationParseOption.All);
-            yearMonthDurationSerde.serialize(aYearMonthDuration, out);
-        } catch (Exception e) {
-            throw new HyracksDataException(e);
-        }
+        ADurationParserFactory.parseDuration(durationString, 0, durationString.length(), aYearMonthDuration,
+                ADurationParseOption.All);
+        yearMonthDurationSerde.serialize(aYearMonthDuration, out);
     }
 
     protected void parsePoint(String point, DataOutput out) throws HyracksDataException {
@@ -362,138 +334,103 @@ public abstract class AbstractDataParser implements IDataParser {
     }
 
     protected void parseDateTimeInterval(String interval, DataOutput out) throws HyracksDataException {
-        long chrononTimeInMsStart = 0;
-        long chrononTimeInMsEnd = 0;
-        try {
-            // the starting point for parsing (so for the accessor)
-            int startOffset = 0;
-            int endOffset, timeSeperatorOffsetInDatetimeString;
-
-            // Get the index for the comma
-            int commaIndex = interval.indexOf(',');
-            if (commaIndex < 1) {
-                throw new AlgebricksException("comma is missing for a string of interval");
-            }
+        // the starting point for parsing (so for the accessor)
+        int startOffset = 0;
+        int endOffset, timeSeperatorOffsetInDatetimeString;
+
+        // Get the index for the comma
+        int commaIndex = interval.indexOf(',');
+        if (commaIndex < 1) {
+            throw new HyracksDataException("comma is missing for a string of interval");
+        }
 
-            endOffset = commaIndex - 1;
-            timeSeperatorOffsetInDatetimeString = interval.indexOf('T');
+        endOffset = commaIndex - 1;
+        timeSeperatorOffsetInDatetimeString = interval.indexOf('T');
 
-            if (timeSeperatorOffsetInDatetimeString < 0) {
-                throw new AlgebricksException(
-                        "This can not be an instance of interval: missing T for a datetime value.");
-            }
+        if (timeSeperatorOffsetInDatetimeString < 0) {
+            throw new HyracksDataException("This can not be an instance of interval: missing T for a datetime value.");
+        }
 
-            chrononTimeInMsStart = parseDatePart(interval, startOffset, timeSeperatorOffsetInDatetimeString - 1);
+        long chrononTimeInMsStart = parseDatePart(interval, startOffset, timeSeperatorOffsetInDatetimeString - 1);
 
-            chrononTimeInMsStart += parseTimePart(interval, timeSeperatorOffsetInDatetimeString + 1, endOffset);
+        chrononTimeInMsStart += parseTimePart(interval, timeSeperatorOffsetInDatetimeString + 1, endOffset);
 
-            // Interval End
-            startOffset = commaIndex + 1;
-            endOffset = interval.length() - 1;
+        // Interval End
+        startOffset = commaIndex + 1;
+        endOffset = interval.length() - 1;
 
-            timeSeperatorOffsetInDatetimeString = interval.indexOf('T', startOffset);
+        timeSeperatorOffsetInDatetimeString = interval.indexOf('T', startOffset);
 
-            if (timeSeperatorOffsetInDatetimeString < 0) {
-                throw new AlgebricksException(
-                        "This can not be an instance of interval: missing T for a datetime value.");
-            }
+        if (timeSeperatorOffsetInDatetimeString < 0) {
+            throw new HyracksDataException("This can not be an instance of interval: missing T for a datetime value.");
+        }
 
-            chrononTimeInMsEnd = parseDatePart(interval, startOffset, timeSeperatorOffsetInDatetimeString - 1);
+        long chrononTimeInMsEnd = parseDatePart(interval, startOffset, timeSeperatorOffsetInDatetimeString - 1);
 
-            chrononTimeInMsEnd += parseTimePart(interval, timeSeperatorOffsetInDatetimeString + 1, endOffset);
-        } catch (Exception e) {
-            throw new HyracksDataException(e);
-        }
+        chrononTimeInMsEnd += parseTimePart(interval, timeSeperatorOffsetInDatetimeString + 1, endOffset);
 
-        try {
-            aInterval.setValue(chrononTimeInMsStart, chrononTimeInMsEnd, ATypeTag.DATETIME.serialize());
-        } catch (AlgebricksException e) {
-            throw new HyracksDataException(e);
-        }
+        aInterval.setValue(chrononTimeInMsStart, chrononTimeInMsEnd, ATypeTag.DATETIME.serialize());
 
         intervalSerde.serialize(aInterval, out);
     }
 
     protected void parseTimeInterval(String interval, DataOutput out) throws HyracksDataException {
-        long chrononTimeInMsStart = 0;
-        long chrononTimeInMsEnd = 0;
-        try {
-            int startOffset = 0;
-            int endOffset;
-
-            // Get the index for the comma
-            int commaIndex = interval.indexOf(',');
-            if (commaIndex < 0) {
-                throw new AlgebricksException("comma is missing for a string of interval");
-            }
+        int startOffset = 0;
+        int endOffset;
 
-            endOffset = commaIndex - 1;
-            // Interval Start
-            chrononTimeInMsStart = parseTimePart(interval, startOffset, endOffset);
+        // Get the index for the comma
+        int commaIndex = interval.indexOf(',');
+        if (commaIndex < 0) {
+            throw new HyracksDataException("comma is missing for a string of interval");
+        }
 
-            if (chrononTimeInMsStart < 0) {
-                chrononTimeInMsStart += GregorianCalendarSystem.CHRONON_OF_DAY;
-            }
+        endOffset = commaIndex - 1;
+        // Interval Start
+        long chrononTimeInMsStart = parseTimePart(interval, startOffset, endOffset);
 
-            // Interval End
-            startOffset = commaIndex + 1;
-            endOffset = interval.length() - 1;
+        if (chrononTimeInMsStart < 0) {
+            chrononTimeInMsStart += GregorianCalendarSystem.CHRONON_OF_DAY;
+        }
 
-            chrononTimeInMsEnd = parseTimePart(interval, startOffset, endOffset);
-            if (chrononTimeInMsEnd < 0) {
-                chrononTimeInMsEnd += GregorianCalendarSystem.CHRONON_OF_DAY;
-            }
+        // Interval End
+        startOffset = commaIndex + 1;
+        endOffset = interval.length() - 1;
 
-        } catch (Exception e) {
-            throw new HyracksDataException(e);
+        long chrononTimeInMsEnd = parseTimePart(interval, startOffset, endOffset);
+        if (chrononTimeInMsEnd < 0) {
+            chrononTimeInMsEnd += GregorianCalendarSystem.CHRONON_OF_DAY;
         }
 
-        try {
-            aInterval.setValue(chrononTimeInMsStart, chrononTimeInMsEnd, ATypeTag.TIME.serialize());
-        } catch (AlgebricksException e) {
-            throw new HyracksDataException(e);
-        }
+        aInterval.setValue(chrononTimeInMsStart, chrononTimeInMsEnd, ATypeTag.TIME.serialize());
         intervalSerde.serialize(aInterval, out);
     }
 
     protected void parseDateInterval(String interval, DataOutput out) throws HyracksDataException {
-        long chrononTimeInMsStart = 0;
-        long chrononTimeInMsEnd = 0;
-        try {
-            // the starting point for parsing (so for the accessor)
-            int startOffset = 0;
-            int endOffset;
-
-            // Get the index for the comma
-            int commaIndex = interval.indexOf(',');
-            if (commaIndex < 1) {
-                throw new AlgebricksException("comma is missing for a string of interval");
-            }
-
-            endOffset = commaIndex - 1;
-            chrononTimeInMsStart = parseDatePart(interval, startOffset, endOffset);
+        // the starting point for parsing (so for the accessor)
+        int startOffset = 0;
+        int endOffset;
+
+        // Get the index for the comma
+        int commaIndex = interval.indexOf(',');
+        if (commaIndex < 1) {
+            throw new HyracksDataException("comma is missing for a string of interval");
+        }
 
-            // Interval End
-            startOffset = commaIndex + 1;
-            endOffset = interval.length() - 1;
+        endOffset = commaIndex - 1;
+        long chrononTimeInMsStart = parseDatePart(interval, startOffset, endOffset);
 
-            chrononTimeInMsEnd = parseDatePart(interval, startOffset, endOffset);
+        // Interval End
+        startOffset = commaIndex + 1;
+        endOffset = interval.length() - 1;
 
-        } catch (Exception e) {
-            throw new HyracksDataException(e);
-        }
+        long chrononTimeInMsEnd = parseDatePart(interval, startOffset, endOffset);
 
-        try {
-            aInterval.setValue((chrononTimeInMsStart / GregorianCalendarSystem.CHRONON_OF_DAY),
-                    (chrononTimeInMsEnd / GregorianCalendarSystem.CHRONON_OF_DAY), ATypeTag.DATE.serialize());
-        } catch (AlgebricksException e) {
-            throw new HyracksDataException(e);
-        }
+        aInterval.setValue((chrononTimeInMsStart / GregorianCalendarSystem.CHRONON_OF_DAY),
+                (chrononTimeInMsEnd / GregorianCalendarSystem.CHRONON_OF_DAY), ATypeTag.DATE.serialize());
         intervalSerde.serialize(aInterval, out);
     }
 
-    private long parseDatePart(String interval, int startOffset, int endOffset)
-            throws AlgebricksException, HyracksDataException {
+    private long parseDatePart(String interval, int startOffset, int endOffset) throws HyracksDataException {
 
         while (interval.charAt(endOffset) == '"' || interval.charAt(endOffset) == ' ') {
             endOffset--;
@@ -506,8 +443,7 @@ public abstract class AbstractDataParser implements IDataParser {
         return ADateParserFactory.parseDatePart(interval, startOffset, endOffset - startOffset + 1);
     }
 
-    private int parseTimePart(String interval, int startOffset, int endOffset)
-            throws AlgebricksException, HyracksDataException {
+    private int parseTimePart(String interval, int startOffset, int endOffset) throws HyracksDataException {
 
         while (interval.charAt(endOffset) == '"' || interval.charAt(endOffset) == ' ') {
             endOffset--;

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-external-data/src/main/java/org/apache/asterix/external/parser/DelimitedDataParser.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/DelimitedDataParser.java b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/DelimitedDataParser.java
index 2f0fc86..7e231a4 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/DelimitedDataParser.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/DelimitedDataParser.java
@@ -26,7 +26,6 @@ import java.util.Map;
 
 import org.apache.asterix.builders.IARecordBuilder;
 import org.apache.asterix.builders.RecordBuilder;
-import org.apache.asterix.common.exceptions.AsterixException;
 import org.apache.asterix.dataflow.data.nontagged.serde.ANullSerializerDeserializer;
 import org.apache.asterix.external.api.IDataParser;
 import org.apache.asterix.external.api.IExternalDataSourceFactory.DataSourceType;
@@ -72,7 +71,7 @@ public class DelimitedDataParser extends AbstractDataParser implements IStreamDa
     }
 
     @Override
-    public boolean parse(DataOutput out) throws AsterixException, IOException {
+    public boolean parse(DataOutput out) throws IOException {
         while (cursor.nextRecord()) {
             parseRecord(out);
             if (!areAllNullFields) {
@@ -83,7 +82,7 @@ public class DelimitedDataParser extends AbstractDataParser implements IStreamDa
         return false;
     }
 
-    private void parseRecord(DataOutput out) throws AsterixException, IOException {
+    private void parseRecord(DataOutput out) throws IOException {
         recBuilder.reset(recordType);
         recBuilder.init();
         areAllNullFields = true;
@@ -100,7 +99,7 @@ public class DelimitedDataParser extends AbstractDataParser implements IStreamDa
                 // NULL. Note that string type can also process empty field as an
                 // empty string
                 if (!NonTaggedFormatUtil.isOptional(recordType.getFieldTypes()[i])) {
-                    throw new AsterixException("At record: " + cursor.recordCount + " - Field " + cursor.fieldCount
+                    throw new HyracksDataException("At record: " + cursor.recordCount + " - Field " + cursor.fieldCount
                             + " is not an optional type so it cannot accept null value. ");
                 }
                 fieldValueBufferOutput.writeByte(ATypeTag.NULL.serialize());
@@ -174,7 +173,7 @@ public class DelimitedDataParser extends AbstractDataParser implements IStreamDa
     }
 
     @Override
-    public void parse(IRawRecord<? extends char[]> record, DataOutput out) throws Exception {
+    public void parse(IRawRecord<? extends char[]> record, DataOutput out) throws IOException {
         cursor.nextRecord(record.get(), record.size());
         parseRecord(out);
         if (!areAllNullFields) {

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-external-data/src/main/java/org/apache/asterix/external/parser/HiveRecordParser.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/HiveRecordParser.java b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/HiveRecordParser.java
index fb61339..1c91130 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/HiveRecordParser.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/HiveRecordParser.java
@@ -119,25 +119,28 @@ public class HiveRecordParser implements IRecordDataParser<Writable> {
     }
 
     @Override
-    public void parse(IRawRecord<? extends Writable> record, DataOutput out) throws Exception {
-        Writable hiveRawRecord = record.get();
-        Object hiveObject = hiveSerde.deserialize(hiveRawRecord);
-        int n = aRecord.getFieldNames().length;
-        List<Object> attributesValues = oi.getStructFieldsDataAsList(hiveObject);
-        recBuilder.reset(aRecord);
-        recBuilder.init();
-        for (int i = 0; i < n; i++) {
-            final Object value = attributesValues.get(i);
-            final ObjectInspector foi = fieldRefs.get(i).getFieldObjectInspector();
-            fieldValueBuffer.reset();
-            final DataOutput dataOutput = fieldValueBuffer.getDataOutput();
-            dataOutput.writeByte(fieldTypeTags[i]);
-            //get field type
-            parseItem(fieldTypes[i], value, foi, dataOutput, false);
-            recBuilder.addField(i, fieldValueBuffer);
+    public void parse(IRawRecord<? extends Writable> record, DataOutput out) throws HyracksDataException {
+        try {
+            Writable hiveRawRecord = record.get();
+            Object hiveObject = hiveSerde.deserialize(hiveRawRecord);
+            int n = aRecord.getFieldNames().length;
+            List<Object> attributesValues = oi.getStructFieldsDataAsList(hiveObject);
+            recBuilder.reset(aRecord);
+            recBuilder.init();
+            for (int i = 0; i < n; i++) {
+                final Object value = attributesValues.get(i);
+                final ObjectInspector foi = fieldRefs.get(i).getFieldObjectInspector();
+                fieldValueBuffer.reset();
+                final DataOutput dataOutput = fieldValueBuffer.getDataOutput();
+                dataOutput.writeByte(fieldTypeTags[i]);
+                //get field type
+                parseItem(fieldTypes[i], value, foi, dataOutput, false);
+                recBuilder.addField(i, fieldValueBuffer);
+            }
+            recBuilder.write(out, true);
+        } catch (Exception e) {
+            throw new HyracksDataException(e);
         }
-        recBuilder.write(out, true);
-
     }
 
     private void parseItem(IAType itemType, Object value, ObjectInspector foi, DataOutput dataOutput,

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RSSParser.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RSSParser.java b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RSSParser.java
index 4d93dc5..3a3bd7d 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RSSParser.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RSSParser.java
@@ -59,7 +59,7 @@ public class RSSParser implements IRecordDataParser<SyndEntryImpl> {
     }
 
     @Override
-    public void parse(IRawRecord<? extends SyndEntryImpl> record, DataOutput out) throws Exception {
+    public void parse(IRawRecord<? extends SyndEntryImpl> record, DataOutput out) throws IOException {
         SyndEntryImpl entry = record.get();
         tupleFieldValues[0] = idPrefix + ":" + id;
         tupleFieldValues[1] = entry.getTitle();

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RecordWithMetadataParser.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RecordWithMetadataParser.java b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RecordWithMetadataParser.java
index ecdb03d..67d84b5 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RecordWithMetadataParser.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/RecordWithMetadataParser.java
@@ -89,19 +89,23 @@ public class RecordWithMetadataParser<T> implements IRecordDataParser<RecordWith
     }
 
     @Override
-    public void parse(IRawRecord<? extends RecordWithMetadata<T>> record, DataOutput out) throws Exception {
-        recBuilder.reset(recordType);
-        valueBuffer.reset();
-        recBuilder.init();
-        RecordWithMetadata<T> rwm = record.get();
-        for (int i = 0; i < numberOfFields; i++) {
-            if (i == valueIndex) {
-                valueParser.parse(rwm.getRecord(), valueBuffer.getDataOutput());
-                recBuilder.addField(i, valueBuffer);
-            } else {
-                recBuilder.addField(i, rwm.getMetadata(metaIndexes[i]));
+    public void parse(IRawRecord<? extends RecordWithMetadata<T>> record, DataOutput out) throws HyracksDataException {
+        try {
+            recBuilder.reset(recordType);
+            valueBuffer.reset();
+            recBuilder.init();
+            RecordWithMetadata<T> rwm = record.get();
+            for (int i = 0; i < numberOfFields; i++) {
+                if (i == valueIndex) {
+                    valueParser.parse(rwm.getRecord(), valueBuffer.getDataOutput());
+                    recBuilder.addField(i, valueBuffer);
+                } else {
+                    recBuilder.addField(i, rwm.getMetadata(metaIndexes[i]));
+                }
             }
+            recBuilder.write(out, true);
+        } catch (IOException e) {
+            throw new HyracksDataException(e);
         }
-        recBuilder.write(out, true);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-external-data/src/main/java/org/apache/asterix/external/parser/TweetParser.java
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/TweetParser.java b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/TweetParser.java
index b9cd60b..7ae3303 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/parser/TweetParser.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/parser/TweetParser.java
@@ -92,7 +92,7 @@ public class TweetParser implements IRecordDataParser<Status> {
     }
 
     @Override
-    public void parse(IRawRecord<? extends Status> record, DataOutput out) throws Exception {
+    public void parse(IRawRecord<? extends Status> record, DataOutput out) throws HyracksDataException {
         Status tweet = record.get();
         User user = tweet.getUser();
         // Tweet user data

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-external-data/src/main/resources/adm.grammar
----------------------------------------------------------------------
diff --git a/asterix-external-data/src/main/resources/adm.grammar b/asterix-external-data/src/main/resources/adm.grammar
index 1910436..973c2b9 100644
--- a/asterix-external-data/src/main/resources/adm.grammar
+++ b/asterix-external-data/src/main/resources/adm.grammar
@@ -20,8 +20,9 @@
 # Place *first* the generic configuration
 # then list your grammar.
 
-PACKAGE:          org.apache.asterix.runtime.operators.file.adm
-LEXER_NAME:       AdmLexer
+PACKAGE:               org.apache.asterix.runtime.operators.file.adm
+LEXER_NAME:            AdmLexer
+EXCEPTION_SUPER_CLASS: org.apache.hyracks.api.exceptions.HyracksDataException
 
 TOKENS:
 

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-maven-plugins/lexer-generator-maven-plugin/src/main/java/org/apache/asterix/lexergenerator/LexerGenerator.java
----------------------------------------------------------------------
diff --git a/asterix-maven-plugins/lexer-generator-maven-plugin/src/main/java/org/apache/asterix/lexergenerator/LexerGenerator.java b/asterix-maven-plugins/lexer-generator-maven-plugin/src/main/java/org/apache/asterix/lexergenerator/LexerGenerator.java
index 1588c39..3ae7339 100644
--- a/asterix-maven-plugins/lexer-generator-maven-plugin/src/main/java/org/apache/asterix/lexergenerator/LexerGenerator.java
+++ b/asterix-maven-plugins/lexer-generator-maven-plugin/src/main/java/org/apache/asterix/lexergenerator/LexerGenerator.java
@@ -131,14 +131,14 @@ public class LexerGenerator {
         Set<String> functions = main.neededAuxFunctions();
         for (String token : functions) {
             result.append("private int parse_" + token
-                    + "(char currentChar) throws IOException, [LEXER_NAME]Exception{\n");
+                    + "(char currentChar) throws IOException {\n");
             result.append(tokens.get(token).getNode().toJavaAuxFunction());
             result.append("\n}\n\n");
         }
         return result.toString();
     }
 
-    private static String readFile(Reader input) throws FileNotFoundException, IOException {
+    private static String readFile(Reader input) throws IOException {
         StringBuffer fileData = new StringBuffer(1000);
         BufferedReader reader = new BufferedReader(input);
         char[] buf = new char[1024];
@@ -152,14 +152,14 @@ public class LexerGenerator {
         return fileData.toString();
     }
 
-    private static String readFile(InputStream input) throws FileNotFoundException, IOException {
+    private static String readFile(InputStream input) throws IOException {
         if (input == null) {
             throw new FileNotFoundException();
         }
         return readFile(new InputStreamReader(input));
     }
 
-    private static String readFile(String fileName) throws FileNotFoundException, IOException {
+    private static String readFile(String fileName) throws IOException {
         return readFile(new FileReader(fileName));
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-maven-plugins/lexer-generator-maven-plugin/src/main/resources/LexerException.java
----------------------------------------------------------------------
diff --git a/asterix-maven-plugins/lexer-generator-maven-plugin/src/main/resources/LexerException.java b/asterix-maven-plugins/lexer-generator-maven-plugin/src/main/resources/LexerException.java
index 9030eb2..2701319 100644
--- a/asterix-maven-plugins/lexer-generator-maven-plugin/src/main/resources/LexerException.java
+++ b/asterix-maven-plugins/lexer-generator-maven-plugin/src/main/resources/LexerException.java
@@ -18,7 +18,7 @@
  */
 package [PACKAGE];
 
-public class [LEXER_NAME]Exception extends Exception {
+public class [LEXER_NAME]Exception extends [EXCEPTION_SUPER_CLASS] {
 
     public [LEXER_NAME]Exception(String message) {
         super(message);

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-maven-plugins/lexer-generator-maven-plugin/src/main/resources/default.config
----------------------------------------------------------------------
diff --git a/asterix-maven-plugins/lexer-generator-maven-plugin/src/main/resources/default.config b/asterix-maven-plugins/lexer-generator-maven-plugin/src/main/resources/default.config
index 63e0dd3..03a98dd 100644
--- a/asterix-maven-plugins/lexer-generator-maven-plugin/src/main/resources/default.config
+++ b/asterix-maven-plugins/lexer-generator-maven-plugin/src/main/resources/default.config
@@ -20,9 +20,10 @@
 # Place *first* the generic configuration
 # then list your grammar.
 
-PACKAGE:          com.my.lexer
-LEXER_NAME:       MyLexer
-OUTPUT_DIR:       output
+PACKAGE:               com.my.lexer
+LEXER_NAME:            MyLexer
+EXCEPTION_SUPER_CLASS: java.io.IOException
+OUTPUT_DIR:            output
 
 TOKENS:
 

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/9dcba3c9/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataManager.java
----------------------------------------------------------------------
diff --git a/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataManager.java b/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataManager.java
index 8f4e763..9786ebf 100644
--- a/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataManager.java
+++ b/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataManager.java
@@ -543,7 +543,7 @@ public class MetadataManager implements IMetadataManager {
         } catch (RemoteException e) {
             throw new MetadataException(e);
         }
-        ctx.addNogeGroup(nodeGroup);
+        ctx.addNodeGroup(nodeGroup);
     }
 
     @Override
@@ -584,7 +584,7 @@ public class MetadataManager implements IMetadataManager {
         // We fetched the nodeGroup from the MetadataNode. Add it to the cache
         // when this transaction commits.
         if (nodeGroup != null) {
-            ctx.addNogeGroup(nodeGroup);
+            ctx.addNodeGroup(nodeGroup);
         }
         return nodeGroup;
     }