@Override
    public void innerRun() {
        while (true) {
            printShell();

            String queryString = readQuery();
            if (queryString == null || queryString.equals("")) {
                continue;
            } else if (queryString.equals(QUIT_COMMAND)) {
                return;
            } else if (queryString.startsWith(CONNECT_COMMAND)) {
                setDbFileName(queryString.replace(CONNECT_COMMAND, "").trim());
                continue;
            }

            IQuery query = parseQuery(queryString);
            if (query != null) {
                executeAndPrintResult(query);
            }
        }
    }