public static void main(String[] args) { String q = "SELECT timestamp, LONG_SUM(count) AS edit_count, DOUBLE_SUM(added) AS chars_added FROM wikipedia WHERE interval BETWEEN 2010-01-01T00:00:00.000Z AND 2020-01-01T00:00:00.000Z BREAK BY 'minute' HINT('timeseries');"; String q1 = "SELECT timestamp, page, LONG_SUM(count) AS edit_count FROM wikipedia WHERE interval BETWEEN 2010-01-01 AND 2020-01-01 AND country='United States' BREAK BY 'all' GROUP BY page ORDER BY edit_count DESC LIMIT 10;"; String q2 = "SELECT page, LONG_SUM(count) AS edit_count FROM wikipedia WHERE interval BETWEEN 2010-01-01T00:00:00.000Z AND 2020-01-01T00:00:00.000Z AND country='United States' BREAK BY 'minute' GROUP BY page LIMIT 10;"; DDataSource driver = new DDataSource("localhost", 4080, "localhost", 8082, null, 3128); Either<String, Either<Joiner4All, Mapper4All>> result = driver.query(q, null, null, true, "sql"); System.out.println(result.right().get().right().get()); } }
Matcher matcher = allTablesPattern.matcher(frozenCommand); if (matcher.matches()) {// Show tables command. Either<String,List<String>> dataSourcesRes = dDriver.dataSources(httpHeaders); if (dataSourcesRes.isLeft()) { println(dataSourcesRes.left().get()); if (matcher.matches()) {// Show tables command. String tableName = matcher.group(1); Either<String, Tuple2<List<String>, List<String>>> dataSourceDescRes = dDriver.aboutDataSource(tableName, httpHeaders); if (dataSourceDescRes.isLeft()) { println(dataSourceDescRes.left().get()); Either<String, Either<Joiner4All, Mapper4All>> result = dDriver.query(frozenCommand, null, httpHeaders, trace, queryMode); long queryTime = System.currentTimeMillis() - start; if (result.isLeft()) {
/** * Query and return the Json response. * * @param sqlQuery * @param reqHeaders * @return */ public Either<String, Either<Joiner4All, Mapper4All>> query(String sqlQuery, Map<String, String> reqHeaders) { return query(sqlQuery, null, reqHeaders, false, "sql"); }
pgm = getCompiledAST(sqlOrJsonQuery, namedParams, reqHeaders); } catch (Exception ex) { return new Left<>(ex.getMessage()); return new Left<>(deleteRows((DeleteProgram) pgm, reqHeaders, printToConsole)); } else if (pgm instanceof DropProgram) { return new Left<>(dropTable((DropProgram) pgm, reqHeaders, printToConsole)); } else if (pgm instanceof InsertProgram) { InsertProgram iPgm = (InsertProgram) pgm; return new Left<>(overlord.fireTask(iPgm.nthStmnt(0), reqHeaders, !forceAsync && iPgm.waitForCompletion)); } else { return selectRows((QueryProgram) pgm, reqHeaders, printToConsole);
if (proxyHost != null) { proxyPort = Integer.parseInt(getOptionValue(cmd, "pp", "proxy_port", "1234")); DDataSource.setProxy(proxyHost, proxyPort); dDriver = new DDataSource(brokerHost, brokerPort, coordinatorHost, coordinatorPort, overlordHost, overlordPort, mysqlHost, mysqlPort, mysqlId, mysqlPasswd, mysqlDbName);
public WorkerActor() { druidDriver = new DDataSource(getBrokerHost(), getBrokerPort(), getCoordinatorHost(), getCoordinatorPort(), getOverlordHost(), getOverlordPort()); }
/** * TODO: This method is still buggy and not fully implemented. * Common interface to Insert , Delete, Drop(but not coordinator commands). * @param sqlOrJsonQuery * @param namedParams * @param reqHeaders * @param printToConsole * @param queryMode * @param forceAsync * @return */ public String crud(String sqlOrJsonQuery, NamedParameters namedParams, Map<String, String> reqHeaders, boolean printToConsole, String queryMode, boolean forceAsync) { if ("json".equals(queryMode)) {//TODO : #19 } Program pgm; try { pgm = getCompiledAST(sqlOrJsonQuery, namedParams, reqHeaders); } catch (Exception ex) { return ex.getMessage(); } if (printToConsole) { println(pgm.toString()); } if (pgm instanceof CrudProgram) { CrudProgram cPgm = (CrudProgram) pgm; return overlord.fireTask((CrudStatementMeta)cPgm.nthStmnt(0), reqHeaders, cPgm.waitForCompletion && !forceAsync); } return "Could not execute the program " + pgm; } /**
Program<BaseStatementMeta> pgm = DCompiler.compileSql(preprocessSqlQuery(sqlQuery, namedParams)); for (BaseStatementMeta stmnt : pgm.getAllStmnts()) { if (stmnt instanceof QueryMeta) {
continue; switch(druidDriver.pollIndexerTaskStatus(st.getTaskId())) { case SUCCESS:
/** * Query and return the Json response. * * @param sqlQuery * @param reqHeaders * @return */ public Either<String, Either<Joiner4All, Mapper4All>> query(String sqlQuery, Map<String, String> reqHeaders) { return query(sqlQuery, null, reqHeaders, false, "sql"); }
pgm = getCompiledAST(sqlOrJsonQuery, namedParams, reqHeaders); } catch (Exception ex) { return new Left<>(ex.getMessage()); return new Left<>(deleteRows((DeleteProgram) pgm, reqHeaders, printToConsole)); } else if (pgm instanceof DropProgram) { return new Left<>(dropTable((DropProgram) pgm, reqHeaders, printToConsole)); } else if (pgm instanceof InsertProgram) { InsertProgram iPgm = (InsertProgram) pgm; return new Left<>(overlord.fireTask(iPgm.nthStmnt(0), reqHeaders, !forceAsync && iPgm.waitForCompletion)); } else { return selectRows((QueryProgram) pgm, reqHeaders, printToConsole);
/** * TODO: This method is still buggy and not fully implemented. * Common interface to Insert , Delete, Drop(but not coordinator commands). * @param sqlOrJsonQuery * @param namedParams * @param reqHeaders * @param printToConsole * @param queryMode * @param forceAsync * @return */ public String crud(String sqlOrJsonQuery, NamedParameters namedParams, Map<String, String> reqHeaders, boolean printToConsole, String queryMode, boolean forceAsync) { if ("json".equals(queryMode)) {//TODO : #19 } Program pgm; try { pgm = getCompiledAST(sqlOrJsonQuery, namedParams, reqHeaders); } catch (Exception ex) { return ex.getMessage(); } if (printToConsole) { println(pgm.toString()); } if (pgm instanceof CrudProgram) { CrudProgram cPgm = (CrudProgram) pgm; return overlord.fireTask((CrudStatementMeta)cPgm.nthStmnt(0), reqHeaders, cPgm.waitForCompletion && !forceAsync); } return "Could not execute the program " + pgm; } /**
Program<BaseStatementMeta> pgm = DCompiler.compileSql(preprocessSqlQuery(sqlQuery, namedParams)); for (BaseStatementMeta stmnt : pgm.getAllStmnts()) { if (stmnt instanceof QueryMeta) {
public static void main(String[] args) { String q = "SELECT timestamp, LONG_SUM(count) AS edit_count, DOUBLE_SUM(added) AS chars_added FROM wikipedia WHERE interval BETWEEN 2010-01-01T00:00:00.000Z AND 2020-01-01T00:00:00.000Z BREAK BY 'minute' HINT('timeseries');"; String q1 = "SELECT timestamp, page, LONG_SUM(count) AS edit_count FROM wikipedia WHERE interval BETWEEN 2010-01-01 AND 2020-01-01 AND country='United States' BREAK BY 'all' GROUP BY page ORDER BY edit_count DESC LIMIT 10;"; String q2 = "SELECT page, LONG_SUM(count) AS edit_count FROM wikipedia WHERE interval BETWEEN 2010-01-01T00:00:00.000Z AND 2020-01-01T00:00:00.000Z AND country='United States' BREAK BY 'minute' GROUP BY page LIMIT 10;"; DDataSource driver = new DDataSource("localhost", 4080, "localhost", 8082, null, 3128); Either<String, Either<Joiner4All, Mapper4All>> result = driver.query(q, null, null, true, "sql"); System.out.println(result.right().get().right().get()); } }
/** * Common interface to Query, Insert , Delete, Drop(but not coordinator commands). * @param sqlOrJsonQuery * @param namedParams * @param reqHeaders * @param printToConsole * @param queryMode * @return */ public Either<String, Either<Joiner4All, Mapper4All>> query(String sqlOrJsonQuery, NamedParameters namedParams, Map<String, String> reqHeaders, boolean printToConsole, String queryMode) { return query(sqlOrJsonQuery, namedParams, reqHeaders, printToConsole, queryMode, false); }
Program pgm; try { pgm = getCompiledAST(sqlQuery, namedParams, reqHeaders); } catch (Exception ex) { return new Left<>(ex.getMessage());
/** * Common interface to Query, Insert , Delete, Drop(but not coordinator commands). * @param sqlOrJsonQuery * @param namedParams * @param reqHeaders * @param printToConsole * @param queryMode * @return */ public Either<String, Either<Joiner4All, Mapper4All>> query(String sqlOrJsonQuery, NamedParameters namedParams, Map<String, String> reqHeaders, boolean printToConsole, String queryMode) { return query(sqlOrJsonQuery, namedParams, reqHeaders, printToConsole, queryMode, false); }
Program pgm; try { pgm = getCompiledAST(sqlQuery, namedParams, reqHeaders); } catch (Exception ex) { return new Left<>(ex.getMessage());
/** * Run the jobs which are eligible to run. */ private void executeWork() { StatusTrail st = null; if ((st = newWorkQueue.removeFirst()) != null) { log.info("New task {}", st); DataSource ds = db().getDataSource(st.getDataSourceId());//TODO: Cache the DataSource table. String frozenSql = materializeTemplate(ds.getTemplateSql(), st.getNominalTime(), st.getNominalTime(), st.getNominalTime() + JobFreq.valueOf(ds.getFrequency()).inMillis()); log.info("Sql is {}", frozenSql); Either<String, Either<Joiner4All, Mapper4All>> result = druidDriver.query(frozenSql, null, null, false, "sql", true); if (result.isLeft()) { String taskId = result.left().get();// Because we forced async mode we will get back taskId. log.info("Submitted task {} to overlord ", taskId); st.setTaskId(taskId); st.setStatus(JobStatus.in_progress); db().updateStatusTrail(st); // Quite possible st may exist in Q- when an item is removed and executed // during which time if work generator generates the same st and // updates Q because it still found the ST as not_done. if (newWorkQueue.contains(st)) { newWorkQueue.remove(st); log.warn("newWorkQueue had one more entry for st {} which was just set to in_progress", st); } } else {// Something wrong. Insert always returns left. log.error("Got weird result (expected to run insert) {}", result.right().get()); } } }