public HashMap<String, List<Tuple>> createHashIndex(IndexWrapper iw) {

		HashMap<String, List<Tuple>> lookup = new HashMap<String, List<Tuple>>();
		BufferedReader br = null;
		String col = iw.getIndexOn().split("\\.")[1];
		String tab = iw.getIndexOn().split("\\.")[0];

		Table tab1 = new Table();

		for (Table t : EvaluateStatement.tables) {

			if (t.getWholeTableName().equalsIgnoreCase(tab)) {
				tab1 = t;
				break;
			} else if (t.getAlias() != null) {

				if (t.getAlias().equalsIgnoreCase(tab)) {
					tab1 = t;
					break;
				}
			}
		}

		try {
			StringBuilder s = new StringBuilder();
			br = new BufferedReader(new FileReader(Main.data_dir + "/"
					+ tab1.getWholeTableName() + ".dat"));
			while (s.append(br.readLine()) != null) {

				Tuple tuple = new Tuple(tab1.getWholeTableName().toLowerCase(),
						s.toString());
				s = null;
				s = new StringBuilder();

				if (lookup.containsKey(tuple.getColValue(col))) {
					lookup.get(tuple.getColValue(col)).add(tuple);
					tuple = null;
				} else {
					List<Tuple> tlist = new ArrayList<Tuple>();
					tlist.add(tuple);
					lookup.put(tuple.getColValue(col), tlist);
					tuple = null;
					// tlist.clear();
				}
			}
			System.gc();
			return lookup;

		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (br != null) {
					br.close();
				}
			} catch (IOException ex) {
				ex.printStackTrace();
			}
		}

		return null;
	}