blob: d5b079613132436d0d696ad2a256d8800ff8fb16 [file] [log] [blame]
// 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.impala.catalog.local;
import java.util.List;
import java.util.Set;
import org.apache.hadoop.hive.metastore.api.Table;
import org.apache.impala.analysis.QueryStmt;
import org.apache.impala.catalog.FeView;
import org.apache.impala.catalog.TableLoadingException;
import org.apache.impala.catalog.View;
import org.apache.impala.catalog.local.MetaProvider.TableMetaRef;
import org.apache.impala.thrift.TCatalogObjectType;
import org.apache.impala.thrift.TTableDescriptor;
/**
* View implementation corresponding to the LocalCatalog.
*
* NOTE: this does _not_ implement "local views" in the sense of a view defined
* in the scope of a query using a WITH expression.
*/
public class LocalView extends LocalTable implements FeView {
private final QueryStmt queryStmt_;
public LocalView(LocalDb db, Table msTbl, TableMetaRef ref) {
super(db, msTbl, ref);
try {
queryStmt_ = View.parseViewDef(this);
} catch (TableLoadingException e) {
throw new LocalCatalogException(e);
}
}
@Override
public TTableDescriptor toThriftDescriptor(int tableId,
Set<Long> referencedPartitions) {
// Views are always resolved into underlying tables before being serialized.
throw new IllegalStateException("Cannot call toThriftDescriptor() on a view.");
}
// NOTE: "local view" in this context means "a view defined local to a query"
// whereas "local" in the class name "LocalView" means "view from the
// LocalCatalog catalog implementation".
@Override
public boolean isLocalView() {
// TODO: the org.apache.impala.catalog.View class is still used for local views
// even in the LocalCatalog implementation.
return false;
}
@Override
public QueryStmt getQueryStmt() {
return queryStmt_;
}
@Override
public List<String> getColLabels() {
// Explicit column labels are only used by local views.
// Returning null indicates that the column labels are derived
// from the underlying statement.
return null;
}
@Override
public TCatalogObjectType getCatalogObjectType() {
return TCatalogObjectType.VIEW;
}
}