Mercurial > hg > monetdb-java
changeset 457:ebda95332d57
Add support for double quoted schema names for the \vsi command
Optimise code at several places.
author | Martin van Dinther <martin.van.dinther@monetdbsolutions.com> |
---|---|
date | Wed, 17 Mar 2021 21:41:14 +0100 (2021-03-17) |
parents | 055dd9264d46 |
children | 333c3752e118 |
files | src/main/java/org/monetdb/client/JdbcClient.java src/main/java/org/monetdb/util/MDBvalidator.java |
diffstat | 2 files changed, 39 insertions(+), 52 deletions(-) [+] |
line wrap: on
line diff
--- a/src/main/java/org/monetdb/client/JdbcClient.java +++ b/src/main/java/org/monetdb/client/JdbcClient.java @@ -790,28 +790,30 @@ public class JdbcClient { /* cannot (yet if (tbl != null) tbl.close(); } - } else if (command.equals("\\vsci")) { - MDBvalidator.validateSqlCatalogIntegrity(con); - } else if (command.equals("\\vsci_noheader")) { // used only for internal automated testing - MDBvalidator.validateSqlCatalogIntegrity(con, false); - } else if (command.equals("\\vsni")) { - MDBvalidator.validateSqlNetcdfTablesIntegrity(con); - } else if (command.equals("\\vsni_noheader")) { // used only for internal automated testing - MDBvalidator.validateSqlNetcdfTablesIntegrity(con, false); - } else if (command.equals("\\vsgi")) { - MDBvalidator.validateSqlGeomTablesIntegrity(con); - } else if (command.equals("\\vsgi_noheader")) { // used only for internal automated testing - MDBvalidator.validateSqlGeomTablesIntegrity(con, false); - } else if (command.startsWith("\\vsi ")) { - String schema_arg = command.substring(5); - MDBvalidator.validateSchemaIntegrity(con, schema_arg); - } else if (command.startsWith("\\vsi_noheader ")) { // used only for internal automated testing - String schema_arg = command.substring(14); - MDBvalidator.validateSchemaIntegrity(con, schema_arg, false); - } else if (command.equals("\\vdbi")) { - MDBvalidator.validateDBIntegrity(con); - } else if (command.equals("\\vdbi_noheader")) { // used only for internal automated testing - MDBvalidator.validateDBIntegrity(con, false); + } else if (command.startsWith("\\v")) { + if (command.equals("\\vsci")) { + MDBvalidator.validateSqlCatalogIntegrity(con, true); + } else if (command.equals("\\vsci_noheader")) { // used only for internal automated testing + MDBvalidator.validateSqlCatalogIntegrity(con, false); + } else if (command.equals("\\vsni")) { + MDBvalidator.validateSqlNetcdfTablesIntegrity(con, true); + } else if (command.equals("\\vsni_noheader")) { // used only for internal automated testing + MDBvalidator.validateSqlNetcdfTablesIntegrity(con, false); + } else if (command.equals("\\vsgi")) { + MDBvalidator.validateSqlGeomTablesIntegrity(con, true); + } else if (command.equals("\\vsgi_noheader")) { // used only for internal automated testing + MDBvalidator.validateSqlGeomTablesIntegrity(con, false); + } else if (command.startsWith("\\vsi ")) { + String schema_nm = command.substring(5); + MDBvalidator.validateSchemaIntegrity(con, schema_nm, true); + } else if (command.startsWith("\\vsi_noheader ")) { // used only for internal automated testing + String schema_nm = command.substring(14); + MDBvalidator.validateSchemaIntegrity(con, schema_nm, false); + } else if (command.equals("\\vdbi")) { + MDBvalidator.validateDBIntegrity(con, true); + } else if (command.equals("\\vdbi_noheader")) { // used only for internal automated testing + MDBvalidator.validateDBIntegrity(con, false); + } } else if (command.startsWith("\\l") || command.startsWith("\\i")) { String object = command.substring(2).trim(); if (scolonterm && object.endsWith(";")) @@ -1079,8 +1081,8 @@ public class JdbcClient { /* cannot (yet final boolean scolonterm) { // examine string, char for char - boolean wasInString = (stack.peek() == '\''); - boolean wasInIdentifier = (stack.peek() == '"'); + final boolean wasInString = (stack.peek() == '\''); + final boolean wasInIdentifier = (stack.peek() == '"'); boolean escaped = false; int len = query.length(); for (int i = 0; i < len; i++) {
--- a/src/main/java/org/monetdb/util/MDBvalidator.java +++ b/src/main/java/org/monetdb/util/MDBvalidator.java @@ -109,11 +109,7 @@ public final class MDBvalidator { */ // public class methods (called from JdbcClient.java) - public static void validateSqlCatalogIntegrity(final Connection conn) { - validateSqlCatalogIntegrity(conn, true); - } - - public static void validateSqlCatalogIntegrity(final Connection conn, boolean showValidationHeaderInfo) { + public static void validateSqlCatalogIntegrity(final Connection conn, final boolean showValidationHeaderInfo) { final MDBvalidator mdbv = new MDBvalidator(conn); mdbv.showValidationInfo = showValidationHeaderInfo; if (mdbv.checkMonetDBVersion()) { @@ -122,11 +118,7 @@ public final class MDBvalidator { } } - public static void validateSqlNetcdfTablesIntegrity(final Connection conn) { - validateSqlNetcdfTablesIntegrity(conn, true); - } - - public static void validateSqlNetcdfTablesIntegrity(final Connection conn, boolean showValidationHeaderInfo) { + public static void validateSqlNetcdfTablesIntegrity(final Connection conn, final boolean showValidationHeaderInfo) { final MDBvalidator mdbv = new MDBvalidator(conn); mdbv.showValidationInfo = showValidationHeaderInfo; if (mdbv.checkMonetDBVersion()) { @@ -140,11 +132,7 @@ public final class MDBvalidator { } } - public static void validateSqlGeomTablesIntegrity(final Connection conn) { - validateSqlGeomTablesIntegrity(conn, true); - } - - public static void validateSqlGeomTablesIntegrity(final Connection conn, boolean showValidationHeaderInfo) { + public static void validateSqlGeomTablesIntegrity(final Connection conn, final boolean showValidationHeaderInfo) { final MDBvalidator mdbv = new MDBvalidator(conn); mdbv.showValidationInfo = showValidationHeaderInfo; if (mdbv.checkMonetDBVersion()) { @@ -153,25 +141,21 @@ public final class MDBvalidator { } } - public static void validateSchemaIntegrity(final Connection conn, final String schema) { - validateSchemaIntegrity(conn, schema, true); - } - - public static void validateSchemaIntegrity(final Connection conn, final String schema, boolean showValidationHeaderInfo) { + public static void validateSchemaIntegrity(final Connection conn, String schema, final boolean showValidationHeaderInfo) { final MDBvalidator mdbv = new MDBvalidator(conn); mdbv.showValidationInfo = showValidationHeaderInfo; + // the schema name may be surrounded by double quotes. If so, remove them. + if (schema.startsWith("\"") && schema.endsWith("\"")) { + schema = schema.substring(1, schema.length() -1); + } if (mdbv.checkSchemaExists(schema)) mdbv.validateSchema(schema, null, null, null, null, null, true); else - if (mdbv.showValidationInfo) + if (showValidationHeaderInfo) System.out.println("Schema: " + schema + " does not exist in this database."); } - public static void validateDBIntegrity(final Connection conn) { - validateDBIntegrity(conn, true); - } - - public static void validateDBIntegrity(final Connection conn, boolean showValidationHeaderInfo) { + public static void validateDBIntegrity(final Connection conn, final boolean showValidationHeaderInfo) { final MDBvalidator mdbv = new MDBvalidator(conn); mdbv.showValidationInfo = showValidationHeaderInfo; final Statement stmt = mdbv.createStatement("validateDBIntegrity()"); @@ -186,7 +170,7 @@ public final class MDBvalidator { if (rs != null) { // for each user schema do: while (rs.next()) { - String schema = rs.getString(1); + final String schema = rs.getString(1); if (schema != null && !schema.isEmpty()) { hasUserSchemas = true; mdbv.validateSchema(schema, null, null, null, null, null, true); @@ -197,7 +181,8 @@ public final class MDBvalidator { printExceptions(e); } freeStmtRs(stmt, rs); - if (!hasUserSchemas && mdbv.showValidationInfo) + + if (showValidationHeaderInfo && !hasUserSchemas) System.out.println("No user schemas found in this database."); }