You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by dl...@apache.org on 2018/05/30 17:44:39 UTC
[12/24] asterixdb git commit: [ASTERIXDB-2393][COMP][RT] Add source
location to error messages
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/IndexUtil.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/IndexUtil.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/IndexUtil.java
index eb14bae..c29279b 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/IndexUtil.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/IndexUtil.java
@@ -38,6 +38,7 @@ import org.apache.asterix.runtime.job.listener.JobEventListenerFactory;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.core.rewriter.base.PhysicalOptimizationConfig;
import org.apache.hyracks.api.dataflow.value.ITypeTraits;
+import org.apache.hyracks.api.exceptions.SourceLocation;
import org.apache.hyracks.api.job.IJobletEventListenerFactory;
import org.apache.hyracks.api.job.JobSpecification;
@@ -103,40 +104,41 @@ public class IndexUtil {
}
public static JobSpecification buildDropIndexJobSpec(Index index, MetadataProvider metadataProvider,
- Dataset dataset) throws AlgebricksException {
+ Dataset dataset, SourceLocation sourceLoc) throws AlgebricksException {
SecondaryIndexOperationsHelper secondaryIndexHelper = SecondaryIndexOperationsHelper
- .createIndexOperationsHelper(dataset, index, metadataProvider, physicalOptimizationConfig);
+ .createIndexOperationsHelper(dataset, index, metadataProvider, physicalOptimizationConfig, sourceLoc);
return secondaryIndexHelper.buildDropJobSpec(EnumSet.noneOf(DropOption.class));
}
public static JobSpecification buildDropIndexJobSpec(Index index, MetadataProvider metadataProvider,
- Dataset dataset, Set<DropOption> options) throws AlgebricksException {
+ Dataset dataset, Set<DropOption> options, SourceLocation sourceLoc) throws AlgebricksException {
SecondaryIndexOperationsHelper secondaryIndexHelper = SecondaryIndexOperationsHelper
- .createIndexOperationsHelper(dataset, index, metadataProvider, physicalOptimizationConfig);
+ .createIndexOperationsHelper(dataset, index, metadataProvider, physicalOptimizationConfig, sourceLoc);
return secondaryIndexHelper.buildDropJobSpec(options);
}
public static JobSpecification buildSecondaryIndexCreationJobSpec(Dataset dataset, Index index,
- MetadataProvider metadataProvider) throws AlgebricksException {
+ MetadataProvider metadataProvider, SourceLocation sourceLoc) throws AlgebricksException {
SecondaryIndexOperationsHelper secondaryIndexHelper = SecondaryIndexOperationsHelper
- .createIndexOperationsHelper(dataset, index, metadataProvider, physicalOptimizationConfig);
+ .createIndexOperationsHelper(dataset, index, metadataProvider, physicalOptimizationConfig, sourceLoc);
return secondaryIndexHelper.buildCreationJobSpec();
}
public static JobSpecification buildSecondaryIndexLoadingJobSpec(Dataset dataset, Index index,
- MetadataProvider metadataProvider) throws AlgebricksException {
- return buildSecondaryIndexLoadingJobSpec(dataset, index, metadataProvider, null);
+ MetadataProvider metadataProvider, SourceLocation sourceLoc) throws AlgebricksException {
+ return buildSecondaryIndexLoadingJobSpec(dataset, index, metadataProvider, null, sourceLoc);
}
public static JobSpecification buildSecondaryIndexLoadingJobSpec(Dataset dataset, Index index,
- MetadataProvider metadataProvider, List<ExternalFile> files) throws AlgebricksException {
+ MetadataProvider metadataProvider, List<ExternalFile> files, SourceLocation sourceLoc)
+ throws AlgebricksException {
SecondaryIndexOperationsHelper secondaryIndexHelper;
if (dataset.isCorrelated()) {
secondaryIndexHelper = SecondaryCorrelatedTreeIndexOperationsHelper.createIndexOperationsHelper(dataset,
- index, metadataProvider, physicalOptimizationConfig);
+ index, metadataProvider, physicalOptimizationConfig, sourceLoc);
} else {
secondaryIndexHelper = SecondaryTreeIndexOperationsHelper.createIndexOperationsHelper(dataset, index,
- metadataProvider, physicalOptimizationConfig);
+ metadataProvider, physicalOptimizationConfig, sourceLoc);
}
if (files != null) {
secondaryIndexHelper.setExternalFiles(files);
@@ -145,9 +147,9 @@ public class IndexUtil {
}
public static JobSpecification buildSecondaryIndexCompactJobSpec(Dataset dataset, Index index,
- MetadataProvider metadataProvider) throws AlgebricksException {
+ MetadataProvider metadataProvider, SourceLocation sourceLoc) throws AlgebricksException {
SecondaryIndexOperationsHelper secondaryIndexHelper = SecondaryIndexOperationsHelper
- .createIndexOperationsHelper(dataset, index, metadataProvider, physicalOptimizationConfig);
+ .createIndexOperationsHelper(dataset, index, metadataProvider, physicalOptimizationConfig, sourceLoc);
return secondaryIndexHelper.buildCompactJobSpec();
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryBTreeOperationsHelper.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryBTreeOperationsHelper.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryBTreeOperationsHelper.java
index cf6338a..56e967e 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryBTreeOperationsHelper.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryBTreeOperationsHelper.java
@@ -53,7 +53,6 @@ import org.apache.hyracks.dataflow.std.connectors.OneToOneConnectorDescriptor;
import org.apache.hyracks.dataflow.std.sort.ExternalSortOperatorDescriptor;
import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory;
import org.apache.hyracks.storage.am.common.dataflow.IndexDataflowHelperFactory;
-import org.apache.hyracks.storage.am.common.dataflow.TreeIndexBulkLoadOperatorDescriptor;
public class SecondaryBTreeOperationsHelper extends SecondaryTreeIndexOperationsHelper {
@@ -108,9 +107,11 @@ public class SecondaryBTreeOperationsHelper extends SecondaryTreeIndexOperations
secondaryBulkLoadOp = createExternalIndexBulkLoadOp(spec, fieldPermutation, dataflowHelperFactory,
GlobalConfig.DEFAULT_TREE_FILL_FACTOR);
}
+ SinkRuntimeFactory sinkRuntimeFactory = new SinkRuntimeFactory();
+ sinkRuntimeFactory.setSourceLocation(sourceLoc);
AlgebricksMetaOperatorDescriptor metaOp = new AlgebricksMetaOperatorDescriptor(spec, 1, 0,
- new IPushRuntimeFactory[] { new SinkRuntimeFactory() },
- new RecordDescriptor[] { secondaryRecDesc });
+ new IPushRuntimeFactory[] { sinkRuntimeFactory }, new RecordDescriptor[] { secondaryRecDesc });
+ metaOp.setSourceLocation(sourceLoc);
spec.connect(new OneToOneConnectorDescriptor(spec), secondaryBulkLoadOp, 0, metaOp, 0);
root = metaOp;
spec.connect(new OneToOneConnectorDescriptor(spec), sourceOp, 0, asterixAssignOp, 0);
@@ -170,9 +171,10 @@ public class SecondaryBTreeOperationsHelper extends SecondaryTreeIndexOperations
// bulk load op ----> sink op
sourceOp = targetOp;
+ SinkRuntimeFactory sinkRuntimeFactory = new SinkRuntimeFactory();
+ sinkRuntimeFactory.setSourceLocation(sourceLoc);
targetOp = new AlgebricksMetaOperatorDescriptor(spec, 1, 0,
- new IPushRuntimeFactory[] { new SinkRuntimeFactory() },
- new RecordDescriptor[] { secondaryRecDesc });
+ new IPushRuntimeFactory[] { sinkRuntimeFactory }, new RecordDescriptor[] { secondaryRecDesc });
spec.connect(new OneToOneConnectorDescriptor(spec), sourceOp, 0, targetOp, 0);
spec.addRoot(targetOp);
@@ -236,7 +238,7 @@ public class SecondaryBTreeOperationsHelper extends SecondaryTreeIndexOperations
}
secondaryFieldAccessEvalFactories[i] = metadataProvider.getDataFormat().getFieldAccessEvaluatorFactory(
metadataProvider.getFunctionManager(), isOverridingKeyFieldTypes ? enforcedItemType : sourceType,
- index.getKeyFieldNames().get(i), sourceColumn);
+ index.getKeyFieldNames().get(i), sourceColumn, sourceLoc);
Pair<IAType, Boolean> keyTypePair = Index.getNonNullableOpenFieldType(index.getKeyFieldTypes().get(i),
index.getKeyFieldNames().get(i), sourceType);
IAType keyType = keyTypePair.first;
@@ -274,9 +276,9 @@ public class SecondaryBTreeOperationsHelper extends SecondaryTreeIndexOperations
}
if (numFilterFields > 0) {
- secondaryFieldAccessEvalFactories[numSecondaryKeys] =
- metadataProvider.getDataFormat().getFieldAccessEvaluatorFactory(
- metadataProvider.getFunctionManager(), itemType, filterFieldName, numPrimaryKeys);
+ secondaryFieldAccessEvalFactories[numSecondaryKeys] = metadataProvider.getDataFormat()
+ .getFieldAccessEvaluatorFactory(metadataProvider.getFunctionManager(), itemType, filterFieldName,
+ numPrimaryKeys, sourceLoc);
Pair<IAType, Boolean> keyTypePair = Index.getNonNullableKeyFieldType(filterFieldName, itemType);
IAType type = keyTypePair.first;
ISerializerDeserializer serde = serdeProvider.getSerializerDeserializer(type);
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedBTreeOperationsHelper.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedBTreeOperationsHelper.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedBTreeOperationsHelper.java
index 7791cad..12e21f6 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedBTreeOperationsHelper.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedBTreeOperationsHelper.java
@@ -102,9 +102,11 @@ public class SecondaryCorrelatedBTreeOperationsHelper extends SecondaryCorrelate
createTreeIndexBulkLoadOp(spec, metadataProvider, taggedSecondaryRecDesc,
createFieldPermutationForBulkLoadOp(), getNumSecondaryKeys(), numPrimaryKeys, false);
- AlgebricksMetaOperatorDescriptor metaOp =
- new AlgebricksMetaOperatorDescriptor(spec, 1, 0, new IPushRuntimeFactory[] { new SinkRuntimeFactory() },
- new RecordDescriptor[] { taggedSecondaryRecDesc });
+ SinkRuntimeFactory sinkRuntimeFactory = new SinkRuntimeFactory();
+ sinkRuntimeFactory.setSourceLocation(sourceLoc);
+ AlgebricksMetaOperatorDescriptor metaOp = new AlgebricksMetaOperatorDescriptor(spec, 1, 0,
+ new IPushRuntimeFactory[] { sinkRuntimeFactory }, new RecordDescriptor[] { taggedSecondaryRecDesc });
+ metaOp.setSourceLocation(sourceLoc);
// Connect the operators.
spec.connect(new OneToOneConnectorDescriptor(spec), keyProviderOp, 0, primaryScanOp, 0);
spec.connect(new OneToOneConnectorDescriptor(spec), sourceOp, 0, asterixAssignOp, 0);
@@ -155,7 +157,7 @@ public class SecondaryCorrelatedBTreeOperationsHelper extends SecondaryCorrelate
}
secondaryFieldAccessEvalFactories[i] = metadataProvider.getDataFormat().getFieldAccessEvaluatorFactory(
metadataProvider.getFunctionManager(), isOverridingKeyTypes ? enforcedItemType : sourceType,
- index.getKeyFieldNames().get(i), sourceColumn);
+ index.getKeyFieldNames().get(i), sourceColumn, sourceLoc);
Pair<IAType, Boolean> keyTypePair = Index.getNonNullableOpenFieldType(index.getKeyFieldTypes().get(i),
index.getKeyFieldNames().get(i), sourceType);
IAType keyType = keyTypePair.first;
@@ -185,7 +187,7 @@ public class SecondaryCorrelatedBTreeOperationsHelper extends SecondaryCorrelate
if (numFilterFields > 0) {
secondaryFieldAccessEvalFactories[numSecondaryKeys] =
metadataProvider.getDataFormat().getFieldAccessEvaluatorFactory(
- metadataProvider.getFunctionManager(), itemType, filterFieldName, recordColumn);
+ metadataProvider.getFunctionManager(), itemType, filterFieldName, recordColumn, sourceLoc);
Pair<IAType, Boolean> keyTypePair = Index.getNonNullableKeyFieldType(filterFieldName, itemType);
IAType type = keyTypePair.first;
ISerializerDeserializer serde = serdeProvider.getSerializerDeserializer(type);
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedInvertedIndexOperationsHelper.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedInvertedIndexOperationsHelper.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedInvertedIndexOperationsHelper.java
index b91d65f..c6e4322 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedInvertedIndexOperationsHelper.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedInvertedIndexOperationsHelper.java
@@ -85,11 +85,12 @@ public class SecondaryCorrelatedInvertedIndexOperationsHelper extends SecondaryC
// Sanity checks.
if (numPrimaryKeys > 1) {
throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_INDEX_FOR_DATASET_WITH_COMPOSITE_PRIMARY_INDEX,
- indexType, RecordUtil.toFullyQualifiedName(dataset.getDataverseName(), dataset.getDatasetName()));
+ sourceLoc, indexType,
+ RecordUtil.toFullyQualifiedName(dataset.getDataverseName(), dataset.getDatasetName()));
}
if (numSecondaryKeys > 1) {
- throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_INDEX_NUM_OF_FIELD, numSecondaryKeys,
- indexType, 1);
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_INDEX_NUM_OF_FIELD, sourceLoc,
+ numSecondaryKeys, indexType, 1);
}
if (indexType == IndexType.LENGTH_PARTITIONED_WORD_INVIX
|| indexType == IndexType.LENGTH_PARTITIONED_NGRAM_INVIX) {
@@ -111,7 +112,7 @@ public class SecondaryCorrelatedInvertedIndexOperationsHelper extends SecondaryC
if (numSecondaryKeys > 0) {
secondaryFieldAccessEvalFactories[0] = metadataProvider.getDataFormat().getFieldAccessEvaluatorFactory(
metadataProvider.getFunctionManager(), isOverridingKeyFieldTypes ? enforcedItemType : itemType,
- index.getKeyFieldNames().get(0), recordColumn);
+ index.getKeyFieldNames().get(0), recordColumn, sourceLoc);
Pair<IAType, Boolean> keyTypePair = Index.getNonNullableOpenFieldType(index.getKeyFieldTypes().get(0),
index.getKeyFieldNames().get(0), itemType);
secondaryKeyType = keyTypePair.first;
@@ -123,7 +124,7 @@ public class SecondaryCorrelatedInvertedIndexOperationsHelper extends SecondaryC
if (numFilterFields > 0) {
secondaryFieldAccessEvalFactories[numSecondaryKeys] =
metadataProvider.getDataFormat().getFieldAccessEvaluatorFactory(
- metadataProvider.getFunctionManager(), itemType, filterFieldName, recordColumn);
+ metadataProvider.getFunctionManager(), itemType, filterFieldName, recordColumn, sourceLoc);
Pair<IAType, Boolean> keyTypePair = Index.getNonNullableKeyFieldType(filterFieldName, itemType);
IAType type = keyTypePair.first;
ISerializerDeserializer serde = serdeProvider.getSerializerDeserializer(type);
@@ -244,8 +245,11 @@ public class SecondaryCorrelatedInvertedIndexOperationsHelper extends SecondaryC
createTreeIndexBulkLoadOp(spec, metadataProvider, taggedTokenKeyPairRecDesc,
createFieldPermutationForBulkLoadOp(), getNumSecondaryKeys(), numPrimaryKeys, true);
+ SinkRuntimeFactory sinkRuntimeFactory = new SinkRuntimeFactory();
+ sinkRuntimeFactory.setSourceLocation(sourceLoc);
AlgebricksMetaOperatorDescriptor metaOp = new AlgebricksMetaOperatorDescriptor(spec, 1, 0,
- new IPushRuntimeFactory[] { new SinkRuntimeFactory() }, new RecordDescriptor[] {});
+ new IPushRuntimeFactory[] { sinkRuntimeFactory }, new RecordDescriptor[] {});
+ metaOp.setSourceLocation(sourceLoc);
// Connect the operators.
spec.connect(new OneToOneConnectorDescriptor(spec), keyProviderOp, 0, primaryScanOp, 0);
spec.connect(new OneToOneConnectorDescriptor(spec), sourceOp, 0, asterixAssignOp, 0);
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedRTreeOperationsHelper.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedRTreeOperationsHelper.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedRTreeOperationsHelper.java
index bf5178c..7a855d5 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedRTreeOperationsHelper.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedRTreeOperationsHelper.java
@@ -77,7 +77,8 @@ public class SecondaryCorrelatedRTreeOperationsHelper extends SecondaryCorrelate
int numSecondaryKeys = secondaryKeyFields.size();
boolean isOverridingKeyFieldTypes = index.isOverridingKeyFieldTypes();
if (numSecondaryKeys != 1) {
- throw AsterixException.create(ErrorCode.INDEX_RTREE_MULTIPLE_FIELDS_NOT_ALLOWED, numSecondaryKeys);
+ throw AsterixException.create(ErrorCode.INDEX_RTREE_MULTIPLE_FIELDS_NOT_ALLOWED, sourceLoc,
+ numSecondaryKeys);
}
Pair<IAType, Boolean> spatialTypePair =
Index.getNonNullableOpenFieldType(index.getKeyFieldTypes().get(0), secondaryKeyFields.get(0), itemType);
@@ -89,7 +90,7 @@ public class SecondaryCorrelatedRTreeOperationsHelper extends SecondaryCorrelate
int recordColumn = NUM_TAG_FIELDS + numPrimaryKeys;
secondaryFieldAccessEvalFactories = metadataProvider.getDataFormat().createMBRFactory(
metadataProvider.getFunctionManager(), isOverridingKeyFieldTypes ? enforcedItemType : itemType,
- secondaryKeyFields.get(0), recordColumn, numDimensions, filterFieldName, isPointMBR);
+ secondaryKeyFields.get(0), recordColumn, numDimensions, filterFieldName, isPointMBR, sourceLoc);
secondaryComparatorFactories = new IBinaryComparatorFactory[numNestedSecondaryKeyFields];
valueProviderFactories = new IPrimitiveValueProviderFactory[numNestedSecondaryKeyFields];
ISerializerDeserializer[] secondaryRecFields =
@@ -212,8 +213,11 @@ public class SecondaryCorrelatedRTreeOperationsHelper extends SecondaryCorrelate
metadataProvider, secondaryRecDescConsideringPointMBR, createFieldPermutationForBulkLoadOp(),
numNestedSecondaryKeFieldsConsideringPointMBR, numPrimaryKeys, false);
+ SinkRuntimeFactory sinkRuntimeFactory = new SinkRuntimeFactory();
+ sinkRuntimeFactory.setSourceLocation(sourceLoc);
AlgebricksMetaOperatorDescriptor metaOp = new AlgebricksMetaOperatorDescriptor(spec, 1, 0,
- new IPushRuntimeFactory[] { new SinkRuntimeFactory() }, new RecordDescriptor[] {});
+ new IPushRuntimeFactory[] { sinkRuntimeFactory }, new RecordDescriptor[] {});
+ metaOp.setSourceLocation(sourceLoc);
// Connect the operators.
spec.connect(new OneToOneConnectorDescriptor(spec), keyProviderOp, 0, primaryScanOp, 0);
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedTreeIndexOperationsHelper.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedTreeIndexOperationsHelper.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedTreeIndexOperationsHelper.java
index 48982c0..f863589 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedTreeIndexOperationsHelper.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryCorrelatedTreeIndexOperationsHelper.java
@@ -47,6 +47,7 @@ import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
import org.apache.hyracks.api.dataflow.value.ITypeTraits;
import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.api.exceptions.SourceLocation;
import org.apache.hyracks.api.job.JobSpecification;
import org.apache.hyracks.data.std.primitive.BooleanPointable;
import org.apache.hyracks.data.std.primitive.IntegerPointable;
@@ -177,6 +178,7 @@ public abstract class SecondaryCorrelatedTreeIndexOperationsHelper extends Secon
IScalarEvaluatorFactory[] sefs = new IScalarEvaluatorFactory[1];
sefs[0] = createCastFunction(strictCast).createEvaluatorFactory(castEvalFact);
AssignRuntimeFactory castAssign = new AssignRuntimeFactory(outColumns, sefs, projectionList);
+ castAssign.setSourceLocation(sourceLoc);
return new AlgebricksMetaOperatorDescriptor(spec, 1, 1, new IPushRuntimeFactory[] { castAssign },
new RecordDescriptor[] { getTaggedRecordDescriptor(enforcedRecDesc) });
}
@@ -219,8 +221,10 @@ public abstract class SecondaryCorrelatedTreeIndexOperationsHelper extends Secon
sefs[i] = secondaryFieldAccessEvalFactories[i];
}
AssignRuntimeFactory assign = new AssignRuntimeFactory(outColumns, sefs, projectionList);
+ assign.setSourceLocation(sourceLoc);
AlgebricksMetaOperatorDescriptor asterixAssignOp = new AlgebricksMetaOperatorDescriptor(spec, 1, 1,
new IPushRuntimeFactory[] { assign }, new RecordDescriptor[] { secondaryRecDesc });
+ asterixAssignOp.setSourceLocation(sourceLoc);
AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(spec, asterixAssignOp,
primaryPartitionConstraint);
return asterixAssignOp;
@@ -231,6 +235,7 @@ public abstract class SecondaryCorrelatedTreeIndexOperationsHelper extends Secon
IOperatorDescriptor op = new LSMSecondaryIndexCreationTupleProcessorOperatorDescriptor(spec,
taggedSecondaryRecDesc, MissingWriterFactory.INSTANCE, NUM_TAG_FIELDS, numSecondaryKeyFields,
numPrimaryKeyFields, hasBuddyBTree);
+ op.setSourceLocation(sourceLoc);
AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(spec, op, primaryPartitionConstraint);
return op;
}
@@ -248,6 +253,7 @@ public abstract class SecondaryCorrelatedTreeIndexOperationsHelper extends Secon
ExternalSortOperatorDescriptor sortOp =
new ExternalSortOperatorDescriptor(spec, physOptConf.getMaxFramesExternalSort(), taggedSortFields,
taggedSecondaryComparatorFactories, taggedSecondaryRecDesc);
+ sortOp.setSourceLocation(sourceLoc);
AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(spec, sortOp, primaryPartitionConstraint);
return sortOp;
}
@@ -265,6 +271,7 @@ public abstract class SecondaryCorrelatedTreeIndexOperationsHelper extends Secon
new LSMSecondaryIndexBulkLoadOperatorDescriptor(spec, taggedSecondaryRecDesc, primaryIndexHelperFactory,
secondaryIndexHelperFactory, fieldPermutation, NUM_TAG_FIELDS, numSecondaryKeys, numPrimaryKeys,
hasBuddyBtree);
+ treeIndexBulkLoadOp.setSourceLocation(sourceLoc);
AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(spec, treeIndexBulkLoadOp,
secondaryPartitionConstraint);
return treeIndexBulkLoadOp;
@@ -280,15 +287,17 @@ public abstract class SecondaryCorrelatedTreeIndexOperationsHelper extends Secon
metadataProvider.getStorageComponentProvider().getStorageManager(), primaryFileSplitProvider);
LSMBTreeDiskComponentScanOperatorDescriptor primaryScanOp = new LSMBTreeDiskComponentScanOperatorDescriptor(
spec, outRecDesc, indexHelperFactory, searchCallbackFactory);
+ primaryScanOp.setSourceLocation(sourceLoc);
AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(spec, primaryScanOp,
primaryPartitionConstraint);
return primaryScanOp;
}
public static SecondaryIndexOperationsHelper createIndexOperationsHelper(Dataset dataset, Index index,
- MetadataProvider metadataProvider, PhysicalOptimizationConfig physOptConf) throws AlgebricksException {
+ MetadataProvider metadataProvider, PhysicalOptimizationConfig physOptConf, SourceLocation sourceLoc)
+ throws AlgebricksException {
- SecondaryIndexOperationsHelper indexOperationsHelper = null;
+ SecondaryIndexOperationsHelper indexOperationsHelper;
switch (index.getIndexType()) {
case BTREE:
indexOperationsHelper =
@@ -306,8 +315,10 @@ public abstract class SecondaryCorrelatedTreeIndexOperationsHelper extends Secon
physOptConf, metadataProvider);
break;
default:
- throw new CompilationException(ErrorCode.COMPILATION_UNKNOWN_INDEX_TYPE, index.getIndexType());
+ throw new CompilationException(ErrorCode.COMPILATION_UNKNOWN_INDEX_TYPE, sourceLoc,
+ index.getIndexType());
}
+ indexOperationsHelper.setSourceLocation(sourceLoc);
indexOperationsHelper.init();
return indexOperationsHelper;
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java
index 065eb72..5f9e6ef 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryIndexOperationsHelper.java
@@ -67,6 +67,7 @@ import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
import org.apache.hyracks.api.dataflow.value.ITypeTraits;
import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.SourceLocation;
import org.apache.hyracks.api.job.JobSpecification;
import org.apache.hyracks.dataflow.std.file.IFileSplitProvider;
import org.apache.hyracks.dataflow.std.sort.ExternalSortOperatorDescriptor;
@@ -118,6 +119,7 @@ public abstract class SecondaryIndexOperationsHelper {
protected int[] secondaryBTreeFields;
protected List<ExternalFile> externalFiles;
protected int numPrimaryKeys;
+ protected SourceLocation sourceLoc;
// Prevent public construction. Should be created via createIndexCreator().
protected SecondaryIndexOperationsHelper(Dataset dataset, Index index, PhysicalOptimizationConfig physOptConf,
@@ -142,7 +144,8 @@ public abstract class SecondaryIndexOperationsHelper {
}
public static SecondaryIndexOperationsHelper createIndexOperationsHelper(Dataset dataset, Index index,
- MetadataProvider metadataProvider, PhysicalOptimizationConfig physOptConf) throws AlgebricksException {
+ MetadataProvider metadataProvider, PhysicalOptimizationConfig physOptConf, SourceLocation sourceLoc)
+ throws AlgebricksException {
SecondaryIndexOperationsHelper indexOperationsHelper;
switch (index.getIndexType()) {
@@ -162,8 +165,10 @@ public abstract class SecondaryIndexOperationsHelper {
new SecondaryInvertedIndexOperationsHelper(dataset, index, physOptConf, metadataProvider);
break;
default:
- throw new CompilationException(ErrorCode.COMPILATION_UNKNOWN_INDEX_TYPE, index.getIndexType());
+ throw new CompilationException(ErrorCode.COMPILATION_UNKNOWN_INDEX_TYPE, sourceLoc,
+ index.getIndexType());
}
+ indexOperationsHelper.setSourceLocation(sourceLoc);
indexOperationsHelper.init();
return indexOperationsHelper;
}
@@ -176,6 +181,10 @@ public abstract class SecondaryIndexOperationsHelper {
public abstract JobSpecification buildDropJobSpec(Set<DropOption> options) throws AlgebricksException;
+ public void setSourceLocation(SourceLocation sourceLoc) {
+ this.sourceLoc = sourceLoc;
+ }
+
protected void init() throws AlgebricksException {
payloadSerde = SerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(itemType);
metaSerde =
@@ -288,8 +297,10 @@ public abstract class SecondaryIndexOperationsHelper {
sefs[i] = secondaryFieldAccessEvalFactories[i];
}
AssignRuntimeFactory assign = new AssignRuntimeFactory(outColumns, sefs, projectionList);
+ assign.setSourceLocation(sourceLoc);
AlgebricksMetaOperatorDescriptor asterixAssignOp = new AlgebricksMetaOperatorDescriptor(spec, 1, 1,
new IPushRuntimeFactory[] { assign }, new RecordDescriptor[] { secondaryRecDesc });
+ asterixAssignOp.setSourceLocation(sourceLoc);
AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(spec, asterixAssignOp,
primaryPartitionConstraint);
return asterixAssignOp;
@@ -319,6 +330,7 @@ public abstract class SecondaryIndexOperationsHelper {
IScalarEvaluatorFactory[] sefs = new IScalarEvaluatorFactory[1];
sefs[0] = createCastFunction(strictCast).createEvaluatorFactory(castEvalFact);
AssignRuntimeFactory castAssign = new AssignRuntimeFactory(outColumns, sefs, projectionList);
+ castAssign.setSourceLocation(sourceLoc);
return new AlgebricksMetaOperatorDescriptor(spec, 1, 1, new IPushRuntimeFactory[] { castAssign },
new RecordDescriptor[] { enforcedRecDesc });
}
@@ -326,6 +338,7 @@ public abstract class SecondaryIndexOperationsHelper {
protected IFunctionDescriptor createCastFunction(boolean strictCast) throws AlgebricksException {
IFunctionDescriptor castFuncDesc = metadataProvider.getFunctionManager()
.lookupFunction(strictCast ? BuiltinFunctions.CAST_TYPE : BuiltinFunctions.CAST_TYPE_LAX);
+ castFuncDesc.setSourceLocation(sourceLoc);
castFuncDesc.setImmutableStates(enforcedItemType, itemType);
return castFuncDesc;
}
@@ -338,6 +351,7 @@ public abstract class SecondaryIndexOperationsHelper {
}
ExternalSortOperatorDescriptor sortOp = new ExternalSortOperatorDescriptor(spec,
physOptConf.getMaxFramesExternalSort(), sortFields, secondaryComparatorFactories, secondaryRecDesc);
+ sortOp.setSourceLocation(sourceLoc);
AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(spec, sortOp, primaryPartitionConstraint);
return sortOp;
}
@@ -351,6 +365,7 @@ public abstract class SecondaryIndexOperationsHelper {
LSMIndexBulkLoadOperatorDescriptor treeIndexBulkLoadOp = new LSMIndexBulkLoadOperatorDescriptor(spec,
secondaryRecDesc, fieldPermutation, fillFactor, false, numElementsHint, false, dataflowHelperFactory,
primaryIndexDataflowHelperFactory, BulkLoadUsage.CREATE_INDEX, dataset.getDatasetId());
+ treeIndexBulkLoadOp.setSourceLocation(sourceLoc);
AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(spec, treeIndexBulkLoadOp,
secondaryPartitionConstraint);
return treeIndexBulkLoadOp;
@@ -362,6 +377,7 @@ public abstract class SecondaryIndexOperationsHelper {
ExternalIndexBulkLoadOperatorDescriptor treeIndexBulkLoadOp = new ExternalIndexBulkLoadOperatorDescriptor(spec,
secondaryRecDesc, fieldPermutation, fillFactor, false, numElementsHint, false, dataflowHelperFactory,
ExternalDatasetsRegistry.INSTANCE.getAndLockDatasetVersion(dataset, metadataProvider));
+ treeIndexBulkLoadOp.setSourceLocation(sourceLoc);
AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(spec, treeIndexBulkLoadOp,
secondaryPartitionConstraint);
return treeIndexBulkLoadOp;
@@ -371,7 +387,9 @@ public abstract class SecondaryIndexOperationsHelper {
RecordDescriptor secondaryRecDesc) throws AlgebricksException {
IScalarEvaluatorFactory[] andArgsEvalFactories = new IScalarEvaluatorFactory[numSecondaryKeyFields];
NotDescriptor notDesc = new NotDescriptor();
+ notDesc.setSourceLocation(sourceLoc);
IsUnknownDescriptor isUnknownDesc = new IsUnknownDescriptor();
+ isUnknownDesc.setSourceLocation(sourceLoc);
for (int i = 0; i < numSecondaryKeyFields; i++) {
// Access column i, and apply 'is not null'.
ColumnAccessEvalFactory columnAccessEvalFactory = new ColumnAccessEvalFactory(i);
@@ -386,14 +404,17 @@ public abstract class SecondaryIndexOperationsHelper {
// Create conjunctive condition where all secondary index keys must
// satisfy 'is not null'.
AndDescriptor andDesc = new AndDescriptor();
+ andDesc.setSourceLocation(sourceLoc);
selectCond = andDesc.createEvaluatorFactory(andArgsEvalFactories);
} else {
selectCond = andArgsEvalFactories[0];
}
StreamSelectRuntimeFactory select =
new StreamSelectRuntimeFactory(selectCond, null, BinaryBooleanInspector.FACTORY, false, -1, null);
+ select.setSourceLocation(sourceLoc);
AlgebricksMetaOperatorDescriptor asterixSelectOp = new AlgebricksMetaOperatorDescriptor(spec, 1, 1,
new IPushRuntimeFactory[] { select }, new RecordDescriptor[] { secondaryRecDesc });
+ asterixSelectOp.setSourceLocation(sourceLoc);
AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(spec, asterixSelectOp,
primaryPartitionConstraint);
return asterixSelectOp;
@@ -420,7 +441,7 @@ public abstract class SecondaryIndexOperationsHelper {
Pair<ExternalScanOperatorDescriptor, AlgebricksPartitionConstraint> indexingOpAndConstraints;
try {
indexingOpAndConstraints = ExternalIndexingOperations.createExternalIndexingOp(spec, metadataProvider,
- dataset, itemType, indexerDesc, externalFiles);
+ dataset, itemType, indexerDesc, externalFiles, sourceLoc);
} catch (Exception e) {
throw new AlgebricksException(e);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryInvertedIndexOperationsHelper.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryInvertedIndexOperationsHelper.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryInvertedIndexOperationsHelper.java
index d31ca3b..878aab6 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryInvertedIndexOperationsHelper.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryInvertedIndexOperationsHelper.java
@@ -88,11 +88,12 @@ public class SecondaryInvertedIndexOperationsHelper extends SecondaryTreeIndexOp
// Sanity checks.
if (numPrimaryKeys > 1) {
throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_INDEX_FOR_DATASET_WITH_COMPOSITE_PRIMARY_INDEX,
- indexType, RecordUtil.toFullyQualifiedName(dataset.getDataverseName(), dataset.getDatasetName()));
+ sourceLoc, indexType,
+ RecordUtil.toFullyQualifiedName(dataset.getDataverseName(), dataset.getDatasetName()));
}
if (numSecondaryKeys > 1) {
- throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_INDEX_NUM_OF_FIELD, numSecondaryKeys,
- indexType, 1);
+ throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_INDEX_NUM_OF_FIELD, sourceLoc,
+ numSecondaryKeys, indexType, 1);
}
if (indexType == IndexType.LENGTH_PARTITIONED_WORD_INVIX
|| indexType == IndexType.LENGTH_PARTITIONED_NGRAM_INVIX) {
@@ -113,7 +114,7 @@ public class SecondaryInvertedIndexOperationsHelper extends SecondaryTreeIndexOp
if (numSecondaryKeys > 0) {
secondaryFieldAccessEvalFactories[0] = metadataProvider.getDataFormat().getFieldAccessEvaluatorFactory(
metadataProvider.getFunctionManager(), isOverridingKeyFieldTypes ? enforcedItemType : itemType,
- index.getKeyFieldNames().get(0), numPrimaryKeys);
+ index.getKeyFieldNames().get(0), numPrimaryKeys, sourceLoc);
Pair<IAType, Boolean> keyTypePair = Index.getNonNullableOpenFieldType(index.getKeyFieldTypes().get(0),
index.getKeyFieldNames().get(0), itemType);
secondaryKeyType = keyTypePair.first;
@@ -123,9 +124,9 @@ public class SecondaryInvertedIndexOperationsHelper extends SecondaryTreeIndexOp
secondaryTypeTraits[0] = typeTraitProvider.getTypeTrait(secondaryKeyType);
}
if (numFilterFields > 0) {
- secondaryFieldAccessEvalFactories[numSecondaryKeys] =
- metadataProvider.getDataFormat().getFieldAccessEvaluatorFactory(
- metadataProvider.getFunctionManager(), itemType, filterFieldName, numPrimaryKeys);
+ secondaryFieldAccessEvalFactories[numSecondaryKeys] = metadataProvider.getDataFormat()
+ .getFieldAccessEvaluatorFactory(metadataProvider.getFunctionManager(), itemType, filterFieldName,
+ numPrimaryKeys, sourceLoc);
Pair<IAType, Boolean> keyTypePair = Index.getNonNullableKeyFieldType(filterFieldName, itemType);
IAType type = keyTypePair.first;
ISerializerDeserializer serde = serdeProvider.getSerializerDeserializer(type);
@@ -242,8 +243,11 @@ public class SecondaryInvertedIndexOperationsHelper extends SecondaryTreeIndexOp
AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(spec, invIndexBulkLoadOp,
secondaryPartitionConstraint);
+ SinkRuntimeFactory sinkRuntimeFactory = new SinkRuntimeFactory();
+ sinkRuntimeFactory.setSourceLocation(sourceLoc);
AlgebricksMetaOperatorDescriptor metaOp = new AlgebricksMetaOperatorDescriptor(spec, 1, 0,
- new IPushRuntimeFactory[] { new SinkRuntimeFactory() }, new RecordDescriptor[] {});
+ new IPushRuntimeFactory[] { sinkRuntimeFactory }, new RecordDescriptor[] {});
+ metaOp.setSourceLocation(sourceLoc);
// Connect the operators.
spec.connect(new OneToOneConnectorDescriptor(spec), keyProviderOp, 0, primaryScanOp, 0);
spec.connect(new OneToOneConnectorDescriptor(spec), sourceOp, 0, asterixAssignOp, 0);
@@ -271,6 +275,7 @@ public class SecondaryInvertedIndexOperationsHelper extends SecondaryTreeIndexOp
BinaryTokenizerOperatorDescriptor tokenizerOp =
new BinaryTokenizerOperatorDescriptor(spec, tokenKeyPairRecDesc, tokenizerFactory, docField,
primaryKeyFields, isPartitioned, false, false, MissingWriterFactory.INSTANCE);
+ tokenizerOp.setSourceLocation(sourceLoc);
AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(spec, tokenizerOp,
primaryPartitionConstraint);
return tokenizerOp;
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryRTreeOperationsHelper.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryRTreeOperationsHelper.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryRTreeOperationsHelper.java
index 8e6e0e9..1d6677e 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryRTreeOperationsHelper.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryRTreeOperationsHelper.java
@@ -99,7 +99,7 @@ public class SecondaryRTreeOperationsHelper extends SecondaryTreeIndexOperations
int recordColumn = dataset.getDatasetType() == DatasetType.INTERNAL ? numPrimaryKeys : 0;
secondaryFieldAccessEvalFactories = metadataProvider.getDataFormat().createMBRFactory(
metadataProvider.getFunctionManager(), isOverridingKeyFieldTypes ? enforcedItemType : itemType,
- secondaryKeyFields.get(0), recordColumn, numDimensions, filterFieldName, isPointMBR);
+ secondaryKeyFields.get(0), recordColumn, numDimensions, filterFieldName, isPointMBR, sourceLoc);
secondaryComparatorFactories = new IBinaryComparatorFactory[numNestedSecondaryKeyFields];
valueProviderFactories = new IPrimitiveValueProviderFactory[numNestedSecondaryKeyFields];
ISerializerDeserializer[] secondaryRecFields =
@@ -228,8 +228,11 @@ public class SecondaryRTreeOperationsHelper extends SecondaryTreeIndexOperations
// Create secondary RTree bulk load op.
TreeIndexBulkLoadOperatorDescriptor secondaryBulkLoadOp = createTreeIndexBulkLoadOp(spec, fieldPermutation,
indexDataflowHelperFactory, GlobalConfig.DEFAULT_TREE_FILL_FACTOR);
+ SinkRuntimeFactory sinkRuntimeFactory = new SinkRuntimeFactory();
+ sinkRuntimeFactory.setSourceLocation(sourceLoc);
AlgebricksMetaOperatorDescriptor metaOp = new AlgebricksMetaOperatorDescriptor(spec, 1, 0,
- new IPushRuntimeFactory[] { new SinkRuntimeFactory() }, new RecordDescriptor[] {});
+ new IPushRuntimeFactory[] { sinkRuntimeFactory }, new RecordDescriptor[] {});
+ metaOp.setSourceLocation(sourceLoc);
// Connect the operators.
spec.connect(new OneToOneConnectorDescriptor(spec), keyProviderOp, 0, primaryScanOp, 0);
spec.connect(new OneToOneConnectorDescriptor(spec), sourceOp, 0, asterixAssignOp, 0);
@@ -285,9 +288,11 @@ public class SecondaryRTreeOperationsHelper extends SecondaryTreeIndexOperations
secondaryBulkLoadOp = createExternalIndexBulkLoadOp(spec, fieldPermutation, indexDataflowHelperFactory,
GlobalConfig.DEFAULT_TREE_FILL_FACTOR);
}
+ SinkRuntimeFactory sinkRuntimeFactory = new SinkRuntimeFactory();
+ sinkRuntimeFactory.setSourceLocation(sourceLoc);
AlgebricksMetaOperatorDescriptor metaOp = new AlgebricksMetaOperatorDescriptor(spec, 1, 0,
- new IPushRuntimeFactory[] { new SinkRuntimeFactory() },
- new RecordDescriptor[] { secondaryRecDesc });
+ new IPushRuntimeFactory[] { sinkRuntimeFactory }, new RecordDescriptor[] { secondaryRecDesc });
+ metaOp.setSourceLocation(sourceLoc);
spec.connect(new OneToOneConnectorDescriptor(spec), secondaryBulkLoadOp, 0, metaOp, 0);
root = metaOp;
spec.connect(new OneToOneConnectorDescriptor(spec), sourceOp, 0, asterixAssignOp, 0);
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryTreeIndexOperationsHelper.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryTreeIndexOperationsHelper.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryTreeIndexOperationsHelper.java
index 185cf8c..d78e80c 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryTreeIndexOperationsHelper.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SecondaryTreeIndexOperationsHelper.java
@@ -62,6 +62,7 @@ public abstract class SecondaryTreeIndexOperationsHelper extends SecondaryIndexO
secondaryFileSplitProvider, resourceFactory, true);
IndexCreateOperatorDescriptor secondaryIndexCreateOp =
new IndexCreateOperatorDescriptor(spec, indexBuilderFactory);
+ secondaryIndexCreateOp.setSourceLocation(sourceLoc);
AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(spec, secondaryIndexCreateOp,
secondaryPartitionConstraint);
spec.addRoot(secondaryIndexCreateOp);
@@ -78,6 +79,7 @@ public abstract class SecondaryTreeIndexOperationsHelper extends SecondaryIndexO
metadataProvider.getStorageComponentProvider().getStorageManager(), splitsAndConstraint.first);
// The index drop operation should be persistent regardless of temp datasets or permanent dataset.
IndexDropOperatorDescriptor btreeDrop = new IndexDropOperatorDescriptor(spec, dataflowHelperFactory, options);
+ btreeDrop.setSourceLocation(sourceLoc);
AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(spec, btreeDrop,
splitsAndConstraint.second);
spec.addRoot(btreeDrop);
@@ -93,6 +95,7 @@ public abstract class SecondaryTreeIndexOperationsHelper extends SecondaryIndexO
metadataProvider.getStorageComponentProvider().getStorageManager(), splitsAndConstraint.first);
LSMTreeIndexCompactOperatorDescriptor compactOp =
new LSMTreeIndexCompactOperatorDescriptor(spec, dataflowHelperFactory);
+ compactOp.setSourceLocation(sourceLoc);
AlgebricksPartitionConstraintHelper.setPartitionConstraintInJobSpec(spec, compactOp,
secondaryPartitionConstraint);
spec.addRoot(compactOp);
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/common/ExpressionTypeComputer.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/common/ExpressionTypeComputer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/common/ExpressionTypeComputer.java
index e4cf000..1dcf6a6 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/common/ExpressionTypeComputer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/common/ExpressionTypeComputer.java
@@ -18,6 +18,8 @@
*/
package org.apache.asterix.dataflow.data.common;
+import org.apache.asterix.common.exceptions.CompilationException;
+import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.common.functions.FunctionSignature;
import org.apache.asterix.om.constants.AsterixConstantValue;
import org.apache.asterix.om.functions.BuiltinFunctions;
@@ -55,8 +57,10 @@ public class ExpressionTypeComputer implements IExpressionTypeComputer {
try {
return env.getVarType(((VariableReferenceExpression) expr).getVariableReference());
} catch (Exception e) {
- throw new AlgebricksException("Could not resolve type for " + expr.toString() + ","
- + "please check whether the used variable has been defined!", e);
+ throw new CompilationException(ErrorCode.COMPILATION_ERROR, expr.getSourceLocation(),
+ "Could not resolve type for " + expr.toString() + ","
+ + "please check whether the used variable has been defined!",
+ e);
}
default:
throw new IllegalStateException();
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/common/MergeAggregationExpressionFactory.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/common/MergeAggregationExpressionFactory.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/common/MergeAggregationExpressionFactory.java
index dfb1251..33bef5d 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/common/MergeAggregationExpressionFactory.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/dataflow/data/common/MergeAggregationExpressionFactory.java
@@ -42,6 +42,7 @@ public class MergeAggregationExpressionFactory implements IMergeAggregationExpre
AggregateFunctionCallExpression agg = (AggregateFunctionCallExpression) expr;
FunctionIdentifier fid = agg.getFunctionIdentifier();
VariableReferenceExpression tempVarExpr = new VariableReferenceExpression(originalProducedVar);
+ tempVarExpr.setSourceLocation(agg.getSourceLocation());
List<Mutable<ILogicalExpression>> arguments = new ArrayList<Mutable<ILogicalExpression>>();
Mutable<ILogicalExpression> mutableExpression = new MutableObject<ILogicalExpression>(tempVarExpr);
arguments.add(mutableExpression);
@@ -56,6 +57,9 @@ public class MergeAggregationExpressionFactory implements IMergeAggregationExpre
*/
return null;
}
- return BuiltinFunctions.makeAggregateFunctionExpression(mergeFid, arguments);
+ AggregateFunctionCallExpression mergeExpr =
+ BuiltinFunctions.makeAggregateFunctionExpression(mergeFid, arguments);
+ mergeExpr.setSourceLocation(agg.getSourceLocation());
+ return mergeExpr;
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormat.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormat.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormat.java
index 678a864..6906ae4 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormat.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/formats/base/IDataFormat.java
@@ -40,6 +40,7 @@ import org.apache.hyracks.algebricks.data.ITypeTraitProvider;
import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.api.dataflow.value.IMissingWriterFactory;
import org.apache.hyracks.api.dataflow.value.IPredicateEvaluatorFactoryProvider;
+import org.apache.hyracks.api.exceptions.SourceLocation;
public interface IDataFormat {
public ISerializerDeserializerProvider getSerdeProvider();
@@ -66,16 +67,17 @@ public interface IDataFormat {
public IMissingWriterFactory getMissingWriterFactory();
public Triple<IScalarEvaluatorFactory, ScalarFunctionCallExpression, IAType> partitioningEvaluatorFactory(
- IFunctionManager functionManager, ARecordType recType, List<String> fldName) throws AlgebricksException;
+ IFunctionManager functionManager, ARecordType recType, List<String> fldName, SourceLocation sourceLoc)
+ throws AlgebricksException;
public IScalarEvaluatorFactory getFieldAccessEvaluatorFactory(IFunctionManager functionManager, ARecordType recType,
- List<String> fldName, int recordColumn) throws AlgebricksException;
+ List<String> fldName, int recordColumn, SourceLocation sourceLoc) throws AlgebricksException;
public IScalarEvaluatorFactory getConstantEvalFactory(IAlgebricksConstantValue value) throws AlgebricksException;
public IScalarEvaluatorFactory[] createMBRFactory(IFunctionManager functionManager, ARecordType recType,
- List<String> fldName, int recordColumn, int dimension, List<String> filterFieldName, boolean isPointMBR)
- throws AlgebricksException;
+ List<String> fldName, int recordColumn, int dimension, List<String> filterFieldName, boolean isPointMBR,
+ SourceLocation sourceLoc) throws AlgebricksException;
public IExpressionEvalSizeComputer getExpressionEvalSizeComputer();
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/IncompatibleTypeException.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/IncompatibleTypeException.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/IncompatibleTypeException.java
index 71a5649..1a5d5c6 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/IncompatibleTypeException.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/IncompatibleTypeException.java
@@ -23,6 +23,7 @@ import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.om.types.ATypeTag;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.api.exceptions.SourceLocation;
public class IncompatibleTypeException extends CompilationException {
@@ -32,7 +33,19 @@ public class IncompatibleTypeException extends CompilationException {
}
// Incompatible input parameters, e.g., "1.0" > 1.0
+ public IncompatibleTypeException(SourceLocation sourceLoc, FunctionIdentifier fid, ATypeTag typeTagLeft,
+ ATypeTag typeTagRight) {
+ super(ErrorCode.COMPILATION_TYPE_INCOMPATIBLE, sourceLoc, fid.getName(), typeTagLeft, typeTagRight);
+ }
+
+ // Incompatible input parameters, e.g., "1.0" > 1.0
public IncompatibleTypeException(String functionName, ATypeTag typeTagLeft, ATypeTag typeTagRight) {
super(ErrorCode.COMPILATION_TYPE_INCOMPATIBLE, functionName, typeTagLeft, typeTagRight);
}
+
+ // Incompatible input parameters, e.g., "1.0" > 1.0
+ public IncompatibleTypeException(SourceLocation sourceLoc, String functionName, ATypeTag typeTagLeft,
+ ATypeTag typeTagRight) {
+ super(ErrorCode.COMPILATION_TYPE_INCOMPATIBLE, sourceLoc, functionName, typeTagLeft, typeTagRight);
+ }
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/InvalidExpressionException.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/InvalidExpressionException.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/InvalidExpressionException.java
index 699629b..099930f 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/InvalidExpressionException.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/InvalidExpressionException.java
@@ -27,6 +27,7 @@ import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
import org.apache.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.api.exceptions.SourceLocation;
public class InvalidExpressionException extends CompilationException {
@@ -36,9 +37,21 @@ public class InvalidExpressionException extends CompilationException {
toExpectedTypeString(exprKinds));
}
+ public InvalidExpressionException(SourceLocation sourceLoc, FunctionIdentifier fid, int index,
+ ILogicalExpression actualExpr, LogicalExpressionTag... exprKinds) {
+ super(ErrorCode.COMPILATION_INVALID_EXPRESSION, sourceLoc, fid.getName(), indexToPosition(index),
+ actualExpr.toString(), toExpectedTypeString(exprKinds));
+ }
+
public InvalidExpressionException(String functionName, int index, ILogicalExpression actualExpr,
LogicalExpressionTag... exprKinds) {
super(ErrorCode.COMPILATION_INVALID_EXPRESSION, functionName, indexToPosition(index), actualExpr.toString(),
toExpectedTypeString(exprKinds));
}
+
+ public InvalidExpressionException(SourceLocation sourceLoc, String functionName, int index,
+ ILogicalExpression actualExpr, LogicalExpressionTag... exprKinds) {
+ super(ErrorCode.COMPILATION_INVALID_EXPRESSION, sourceLoc, functionName, indexToPosition(index),
+ actualExpr.toString(), toExpectedTypeString(exprKinds));
+ }
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/TypeMismatchException.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/TypeMismatchException.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/TypeMismatchException.java
index 7218a3a..9dab8ac 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/TypeMismatchException.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/TypeMismatchException.java
@@ -26,6 +26,7 @@ import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.om.types.ATypeTag;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.api.exceptions.SourceLocation;
public class TypeMismatchException extends CompilationException {
@@ -37,9 +38,22 @@ public class TypeMismatchException extends CompilationException {
}
// Parameter type mistmatch.
+ public TypeMismatchException(SourceLocation sourceLoc, FunctionIdentifier fid, Integer i, ATypeTag actualTypeTag,
+ ATypeTag... expectedTypeTags) {
+ super(ErrorCode.COMPILATION_TYPE_MISMATCH, sourceLoc, fid.getName(), indexToPosition(i),
+ toExpectedTypeString(expectedTypeTags), actualTypeTag);
+ }
+
+ // Parameter type mistmatch.
public TypeMismatchException(String functionName, Integer i, ATypeTag actualTypeTag, ATypeTag... expectedTypeTags) {
super(ErrorCode.COMPILATION_TYPE_MISMATCH, functionName, indexToPosition(i),
toExpectedTypeString(expectedTypeTags), actualTypeTag);
}
+ // Parameter type mistmatch.
+ public TypeMismatchException(SourceLocation sourceLoc, String functionName, Integer i, ATypeTag actualTypeTag,
+ ATypeTag... expectedTypeTags) {
+ super(ErrorCode.COMPILATION_TYPE_MISMATCH, sourceLoc, functionName, indexToPosition(i),
+ toExpectedTypeString(expectedTypeTags), actualTypeTag);
+ }
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/UnsupportedItemTypeException.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/UnsupportedItemTypeException.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/UnsupportedItemTypeException.java
index 0393887..06491f6 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/UnsupportedItemTypeException.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/UnsupportedItemTypeException.java
@@ -23,6 +23,7 @@ import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.om.types.ATypeTag;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.api.exceptions.SourceLocation;
public class UnsupportedItemTypeException extends CompilationException {
@@ -32,7 +33,17 @@ public class UnsupportedItemTypeException extends CompilationException {
}
// Unsupported item type.
+ public UnsupportedItemTypeException(SourceLocation sourceLoc, FunctionIdentifier fid, ATypeTag itemTypeTag) {
+ super(ErrorCode.COMPILATION_TYPE_ITEM, sourceLoc, fid.getName(), itemTypeTag);
+ }
+
+ // Unsupported item type.
public UnsupportedItemTypeException(String functionName, ATypeTag itemTypeTag) {
super(ErrorCode.COMPILATION_TYPE_ITEM, functionName, itemTypeTag);
}
+
+ // Unsupported item type.
+ public UnsupportedItemTypeException(SourceLocation sourceLoc, String functionName, ATypeTag itemTypeTag) {
+ super(ErrorCode.COMPILATION_TYPE_ITEM, sourceLoc, functionName, itemTypeTag);
+ }
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/UnsupportedTypeException.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/UnsupportedTypeException.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/UnsupportedTypeException.java
index bc69a48..5441cf4 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/UnsupportedTypeException.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/exceptions/UnsupportedTypeException.java
@@ -23,6 +23,7 @@ import org.apache.asterix.common.exceptions.CompilationException;
import org.apache.asterix.common.exceptions.ErrorCode;
import org.apache.asterix.om.types.ATypeTag;
import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
+import org.apache.hyracks.api.exceptions.SourceLocation;
public class UnsupportedTypeException extends CompilationException {
@@ -32,7 +33,17 @@ public class UnsupportedTypeException extends CompilationException {
}
// Unsupported input type.
+ public UnsupportedTypeException(SourceLocation sourceLoc, FunctionIdentifier fid, ATypeTag actualTypeTag) {
+ super(ErrorCode.COMPILATION_TYPE_UNSUPPORTED, sourceLoc, fid.getName(), actualTypeTag);
+ }
+
+ // Unsupported input type.
public UnsupportedTypeException(String funcName, ATypeTag actualTypeTag) {
super(ErrorCode.COMPILATION_TYPE_UNSUPPORTED, funcName, actualTypeTag);
}
+
+ // Unsupported input type.
+ public UnsupportedTypeException(SourceLocation sourceLoc, String funcName, ATypeTag actualTypeTag) {
+ super(ErrorCode.COMPILATION_TYPE_UNSUPPORTED, sourceLoc, funcName, actualTypeTag);
+ }
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/AbstractFunctionDescriptor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/AbstractFunctionDescriptor.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/AbstractFunctionDescriptor.java
index 35440e4..3aea6dc 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/AbstractFunctionDescriptor.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/AbstractFunctionDescriptor.java
@@ -18,25 +18,29 @@
*/
package org.apache.asterix.om.functions;
-import org.apache.asterix.common.functions.FunctionDescriptorTag;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.common.exceptions.NotImplementedException;
-import org.apache.hyracks.algebricks.core.algebra.functions.FunctionIdentifier;
import org.apache.hyracks.algebricks.runtime.base.IAggregateEvaluatorFactory;
-import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.algebricks.runtime.base.IRunningAggregateEvaluatorFactory;
+import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluatorFactory;
import org.apache.hyracks.algebricks.runtime.base.IUnnestingEvaluatorFactory;
+import org.apache.hyracks.api.exceptions.SourceLocation;
public abstract class AbstractFunctionDescriptor implements IFunctionDescriptor {
private static final long serialVersionUID = 1L;
+ protected SourceLocation sourceLoc;
+
@Override
- public abstract FunctionIdentifier getIdentifier();
+ public void setImmutableStates(Object... states) {
+ }
@Override
- public abstract FunctionDescriptorTag getFunctionDescriptorTag();
+ public void setSourceLocation(SourceLocation sourceLoc) {
+ this.sourceLoc = sourceLoc;
+ }
@Override
public IScalarEvaluatorFactory createEvaluatorFactory(IScalarEvaluatorFactory[] args) throws AlgebricksException {
@@ -66,5 +70,4 @@ public abstract class AbstractFunctionDescriptor implements IFunctionDescriptor
throws AlgebricksException {
throw new NotImplementedException("Not Implemented: " + getIdentifier());
}
-
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IFunctionDescriptor.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IFunctionDescriptor.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IFunctionDescriptor.java
index d9bb73a..1fc9ef9 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IFunctionDescriptor.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/functions/IFunctionDescriptor.java
@@ -28,11 +28,13 @@ import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
import org.apache.hyracks.algebricks.runtime.base.IRunningAggregateEvaluatorFactory;
import org.apache.hyracks.algebricks.runtime.base.ISerializedAggregateEvaluatorFactory;
import org.apache.hyracks.algebricks.runtime.base.IUnnestingEvaluatorFactory;
+import org.apache.hyracks.api.exceptions.SourceLocation;
public interface IFunctionDescriptor extends Serializable {
- default void setImmutableStates(Object... states) {
- }
+ void setImmutableStates(Object... states);
+
+ void setSourceLocation(SourceLocation sourceLoc);
FunctionIdentifier getIdentifier();
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/base/AbstractResultTypeComputer.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/base/AbstractResultTypeComputer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/base/AbstractResultTypeComputer.java
index 4d6b7e6..ae7c996 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/base/AbstractResultTypeComputer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/base/AbstractResultTypeComputer.java
@@ -25,6 +25,7 @@ import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
import org.apache.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
+import org.apache.hyracks.api.exceptions.SourceLocation;
/**
* This abstract class takes care of the handling of optional types.
@@ -39,23 +40,26 @@ public abstract class AbstractResultTypeComputer implements IResultTypeComputer
IMetadataProvider<?, ?> metadataProvider) throws AlgebricksException {
AbstractFunctionCallExpression functionCallExpression = (AbstractFunctionCallExpression) expression;
String funcName = functionCallExpression.getFunctionIdentifier().getName();
- return TypeComputeUtils.resolveResultType(expression, env, (index, type) -> checkArgType(funcName, index, type),
- this::getResultType, propagateNullAndMissing());
+ return TypeComputeUtils.resolveResultType(expression, env,
+ (index, type, sourceLoc) -> checkArgType(funcName, index, type, sourceLoc), this::getResultType,
+ propagateNullAndMissing());
}
/**
* Checks whether an input type violates the requirement.
*
- * @param funcName
- * the function name.
* @param argIndex,
* the index of the argument to consider.
* @param type,
* the type of the input argument.
+ * @param funcName
+ * the function name.
+ * @param sourceLoc
+ * the source location
* @throws AlgebricksException
*/
- protected void checkArgType(String funcName, int argIndex, IAType type) throws AlgebricksException {
-
+ protected void checkArgType(String funcName, int argIndex, IAType type, SourceLocation sourceLoc)
+ throws AlgebricksException {
}
/**
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/base/TypeCastUtils.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/base/TypeCastUtils.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/base/TypeCastUtils.java
index 8c40903..7fa987f 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/base/TypeCastUtils.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/base/TypeCastUtils.java
@@ -44,7 +44,7 @@ public class TypeCastUtils {
ATypeTag actualTypeTag = TypeComputeUtils.getActualType(inputType).getTypeTag();
if (!ATypeHierarchy.isCompatible(requiredTypeTag, actualTypeTag)) {
String funcName = expr.getFunctionIdentifier().getName();
- throw new IncompatibleTypeException(funcName, actualTypeTag, requiredTypeTag);
+ throw new IncompatibleTypeException(expr.getSourceLocation(), funcName, actualTypeTag, requiredTypeTag);
}
expr.setOpaqueParameters(opaqueParameters);
changed = true;
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/AbstractIfMissingOrNullTypeComputer.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/AbstractIfMissingOrNullTypeComputer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/AbstractIfMissingOrNullTypeComputer.java
index 2626c6b..2ec54d1 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/AbstractIfMissingOrNullTypeComputer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/AbstractIfMissingOrNullTypeComputer.java
@@ -96,7 +96,7 @@ abstract class AbstractIfMissingOrNullTypeComputer implements IResultTypeCompute
return type.getActualType();
}
- private IAType createOutputType(IAType primeType, ATypeTag quantifier) throws AlgebricksException {
+ private IAType createOutputType(IAType primeType, ATypeTag quantifier) {
if (quantifier == null || primeType.getTypeTag() == ATypeTag.ANY) {
return primeType;
}
@@ -106,7 +106,7 @@ abstract class AbstractIfMissingOrNullTypeComputer implements IResultTypeCompute
case NULL:
return AUnionType.createNullableType(primeType, null);
default:
- throw new CompilationException(ErrorCode.COMPILATION_ILLEGAL_STATE, String.valueOf(quantifier));
+ throw new IllegalStateException(String.valueOf(quantifier));
}
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/AbstractStringTypeComputer.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/AbstractStringTypeComputer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/AbstractStringTypeComputer.java
index 27f364a..08d2ca5 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/AbstractStringTypeComputer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/AbstractStringTypeComputer.java
@@ -24,14 +24,16 @@ import org.apache.asterix.om.types.ATypeTag;
import org.apache.asterix.om.types.IAType;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.api.exceptions.SourceLocation;
abstract public class AbstractStringTypeComputer extends AbstractResultTypeComputer {
@Override
- protected void checkArgType(String funcName, int argIndex, IAType type) throws AlgebricksException {
+ protected void checkArgType(String funcName, int argIndex, IAType type, SourceLocation sourceLoc)
+ throws AlgebricksException {
ATypeTag actualTypeTag = type.getTypeTag();
if (actualTypeTag != ATypeTag.STRING) {
- throw new TypeMismatchException(funcName, argIndex, actualTypeTag, ATypeTag.STRING);
+ throw new TypeMismatchException(sourceLoc, funcName, argIndex, actualTypeTag, ATypeTag.STRING);
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/BooleanFunctionTypeComputer.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/BooleanFunctionTypeComputer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/BooleanFunctionTypeComputer.java
index 80ac8ef..c6c744c 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/BooleanFunctionTypeComputer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/BooleanFunctionTypeComputer.java
@@ -41,8 +41,8 @@ public class BooleanFunctionTypeComputer extends AbstractResultTypeComputer {
AbstractFunctionCallExpression functionCallExpression = (AbstractFunctionCallExpression) expression;
String funcName = functionCallExpression.getFunctionIdentifier().getName();
// Boolean type computer doesn't follow the null/missing-in/out semantics.
- return TypeComputeUtils.resolveResultType(expression, env, (index, type) -> checkArgType(funcName, index, type),
- this::getResultType, false);
+ return TypeComputeUtils.resolveResultType(expression, env,
+ (index, type, sourceLoc) -> checkArgType(funcName, index, type, sourceLoc), this::getResultType, false);
}
@Override
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/ClosedRecordConstructorResultType.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/ClosedRecordConstructorResultType.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/ClosedRecordConstructorResultType.java
index b328cf4..d5e576e 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/ClosedRecordConstructorResultType.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/ClosedRecordConstructorResultType.java
@@ -71,7 +71,8 @@ public class ClosedRecordConstructorResultType implements IResultTypeComputer {
fieldTypes[i] = e2Type;
fieldNames[i] = ConstantExpressionUtil.getStringConstant(e1);
if (fieldNames[i] == null) {
- throw new InvalidExpressionException(funcName, 2 * i, e1, LogicalExpressionTag.CONSTANT);
+ throw new InvalidExpressionException(f.getSourceLocation(), funcName, 2 * i, e1,
+ LogicalExpressionTag.CONSTANT);
}
i++;
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/CollectionMemberResultType.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/CollectionMemberResultType.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/CollectionMemberResultType.java
index cc2f9b6..9e88438 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/CollectionMemberResultType.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/CollectionMemberResultType.java
@@ -26,6 +26,7 @@ import org.apache.asterix.om.types.BuiltinType;
import org.apache.asterix.om.types.IAType;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
+import org.apache.hyracks.api.exceptions.SourceLocation;
public class CollectionMemberResultType extends AbstractResultTypeComputer {
public static final CollectionMemberResultType INSTANCE = new CollectionMemberResultType();
@@ -34,10 +35,12 @@ public class CollectionMemberResultType extends AbstractResultTypeComputer {
}
@Override
- protected void checkArgType(String funcName, int argIndex, IAType type) throws AlgebricksException {
+ protected void checkArgType(String funcName, int argIndex, IAType type, SourceLocation sourceLoc)
+ throws AlgebricksException {
ATypeTag actualTypeTag = type.getTypeTag();
if (type.getTypeTag() != ATypeTag.MULTISET && type.getTypeTag() != ATypeTag.ARRAY) {
- throw new TypeMismatchException(funcName, argIndex, actualTypeTag, ATypeTag.MULTISET, ATypeTag.ARRAY);
+ throw new TypeMismatchException(sourceLoc, funcName, argIndex, actualTypeTag, ATypeTag.MULTISET,
+ ATypeTag.ARRAY);
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/FieldAccessByIndexResultType.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/FieldAccessByIndexResultType.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/FieldAccessByIndexResultType.java
index 73c019c..71fa15c 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/FieldAccessByIndexResultType.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/FieldAccessByIndexResultType.java
@@ -28,6 +28,7 @@ import org.apache.asterix.om.utils.ConstantExpressionUtil;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
+import org.apache.hyracks.api.exceptions.SourceLocation;
public class FieldAccessByIndexResultType extends AbstractResultTypeComputer {
@@ -37,13 +38,14 @@ public class FieldAccessByIndexResultType extends AbstractResultTypeComputer {
}
@Override
- protected void checkArgType(String funcName, int argIndex, IAType type) throws AlgebricksException {
+ protected void checkArgType(String funcName, int argIndex, IAType type, SourceLocation sourceLoc)
+ throws AlgebricksException {
ATypeTag actualTypeTag = type.getTypeTag();
if (argIndex == 0 && actualTypeTag != ATypeTag.OBJECT) {
- throw new TypeMismatchException(funcName, argIndex, actualTypeTag, ATypeTag.OBJECT);
+ throw new TypeMismatchException(sourceLoc, funcName, argIndex, actualTypeTag, ATypeTag.OBJECT);
}
if (argIndex == 1 && actualTypeTag != ATypeTag.INTEGER) {
- throw new TypeMismatchException(funcName, argIndex, actualTypeTag, ATypeTag.INTEGER);
+ throw new TypeMismatchException(sourceLoc, funcName, argIndex, actualTypeTag, ATypeTag.INTEGER);
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/FieldAccessByNameResultType.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/FieldAccessByNameResultType.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/FieldAccessByNameResultType.java
index e9af1ab..948f8d1 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/FieldAccessByNameResultType.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/FieldAccessByNameResultType.java
@@ -28,6 +28,7 @@ import org.apache.asterix.om.utils.ConstantExpressionUtil;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
+import org.apache.hyracks.api.exceptions.SourceLocation;
public class FieldAccessByNameResultType extends AbstractResultTypeComputer {
@@ -37,13 +38,14 @@ public class FieldAccessByNameResultType extends AbstractResultTypeComputer {
}
@Override
- protected void checkArgType(String funcName, int argIndex, IAType type) throws AlgebricksException {
+ protected void checkArgType(String funcName, int argIndex, IAType type, SourceLocation sourceLoc)
+ throws AlgebricksException {
ATypeTag actualTypeTag = type.getTypeTag();
if (argIndex == 0 && actualTypeTag != ATypeTag.OBJECT) {
- throw new TypeMismatchException(funcName, argIndex, actualTypeTag, ATypeTag.OBJECT);
+ throw new TypeMismatchException(sourceLoc, funcName, argIndex, actualTypeTag, ATypeTag.OBJECT);
}
if (argIndex == 1 && actualTypeTag != ATypeTag.STRING) {
- throw new TypeMismatchException(funcName, argIndex, actualTypeTag, ATypeTag.STRING);
+ throw new TypeMismatchException(sourceLoc, funcName, argIndex, actualTypeTag, ATypeTag.STRING);
}
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ee54cc02/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/FieldAccessNestedResultType.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/FieldAccessNestedResultType.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/FieldAccessNestedResultType.java
index 3eae173..20f51ec 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/FieldAccessNestedResultType.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/FieldAccessNestedResultType.java
@@ -38,6 +38,7 @@ import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
import org.apache.hyracks.algebricks.core.algebra.base.LogicalExpressionTag;
import org.apache.hyracks.algebricks.core.algebra.expressions.AbstractFunctionCallExpression;
import org.apache.hyracks.algebricks.core.algebra.expressions.ConstantExpression;
+import org.apache.hyracks.api.exceptions.SourceLocation;
public class FieldAccessNestedResultType extends AbstractResultTypeComputer {
public static final FieldAccessNestedResultType INSTANCE = new FieldAccessNestedResultType();
@@ -46,29 +47,31 @@ public class FieldAccessNestedResultType extends AbstractResultTypeComputer {
}
@Override
- protected void checkArgType(String funcName, int argIndex, IAType type) throws AlgebricksException {
+ protected void checkArgType(String funcName, int argIndex, IAType type, SourceLocation sourceLoc)
+ throws AlgebricksException {
ATypeTag actualTypeTag = type.getTypeTag();
if (argIndex == 0 && actualTypeTag != ATypeTag.OBJECT) {
- throw new TypeMismatchException(funcName, argIndex, actualTypeTag, ATypeTag.OBJECT);
+ throw new TypeMismatchException(sourceLoc, funcName, argIndex, actualTypeTag, ATypeTag.OBJECT);
}
if (argIndex == 1) {
switch (actualTypeTag) {
case STRING:
break;
case ARRAY:
- checkOrderedList(funcName, type);
+ checkOrderedList(funcName, type, sourceLoc);
break;
default:
- throw new TypeMismatchException(funcName, argIndex, actualTypeTag, ATypeTag.STRING, ATypeTag.ARRAY);
+ throw new TypeMismatchException(sourceLoc, funcName, argIndex, actualTypeTag, ATypeTag.STRING,
+ ATypeTag.ARRAY);
}
}
}
- private void checkOrderedList(String funcName, IAType type) throws AlgebricksException {
+ private void checkOrderedList(String funcName, IAType type, SourceLocation sourceLoc) throws AlgebricksException {
AOrderedListType listType = (AOrderedListType) type;
ATypeTag itemTypeTag = listType.getItemType().getTypeTag();
if (itemTypeTag != ATypeTag.STRING && itemTypeTag != ATypeTag.ANY) {
- throw new UnsupportedItemTypeException(funcName, itemTypeTag);
+ throw new UnsupportedItemTypeException(sourceLoc, funcName, itemTypeTag);
}
}