@Override
public LogicalNode visitCreateIndex(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block,
CreateIndexNode node, Stack<LogicalNode> stack) throws TajoException {
super.visitCreateIndex(context, plan, block, node, new Stack<LogicalNode>());
PlanProto.CreateIndexNode.Builder createIndexBuilder = PlanProto.CreateIndexNode.newBuilder();
int [] childIds = registerGetChildIds(context, node);
createIndexBuilder.setChildSeq(childIds[0]);
createIndexBuilder.setIndexName(node.getIndexName());
createIndexBuilder.setIndexMethod(node.getIndexMethod());
createIndexBuilder.setIndexPath(node.getIndexPath().toString());
for (SortSpec sortSpec : node.getKeySortSpecs()) {
createIndexBuilder.addKeySortSpecs(sortSpec.getProto());
}
createIndexBuilder.setTargetRelationSchema(node.getTargetRelationSchema().getProto());
createIndexBuilder.setIsUnique(node.isUnique());
createIndexBuilder.setIsClustered(node.isClustered());
if (node.hasOptions()) {
createIndexBuilder.setIndexProperties(node.getOptions().getProto());
}
createIndexBuilder.setIsExternal(node.isExternal());
PlanProto.LogicalNode.Builder nodeBuilder = createNodeBuilder(context, node);
nodeBuilder.setCreateIndex(createIndexBuilder);
context.treeBuilder.addNodes(nodeBuilder);
return node;
}