Search in sources :

Example 1 with WMNullablePool

use of org.apache.hadoop.hive.metastore.api.WMNullablePool in project hive by apache.

the class DDLSemanticAnalyzer method analyzeAlterPool.

private void analyzeAlterPool(ASTNode ast) throws SemanticException {
    if (ast.getChildCount() < 3) {
        throw new SemanticException("Invalid syntax for alter pool: " + ast.toStringTree());
    }
    String rpName = unescapeIdentifier(ast.getChild(0).getText());
    Tree poolTarget = ast.getChild(1);
    boolean isUnmanagedPool = false;
    String poolPath = null;
    if (poolTarget.getType() == HiveParser.TOK_UNMANAGED) {
        isUnmanagedPool = true;
    } else {
        poolPath = poolPath(ast.getChild(1));
    }
    WMNullablePool poolChanges = null;
    boolean hasTrigger = false;
    for (int i = 2; i < ast.getChildCount(); ++i) {
        Tree child = ast.getChild(i);
        if (child.getChildCount() != 1) {
            throw new SemanticException("Invalid syntax in alter pool expected parameter.");
        }
        Tree param = child.getChild(0);
        if (child.getType() == HiveParser.TOK_ADD_TRIGGER || child.getType() == HiveParser.TOK_DROP_TRIGGER) {
            hasTrigger = true;
            boolean drop = child.getType() == HiveParser.TOK_DROP_TRIGGER;
            String triggerName = unescapeIdentifier(param.getText());
            rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), new CreateOrDropTriggerToPoolMappingDesc(rpName, triggerName, poolPath, drop, isUnmanagedPool))));
        } else {
            if (isUnmanagedPool) {
                throw new SemanticException("Cannot alter the unmanaged pool");
            }
            if (poolChanges == null) {
                poolChanges = new WMNullablePool(rpName, null);
            }
            switch(child.getType()) {
                case HiveParser.TOK_ALLOC_FRACTION:
                    poolChanges.setAllocFraction(Double.parseDouble(param.getText()));
                    break;
                case HiveParser.TOK_QUERY_PARALLELISM:
                    poolChanges.setQueryParallelism(Integer.parseInt(param.getText()));
                    break;
                case HiveParser.TOK_SCHEDULING_POLICY:
                    poolChanges.setIsSetSchedulingPolicy(true);
                    if (param.getType() != HiveParser.TOK_NULL) {
                        poolChanges.setSchedulingPolicy(PlanUtils.stripQuotes(param.getText()));
                    }
                    break;
                case HiveParser.TOK_PATH:
                    poolChanges.setPoolPath(poolPath(param));
                    break;
                default:
                    throw new SemanticException("Incorrect alter syntax: " + child.toStringTree());
            }
        }
    }
    if (poolChanges != null || hasTrigger) {
        addServiceOutput();
    }
    if (poolChanges != null) {
        rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), new CreateOrAlterWMPoolDesc(poolChanges, poolPath, true))));
    }
}
Also used : DDLWork(org.apache.hadoop.hive.ql.plan.DDLWork) CreateOrDropTriggerToPoolMappingDesc(org.apache.hadoop.hive.ql.plan.CreateOrDropTriggerToPoolMappingDesc) CreateOrAlterWMPoolDesc(org.apache.hadoop.hive.ql.plan.CreateOrAlterWMPoolDesc) CommonTree(org.antlr.runtime.tree.CommonTree) Tree(org.antlr.runtime.tree.Tree) WMNullablePool(org.apache.hadoop.hive.metastore.api.WMNullablePool) SQLUniqueConstraint(org.apache.hadoop.hive.metastore.api.SQLUniqueConstraint) NotNullConstraint(org.apache.hadoop.hive.ql.metadata.NotNullConstraint) DefaultConstraint(org.apache.hadoop.hive.ql.metadata.DefaultConstraint) SQLCheckConstraint(org.apache.hadoop.hive.metastore.api.SQLCheckConstraint) SQLNotNullConstraint(org.apache.hadoop.hive.metastore.api.SQLNotNullConstraint) SQLDefaultConstraint(org.apache.hadoop.hive.metastore.api.SQLDefaultConstraint)

Aggregations

CommonTree (org.antlr.runtime.tree.CommonTree)1 Tree (org.antlr.runtime.tree.Tree)1 SQLCheckConstraint (org.apache.hadoop.hive.metastore.api.SQLCheckConstraint)1 SQLDefaultConstraint (org.apache.hadoop.hive.metastore.api.SQLDefaultConstraint)1 SQLNotNullConstraint (org.apache.hadoop.hive.metastore.api.SQLNotNullConstraint)1 SQLUniqueConstraint (org.apache.hadoop.hive.metastore.api.SQLUniqueConstraint)1 WMNullablePool (org.apache.hadoop.hive.metastore.api.WMNullablePool)1 DefaultConstraint (org.apache.hadoop.hive.ql.metadata.DefaultConstraint)1 NotNullConstraint (org.apache.hadoop.hive.ql.metadata.NotNullConstraint)1 CreateOrAlterWMPoolDesc (org.apache.hadoop.hive.ql.plan.CreateOrAlterWMPoolDesc)1 CreateOrDropTriggerToPoolMappingDesc (org.apache.hadoop.hive.ql.plan.CreateOrDropTriggerToPoolMappingDesc)1 DDLWork (org.apache.hadoop.hive.ql.plan.DDLWork)1