// ALTER FOREIGN VIEW <identifier> <alter column options>
// ALTER FOREIGN PROCEDURE <identifier> <alter options list>
// ALTER FOREIGN PROCEDURE <identifier> <alter column options>
String nodeType = null;
SchemaElementType schemaElementType = null;
String refNodeType = null;
if (tokens.canConsume(DdlStatement.ALTER_TABLE.tokens())) {
nodeType = TeiidDdlLexicon.AlterOptions.TABLE_STATEMENT;
schemaElementType = SchemaElementType.FOREIGN;
refNodeType = TeiidDdlLexicon.CreateTable.TABLE_STATEMENT;
} else if (tokens.canConsume(DdlStatement.ALTER_VIEW.tokens())) {
nodeType = TeiidDdlLexicon.AlterOptions.VIEW_STATEMENT;
schemaElementType = SchemaElementType.FOREIGN;
refNodeType = TeiidDdlLexicon.CreateTable.VIEW_STATEMENT;
} else if (tokens.canConsume(DdlStatement.ALTER_PROCEDURE.tokens())) {
nodeType = TeiidDdlLexicon.AlterOptions.PROCEDURE_STATEMENT;
schemaElementType = SchemaElementType.FOREIGN;
refNodeType = TeiidDdlLexicon.CreateProcedure.PROCEDURE_STATEMENT;
} else if (tokens.canConsume(DdlStatement.ALTER_VIRTUAL_TABLE.tokens())) {
nodeType = TeiidDdlLexicon.AlterOptions.TABLE_STATEMENT;
schemaElementType = SchemaElementType.VIRTUAL;
refNodeType = TeiidDdlLexicon.CreateTable.TABLE_STATEMENT;
} else if (tokens.canConsume(DdlStatement.ALTER_VIRTUAL_VIEW.tokens())) {
nodeType = TeiidDdlLexicon.AlterOptions.VIEW_STATEMENT;
schemaElementType = SchemaElementType.VIRTUAL;
refNodeType = TeiidDdlLexicon.CreateTable.VIEW_STATEMENT;
} else if (tokens.canConsume(DdlStatement.ALTER_VIRTUAL_PROCEDURE.tokens())) {
nodeType = TeiidDdlLexicon.AlterOptions.PROCEDURE_STATEMENT;
schemaElementType = SchemaElementType.VIRTUAL;
refNodeType = TeiidDdlLexicon.CreateProcedure.PROCEDURE_STATEMENT;
} else if (tokens.canConsume(DdlStatement.ALTER_FOREIGN_TABLE.tokens())) {
nodeType = TeiidDdlLexicon.AlterOptions.TABLE_STATEMENT;
schemaElementType = SchemaElementType.FOREIGN;
refNodeType = TeiidDdlLexicon.CreateTable.TABLE_STATEMENT;
} else if (tokens.canConsume(DdlStatement.ALTER_FOREIGN_VIEW.tokens())) {
nodeType = TeiidDdlLexicon.AlterOptions.VIEW_STATEMENT;
schemaElementType = SchemaElementType.FOREIGN;
refNodeType = TeiidDdlLexicon.CreateTable.VIEW_STATEMENT;
} else if (tokens.canConsume(DdlStatement.ALTER_FOREIGN_PROCEDURE.tokens())) {
nodeType = TeiidDdlLexicon.AlterOptions.PROCEDURE_STATEMENT;
schemaElementType = SchemaElementType.FOREIGN;
refNodeType = TeiidDdlLexicon.CreateProcedure.PROCEDURE_STATEMENT;
} else {
throw new TeiidDdlParsingException(tokens, "Unparsable alter options statement");
}
assert (nodeType != null) : "Create alter options node type is null";
assert (schemaElementType != null) : "Create alter options schema element type is null";
assert (refNodeType != null) : "Create alter options reference node type is null";
// parse table reference
final String tableRefName = parseIdentifier(tokens);
final AstNode alterOptionsNode = getNodeFactory().node(tableRefName, parentNode, nodeType);
alterOptionsNode.setProperty(TeiidDdlLexicon.SchemaElement.TYPE, schemaElementType.toDdl());
// find referenced table node
final AstNode tableRefNode = getNode(parentNode, tableRefName, refNodeType);
// can't find referenced table