private Operation convertAlterTable()

in flink-connector-hive/src/main/java/org/apache/flink/table/planner/delegation/hive/parse/HiveParserDDLSemanticAnalyzer.java [425:504]


    private Operation convertAlterTable(HiveParserASTNode input) throws SemanticException {
        Operation operation = null;
        HiveParserASTNode ast = (HiveParserASTNode) input.getChild(1);
        ObjectIdentifier tableIdentifier =
                HiveParserBaseSemanticAnalyzer.getObjectIdentifier(
                        catalogRegistry, (HiveParserASTNode) input.getChild(0));
        String[] qualified =
                new String[] {tableIdentifier.getDatabaseName(), tableIdentifier.getObjectName()};
        String tableName = HiveParserBaseSemanticAnalyzer.getDotName(qualified);
        HashMap<String, String> partSpec = null;
        HiveParserASTNode partSpecNode = (HiveParserASTNode) input.getChild(2);
        if (partSpecNode != null) {
            partSpec = getPartSpec(partSpecNode);
        }
        ResolvedCatalogBaseTable<?> alteredTable = getAlteredTable(tableName, false);
        switch (ast.getType()) {
            case HiveASTParser.TOK_ALTERTABLE_RENAME:
                operation = convertAlterTableRename(tableName, ast, false);
                break;
            case HiveASTParser.TOK_ALTERTABLE_ADDCOLS:
                operation = convertAlterTableModifyCols(alteredTable, tableName, ast, false);
                break;
            case HiveASTParser.TOK_ALTERTABLE_REPLACECOLS:
                operation = convertAlterTableModifyCols(alteredTable, tableName, ast, true);
                break;
            case HiveASTParser.TOK_ALTERTABLE_RENAMECOL:
                operation = convertAlterTableChangeCol(alteredTable, qualified, ast);
                break;
            case HiveASTParser.TOK_ALTERTABLE_ADDPARTS:
                operation = convertAlterTableAddParts(qualified, ast);
                break;
            case HiveASTParser.TOK_ALTERTABLE_DROPPARTS:
                operation = convertAlterTableDropParts(qualified, ast);
                break;
            case HiveASTParser.TOK_ALTERTABLE_PROPERTIES:
                operation =
                        convertAlterTableProps(alteredTable, tableName, null, ast, false, false);
                break;
            case HiveASTParser.TOK_ALTERTABLE_DROPPROPERTIES:
                operation = convertAlterTableProps(alteredTable, tableName, null, ast, false, true);
                break;
            case HiveASTParser.TOK_ALTERTABLE_UPDATESTATS:
                operation =
                        convertAlterTableProps(
                                alteredTable, tableName, partSpec, ast, false, false);
                break;
            case HiveASTParser.TOK_ALTERTABLE_FILEFORMAT:
                operation = convertAlterTableFileFormat(alteredTable, ast, tableName, partSpec);
                break;
            case HiveASTParser.TOK_ALTERTABLE_LOCATION:
                operation = convertAlterTableLocation(alteredTable, ast, tableName, partSpec);
                break;
            case HiveASTParser.TOK_ALTERTABLE_SERIALIZER:
                operation = convertAlterTableSerde(alteredTable, ast, tableName, partSpec);
                break;
            case HiveASTParser.TOK_ALTERTABLE_SERDEPROPERTIES:
                operation = convertAlterTableSerdeProps(alteredTable, ast, tableName, partSpec);
                break;
            case HiveASTParser.TOK_ALTERTABLE_TOUCH:
            case HiveASTParser.TOK_ALTERTABLE_ARCHIVE:
            case HiveASTParser.TOK_ALTERTABLE_UNARCHIVE:
            case HiveASTParser.TOK_ALTERTABLE_PARTCOLTYPE:
            case HiveASTParser.TOK_ALTERTABLE_SKEWED:
            case HiveASTParser.TOK_ALTERTABLE_EXCHANGEPARTITION:
            case HiveASTParser.TOK_ALTERTABLE_MERGEFILES:
            case HiveASTParser.TOK_ALTERTABLE_RENAMEPART:
            case HiveASTParser.TOK_ALTERTABLE_SKEWED_LOCATION:
            case HiveASTParser.TOK_ALTERTABLE_BUCKETS:
            case HiveASTParser.TOK_ALTERTABLE_CLUSTER_SORT:
            case HiveASTParser.TOK_ALTERTABLE_COMPACT:
            case HiveASTParser.TOK_ALTERTABLE_UPDATECOLSTATS:
            case HiveASTParser.TOK_ALTERTABLE_DROPCONSTRAINT:
            case HiveASTParser.TOK_ALTERTABLE_ADDCONSTRAINT:
                handleUnsupportedOperation(ast);
                break;
            default:
                throw new ValidationException("Unknown AST node for ALTER TABLE: " + ast);
        }
        return operation;
    }