You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by ti...@apache.org on 2016/11/24 00:57:30 UTC

[3/7] asterixdb git commit: ASTERIXDB-1711: remove some Aql-prefixes

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/42600592/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/AqlSourceId.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/AqlSourceId.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/AqlSourceId.java
deleted file mode 100644
index 295b59a..0000000
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/AqlSourceId.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.asterix.metadata.declared;
-
-import java.io.File;
-
-public class AqlSourceId {
-
-    private String dataverseName;
-    private String datasourceName;
-
-    public AqlSourceId(String dataverseName, String datasourceName) {
-        this.dataverseName = dataverseName;
-        this.datasourceName = datasourceName;
-    }
-
-    @Override
-    public String toString() {
-        return dataverseName + File.pathSeparator + datasourceName;
-    }
-
-    public String getDataverseName() {
-        return dataverseName;
-    }
-
-    public String getDatasourceName() {
-        return datasourceName;
-    }
-}

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/42600592/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSource.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSource.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSource.java
new file mode 100644
index 0000000..fa874d5
--- /dev/null
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSource.java
@@ -0,0 +1,164 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.metadata.declared;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.asterix.om.types.IAType;
+import org.apache.hyracks.algebricks.common.constraints.AlgebricksPartitionConstraint;
+import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
+import org.apache.hyracks.algebricks.common.utils.Pair;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
+import org.apache.hyracks.algebricks.core.algebra.metadata.IDataSource;
+import org.apache.hyracks.algebricks.core.algebra.metadata.IDataSourcePropertiesProvider;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.IOperatorSchema;
+import org.apache.hyracks.algebricks.core.algebra.properties.FunctionalDependency;
+import org.apache.hyracks.algebricks.core.algebra.properties.ILocalStructuralProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.INodeDomain;
+import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
+import org.apache.hyracks.api.dataflow.IOperatorDescriptor;
+import org.apache.hyracks.api.job.JobSpecification;
+
+public abstract class DataSource implements IDataSource<DataSourceId> {
+
+    protected final DataSourceId id;
+    protected final IAType itemType;
+    protected final IAType metaItemType;
+    protected final byte datasourceType;
+    protected IAType[] schemaTypes;
+    protected INodeDomain domain;
+    protected Map<String, Serializable> properties = new HashMap<>();
+
+    public static class Type {
+        // positive range is reserved for core datasource types
+        public static final byte INTERNAL_DATASET = 0x00;
+        public static final byte EXTERNAL_DATASET = 0x01;
+        public static final byte FEED = 0x02;
+        public static final byte LOADABLE = 0x03;
+
+        // Hide implicit public constructor
+        private Type() {
+        }
+    }
+
+    public DataSource(DataSourceId id, IAType itemType, IAType metaItemType, byte datasourceType,
+            INodeDomain domain) throws AlgebricksException {
+        this.id = id;
+        this.itemType = itemType;
+        this.metaItemType = metaItemType;
+        this.datasourceType = datasourceType;
+        this.domain = domain;
+    }
+
+    @Override
+    public IAType[] getSchemaTypes() {
+        return schemaTypes;
+    }
+
+    @Override
+    public INodeDomain getDomain() {
+        return domain;
+    }
+
+    public void computeLocalStructuralProperties(List<ILocalStructuralProperty> localProps,
+            List<LogicalVariable> variables) {
+        // do nothing
+    }
+
+    @Override
+    public DataSourceId getId() {
+        return id;
+    }
+
+    @Override
+    public String toString() {
+        return id.toString();
+    }
+
+    @Override
+    public IDataSourcePropertiesProvider getPropertiesProvider() {
+        return new DataSourcePartitioningProvider(this, domain);
+    }
+
+    @Override
+    public void computeFDs(List<LogicalVariable> scanVariables, List<FunctionalDependency> fdList) {
+        int n = scanVariables.size();
+        if (n > 1) {
+            List<LogicalVariable> head = new ArrayList<>(scanVariables.subList(0, n - 1));
+            List<LogicalVariable> tail = new ArrayList<>(1);
+            tail.addAll(scanVariables);
+            FunctionalDependency fd = new FunctionalDependency(head, tail);
+            fdList.add(fd);
+        }
+    }
+
+    public byte getDatasourceType() {
+        return datasourceType;
+    }
+
+    public Map<String, Serializable> getProperties() {
+        return properties;
+    }
+
+    public IAType getItemType() {
+        return itemType;
+    }
+
+    public IAType getMetaItemType() {
+        return metaItemType;
+    }
+
+    public boolean hasMeta() {
+        return metaItemType != null;
+    }
+
+    public void setProperties(Map<String, Serializable> properties) {
+        this.properties = properties;
+    }
+
+    public LogicalVariable getMetaVariable(List<LogicalVariable> dataScanVariables) {
+        if (hasMeta()) {
+            return dataScanVariables.get(dataScanVariables.size() - 1);
+        } else {
+            return null;
+        }
+    }
+
+    public LogicalVariable getDataRecordVariable(List<LogicalVariable> dataScanVariables) {
+        return hasMeta() ? dataScanVariables.get(dataScanVariables.size() - 2)
+                : dataScanVariables.get(dataScanVariables.size() - 1);
+    }
+
+    public List<LogicalVariable> getPrimaryKeyVariables(List<LogicalVariable> dataScanVariables) {
+        return new ArrayList<>(dataScanVariables.subList(0, dataScanVariables.size() - (hasMeta() ? 2 : 1)));
+    }
+
+    public abstract Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> buildDatasourceScanRuntime(
+            MetadataProvider metadataProvider, IDataSource<DataSourceId> dataSource,
+            List<LogicalVariable> scanVariables, List<LogicalVariable> projectVariables, boolean projectPushed,
+            List<LogicalVariable> minFilterVars, List<LogicalVariable> maxFilterVars, IOperatorSchema opSchema,
+            IVariableTypeEnvironment typeEnv, JobGenContext context, JobSpecification jobSpec, Object implConfig)
+            throws AlgebricksException;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/42600592/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourceId.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourceId.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourceId.java
new file mode 100644
index 0000000..d4329a3
--- /dev/null
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourceId.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.metadata.declared;
+
+import java.io.File;
+
+public class DataSourceId {
+
+    private String dataverseName;
+    private String datasourceName;
+
+    public DataSourceId(String dataverseName, String datasourceName) {
+        this.dataverseName = dataverseName;
+        this.datasourceName = datasourceName;
+    }
+
+    @Override
+    public String toString() {
+        return dataverseName + File.pathSeparator + datasourceName;
+    }
+
+    public String getDataverseName() {
+        return dataverseName;
+    }
+
+    public String getDatasourceName() {
+        return datasourceName;
+    }
+}

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/42600592/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourceIndex.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourceIndex.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourceIndex.java
new file mode 100644
index 0000000..96ed2dd
--- /dev/null
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourceIndex.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.asterix.metadata.declared;
+
+import org.apache.asterix.metadata.entities.Index;
+import org.apache.hyracks.algebricks.core.algebra.metadata.IDataSource;
+import org.apache.hyracks.algebricks.core.algebra.metadata.IDataSourceIndex;
+
+public class DataSourceIndex implements IDataSourceIndex<String, DataSourceId> {
+
+    private final Index index;
+    private final String dataset;
+    private final String dataverse;
+    private final MetadataProvider metadataProvider;
+
+    // Every transactions needs to work with its own instance of an
+    // MetadataProvider.
+    public DataSourceIndex(Index index, String dataverse, String dataset, MetadataProvider metadataProvider) {
+        this.index = index;
+        this.dataset = dataset;
+        this.dataverse = dataverse;
+        this.metadataProvider = metadataProvider;
+    }
+
+    // TODO: Maybe Index can directly implement IDataSourceIndex<String, DataSourceId>
+    @Override
+    public IDataSource<DataSourceId> getDataSource() {
+        try {
+            DataSourceId sourceId = new DataSourceId(dataverse, dataset);
+            return metadataProvider.lookupSourceInMetadata(sourceId);
+        } catch (Exception me) {
+            return null;
+        }
+    }
+
+    @Override
+    public String getId() {
+        return index.getIndexName();
+    }
+
+    public Index getIndex() {
+        return index;
+    }
+}

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/42600592/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourcePartitioningProvider.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourcePartitioningProvider.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourcePartitioningProvider.java
new file mode 100644
index 0000000..3cdfe84
--- /dev/null
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DataSourcePartitioningProvider.java
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.metadata.declared;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.hyracks.algebricks.common.utils.ListSet;
+import org.apache.hyracks.algebricks.core.algebra.base.LogicalVariable;
+import org.apache.hyracks.algebricks.core.algebra.metadata.IDataSourcePropertiesProvider;
+import org.apache.hyracks.algebricks.core.algebra.operators.logical.OrderOperator.IOrder.OrderKind;
+import org.apache.hyracks.algebricks.core.algebra.properties.ILocalStructuralProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.INodeDomain;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPartitioningProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.IPhysicalPropertiesVector;
+import org.apache.hyracks.algebricks.core.algebra.properties.LocalOrderProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.OrderColumn;
+import org.apache.hyracks.algebricks.core.algebra.properties.RandomPartitioningProperty;
+import org.apache.hyracks.algebricks.core.algebra.properties.StructuralPropertiesVector;
+import org.apache.hyracks.algebricks.core.algebra.properties.UnorderedPartitionedProperty;
+
+public class DataSourcePartitioningProvider implements IDataSourcePropertiesProvider {
+
+    private final DataSource ds;
+    private final INodeDomain domain;
+
+    public DataSourcePartitioningProvider(DataSource dataSource, INodeDomain domain) {
+        this.ds = dataSource;
+        this.domain = domain;
+    }
+
+    @Override
+    public IPhysicalPropertiesVector computePropertiesVector(List<LogicalVariable> scanVariables) {
+        IPhysicalPropertiesVector propsVector;
+        IPartitioningProperty pp;
+        List<ILocalStructuralProperty> propsLocal = new ArrayList<>();
+        switch (ds.getDatasourceType()) {
+            case DataSource.Type.LOADABLE:
+            case DataSource.Type.EXTERNAL_DATASET:
+                pp = new RandomPartitioningProperty(domain);
+                ds.computeLocalStructuralProperties(propsLocal, scanVariables);
+                break;
+            case DataSource.Type.FEED:
+                pp = getFeedPartitioningProperty(ds, domain, scanVariables);
+                break;
+            case DataSource.Type.INTERNAL_DATASET:
+                Set<LogicalVariable> pvars = new ListSet<>();
+                pp = getInternalDatasetPartitioningProperty(ds, domain, scanVariables, pvars);
+                propsLocal.add(new LocalOrderProperty(getOrderColumns(pvars)));
+                break;
+            default:
+                throw new IllegalArgumentException();
+        }
+        propsVector = new StructuralPropertiesVector(pp, propsLocal);
+        return propsVector;
+    }
+
+    private static List<OrderColumn> getOrderColumns(Set<LogicalVariable> pvars) {
+        List<OrderColumn> orderColumns = new ArrayList<>();
+        for (LogicalVariable pkVar : pvars) {
+            orderColumns.add(new OrderColumn(pkVar, OrderKind.ASC));
+        }
+        return orderColumns;
+    }
+
+    private static IPartitioningProperty getInternalDatasetPartitioningProperty(DataSource ds, INodeDomain domain,
+            List<LogicalVariable> scanVariables, Set<LogicalVariable> pvars) {
+        IPartitioningProperty pp;
+        if (scanVariables.size() < 2) {
+            pp = new RandomPartitioningProperty(domain);
+        } else {
+            pvars.addAll(ds.getPrimaryKeyVariables(scanVariables));
+            pp = new UnorderedPartitionedProperty(pvars, domain);
+        }
+        return pp;
+    }
+
+    public static IPartitioningProperty getFeedPartitioningProperty(DataSource ds, INodeDomain domain,
+            List<LogicalVariable> scanVariables) {
+        IPartitioningProperty pp;
+        if (scanVariables.size() < 2) {
+            pp = new RandomPartitioningProperty(domain);
+        } else {
+            Set<LogicalVariable> pvars = new ListSet<>();
+            pvars.addAll(ds.getPrimaryKeyVariables(scanVariables));
+            pp = new UnorderedPartitionedProperty(pvars, domain);
+        }
+        return pp;
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/42600592/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DatasetDataSource.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DatasetDataSource.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DatasetDataSource.java
index 9729c77..6a13979 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DatasetDataSource.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DatasetDataSource.java
@@ -44,11 +44,11 @@ import org.apache.hyracks.algebricks.core.jobgen.impl.JobGenContext;
 import org.apache.hyracks.api.dataflow.IOperatorDescriptor;
 import org.apache.hyracks.api.job.JobSpecification;
 
-public class DatasetDataSource extends AqlDataSource {
+public class DatasetDataSource extends DataSource {
 
     private Dataset dataset;
 
-    public DatasetDataSource(AqlSourceId id, Dataset dataset, IAType itemType, IAType metaItemType,
+    public DatasetDataSource(DataSourceId id, Dataset dataset, IAType itemType, IAType metaItemType,
             byte datasourceType, IDatasetDetails datasetDetails, INodeDomain datasetDomain)
             throws AlgebricksException {
         super(id, itemType, metaItemType, datasourceType, datasetDomain);
@@ -92,7 +92,7 @@ public class DatasetDataSource extends AqlDataSource {
 
     @Override
     public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> buildDatasourceScanRuntime(
-            AqlMetadataProvider aqlMetadataProvider, IDataSource<AqlSourceId> dataSource,
+            MetadataProvider metadataProvider, IDataSource<DataSourceId> dataSource,
             List<LogicalVariable> scanVariables, List<LogicalVariable> projectVariables, boolean projectPushed,
             List<LogicalVariable> minFilterVars, List<LogicalVariable> maxFilterVars, IOperatorSchema opSchema,
             IVariableTypeEnvironment typeEnv, JobGenContext context, JobSpecification jobSpec, Object implConfig)
@@ -101,19 +101,19 @@ public class DatasetDataSource extends AqlDataSource {
             case EXTERNAL:
                 Dataset externalDataset = ((DatasetDataSource) dataSource).getDataset();
                 String itemTypeName = externalDataset.getItemTypeName();
-                IAType itemType = MetadataManager.INSTANCE.getDatatype(aqlMetadataProvider.getMetadataTxnContext(),
+                IAType itemType = MetadataManager.INSTANCE.getDatatype(metadataProvider.getMetadataTxnContext(),
                         externalDataset.getItemTypeDataverseName(), itemTypeName).getDatatype();
 
                 ExternalDatasetDetails edd = (ExternalDatasetDetails) externalDataset.getDatasetDetails();
-                IAdapterFactory adapterFactory = aqlMetadataProvider.getConfiguredAdapterFactory(externalDataset,
+                IAdapterFactory adapterFactory = metadataProvider.getConfiguredAdapterFactory(externalDataset,
                         edd.getAdapter(), edd.getProperties(), (ARecordType) itemType, false, null, null);
-                return aqlMetadataProvider.buildExternalDatasetDataScannerRuntime(jobSpec, itemType, adapterFactory,
+                return metadataProvider.buildExternalDatasetDataScannerRuntime(jobSpec, itemType, adapterFactory,
                         NonTaggedDataFormat.INSTANCE);
             case INTERNAL:
-                AqlSourceId asid = getId();
-                String dataverseName = asid.getDataverseName();
-                String datasetName = asid.getDatasourceName();
-                Index primaryIndex = MetadataManager.INSTANCE.getIndex(aqlMetadataProvider.getMetadataTxnContext(),
+                DataSourceId id = getId();
+                String dataverseName = id.getDataverseName();
+                String datasetName = id.getDatasourceName();
+                Index primaryIndex = MetadataManager.INSTANCE.getIndex(metadataProvider.getMetadataTxnContext(),
                         dataverseName, datasetName, datasetName);
 
                 int[] minFilterFieldIndexes = null;
@@ -134,7 +134,7 @@ public class DatasetDataSource extends AqlDataSource {
                         i++;
                     }
                 }
-                return aqlMetadataProvider.buildBtreeRuntime(jobSpec, scanVariables, opSchema, typeEnv, context, true,
+                return metadataProvider.buildBtreeRuntime(jobSpec, scanVariables, opSchema, typeEnv, context, true,
                         false, ((DatasetDataSource) dataSource).getDataset(), primaryIndex.getIndexName(), null, null,
                         true, true, implConfig, minFilterFieldIndexes, maxFilterFieldIndexes);
             default:

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/42600592/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FeedDataSource.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FeedDataSource.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FeedDataSource.java
index d1d5df0..f57fc6d 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FeedDataSource.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/FeedDataSource.java
@@ -50,7 +50,7 @@ import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
 import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.job.JobSpecification;
 
-public class FeedDataSource extends AqlDataSource implements IMutationDataSource {
+public class FeedDataSource extends DataSource implements IMutationDataSource {
 
     private final Feed feed;
     private final EntityId sourceFeedId;
@@ -62,12 +62,12 @@ public class FeedDataSource extends AqlDataSource implements IMutationDataSource
     private final List<IAType> pkTypes;
     private final List<ScalarFunctionCallExpression> keyAccessExpression;
 
-    public FeedDataSource(Feed feed, AqlSourceId id, String targetDataset, IAType itemType, IAType metaType,
+    public FeedDataSource(Feed feed, DataSourceId id, String targetDataset, IAType itemType, IAType metaType,
             List<IAType> pkTypes, List<List<String>> partitioningKeys,
             List<ScalarFunctionCallExpression> keyAccessExpression, EntityId sourceFeedId,
             IFeed.FeedType sourceFeedType, FeedRuntimeType location, String[] locations, INodeDomain domain)
             throws AlgebricksException {
-        super(id, itemType, metaType, AqlDataSourceType.FEED, domain);
+        super(id, itemType, metaType, Type.FEED, domain);
         this.feed = feed;
         this.targetDataset = targetDataset;
         this.sourceFeedId = sourceFeedId;
@@ -166,7 +166,7 @@ public class FeedDataSource extends AqlDataSource implements IMutationDataSource
 
     @Override
     public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> buildDatasourceScanRuntime(
-            AqlMetadataProvider aqlMetadataProvider, IDataSource<AqlSourceId> dataSource,
+            MetadataProvider metadataProvider, IDataSource<DataSourceId> dataSource,
             List<LogicalVariable> scanVariables, List<LogicalVariable> projectVariables, boolean projectPushed,
             List<LogicalVariable> minFilterVars, List<LogicalVariable> maxFilterVars, IOperatorSchema opSchema,
             IVariableTypeEnvironment typeEnv, JobGenContext context, JobSpecification jobSpec, Object implConfig)

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/42600592/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/LoadableDataSource.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/LoadableDataSource.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/LoadableDataSource.java
index 200a5a9..5b5844c 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/LoadableDataSource.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/LoadableDataSource.java
@@ -46,7 +46,7 @@ import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.api.job.JobSpecification;
 
-public class LoadableDataSource extends AqlDataSource {
+public class LoadableDataSource extends DataSource {
 
     private final Dataset targetDataset;
     private final List<List<String>> partitioningKeys;
@@ -56,7 +56,7 @@ public class LoadableDataSource extends AqlDataSource {
 
     public LoadableDataSource(Dataset targetDataset, IAType itemType, IAType metaItemType, String adapter,
             Map<String, String> properties) throws AlgebricksException, IOException {
-        super(new AqlSourceId("loadable_dv", "loadable_ds"), itemType, metaItemType, AqlDataSourceType.LOADABLE, null);
+        super(new DataSourceId("loadable_dv", "loadable_ds"), itemType, metaItemType, Type.LOADABLE, null);
         this.targetDataset = targetDataset;
         this.adapter = adapter;
         this.adapterProperties = properties;
@@ -127,7 +127,7 @@ public class LoadableDataSource extends AqlDataSource {
 
     @Override
     public Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> buildDatasourceScanRuntime(
-            AqlMetadataProvider aqlMetadataProvider, IDataSource<AqlSourceId> dataSource,
+            MetadataProvider metadataProvider, IDataSource<DataSourceId> dataSource,
             List<LogicalVariable> scanVariables, List<LogicalVariable> projectVariables, boolean projectPushed,
             List<LogicalVariable> minFilterVars, List<LogicalVariable> maxFilterVars, IOperatorSchema opSchema,
             IVariableTypeEnvironment typeEnv, JobGenContext context, JobSpecification jobSpec, Object implConfig)
@@ -138,11 +138,11 @@ public class LoadableDataSource extends AqlDataSource {
         boolean isAldsPKAutoGenerated = ((InternalDatasetDetails) alds.getTargetDataset().getDatasetDetails())
                 .isAutogenerated();
         ARecordType itemType = (ARecordType) alds.getLoadedType();
-        IAdapterFactory adapterFactory = aqlMetadataProvider.getConfiguredAdapterFactory(alds.getTargetDataset(),
+        IAdapterFactory adapterFactory = metadataProvider.getConfiguredAdapterFactory(alds.getTargetDataset(),
                 alds.getAdapter(), alds.getAdapterProperties(), itemType, isAldsPKAutoGenerated, aldsPartitioningKeys,
                 null);
         RecordDescriptor rDesc = JobGenHelper.mkRecordDescriptor(typeEnv, opSchema, context);
-        return aqlMetadataProvider.buildLoadableDatasetScan(jobSpec, adapterFactory, rDesc);
+        return metadataProvider.buildLoadableDatasetScan(jobSpec, adapterFactory, rDesc);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/42600592/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataManagerUtil.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataManagerUtil.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataManagerUtil.java
index 39ad1c6..536a688 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataManagerUtil.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataManagerUtil.java
@@ -25,7 +25,6 @@ import org.apache.asterix.common.config.DatasetConfig.DatasetType;
 import org.apache.asterix.metadata.MetadataException;
 import org.apache.asterix.metadata.MetadataManager;
 import org.apache.asterix.metadata.MetadataTransactionContext;
-import org.apache.asterix.metadata.declared.AqlDataSource.AqlDataSourceType;
 import org.apache.asterix.metadata.entities.Dataset;
 import org.apache.asterix.metadata.entities.DatasourceAdapter;
 import org.apache.asterix.metadata.entities.Datatype;
@@ -151,17 +150,16 @@ public class MetadataManagerUtil {
         }
     }
 
-    public static AqlDataSource findDataSource(MetadataTransactionContext mdTxnCtx, AqlSourceId id)
+    public static DataSource findDataSource(MetadataTransactionContext mdTxnCtx, DataSourceId id)
             throws AlgebricksException {
-        AqlSourceId aqlId = id;
         try {
-            return lookupSourceInMetadata(mdTxnCtx, aqlId);
+            return lookupSourceInMetadata(mdTxnCtx, id);
         } catch (MetadataException e) {
             throw new AlgebricksException(e);
         }
     }
 
-    public static AqlDataSource lookupSourceInMetadata(MetadataTransactionContext mdTxnCtx, AqlSourceId aqlId)
+    public static DataSource lookupSourceInMetadata(MetadataTransactionContext mdTxnCtx, DataSourceId aqlId)
             throws AlgebricksException {
         Dataset dataset = findDataset(mdTxnCtx, aqlId.getDataverseName(), aqlId.getDatasourceName());
         if (dataset == null) {
@@ -170,8 +168,8 @@ public class MetadataManagerUtil {
         IAType itemType = findType(mdTxnCtx, dataset.getItemTypeDataverseName(), dataset.getItemTypeName());
         IAType metaItemType = findType(mdTxnCtx, dataset.getMetaItemTypeDataverseName(), dataset.getMetaItemTypeName());
         INodeDomain domain = findNodeDomain(mdTxnCtx, dataset.getNodeGroupName());
-        byte datasourceType = dataset.getDatasetType().equals(DatasetType.EXTERNAL) ? AqlDataSourceType.EXTERNAL_DATASET
-                : AqlDataSourceType.INTERNAL_DATASET;
+        byte datasourceType = dataset.getDatasetType().equals(DatasetType.EXTERNAL) ? DataSource.Type.EXTERNAL_DATASET
+                : DataSource.Type.INTERNAL_DATASET;
         return new DatasetDataSource(aqlId, dataset, itemType, metaItemType, datasourceType,
                 dataset.getDatasetDetails(), domain);
     }