Changeset: 171144a26ba0 for monetdb-java URL: https://dev.monetdb.org/hg/monetdb-java/rev/171144a26ba0 Modified Files: src/main/java/org/monetdb/client/JdbcClient.java src/main/java/org/monetdb/util/CmdLineOpts.java Branch: default Log Message:
Do not dump table data of STREAM TABLEs. And other small improvements and optimisations. diffs (167 lines): diff --git a/src/main/java/org/monetdb/client/JdbcClient.java b/src/main/java/org/monetdb/client/JdbcClient.java --- a/src/main/java/org/monetdb/client/JdbcClient.java +++ b/src/main/java/org/monetdb/client/JdbcClient.java @@ -258,10 +258,10 @@ public class JdbcClient { /* cannot (yet // we need the password from the user, fetch it with a pseudo // password protector if (pass == null) { - Console con = System.console(); + final Console syscon = System.console(); char[] tmp = null; - if (con != null) { - tmp = con.readPassword("password: "); + if (syscon != null) { + tmp = syscon.readPassword("password: "); } if (tmp == null) { System.err.println("Invalid password!"); @@ -337,26 +337,27 @@ public class JdbcClient { /* cannot (yet dbmd = null; } + stmt = con.createStatement(); // is used by processInteractive(), processBatch(), doDump() + in = new BufferedReader(new InputStreamReader(System.in)); out = new PrintWriter(new BufferedWriter(new java.io.OutputStreamWriter(System.out))); - stmt = con.createStatement(); // is used by doDump - // see if we will have to perform a database dump (only in SQL mode) if ("sql".equals(lang) && copts.getOption("dump").isPresent() && dbmd != null) { + final int argcount = copts.getOption("dump").getArgumentCount(); + // use the given file for writing oc = copts.getOption("file"); if (oc.isPresent()) out = new PrintWriter(new BufferedWriter(new java.io.FileWriter(oc.getArgument()))); - // we only want user tables and views to be dumped, unless a specific table is requested + // we only want user tables and views to be dumped (DDL and optional data), unless a specific table is requested final String[] types = {"TABLE","VIEW","MERGE TABLE","REMOTE TABLE","REPLICA TABLE","STREAM TABLE"}; // Future: fetch all type names using dbmd.getTableTypes() and construct String[] with all // table type names excluding the SYSTEM ... ones and LOCAL TEMPORARY TABLE ones. - // request the list of tables available in the current schema in the database - ResultSet tbl = dbmd.getTables(null, con.getSchema(), null, - (copts.getOption("dump").getArgumentCount() == 0) ? types : null); + // request the list of tables/views available in the current schema in the database + ResultSet tbl = dbmd.getTables(null, con.getSchema(), null, (argcount == 0) ? types : null); // fetch all tables and store them in a LinkedList of Table objects final LinkedList<Table> tables = new LinkedList<Table>(); while (tbl.next()) { @@ -384,7 +385,7 @@ public class JdbcClient { /* cannot (yet out.println("START TRANSACTION;\n"); // dump specific table(s) or not? - if (copts.getOption("dump").getArgumentCount() > 0) { // yes we do + if (argcount > 0) { // yes we do final String[] dumpers = copts.getOption("dump").getArguments(); for (int i = 0; i < tables.size(); i++) { Table ttmp = tables.get(i); @@ -818,6 +819,8 @@ public class JdbcClient { /* cannot (yet MDBvalidator.validateDBIntegrity(con, true); } else if (command.equals("\\vdbi_noheader")) { // used only for internal automated testing MDBvalidator.validateDBIntegrity(con, false); + } else { + doProcess = true; } } else if (command.startsWith("\\l") || command.startsWith("\\i")) { String object = command.substring(2).trim(); @@ -908,7 +911,7 @@ public class JdbcClient { /* cannot (yet // execute the query, let the driver decide what type it is int aff = -1; - boolean nextRslt = stmt.execute(query, Statement.RETURN_GENERATED_KEYS); + boolean nextRslt = stmt.execute(query, Statement.RETURN_GENERATED_KEYS); if (!nextRslt) aff = stmt.getUpdateCount(); do { @@ -964,8 +967,7 @@ public class JdbcClient { /* cannot (yet } while ((nextRslt = stmt.getMoreResults()) || (aff = stmt.getUpdateCount()) != -1); - // if there were warnings for this statement, - // and/or connection show them! + // if there were warnings for this statement show them! warn = stmt.getWarnings(); while (warn != null) { System.err.println("Statement warning: " + warn.getMessage()); @@ -973,6 +975,7 @@ public class JdbcClient { /* cannot (yet } stmt.clearWarnings(); + // if there were warnings for this connection show them! warn = con.getWarnings(); while (warn != null) { // suppress warning when issueing a "set schema xyz;" command @@ -1041,11 +1044,12 @@ public class JdbcClient { /* cannot (yet exporter.dumpSchema(dbmd, tableType, table.getSchem(), table.getName()); out.println(); - // only dump data from real tables, not from views / MERGE / REMOTE / REPLICA tables + // only dump data from real tables, not from VIEWs / MERGE / REMOTE / REPLICA / STREAM tables if (tableType.contains("TABLE") && !tableType.equals("MERGE TABLE") && !tableType.equals("REMOTE TABLE") - && !tableType.equals("REPLICA TABLE")) { + && !tableType.equals("REPLICA TABLE") + && !tableType.equals("STREAM TABLE")) { final ResultSet rs = stmt.executeQuery("SELECT * FROM " + table.getFqnameQ()); if (rs != null) { exporter.dumpResultSet(rs); diff --git a/src/main/java/org/monetdb/util/CmdLineOpts.java b/src/main/java/org/monetdb/util/CmdLineOpts.java --- a/src/main/java/org/monetdb/util/CmdLineOpts.java +++ b/src/main/java/org/monetdb/util/CmdLineOpts.java @@ -39,7 +39,7 @@ public final class CmdLineOpts { final String defaulta, final String descriptiona) throws OptionsException { - OptionContainer oc = + final OptionContainer oc = new OptionContainer( shorta, longa, @@ -54,7 +54,7 @@ public final class CmdLineOpts { } public void removeOption(final String name) { - OptionContainer oc = opts.get(name); + final OptionContainer oc = opts.get(name); if (oc != null) { opts.remove(oc.shorta); opts.remove(oc.longa); @@ -62,7 +62,7 @@ public final class CmdLineOpts { } public OptionContainer getOption(final String key) throws OptionsException { - OptionContainer ret = opts.get(key); + final OptionContainer ret = opts.get(key); if (ret == null) throw new OptionsException("No such option: " + key); @@ -80,9 +80,11 @@ public final class CmdLineOpts { in.close(); } + String key; + OptionContainer option = null; for (java.util.Enumeration<?> e = prop.propertyNames(); e.hasMoreElements(); ) { - String key = (String) e.nextElement(); - OptionContainer option = opts.get(key); + key = (String) e.nextElement(); + option = opts.get(key); if (option == null) throw new OptionsException("Unknown option: " + key); option.resetArguments(); @@ -346,9 +348,8 @@ public final class CmdLineOpts { public void addArgument(final String val) throws OptionsException { if (cardinality == CAR_ZERO) { throw new OptionsException("option " + name + " does not allow arguments"); - } else if ((cardinality == CAR_ONE || - cardinality == CAR_ZERO_ONE) && - values.size() >= 1) { + } + if ((cardinality == CAR_ONE || cardinality == CAR_ZERO_ONE) && values.size() >= 1) { throw new OptionsException("option " + name + " does at max allow only one argument"); } // we can add it _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list