Mercurial > hg > monetdb-java
changeset 312:df815a403bf4
Improved JdbcClient program by including the schema prefix when dumping schema objects. It now behaves more similar to mclient -D -N.
author | Martin van Dinther <martin.van.dinther@monetdbsolutions.com> |
---|---|
date | Thu, 22 Aug 2019 19:06:16 +0200 (2019-08-22) |
parents | 0f55802721dd |
children | f2750ea9f93d |
files | ChangeLog src/main/java/nl/cwi/monetdb/util/SQLExporter.java src/main/java/nl/cwi/monetdb/util/XMLExporter.java |
diffstat | 3 files changed, 31 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,8 @@ # This file is updated with Maddlog * Thu Aug 22 2019 Martin van Dinther <martin.van.dinther@monetdbsolutions.com> +- Improved JdbcClient program by including the schema prefix when dumping + schema objects. It now behaves more similar to mclient -D -N. - Improved JdbcClient program. It now also dumps definitions of MERGE TABLE, REMOTE TABLE, REPLICA TABLE and STREAM TABLE when dumping all tables.
--- a/src/main/java/nl/cwi/monetdb/util/SQLExporter.java +++ b/src/main/java/nl/cwi/monetdb/util/SQLExporter.java @@ -57,7 +57,7 @@ public final class SQLExporter extends E assert schema != null; assert name != null; - final String fqname = (!useSchema ? dq(schema) + "." : "") + dq(name); + final String fqname = (useSchema ? dq(schema) + "." : "") + dq(name); if (useSchema) changeSchema(schema); @@ -295,6 +295,7 @@ public final class SQLExporter extends E final String idxname = cols.getString(colIndexNm); if (idxname != null && !idxname.endsWith("_fkey")) { out.print("CREATE INDEX " + dq(idxname) + " ON " + + dq(cols.getString("TABLE_SCHEM")) + "." + dq(cols.getString("TABLE_NAME")) + " (" + dq(cols.getString(colIndexColNm))); @@ -413,7 +414,7 @@ public final class SQLExporter extends E final StringBuilder strbuf = new StringBuilder(1024); strbuf.append("INSERT INTO "); - if (!useSchema) { + if (useSchema) { final String schema = rsmd.getSchemaName(1); if (schema != null && !schema.isEmpty()) strbuf.append(dq(schema)).append("."); @@ -536,10 +537,17 @@ public final class SQLExporter extends E if (!schema.equals(lastSchema.peek())) { if (!lastSchema.contains(schema)) { - // create schema - out.print("CREATE SCHEMA "); - out.print(dq(schema)); - out.println(";\n"); + // do not generate CREATE SCHEMA cmds for existing system schemas + if (!schema.equals("sys") + && !schema.equals("tmp") + && !schema.equals("json") + && !schema.equals("profiler") + && !schema.equals("bam")) { + // create schema + out.print("CREATE SCHEMA "); + out.print(dq(schema)); + out.println(";\n"); + } lastSchema.push(schema); }
--- a/src/main/java/nl/cwi/monetdb/util/XMLExporter.java +++ b/src/main/java/nl/cwi/monetdb/util/XMLExporter.java @@ -25,6 +25,18 @@ public final class XMLExporter extends E super(out); } + /** + * A helper method to generate XML xsd schema code for a given table. + * This method performs all required lookups to find all relations and + * column information. + * + * @param dbmd a DatabaseMetaData object to query on (not null) + * @param type the type of the object, e.g. VIEW, TABLE (not null) + * @param catalog the catalog the object is in + * @param schema the schema the object is in (not null) + * @param name the table to describe (not null) + * @throws SQLException if a database related error occurs + */ public void dumpSchema( final java.sql.DatabaseMetaData dbmd, final String type, @@ -39,7 +51,7 @@ public final class XMLExporter extends E types[0] = type; final ResultSet tbl = dbmd.getTables(catalog, schema, name, types); if (tbl != null) { - final String fqname = (!useSchema ? dq(schema) + "." : "") + dq(name); + final String fqname = (useSchema ? dq(schema) + "." : "") + dq(name); if (!tbl.next()) { tbl.close(); throw new SQLException("Whoops no meta data for view " + fqname); @@ -361,7 +373,7 @@ public final class XMLExporter extends E public void dumpResultSet(final ResultSet rs) throws SQLException { // write simple XML serialisation final java.sql.ResultSetMetaData rsmd = rs.getMetaData(); - if (!useSchema) + if (useSchema) out.println("<" + rsmd.getSchemaName(1) + ">"); out.println("<" + rsmd.getTableName(1) + ">"); String data; @@ -405,7 +417,7 @@ public final class XMLExporter extends E out.println(" </row>"); } out.println("</" + rsmd.getTableName(1) + ">"); - if (!useSchema) + if (useSchema) out.println("</" + rsmd.getSchemaName(1) + ">"); }