Search in sources :

Example 11 with ScriptReader

use of org.h2.util.ScriptReader in project h2database by h2database.

the class Shell method runTool.

/**
 * Run the shell tool with the given command line settings.
 *
 * @param args the command line settings
 */
@Override
public void runTool(String... args) throws SQLException {
    String url = null;
    String user = "";
    String password = "";
    String sql = null;
    for (int i = 0; args != null && i < args.length; i++) {
        String arg = args[i];
        if (arg.equals("-url")) {
            url = args[++i];
        } else if (arg.equals("-user")) {
            user = args[++i];
        } else if (arg.equals("-password")) {
            password = args[++i];
        } else if (arg.equals("-driver")) {
            String driver = args[++i];
            JdbcUtils.loadUserClass(driver);
        } else if (arg.equals("-sql")) {
            sql = args[++i];
        } else if (arg.equals("-properties")) {
            serverPropertiesDir = args[++i];
        } else if (arg.equals("-help") || arg.equals("-?")) {
            showUsage();
            return;
        } else if (arg.equals("-list")) {
            listMode = true;
        } else {
            showUsageAndThrowUnsupportedOption(arg);
        }
    }
    if (url != null) {
        org.h2.Driver.load();
        conn = DriverManager.getConnection(url, user, password);
        stat = conn.createStatement();
    }
    if (sql == null) {
        promptLoop();
    } else {
        ScriptReader r = new ScriptReader(new StringReader(sql));
        while (true) {
            String s = r.readStatement();
            if (s == null) {
                break;
            }
            execute(s);
        }
        if (conn != null) {
            conn.close();
        }
    }
}
Also used : StringReader(java.io.StringReader) ScriptReader(org.h2.util.ScriptReader)

Example 12 with ScriptReader

use of org.h2.util.ScriptReader in project h2database by h2database.

the class TestOuterJoins method cleanRemarks.

private static String cleanRemarks(String sql) {
    ScriptReader r = new ScriptReader(new StringReader(sql));
    r.setSkipRemarks(true);
    sql = r.readStatement();
    sql = sql.replaceAll("\\n", " ");
    while (sql.contains("  ")) {
        sql = sql.replaceAll("  ", " ");
    }
    return sql;
}
Also used : StringReader(java.io.StringReader) ScriptReader(org.h2.util.ScriptReader)

Example 13 with ScriptReader

use of org.h2.util.ScriptReader in project h2database by h2database.

the class TestScriptSimple method test.

@Override
public void test() throws Exception {
    if (config.memory || config.big || config.networked) {
        return;
    }
    deleteDb("scriptSimple");
    reconnect();
    String inFile = "org/h2/test/scripts/testSimple.in.txt";
    InputStream is = getClass().getClassLoader().getResourceAsStream(inFile);
    LineNumberReader lineReader = new LineNumberReader(new InputStreamReader(is, "Cp1252"));
    try (ScriptReader reader = new ScriptReader(lineReader)) {
        while (true) {
            String sql = reader.readStatement();
            if (sql == null) {
                break;
            }
            sql = sql.trim();
            try {
                if ("@reconnect".equals(sql.toLowerCase())) {
                    reconnect();
                } else if (sql.length() == 0) {
                // ignore
                } else if (sql.toLowerCase().startsWith("select")) {
                    ResultSet rs = conn.createStatement().executeQuery(sql);
                    while (rs.next()) {
                        String expected = reader.readStatement().trim();
                        String got = "> " + rs.getString(1);
                        assertEquals(sql, expected, got);
                    }
                } else {
                    conn.createStatement().execute(sql);
                }
            } catch (SQLException e) {
                System.out.println(sql);
                throw e;
            }
        }
    }
    conn.close();
    deleteDb("scriptSimple");
}
Also used : InputStreamReader(java.io.InputStreamReader) SQLException(java.sql.SQLException) InputStream(java.io.InputStream) ResultSet(java.sql.ResultSet) ScriptReader(org.h2.util.ScriptReader) LineNumberReader(java.io.LineNumberReader)

Example 14 with ScriptReader

use of org.h2.util.ScriptReader in project h2database by h2database.

the class UploadBuild method main.

/**
 * This method is called when executing this application from the command
 * line.
 *
 * @param args the command line parameters
 */
