| 1 package com.quadcap.sql; 2 3 40 41 import java.io.BufferedInputStream ; 42 import java.io.BufferedOutputStream ; 43 import java.io.Externalizable ; 44 import java.io.IOException ; 45 import java.io.ObjectInput ; 46 import java.io.ObjectOutput ; 47 48 import java.sql.SQLException ; 49 50 import com.quadcap.sql.file.BlockFile; 51 import com.quadcap.sql.file.ByteUtil; 52 import com.quadcap.sql.file.PageManager; 53 import com.quadcap.sql.file.RandomAccess; 54 import com.quadcap.sql.file.RandomAccessInputStream; 55 import com.quadcap.sql.file.RandomAccessOutputStream; 56 57 import com.quadcap.sql.io.ObjectInputStream; 58 import com.quadcap.sql.io.ObjectOutputStream; 59 import com.quadcap.sql.io.Extern; 60 61 import com.quadcap.sql.index.Btree; 62 63 import com.quadcap.sql.types.Value; 64 import com.quadcap.sql.types.ValueNull; 65 66 import com.quadcap.io.CountedInputStream; 67 68 import com.quadcap.util.Debug; 69 70 75 public class DropColumn extends LogStep implements Externalizable { 76 transient Table table; 77 78 Column column; 79 String tableName = null; 80 81 84 public DropColumn() {} 85 86 89 public DropColumn(Session session, Table table, Column column) { 90 super(session); 91 this.table = table; 92 this.tableName = table.getName(); 93 this.column = column; 94 } 95 96 99 Table getTable(Database db) throws IOException { 100 if (table == null) { 101 table = (Table)db.getRelation(tableName); 102 } 103 return table; 104 } 105 106 110 public void redo(Session session) throws IOException , SQLException { 111 Database db = session.getDatabase(); 112 getTable(db); 113 Column c = table.getColumn(column.getName()); 114 table.deleteColumn(c.getColumn()); 115 db.updateRelation(table); 116 } 117 118 122 public void undo(Session session) throws IOException , SQLException { 123 Database db = session.getDatabase(); 124 getTable(db); 125 table.addColumn(column, column.getColumn()); 126 db.updateRelation(table); 127 } 128 129 132 public void prepare(Session session) throws IOException , SQLException { 133 } 134 135 138 public void readExternal(ObjectInput in) 139 throws IOException , ClassNotFoundException  140 { 141 super.readExternal(in); 142 this.column = (Column)in.readObject(); 143 this.tableName = (String )in.readObject(); 144 } 145 146 149 public void writeExternal(ObjectOutput out) throws IOException { 150 super.writeExternal(out); 151 out.writeObject(column); 152 out.writeObject(tableName); 153 } 154 155 158 public String toString() { 160 StringBuffer sb = new StringBuffer (super.toString()); 161 sb.append(" DropColumn("); 162 sb.append(tableName); 163 sb.append(','); 164 sb.append(column.toString()); 165 return sb.toString(); 166 } 167 169 172 static Extern extern; 173 public void setExtern(Extern extern) { DropColumn.extern = extern; } 174 public Extern getExtern() { return extern; } 175 } 176 | Popular Tags |