public static void findAllColumns(String schemaFile) {
		allColumns = new TreeSet<String>();

		try {
			Connection conn = null;
			Statement stmt;
			// load the H2 Driver
			try {
				Class.forName("org.h2.Driver");
			} catch (ClassNotFoundException e) {
				System.err.println("Unable to load H2 driver");
				e.printStackTrace();
				// croak
				System.exit(1);
			}

			// credentials do not really matter
			// since the database will be private
			String dbUser = "dummy";
			String dbPassword = "password";

			stmt = null;

			// This is the URL to create an H2 private In-Memory DB
			String dbUrl = "jdbc:h2:mem:";

			try {
				// create a connection to the H2 database
				// since the DB does not already exist, it will be created
				// automatically
				// http://www.h2database.com/html/features.html#in_memory_databases
				conn = DriverManager.getConnection(dbUrl, dbUser, dbPassword);

				// create a statement to execute queries
				stmt = conn.createStatement();
			} catch (SQLException e) {
				System.err.println("Unable to initialize H2 database");
				e.printStackTrace();
			}

			// H2 has a nice command allowing us to run a series of
			// queries from file.
			// http://www.h2database.com/html/grammar.html#runscript
			// We will use it here to run the user-supplied schema script.
			try {
				stmt.execute("RUNSCRIPT FROM '" + schemaFile + "'");
			} catch (SQLException e) {
				System.err.println("Unable to load the schema script \""
						+ schemaFile + "\"");
				e.printStackTrace();
			}

			// see what tables are in the schema
			// (note that the user schema is called PUBLIC by default)
			ResultSet rsTab = stmt.executeQuery("SELECT table_name "
					+ "FROM information_schema.tables "
					+ "WHERE table_schema = 'PUBLIC'");

			List<String> tableNames = new ArrayList<String>();
			while (rsTab.next()) {
				numTables++;
				// note that column indexing starts from 1
				tableNames.add(rsTab.getString(1));
			}
			rsTab.close();

			for (String tableName : tableNames) {

				// query for the columns of the current table
				ResultSet rsCol = stmt
						.executeQuery("SELECT column_name, data_type, is_nullable, character_maximum_length "
								+ "FROM information_schema.columns "
								+ "WHERE table_schema = 'PUBLIC' "
								+ "  AND table_name = '"
								+ tableName
								+ "'"
								+ "ORDER BY ordinal_position");
				while (rsCol.next()) {
					String columnName = rsCol.getString(1);
					allColumns.add(columnName.toLowerCase());
				}

				rsCol.close();
			}

		} catch (SQLException e) {
			System.err.println("Unable to generate instance");
			e.printStackTrace();
		}

	}