Got rid of a bunch of AqlCompiledSomethings since they have been replaced by the corresponding persistent metadata entities.
git-svn-id: https://asterixdb.googlecode.com/svn/branches/asterix_fix_issue_96@447 eaa15691-b419-025a-1212-ee371bd00084
diff --git a/asterix-algebra/src/main/java/edu/uci/ics/asterix/algebra/operators/physical/InvertedIndexPOperator.java b/asterix-algebra/src/main/java/edu/uci/ics/asterix/algebra/operators/physical/InvertedIndexPOperator.java
index 2d21db8..5157b35 100644
--- a/asterix-algebra/src/main/java/edu/uci/ics/asterix/algebra/operators/physical/InvertedIndexPOperator.java
+++ b/asterix-algebra/src/main/java/edu/uci/ics/asterix/algebra/operators/physical/InvertedIndexPOperator.java
@@ -5,7 +5,6 @@
import edu.uci.ics.asterix.common.config.DatasetConfig.DatasetType;
import edu.uci.ics.asterix.common.dataflow.IAsterixApplicationContextInfo;
-import edu.uci.ics.asterix.metadata.declared.AqlCompiledIndexDecl;
import edu.uci.ics.asterix.metadata.declared.AqlCompiledMetadataDeclarations;
import edu.uci.ics.asterix.metadata.declared.AqlMetadataProvider;
import edu.uci.ics.asterix.metadata.declared.AqlSourceId;
@@ -134,7 +133,7 @@
throw new AlgebricksException("Only record types can be indexed.");
}
ARecordType recordType = (ARecordType) itemType;
- Pair<IAType, Boolean> keyPairType = AqlCompiledIndexDecl.getNonNullableKeyFieldType(secondaryKeyFields.get(0), recordType);
+ Pair<IAType, Boolean> keyPairType = Index.getNonNullableKeyFieldType(secondaryKeyFields.get(0), recordType);
IAType secondaryKeyType = keyPairType.first;
if (secondaryKeyType == null) {
throw new AlgebricksException("Could not find field " + secondaryKeyFields.get(0) + " in the schema.");
diff --git a/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/IntroduceSecondaryIndexInsertDeleteRule.java b/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/IntroduceSecondaryIndexInsertDeleteRule.java
index 43e8d00..f2c4f83 100644
--- a/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/IntroduceSecondaryIndexInsertDeleteRule.java
+++ b/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/IntroduceSecondaryIndexInsertDeleteRule.java
@@ -9,7 +9,6 @@
import edu.uci.ics.asterix.aql.util.FunctionUtils;
import edu.uci.ics.asterix.common.config.DatasetConfig.DatasetType;
import edu.uci.ics.asterix.common.config.DatasetConfig.IndexType;
-import edu.uci.ics.asterix.metadata.declared.AqlCompiledIndexDecl;
import edu.uci.ics.asterix.metadata.declared.AqlCompiledMetadataDeclarations;
import edu.uci.ics.asterix.metadata.declared.AqlDataSource;
import edu.uci.ics.asterix.metadata.declared.AqlIndex;
@@ -163,8 +162,8 @@
currentTop = indexUpdate;
context.computeAndSetTypeEnvironmentForOperator(indexUpdate);
} else if (index.getIndexType() == IndexType.RTREE) {
- Pair<IAType, Boolean> keyPairType = AqlCompiledIndexDecl.getNonNullableKeyFieldType(
- secondaryKeyFields.get(0), recType);
+ Pair<IAType, Boolean> keyPairType = Index
+ .getNonNullableKeyFieldType(secondaryKeyFields.get(0), recType);
IAType spatialType = keyPairType.first;
int dimension = NonTaggedFormatUtil.getNumDimensions(spatialType.getTypeTag());
int numKeys = dimension * 2;
diff --git a/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/am/AccessMethodUtils.java b/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/am/AccessMethodUtils.java
index 85d1eff..d08ce46 100644
--- a/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/am/AccessMethodUtils.java
+++ b/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/am/AccessMethodUtils.java
@@ -8,7 +8,6 @@
import edu.uci.ics.asterix.aql.util.FunctionUtils;
import edu.uci.ics.asterix.common.config.DatasetConfig.IndexType;
-import edu.uci.ics.asterix.metadata.declared.AqlCompiledIndexDecl;
import edu.uci.ics.asterix.metadata.entities.Dataset;
import edu.uci.ics.asterix.metadata.entities.Index;
import edu.uci.ics.asterix.metadata.utils.DatasetUtils;
@@ -123,8 +122,8 @@
return index.getKeyFieldNames().size();
}
case RTREE: {
- Pair<IAType, Boolean> keyPairType = AqlCompiledIndexDecl.getNonNullableKeyFieldType(index
- .getKeyFieldNames().get(0), recordType);
+ Pair<IAType, Boolean> keyPairType = Index.getNonNullableKeyFieldType(index.getKeyFieldNames().get(0),
+ recordType);
IAType keyType = keyPairType.first;
int numDimensions = NonTaggedFormatUtil.getNumDimensions(keyType.getTypeTag());
return numDimensions * 2;
@@ -146,13 +145,14 @@
case WORD_INVIX:
case NGRAM_INVIX: {
for (String sk : index.getKeyFieldNames()) {
- Pair<IAType, Boolean> keyPairType = AqlCompiledIndexDecl.getNonNullableKeyFieldType(sk, recordType);
+ Pair<IAType, Boolean> keyPairType = Index.getNonNullableKeyFieldType(sk, recordType);
dest.add(keyPairType.first);
}
break;
}
case RTREE: {
- Pair<IAType, Boolean> keyPairType = AqlCompiledIndexDecl.getNonNullableKeyFieldType(index.getKeyFieldNames().get(0), recordType);
+ Pair<IAType, Boolean> keyPairType = Index.getNonNullableKeyFieldType(index.getKeyFieldNames()
+ .get(0), recordType);
IAType keyType = keyPairType.first;
IAType nestedKeyType = NonTaggedFormatUtil.getNestedSpatialType(keyType.getTypeTag());
int numKeys = getNumSecondaryKeys(index, recordType);
diff --git a/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/am/RTreeAccessMethod.java b/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/am/RTreeAccessMethod.java
index aaa359d..f5f94d0 100644
--- a/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/am/RTreeAccessMethod.java
+++ b/asterix-algebra/src/main/java/edu/uci/ics/asterix/optimizer/rules/am/RTreeAccessMethod.java
@@ -8,7 +8,6 @@
import edu.uci.ics.asterix.aql.util.FunctionUtils;
import edu.uci.ics.asterix.common.config.DatasetConfig.IndexType;
-import edu.uci.ics.asterix.metadata.declared.AqlCompiledIndexDecl;
import edu.uci.ics.asterix.metadata.entities.Dataset;
import edu.uci.ics.asterix.metadata.entities.Index;
import edu.uci.ics.asterix.om.base.AInt32;
@@ -77,7 +76,7 @@
// Get the number of dimensions corresponding to the field indexed by
// chosenIndex.
- Pair<IAType, Boolean> keyPairType = AqlCompiledIndexDecl.getNonNullableKeyFieldType(optFuncExpr.getFieldName(0), recordType);
+ Pair<IAType, Boolean> keyPairType = Index.getNonNullableKeyFieldType(optFuncExpr.getFieldName(0), recordType);
IAType spatialType = keyPairType.first;
int numDimensions = NonTaggedFormatUtil.getNumDimensions(spatialType.getTypeTag());
int numSecondaryKeys = numDimensions * 2;
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/file/SecondaryIndexCreator.java b/asterix-app/src/main/java/edu/uci/ics/asterix/file/SecondaryIndexCreator.java
index 316f46e..63b4178 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/file/SecondaryIndexCreator.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/file/SecondaryIndexCreator.java
@@ -12,9 +12,9 @@
import edu.uci.ics.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
import edu.uci.ics.asterix.formats.nontagged.AqlTypeTraitProvider;
import edu.uci.ics.asterix.metadata.MetadataException;
-import edu.uci.ics.asterix.metadata.declared.AqlCompiledIndexDecl;
import edu.uci.ics.asterix.metadata.declared.AqlCompiledMetadataDeclarations;
import edu.uci.ics.asterix.metadata.entities.Dataset;
+import edu.uci.ics.asterix.metadata.entities.Index;
import edu.uci.ics.asterix.metadata.utils.DatasetUtils;
import edu.uci.ics.asterix.om.types.ARecordType;
import edu.uci.ics.asterix.om.types.IAType;
@@ -179,8 +179,7 @@
for (int i = 0; i < numSecondaryKeys; i++) {
secondaryFieldAccessEvalFactories[i] = metadata.getFormat().getFieldAccessEvaluatorFactory(itemType,
secondaryKeyFields.get(i), numPrimaryKeys);
- Pair<IAType, Boolean> keyTypePair = AqlCompiledIndexDecl.getNonNullableKeyFieldType(
- secondaryKeyFields.get(i), itemType);
+ Pair<IAType, Boolean> keyTypePair = Index.getNonNullableKeyFieldType(secondaryKeyFields.get(i), itemType);
IAType keyType = keyTypePair.first;
anySecondaryKeyIsNullable = anySecondaryKeyIsNullable || keyTypePair.second;
ISerializerDeserializer keySerde = serdeProvider.getSerializerDeserializer(keyType);
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/file/SecondaryInvertedIndexCreator.java b/asterix-app/src/main/java/edu/uci/ics/asterix/file/SecondaryInvertedIndexCreator.java
index 224401f..d5e8222 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/file/SecondaryInvertedIndexCreator.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/file/SecondaryInvertedIndexCreator.java
@@ -5,7 +5,7 @@
import edu.uci.ics.asterix.common.context.AsterixIndexRegistryProvider;
import edu.uci.ics.asterix.common.context.AsterixStorageManagerInterface;
import edu.uci.ics.asterix.common.exceptions.AsterixException;
-import edu.uci.ics.asterix.metadata.declared.AqlCompiledIndexDecl;
+import edu.uci.ics.asterix.metadata.entities.Index;
import edu.uci.ics.asterix.om.types.IAType;
import edu.uci.ics.asterix.optimizer.rules.am.InvertedIndexAccessMethod;
import edu.uci.ics.asterix.translator.DmlTranslator.CompiledCreateIndexStatement;
@@ -73,8 +73,7 @@
for (int i = 0; i < numSecondaryKeys; i++) {
secondaryFieldAccessEvalFactories[i] = metadata.getFormat().getFieldAccessEvaluatorFactory(itemType,
secondaryKeyFields.get(i), numPrimaryKeys);
- Pair<IAType, Boolean> keyTypePair = AqlCompiledIndexDecl.getNonNullableKeyFieldType(
- secondaryKeyFields.get(i), itemType);
+ Pair<IAType, Boolean> keyTypePair = Index.getNonNullableKeyFieldType(secondaryKeyFields.get(i), itemType);
secondaryKeyType = keyTypePair.first;
anySecondaryKeyIsNullable = anySecondaryKeyIsNullable || keyTypePair.second;
ISerializerDeserializer keySerde = serdeProvider.getSerializerDeserializer(secondaryKeyType);
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/file/SecondaryRTreeCreator.java b/asterix-app/src/main/java/edu/uci/ics/asterix/file/SecondaryRTreeCreator.java
index 6399ae3..3127573 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/file/SecondaryRTreeCreator.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/file/SecondaryRTreeCreator.java
@@ -9,7 +9,7 @@
import edu.uci.ics.asterix.formats.nontagged.AqlBinaryComparatorFactoryProvider;
import edu.uci.ics.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
import edu.uci.ics.asterix.formats.nontagged.AqlTypeTraitProvider;
-import edu.uci.ics.asterix.metadata.declared.AqlCompiledIndexDecl;
+import edu.uci.ics.asterix.metadata.entities.Index;
import edu.uci.ics.asterix.om.types.IAType;
import edu.uci.ics.asterix.om.util.NonTaggedFormatUtil;
import edu.uci.ics.asterix.translator.DmlTranslator.CompiledCreateIndexStatement;
@@ -69,8 +69,7 @@
+ numSecondaryKeys
+ " fields as a key for the R-tree index. There can be only one field as a key for the R-tree index.");
}
- Pair<IAType, Boolean> spatialTypePair = AqlCompiledIndexDecl.getNonNullableKeyFieldType(
- secondaryKeyFields.get(0), itemType);
+ Pair<IAType, Boolean> spatialTypePair = Index.getNonNullableKeyFieldType(secondaryKeyFields.get(0), itemType);
IAType spatialType = spatialTypePair.first;
anySecondaryKeyIsNullable = spatialTypePair.second;
if (spatialType == null) {
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlCompiledDatasetDecl.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlCompiledDatasetDecl.java
deleted file mode 100644
index 1d806b1..0000000
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlCompiledDatasetDecl.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 2009-2010 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package edu.uci.ics.asterix.metadata.declared;
-
-import edu.uci.ics.asterix.common.config.DatasetConfig.DatasetType;
-
-public class AqlCompiledDatasetDecl {
-
- private String name;
- private String itemTypeName;
- private DatasetType datasetType;
- private IAqlCompiledDatasetDetails acdd;
-
- public AqlCompiledDatasetDecl(String name, String itemTypeName, DatasetType datasetType,
- IAqlCompiledDatasetDetails acdd) {
- this.name = name;
- this.itemTypeName = itemTypeName;
- this.datasetType = datasetType;
- this.acdd = acdd;
- }
-
- public String getName() {
- return name;
- }
-
- public String getItemTypeName() {
- return itemTypeName;
- }
-
- public DatasetType getDatasetType() {
- return datasetType;
- }
-
- public IAqlCompiledDatasetDetails getAqlCompiledDatasetDetails() {
- return acdd;
- }
-
-}
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlCompiledExternalDatasetDetails.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlCompiledExternalDatasetDetails.java
deleted file mode 100644
index 2e5eb3a..0000000
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlCompiledExternalDatasetDetails.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2009-2011 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.asterix.metadata.declared;
-
-import java.util.Map;
-
-import edu.uci.ics.asterix.common.config.DatasetConfig.DatasetType;
-
-public class AqlCompiledExternalDatasetDetails implements IAqlCompiledDatasetDetails {
-
- private final String adapter;
- private final Map<String, String> properties;
-
- public AqlCompiledExternalDatasetDetails(String adapter, Map<String, String> properties) {
- this.adapter = adapter;
- this.properties = properties;
- }
-
- public String getAdapter() {
- return adapter;
- }
-
- public Map<String, String> getProperties() {
- return properties;
- }
-
- @Override
- public DatasetType getDatasetType() {
- return DatasetType.EXTERNAL;
- }
-}
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlCompiledFeedDatasetDetails.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlCompiledFeedDatasetDetails.java
deleted file mode 100644
index 5cfc8be..0000000
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlCompiledFeedDatasetDetails.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright 2009-2011 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.asterix.metadata.declared;
-
-import java.util.List;
-import java.util.Map;
-
-import edu.uci.ics.asterix.common.config.DatasetConfig.DatasetType;
-import edu.uci.ics.asterix.om.types.IAType;
-import edu.uci.ics.hyracks.algebricks.common.utils.Triple;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-
-public class AqlCompiledFeedDatasetDetails extends
- AqlCompiledInternalDatasetDetails {
- private final String adapter;
- private final Map<String, String> properties;
- private final String functionIdentifier;
- private final String feedState;
-
- public AqlCompiledFeedDatasetDetails(
- List<String> partitioningExprs,
- List<Triple<ICopyEvaluatorFactory, ScalarFunctionCallExpression, IAType>> partitionFuns,
- String nodegroupName, AqlCompiledIndexDecl primaryIndex,
- List<AqlCompiledIndexDecl> secondaryIndexes, String adapter,
- Map<String, String> properties, String functionIdentifier,
- String feedState) {
- super(partitioningExprs, partitionFuns, nodegroupName, primaryIndex,
- secondaryIndexes);
- this.adapter = adapter;
- this.properties = properties;
- this.functionIdentifier = functionIdentifier;
- this.feedState = feedState;
- }
-
- public String getAdapter() {
- return adapter;
- }
-
- public Map<String, String> getProperties() {
- return properties;
- }
-
- public String getFunctionIdentifier() {
- return functionIdentifier;
- }
-
- public DatasetType getDatasetType() {
- return DatasetType.FEED;
- }
-
- public String getFeedState() {
- return feedState;
- }
-
-}
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlCompiledIndexDecl.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlCompiledIndexDecl.java
deleted file mode 100644
index 5755331..0000000
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlCompiledIndexDecl.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2009-2010 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package edu.uci.ics.asterix.metadata.declared;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import edu.uci.ics.asterix.om.types.ARecordType;
-import edu.uci.ics.asterix.om.types.ATypeTag;
-import edu.uci.ics.asterix.om.types.AUnionType;
-import edu.uci.ics.asterix.om.types.IAType;
-import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
-import edu.uci.ics.hyracks.algebricks.common.utils.Pair;
-
-public class AqlCompiledIndexDecl {
-
- public enum IndexKind {
- BTREE,
- RTREE,
- WORD_INVIX,
- NGRAM_INVIX
- }
-
- private String indexName;
- private IndexKind kind;
- private List<String> fieldExprs = new ArrayList<String>();
- // Only for NGRAM indexes.
- private int gramLength;
-
- public AqlCompiledIndexDecl(String indexName, IndexKind kind, List<String> fieldExprs, int gramLength) {
- this.indexName = indexName;
- this.kind = kind;
- this.fieldExprs = fieldExprs;
- this.gramLength = gramLength;
- }
-
- public AqlCompiledIndexDecl(String indexName, IndexKind kind, List<String> fieldExprs) {
- this.indexName = indexName;
- this.kind = kind;
- this.fieldExprs = fieldExprs;
- this.gramLength = -1;
- }
-
- @Override
- public String toString() {
- return "INDEX " + indexName + " (" + kind + ") " + fieldExprs;
- }
-
- public IndexKind getKind() {
- return kind;
- }
-
- public String getIndexName() {
- return indexName;
- }
-
- public List<String> getFieldExprs() {
- return fieldExprs;
- }
-
- public int getGramLength() {
- return gramLength;
- }
-
- public static Pair<IAType, Boolean> getNonNullableKeyFieldType(String expr, ARecordType recType)
- throws AlgebricksException {
- IAType keyType = AqlCompiledIndexDecl.keyFieldType(expr, recType);
- boolean nullable = false;
- if (keyType.getTypeTag() == ATypeTag.UNION) {
- AUnionType unionType = (AUnionType) keyType;
- if (unionType.isNullableType()) {
- // The non-null type is always at index 1.
- keyType = unionType.getUnionList().get(1);
- nullable = true;
- }
- }
- return new Pair<IAType, Boolean>(keyType, nullable);
- }
-
- private static IAType keyFieldType(String expr, ARecordType recType) throws AlgebricksException {
- String[] names = recType.getFieldNames();
- int n = names.length;
- for (int i = 0; i < n; i++) {
- if (names[i].equals(expr)) {
- return recType.getFieldTypes()[i];
- }
- }
- throw new AlgebricksException("Could not find field " + expr + " in the schema.");
- }
-}
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlCompiledInternalDatasetDetails.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlCompiledInternalDatasetDetails.java
deleted file mode 100644
index 912b766..0000000
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlCompiledInternalDatasetDetails.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright 2009-2011 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.asterix.metadata.declared;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import edu.uci.ics.asterix.common.config.DatasetConfig.DatasetType;
-import edu.uci.ics.asterix.om.types.IAType;
-import edu.uci.ics.hyracks.algebricks.common.utils.Triple;
-import edu.uci.ics.hyracks.algebricks.core.algebra.expressions.ScalarFunctionCallExpression;
-import edu.uci.ics.hyracks.algebricks.runtime.base.ICopyEvaluatorFactory;
-
-public class AqlCompiledInternalDatasetDetails implements IAqlCompiledDatasetDetails {
- private final List<String> partitioningExprs;
- private final List<Triple<ICopyEvaluatorFactory, ScalarFunctionCallExpression, IAType>> partitionFuns;
- private final String nodegroupName;
- private final List<AqlCompiledIndexDecl> secondaryIndexes;
- private final AqlCompiledIndexDecl primaryIndex;
- private HashMap<String, List<AqlCompiledIndexDecl>> secondaryIndexInvertedList;
-
- public AqlCompiledInternalDatasetDetails(List<String> partitioningExprs,
- List<Triple<ICopyEvaluatorFactory, ScalarFunctionCallExpression, IAType>> partitionFuns, String nodegroupName,
- AqlCompiledIndexDecl primaryIndex, List<AqlCompiledIndexDecl> secondaryIndexes) {
- this.partitioningExprs = partitioningExprs;
- this.partitionFuns = partitionFuns;
- this.nodegroupName = nodegroupName;
- this.primaryIndex = primaryIndex;
- this.secondaryIndexes = secondaryIndexes;
- invertSecondaryIndexExprs();
- }
-
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append("dataset partitioned-by " + partitionFuns + " on " + nodegroupName);
- if (secondaryIndexes != null && !secondaryIndexes.isEmpty()) {
- sb.append(System.getProperty("line.separator") + " with indexes: " + secondaryIndexes);
- }
- return sb.toString();
- }
-
- public List<Triple<ICopyEvaluatorFactory, ScalarFunctionCallExpression, IAType>> getPartitioningFunctions() {
- return partitionFuns;
- }
-
- public List<String> getPartitioningExprs() {
- return partitioningExprs;
- }
-
- public int getPositionOfPartitioningKeyField(String fieldName) {
- int pos = 0;
- for (String pe : partitioningExprs) {
- if (pe.equals(fieldName)) {
- return pos;
- }
- ++pos;
- }
- return -1;
- }
-
- public String getNodegroupName() {
- return nodegroupName;
- }
-
- public List<AqlCompiledIndexDecl> getSecondaryIndexes() {
- return secondaryIndexes;
- }
-
- public AqlCompiledIndexDecl getPrimaryIndex() {
- return primaryIndex;
- }
-
- public List<AqlCompiledIndexDecl> findSecondaryIndexesByOneOfTheKeys(String fieldExpr) {
- return secondaryIndexInvertedList.get(fieldExpr);
- }
-
- public AqlCompiledIndexDecl findSecondaryIndexByExactKeyList(List<String> fieldExprs) {
- if (secondaryIndexes == null) {
- return null;
- }
- for (AqlCompiledIndexDecl acid : secondaryIndexes) {
- if (acid.getFieldExprs().equals(fieldExprs)) {
- return acid;
- }
- }
- return null;
- }
-
- public AqlCompiledIndexDecl findSecondaryIndexByName(String idxName) {
- if (secondaryIndexes == null) {
- return null;
- }
- for (AqlCompiledIndexDecl acid : secondaryIndexes) {
- if (acid.getIndexName().equals(idxName)) {
- return acid;
- }
- }
- return null;
- }
-
- private void invertSecondaryIndexExprs() {
- secondaryIndexInvertedList = new HashMap<String, List<AqlCompiledIndexDecl>>();
- if (secondaryIndexes == null) {
- return;
- }
- for (AqlCompiledIndexDecl idx : secondaryIndexes) {
- for (String s : idx.getFieldExprs()) {
- List<AqlCompiledIndexDecl> idxList = secondaryIndexInvertedList.get(s);
- if (idxList == null) {
- idxList = new ArrayList<AqlCompiledIndexDecl>();
- secondaryIndexInvertedList.put(s, idxList);
- }
- idxList.add(idx);
- }
- }
- }
-
- @Override
- public DatasetType getDatasetType() {
- return DatasetType.INTERNAL;
- }
-}
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlCompiledMetadataDeclarations.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlCompiledMetadataDeclarations.java
index 9bd0ea1..0892756 100644
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlCompiledMetadataDeclarations.java
+++ b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlCompiledMetadataDeclarations.java
@@ -23,7 +23,6 @@
import edu.uci.ics.asterix.common.annotations.TypeDataGen;
import edu.uci.ics.asterix.common.config.DatasetConfig.DatasetType;
-import edu.uci.ics.asterix.common.config.DatasetConfig.IndexType;
import edu.uci.ics.asterix.common.exceptions.AsterixException;
import edu.uci.ics.asterix.formats.base.IDataFormat;
import edu.uci.ics.asterix.metadata.MetadataException;
@@ -31,7 +30,6 @@
import edu.uci.ics.asterix.metadata.MetadataTransactionContext;
import edu.uci.ics.asterix.metadata.api.IMetadataManager;
import edu.uci.ics.asterix.metadata.bootstrap.AsterixProperties;
-import edu.uci.ics.asterix.metadata.declared.AqlCompiledIndexDecl.IndexKind;
import edu.uci.ics.asterix.metadata.entities.Dataset;
import edu.uci.ics.asterix.metadata.entities.Datatype;
import edu.uci.ics.asterix.metadata.entities.Dataverse;
@@ -182,81 +180,6 @@
} catch (MetadataException e) {
throw new AlgebricksException(e);
}
-
- /*
- try {
- Dataset datasetRecord = this.metadataManager.getDataset(mdTxnCtx, dataverseName, datasetName);
- if (datasetRecord == null) {
- return null;
- }
-
- IAqlCompiledDatasetDetails acdd = null;
- switch (datasetRecord.getType()) {
- case FEED:
- case INTERNAL: {
- String typeName = datasetRecord.getDatatypeName();
- InternalDatasetDetails id = (InternalDatasetDetails) datasetRecord.getDatasetDetails();
- ARecordType recType = (ARecordType) findType(typeName);
- List<Triple<ICopyEvaluatorFactory, ScalarFunctionCallExpression, IAType>> partitioningEvalFactories = computePartitioningEvaluatorFactories(
- id.getPartitioningKey(), recType);
- List<Index> indexRecord = this.metadataManager.getDatasetIndexes(mdTxnCtx, dataverseName,
- datasetName);
- AqlCompiledIndexDecl primaryIndex = null;
- List<AqlCompiledIndexDecl> secondaryIndexes = new ArrayList<AqlCompiledIndexDecl>();
- for (int i = 0; i < indexRecord.size(); i++) {
- Index rec = indexRecord.get(i);
- if (rec.isPrimaryIndex()) {
- primaryIndex = new AqlCompiledIndexDecl(rec.getIndexName(), IndexKind.BTREE,
- rec.getKeyFieldNames());
- } else {
- secondaryIndexes.add(new AqlCompiledIndexDecl(rec.getIndexName(), getIndexKindFromType(rec
- .getIndexType()), rec.getKeyFieldNames(), rec.getGramLength()));
- }
- }
-
- if (datasetRecord.getType() == DatasetType.INTERNAL) {
- acdd = new AqlCompiledInternalDatasetDetails(id.getPartitioningKey(),
- partitioningEvalFactories, id.getNodeGroupName(), primaryIndex, secondaryIndexes);
- } else {
- acdd = new AqlCompiledFeedDatasetDetails(id.getPartitioningKey(), partitioningEvalFactories,
- id.getNodeGroupName(), primaryIndex, secondaryIndexes,
- ((FeedDatasetDetails) id).getAdapter(), ((FeedDatasetDetails) id).getProperties(),
- ((FeedDatasetDetails) id).getFunctionIdentifier(), ((FeedDatasetDetails) id)
- .getFeedState().toString());
- }
- break;
- }
-
- case EXTERNAL: {
- acdd = new AqlCompiledExternalDatasetDetails(
- ((ExternalDatasetDetails) datasetRecord.getDatasetDetails()).getAdapter(),
- ((ExternalDatasetDetails) datasetRecord.getDatasetDetails()).getProperties());
- break;
- }
-
- }
- AqlCompiledDatasetDecl dataset = new AqlCompiledDatasetDecl(datasetRecord.getDatasetName(),
- datasetRecord.getDatatypeName(), datasetRecord.getType(), acdd);
- return dataset;
-
- } catch (Exception e) {
- throw new IllegalStateException(e);
- }
- */
- }
-
- private IndexKind getIndexKindFromType(IndexType type) {
- switch (type) {
- case BTREE:
- return IndexKind.BTREE;
- case RTREE:
- return IndexKind.RTREE;
- case WORD_INVIX:
- return IndexKind.WORD_INVIX;
- case NGRAM_INVIX:
- return IndexKind.NGRAM_INVIX;
- }
- return null;
}
public List<Index> getDatasetIndexes(String dataverseName, String datasetName) throws AlgebricksException {
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlMetadataProvider.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlMetadataProvider.java
index 94834ec..06aec91 100644
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlMetadataProvider.java
+++ b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlMetadataProvider.java
@@ -366,7 +366,7 @@
+ " fields as a key for the R-tree index. There can be only one field as a key for the R-tree index.");
}
- Pair<IAType, Boolean> keyTypePair = AqlCompiledIndexDecl.getNonNullableKeyFieldType(
+ Pair<IAType, Boolean> keyTypePair = Index.getNonNullableKeyFieldType(
secondaryKeyFields.get(0), recType);
IAType keyType = keyTypePair.first;
if (keyType == null) {
@@ -718,7 +718,7 @@
ITypeTraits[] typeTraits = new ITypeTraits[numKeys];
IBinaryComparatorFactory[] comparatorFactories = new IBinaryComparatorFactory[numKeys];
for (i = 0; i < secondaryKeys.size(); ++i) {
- Pair<IAType, Boolean> keyPairType = AqlCompiledIndexDecl.getNonNullableKeyFieldType(secondaryKeyExprs
+ Pair<IAType, Boolean> keyPairType = Index.getNonNullableKeyFieldType(secondaryKeyExprs
.get(i).toString(), recType);
IAType keyType = keyPairType.first;
comparatorFactories[i] = AqlBinaryComparatorFactoryProvider.INSTANCE.getBinaryComparatorFactory(keyType,
@@ -757,8 +757,8 @@
ARecordType recType = (ARecordType) itemType;
Index secondaryIndex = metadata.getIndex(dataset.getDataverseName(), dataset.getDatasetName(), indexName);
List<String> secondaryKeyExprs = secondaryIndex.getKeyFieldNames();
- Pair<IAType, Boolean> keyPairType = AqlCompiledIndexDecl.getNonNullableKeyFieldType(secondaryKeyExprs.get(0),
- recType);
+ Pair<IAType, Boolean> keyPairType = Index.getNonNullableKeyFieldType(
+ secondaryKeyExprs.get(0), recType);
IAType spatialType = keyPairType.first;
int dimension = NonTaggedFormatUtil.getNumDimensions(spatialType.getTypeTag());
int numSecondaryKeys = dimension * 2;
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/IAqlCompiledDatasetDetails.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/IAqlCompiledDatasetDetails.java
deleted file mode 100644
index 2253db9..0000000
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/IAqlCompiledDatasetDetails.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright 2009-2011 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.asterix.metadata.declared;
-
-import edu.uci.ics.asterix.common.config.DatasetConfig.DatasetType;
-
-public interface IAqlCompiledDatasetDetails {
-
- public DatasetType getDatasetType();
-}
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/entities/Index.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/entities/Index.java
index bd3f8a7..00d723a 100644
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/entities/Index.java
+++ b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/entities/Index.java
@@ -19,6 +19,12 @@
import java.util.List;
import edu.uci.ics.asterix.common.config.DatasetConfig.IndexType;
+import edu.uci.ics.asterix.om.types.ARecordType;
+import edu.uci.ics.asterix.om.types.ATypeTag;
+import edu.uci.ics.asterix.om.types.AUnionType;
+import edu.uci.ics.asterix.om.types.IAType;
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.common.utils.Pair;
/**
* Metadata describing an index.
@@ -91,4 +97,30 @@
public boolean isSecondaryIndex() {
return !isPrimaryIndex();
}
+
+ public static Pair<IAType, Boolean> getNonNullableKeyFieldType(String expr, ARecordType recType)
+ throws AlgebricksException {
+ IAType keyType = Index.keyFieldType(expr, recType);
+ boolean nullable = false;
+ if (keyType.getTypeTag() == ATypeTag.UNION) {
+ AUnionType unionType = (AUnionType) keyType;
+ if (unionType.isNullableType()) {
+ // The non-null type is always at index 1.
+ keyType = unionType.getUnionList().get(1);
+ nullable = true;
+ }
+ }
+ return new Pair<IAType, Boolean>(keyType, nullable);
+ }
+
+ private static IAType keyFieldType(String expr, ARecordType recType) throws AlgebricksException {
+ String[] names = recType.getFieldNames();
+ int n = names.length;
+ for (int i = 0; i < n; i++) {
+ if (names[i].equals(expr)) {
+ return recType.getFieldTypes()[i];
+ }
+ }
+ throw new AlgebricksException("Could not find field " + expr + " in the schema.");
+ }
}
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/utils/DatasetUtils.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/utils/DatasetUtils.java
index a75f6ba..207c74b 100644
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/utils/DatasetUtils.java
+++ b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/utils/DatasetUtils.java
@@ -4,9 +4,6 @@
import edu.uci.ics.asterix.common.config.DatasetConfig.DatasetType;
import edu.uci.ics.asterix.formats.nontagged.AqlTypeTraitProvider;
-import edu.uci.ics.asterix.metadata.declared.AqlCompiledDatasetDecl;
-import edu.uci.ics.asterix.metadata.declared.AqlCompiledIndexDecl;
-import edu.uci.ics.asterix.metadata.declared.AqlCompiledInternalDatasetDetails;
import edu.uci.ics.asterix.metadata.entities.Dataset;
import edu.uci.ics.asterix.metadata.entities.InternalDatasetDetails;
import edu.uci.ics.asterix.om.types.ARecordType;
@@ -72,29 +69,6 @@
return (((InternalDatasetDetails) dataset.getDatasetDetails())).getNodeGroupName();
}
- // TODO: TO be removed.
- /*
- public static AqlCompiledIndexDecl getPrimaryIndex(Dataset dataset, AqlCompiledMetadataDeclarations metadata) {
- List<Index> datasetIndexes = metadata.getDatasetIndexes(dataverseName, datasetName);
-
- return (((AqlCompiledInternalDatasetDetails) decl.getAqlCompiledDatasetDetails())).getPrimaryIndex();
- }
- */
-
- // TODO: To be removed.
- /*
- public static AqlCompiledIndexDecl findSecondaryIndexByName(AqlCompiledDatasetDecl decl, String indexName) {
- return (((AqlCompiledInternalDatasetDetails) decl.getAqlCompiledDatasetDetails())
- .findSecondaryIndexByName(indexName));
- }
- */
-
- public static List<AqlCompiledIndexDecl> findSecondaryIndexesByOneOfTheKeys(AqlCompiledDatasetDecl decl,
- String fieldExpr) {
- return (((AqlCompiledInternalDatasetDetails) decl.getAqlCompiledDatasetDetails()))
- .findSecondaryIndexesByOneOfTheKeys(fieldExpr);
- }
-
public static int getPositionOfPartitioningKeyField(Dataset dataset, String fieldExpr) {
List<String> partitioningKeys = DatasetUtils.getPartitioningKeys(dataset);
for (int i = 0; i < partitioningKeys.size(); i++) {
@@ -104,8 +78,4 @@
}
return -1;
}
-
- public static List<AqlCompiledIndexDecl> getSecondaryIndexes(AqlCompiledDatasetDecl decl) {
- return (((AqlCompiledInternalDatasetDetails) decl.getAqlCompiledDatasetDetails())).getSecondaryIndexes();
- }
}