public static void createIndex(String tableName, Index index) { Value table_ = cm.GetTableInformation(tableName); Value attr_; BPlusTree thisTree = new BPlusTree(index); String filename = tableName; try { mapInsert(tableName, index); RM_FileHandler rmf = RM_Manager.getInstance().openFile(filename); RM_FileScan rmfs = new RM_FileScan( rmf, Constant.TYPE.INT, 4, 0, Constant.COMP_OP.NO_OP, PF_Manager.intTobyteArray(1)); RM_Record rmr = rmfs.getNextRec(); while (rmr != null) { byte[] Record = rmr.getData(); byte[] key = getColumnValue(tableName, index, Record); thisTree.insert(key, rmr.getRid().getPageNum(), rmr.getRid().getSlotNum()); rmr = rmfs.getNextRec(); } } catch (NullPointerException e) { e.printStackTrace(); System.err.println("must not be null for key."); } catch (Exception e) { e.printStackTrace(); System.err.println("the index has not been created."); } // index.rootNum=thisTree.myRootBlock.blockOffset; setIndexRoot(index.indexName, thisTree.myRootBlock.getPageNum()); System.out.println("Create index successfully!"); }