Impala
Impalaistheopensource,nativeanalyticdatabaseforApacheHadoop.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
CreateDropRoleStmt.java
Go to the documentation of this file.
1 // Copyright 2014 Cloudera Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 package com.cloudera.impala.analysis;
16 
19 import com.cloudera.impala.thrift.TCreateDropRoleParams;
20 import com.google.common.base.Preconditions;
21 
25 public class CreateDropRoleStmt extends AuthorizationStmt {
26  private final String roleName_;
27  private final boolean isDropRole_;
28 
29  // Set in analysis
30  private String user_;
31 
32  public CreateDropRoleStmt(String roleName, boolean isDropRole) {
33  Preconditions.checkNotNull(roleName);
34  roleName_ = roleName;
35  isDropRole_ = isDropRole;
36  }
37 
38  @Override
39  public String toSql() {
40  return String.format("%s ROLE %s", roleName_, isDropRole_ ? "DROP" : "CREATE");
41  }
42 
43  public TCreateDropRoleParams toThrift() {
44  TCreateDropRoleParams params = new TCreateDropRoleParams();
45  params.setRole_name(roleName_);
46  params.setIs_drop(isDropRole_);
47  return params;
48  }
49 
50  @Override
51  public void analyze(Analyzer analyzer) throws AnalysisException {
52  super.analyze(analyzer);
53  Role existingRole = analyzer.getCatalog().getAuthPolicy().getRole(roleName_);
54  if (isDropRole_ && existingRole == null) {
55  throw new AnalysisException(String.format("Role '%s' does not exist.", roleName_));
56  } else if (!isDropRole_ && existingRole != null) {
57  throw new AnalysisException(String.format("Role '%s' already exists.", roleName_));
58  }
59  }
60 }
CreateDropRoleStmt(String roleName, boolean isDropRole)