1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.hadoop.hbase.hbql.statement;
22
23 import org.apache.hadoop.hbase.HColumnDescriptor;
24 import org.apache.hadoop.hbase.client.HBaseAdmin;
25 import org.apache.hadoop.hbase.hbql.client.HBqlException;
26 import org.apache.hadoop.hbase.hbql.impl.HConnectionImpl;
27 import org.apache.hadoop.hbase.hbql.mapping.FamilyDefinition;
28
29 import java.io.IOException;
30
31 public class AlterFamilyAction implements AlterTableAction {
32
33 private final String familyName;
34 private final FamilyDefinition familyDefinition;
35
36 public AlterFamilyAction(final String familyName, final FamilyDefinition familyDefinition) {
37 this.familyName = familyName;
38 this.familyDefinition = familyDefinition;
39 }
40
41 private String getFamilyName() {
42 return this.familyName;
43 }
44
45 private FamilyDefinition getFamilyDefinition() {
46 return this.familyDefinition;
47 }
48
49 public void execute(final HConnectionImpl conn,
50 final HBaseAdmin admin,
51 final String tableName) throws HBqlException {
52
53 conn.validateFamilyExistsForTable(this.getFamilyName(), tableName);
54 final HColumnDescriptor columnDescriptor = this.getFamilyDefinition().getColumnDescription();
55
56 try {
57 admin.modifyColumn(tableName, this.getFamilyName(), columnDescriptor);
58 }
59 catch (IOException e) {
60 throw new HBqlException(e);
61 }
62 }
63 }