/** * Parses a module. * * @param io input reference * @return query parser * @throws QueryException query exception */ final QueryParser parseQuery(final IO io) throws QueryException { try (final QueryContext qctx = new QueryContext(qc)) { final String input = string(io.read()); // parse query final QueryParser qp = new QueryParser(input, io.path(), qctx, null); module = QueryProcessor.isLibrary(input) ? qp.parseLibrary(true) : qp.parseMain(); return qp; } catch (final IOException | QueryException ex) { throw IOERR_X.get(info, ex); } }
/** @param args */ public static void main(String[] args) throws Exception { // read serialised catalogue from file and parse String catFile = args[0]; Catalogue cat = new Catalogue(); CatalogueParser catParser = new CatalogueParser(catFile, cat); catParser.parse(); // read stdin, parse, and build canonical query plan QueryParser queryParser = new QueryParser(cat, new InputStreamReader(System.in)); Operator plan = queryParser.parse(); System.out.println("Query Plan: " + plan.toString()); // create estimator visitor and apply it to canonical plan Estimator est = new Estimator(); // plan.accept(est); // create optimised plan Optimiser opt = new Optimiser(cat); Operator optPlan = opt.optimise(plan); System.out.println("Optimised Plan: " + optPlan.toString()); }