Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * 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 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 com.facebook.presto.execution;
 
 
 
 import java.util.List;
 
 import static com.facebook.presto.metadata.MetadataUtil.createQualifiedTableName;
 import static com.facebook.presto.metadata.ViewDefinition.ViewColumn;
 import static com.facebook.presto.spi.StandardErrorCode.INTERNAL_ERROR;
 import static com.facebook.presto.sql.SqlFormatter.formatSql;
 import static com.facebook.presto.util.ImmutableCollectors.toImmutableList;
 import static com.google.common.base.Preconditions.checkNotNull;
 
 public class CreateViewTask
         implements DataDefinitionTask<CreateView>
 {
     private final JsonCodec<ViewDefinitioncodec;
     private final SqlParser sqlParser;
     private final List<PlanOptimizerplanOptimizers;
     private final boolean experimentalSyntaxEnabled;
 
     @Inject
     public CreateViewTask(JsonCodec<ViewDefinitioncodecSqlParser sqlParserList<PlanOptimizerplanOptimizersFeaturesConfig featuresConfig)
     {
         this. = checkNotNull(codec"codec is null");
         this. = checkNotNull(sqlParser"sqlParser is null");
         this. = ImmutableList.copyOf(checkNotNull(planOptimizers"planOptimizers is null"));
         checkNotNull(featuresConfig"featuresConfig is null");
         this. = featuresConfig.isExperimentalSyntaxEnabled();
     }
 
     @Override
     public String getName()
     {
         return "CREATE VIEW";
     }
 
     @Override
     public void execute(CreateView statementSession sessionMetadata metadataQueryStateMachine stateMachine)
     {
         QualifiedTableName name = createQualifiedTableName(sessionstatement.getName());
 
         String sql = getFormattedSql(statement);
 
         Analysis analysis = analyzeStatement(statementsessionmetadata);
 
         List<ViewColumncolumns = analysis.getOutputDescriptor()
                 .getVisibleFields().stream()
                 .map(field -> new ViewColumn(field.getName().get(), field.getType()))
                 .collect(toImmutableList());
 
         String data = .toJson(new ViewDefinition(sqlsession.getCatalog(), session.getSchema(), columns));
 
         metadata.createView(sessionnamedatastatement.isReplace());
     }
 
     public Analysis analyzeStatement(Statement statementSession sessionMetadata metadata)
     {
         QueryExplainer explainer = new QueryExplainer(sessionmetadata);
         Analyzer analyzer = new Analyzer(sessionmetadata, Optional.of(explainer), );
         return analyzer.analyze(statement);
     }
 
     private String getFormattedSql(CreateView statement)
     {
         Query query = statement.getQuery();
         String sql = formatSql(query);
        // verify round-trip
        Statement parsed;
        try {
            parsed = .createStatement(sql);
        }
        catch (ParsingException e) {
            throw new PrestoException("Formatted query does not parse: " + query);
        }
        if (!query.equals(parsed)) {
            throw new PrestoException("Query does not round-trip: " + query);
        }
        return sql;
    }
New to GrepCode? Check out our FAQ X