# HG changeset patch # User Martin van Dinther <martin.van.dinther@monetdbsolutions.com> # Date 1616013674 -3600 # Node ID ebda95332d57de5d9148ea803dd341fad0101351 # Parent 055dd9264d46434b7138f4b3b3d15b1590d42311 Add support for double quoted schema names for the \vsi command Optimise code at several places. 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 @@ -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++) { diff --git a/src/main/java/org/monetdb/util/MDBvalidator.java b/src/main/java/org/monetdb/util/MDBvalidator.java --- 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."); }