public StatementSplitter(String sql, Set<String> delimiters) { TokenSource tokens = getLexer(sql, delimiters); ImmutableList.Builder<Statement> list = ImmutableList.builder(); StringBuilder sb = new StringBuilder(); while (true) { Token token = tokens.nextToken(); if (token.getType() == Token.EOF) { break; } if (token.getType() == SqlBaseParser.DELIMITER) { String statement = sb.toString().trim(); if (!statement.isEmpty()) { list.add(new Statement(statement, token.getText())); } sb = new StringBuilder(); } else { sb.append(token.getText()); } } this.completeStatements = list.build(); this.partialStatement = sb.toString().trim(); }
for (Statement split : splitter.getCompleteStatements()) { OutputFormat outputFormat = OutputFormat.ALIGNED; if (split.terminator().equals("\\G")) { outputFormat = OutputFormat.VERTICAL; process(queryRunner, split.statement(), outputFormat, tableNameCompleter::populateCache, true); reader.getHistory().add(squeezeStatement(split.statement()) + split.terminator());
for (Statement split : splitter.getCompleteStatements()) { OutputFormat outputFormat = OutputFormat.ALIGNED; if (split.terminator().equals("\\G")) { outputFormat = OutputFormat.VERTICAL; process(queryRunner, split.statement(), outputFormat, tableNameCompleter::populateCache, true); reader.getHistory().add(squeezeStatement(split.statement()) + split.terminator());
public StatementSplitter(String sql, Set<String> delimiters) { TokenSource tokens = getLexer(sql, delimiters); ImmutableList.Builder<Statement> list = ImmutableList.builder(); StringBuilder sb = new StringBuilder(); while (true) { Token token = tokens.nextToken(); if (token.getType() == Token.EOF) { break; } if (token.getType() == SqlBaseParser.DELIMITER) { String statement = sb.toString().trim(); if (!statement.isEmpty()) { list.add(new Statement(statement, token.getText())); } sb = new StringBuilder(); } else { sb.append(token.getText()); } } this.completeStatements = list.build(); this.partialStatement = sb.toString().trim(); }
private static boolean executeCommand(QueryRunner queryRunner, String query, OutputFormat outputFormat, boolean ignoreErrors) { boolean success = true; StatementSplitter splitter = new StatementSplitter(query); for (Statement split : splitter.getCompleteStatements()) { if (!isEmptyStatement(split.statement())) { if (!process(queryRunner, split.statement(), outputFormat, () -> {}, false)) { if (!ignoreErrors) { return false; } success = false; } } } if (!isEmptyStatement(splitter.getPartialStatement())) { System.err.println("Non-terminated statement: " + splitter.getPartialStatement()); return false; } return success; }
private static boolean executeCommand(QueryRunner queryRunner, String query, OutputFormat outputFormat, boolean ignoreErrors) { boolean success = true; StatementSplitter splitter = new StatementSplitter(query); for (Statement split : splitter.getCompleteStatements()) { if (!isEmptyStatement(split.statement())) { if (!process(queryRunner, split.statement(), outputFormat, () -> {}, false)) { if (!ignoreErrors) { return false; } success = false; } } } if (!isEmptyStatement(splitter.getPartialStatement())) { System.err.println("Non-terminated statement: " + splitter.getPartialStatement()); return false; } return success; }
private static List<Statement> statements(String... args) { checkArgument(args.length % 2 == 0, "arguments not paired"); ImmutableList.Builder<Statement> list = ImmutableList.builder(); for (int i = 0; i < args.length; i += 2) { list.add(new Statement(args[i], args[i + 1])); } return list.build(); } }