/// <summary>
 /// Visits the given <paramref name="removeIndexNode"/>.
 /// </summary>
 /// <param name="removeIndexNode"></param>
 public override void Visit(IRemoveIndexNode removeIndexNode)
 {
     if(IsImmediateChildOf<IAlterColumnNode>(removeIndexNode))
         MoveNodeTo(removeIndexNode, removeIndexNode.Parent.Parent.Parent);
     else if(IsImmediateChildOf<IAlterTableNode>(removeIndexNode))
         MoveNodeTo(removeIndexNode, removeIndexNode.Parent.Parent);
 }
 /// <summary>
 /// Visits the given <paramref name="removeIndexNode"/>.
 /// </summary>
 /// <param name="removeIndexNode"></param>
 public override void Visit(IRemoveIndexNode removeIndexNode)
 {
     Visit(removeIndexNode.ChildNodes);
 }
 /// <summary>
 /// Visits the given <paramref name="removeIndexNode"/>.
 /// </summary>
 /// <param name="removeIndexNode"></param>
 public override void Visit(IRemoveIndexNode removeIndexNode)
 {
     TextWriter.WriteLine("drop index {0} on {1};", 
         Platform.Dialect.EscapeIdentifier(removeIndexNode.Name),
         Platform.Dialect.EscapeIdentifier(removeIndexNode.Table));
 }
        /// <summary>
        ///  Visits the given <paramref name="removeIndexNode" />.
        /// </summary>
        /// <param name="removeIndexNode"></param>
        public override void Visit(IRemoveIndexNode removeIndexNode)
        {
            textWriter.Write("remove index {0}", GetIdentifier(removeIndexNode.Name));

            WriteProperties(removeIndexNode);
            VisitBlock(removeIndexNode);
        }
 protected void ResolveRemoveIndex(IRemoveIndexNode removeIndexNode)
 {
     //
     // Resolve table name
     if(removeIndexNode.Properties[MdlSyntax.Table] != null)
     {
         removeIndexNode.Table = 
             AstNodePropertyUtil.AsString(removeIndexNode.Properties[MdlSyntax.Table].Value);
     } // if
     else if(removeIndexNode.Parent is IAlterTableNode)
     {
         removeIndexNode.Table =
             ((ITableNode)removeIndexNode.Parent).Name;
     } // else if
     else
         throw CreateMdlCompilerException(
             MdlCompilerResources.CouldNotResolveTableForRemoveIndex, removeIndexNode.Name);
 }
        /// <summary>
        /// Visits the given <paramref name="removeIndexNode"/>.
        /// </summary>
        /// <param name="removeIndexNode"></param>
        public override void Visit(IRemoveIndexNode removeIndexNode)
        {
            ResolveRemoveIndex(removeIndexNode);

            ITableDefinition table = Environment.Schema.GetTable(removeIndexNode.Table);
            table.RemoveIndex(removeIndexNode.Name);
        }