public static void main(String... args) throws Exception {
    System.setProperty("h2.socketConnectTimeout", "30000");
    String password = System.getProperty("h2.ftpPassword");
    if (password == null) {
        return;
    }
    FtpClient ftp = FtpClient.open("h2database.com");
    ftp.login("h2database", password);
    ftp.changeWorkingDirectory("/httpdocs");
    boolean coverage = new File("coverage/index.html").exists();
    boolean coverageFailed;
    if (coverage) {
        byte[] data = IOUtils.readBytesAndClose(new FileInputStream("coverage/index.html"), -1);
        String index = new String(data, StandardCharsets.ISO_8859_1);
        coverageFailed = index.contains("CLASS=\"h\"");
        while (true) {
            int idx = index.indexOf("<A HREF=\"");
            if (idx < 0) {
                break;
            }
            int end = index.indexOf('>', idx) + 1;
            index = index.substring(0, idx) + index.substring(end);
            idx = index.indexOf("</A>");
            index = index.substring(0, idx) + index.substring(idx + "</A>".length());
        }
        index = StringUtils.replaceAll(index, "[all", "");
        index = StringUtils.replaceAll(index, "classes]", "");
        FileOutputStream out = new FileOutputStream("coverage/overview.html");
        out.write(index.getBytes(StandardCharsets.ISO_8859_1));
        out.close();
        new File("details").mkdir();
        zip("details/coverage_files.zip", "coverage", true);
        zip("coverage.zip", "details", false);
        FileUtils.delete("coverage.txt");
        FileUtils.delete("details/coverage_files.zip");
        FileUtils.delete("details");
        if (ftp.exists("/httpdocs", "coverage")) {
            ftp.removeDirectoryRecursive("/httpdocs/coverage");
        }
        ftp.makeDirectory("/httpdocs/coverage");
    } else {
        coverageFailed = true;
    }
    String testOutput;
    boolean error;
    if (new File("docs/html/testOutput.html").exists()) {
        testOutput = IOUtils.readStringAndClose(new FileReader("docs/html/testOutput.html"), -1);
        error = testOutput.contains(OutputCatcher.START_ERROR);
    } else if (new File("log.txt").exists()) {
        testOutput = IOUtils.readStringAndClose(new FileReader("log.txt"), -1);
        testOutput = testOutput.replaceAll("\n", "<br />");
        error = true;
    } else {
        testOutput = "No log.txt";
        error = true;
    }
    if (!ftp.exists("/httpdocs", "automated")) {
        ftp.makeDirectory("/httpdocs/automated");
    }
    String buildSql;
    if (ftp.exists("/httpdocs/automated", "history.sql")) {
        buildSql = new String(ftp.retrieve("/httpdocs/automated/history.sql"));
    } else {
        buildSql = "create table item(id identity, title varchar, " + "issued timestamp, desc varchar);\n";
    }
    String ts = new java.sql.Timestamp(System.currentTimeMillis()).toString();
    String now = ts.substring(0, 16);
    int idx = testOutput.indexOf("Statements per second: ");
    if (idx >= 0) {
        int end = testOutput.indexOf("<br />", idx);
        if (end >= 0) {
            String result = testOutput.substring(idx + "Statements per second: ".length(), end);
            now += " " + result + " op/s";
        }
    }
    String sql = "insert into item(title, issued, desc) values('Build " + now + (error ? " FAILED" : "") + (coverageFailed ? " COVERAGE" : "") + "', '" + ts + "', '<a href=\"http://www.h2database.com/" + "html/testOutput.html\">Output</a>" + " - <a href=\"http://www.h2database.com/" + "coverage/overview.html\">Coverage</a>" + " - <a href=\"http://www.h2database.com/" + "automated/h2-latest.jar\">Jar</a>');\n";
    buildSql += sql;
    Connection conn;
    try {
        Class.forName("org.h2.Driver");
        conn = DriverManager.getConnection("jdbc:h2:mem:");
    } catch (Exception e) {
        Class.forName("org.h2.upgrade.v1_1.Driver");
        conn = DriverManager.getConnection("jdbc:h2v1_1:mem:");
    }
    conn.createStatement().execute(buildSql);
    String newsfeed = IOUtils.readStringAndClose(new FileReader("src/tools/org/h2/build/doc/buildNewsfeed.sql"), -1);
    ScriptReader r = new ScriptReader(new StringReader(newsfeed));
    Statement stat = conn.createStatement();
    ResultSet rs = null;
    while (true) {
        String s = r.readStatement();
        if (s == null) {
            break;
        }
        if (stat.execute(s)) {
            rs = stat.getResultSet();
        }
    }
    rs.next();
    String content = rs.getString("content");
    conn.close();
    ftp.store("/httpdocs/automated/history.sql", new ByteArrayInputStream(buildSql.getBytes()));
    ftp.store("/httpdocs/automated/news.xml", new ByteArrayInputStream(content.getBytes()));
    ftp.store("/httpdocs/html/testOutput.html", new ByteArrayInputStream(testOutput.getBytes()));
    String jarFileName = "bin/h2-" + Constants.getVersion() + ".jar";
    if (FileUtils.exists(jarFileName)) {
        ftp.store("/httpdocs/automated/h2-latest.jar", new FileInputStream(jarFileName));
    }
    if (coverage) {
        ftp.store("/httpdocs/coverage/overview.html", new FileInputStream("coverage/overview.html"));
        ftp.store("/httpdocs/coverage/coverage.zip", new FileInputStream("coverage.zip"));
        FileUtils.delete("coverage.zip");
    }
    String mavenRepoDir = System.getProperty("user.home") + "/.m2/repository/";
    boolean mavenSnapshot = new File(mavenRepoDir + "com/h2database/h2/1.0-SNAPSHOT/h2-1.0-SNAPSHOT.jar").exists();
    if (mavenSnapshot) {
        if (!ftp.exists("/httpdocs", "m2-repo")) {
            ftp.makeDirectory("/httpdocs/m2-repo");
        }
        if (!ftp.exists("/httpdocs/m2-repo", "com")) {
            ftp.makeDirectory("/httpdocs/m2-repo/com");
        }
        if (!ftp.exists("/httpdocs/m2-repo/com", "h2database")) {
            ftp.makeDirectory("/httpdocs/m2-repo/com/h2database");
        }
        if (!ftp.exists("/httpdocs/m2-repo/com/h2database", "h2")) {
            ftp.makeDirectory("/httpdocs/m2-repo/com/h2database/h2");
        }
        if (!ftp.exists("/httpdocs/m2-repo/com/h2database/h2", "1.0-SNAPSHOT")) {
            ftp.makeDirectory("/httpdocs/m2-repo/com/h2database/h2/1.0-SNAPSHOT");
        }
        if (!ftp.exists("/httpdocs/m2-repo/com/h2database", "h2-mvstore")) {
            ftp.makeDirectory("/httpdocs/m2-repo/com/h2database/h2-mvstore");
        }
        if (!ftp.exists("/httpdocs/m2-repo/com/h2database/h2-mvstore", "1.0-SNAPSHOT")) {
            ftp.makeDirectory("/httpdocs/m2-repo/com/h2database/h2-mvstore/1.0-SNAPSHOT");
        }
        ftp.store("/httpdocs/m2-repo/com/h2database/h2" + "/1.0-SNAPSHOT/h2-1.0-SNAPSHOT.pom", new FileInputStream(mavenRepoDir + "com/h2database/h2/1.0-SNAPSHOT/h2-1.0-SNAPSHOT.pom"));
        ftp.store("/httpdocs/m2-repo/com/h2database/h2" + "/1.0-SNAPSHOT/h2-1.0-SNAPSHOT.jar", new FileInputStream(mavenRepoDir + "com/h2database/h2/1.0-SNAPSHOT/h2-1.0-SNAPSHOT.jar"));
        ftp.store("/httpdocs/m2-repo/com/h2database/h2-mvstore" + "/1.0-SNAPSHOT/h2-mvstore-1.0-SNAPSHOT.pom", new FileInputStream(mavenRepoDir + "com/h2database/h2-mvstore/1.0-SNAPSHOT/h2-mvstore-1.0-SNAPSHOT.pom"));
        ftp.store("/httpdocs/m2-repo/com/h2database/h2-mvstore" + "/1.0-SNAPSHOT/h2-mvstore-1.0-SNAPSHOT.jar", new FileInputStream(mavenRepoDir + "com/h2database/h2-mvstore/1.0-SNAPSHOT/h2-mvstore-1.0-SNAPSHOT.jar"));
    }
    ftp.close();
}
Also used : Statement(java.sql.Statement) Connection(java.sql.Connection) FileInputStream(java.io.FileInputStream) IOException(java.io.IOException) ByteArrayInputStream(java.io.ByteArrayInputStream) FileOutputStream(java.io.FileOutputStream) StringReader(java.io.StringReader) ResultSet(java.sql.ResultSet) FileReader(java.io.FileReader) FtpClient(org.h2.dev.ftp.FtpClient) File(java.io.File) ScriptReader(org.h2.util.ScriptReader)

Aggregations

ScriptReader (org.h2.util.ScriptReader)14 StringReader (java.io.StringReader)10 IOException (java.io.IOException)5 ResultSet (java.sql.ResultSet)5 ByteArrayInputStream (java.io.ByteArrayInputStream)3 InputStreamReader (java.io.InputStreamReader)3 SQLException (java.sql.SQLException)3 Statement (java.sql.Statement)3 Connection (java.sql.Connection)2 DbException (org.h2.message.DbException)2 BufferedReader (java.io.BufferedReader)1 DataInputStream (java.io.DataInputStream)1 EOFException (java.io.EOFException)1 File (java.io.File)1 FileInputStream (java.io.FileInputStream)1 FileOutputStream (java.io.FileOutputStream)1 FileReader (java.io.FileReader)1 InputStream (java.io.InputStream)1 LineNumberReader (java.io.LineNumberReader)1 Reader (java.io.Reader)1