From bd38cc1fd826420fca709d04ff14985e7e27aea1 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Tue, 21 Feb 2012 13:57:21 +0000 Subject: [PATCH] Fixes database schema export test on MySQL/Linux. * MySQL on Linux stores table names in a case-sensitive manner (due to case-sensitive filesys) * DatabaseMetaData returns a confusing true for storesUppercaseQuotedIdentifiers, but seems not to be the case git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@34126 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../alfresco/util/schemacomp/ExportDb.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/source/java/org/alfresco/util/schemacomp/ExportDb.java b/source/java/org/alfresco/util/schemacomp/ExportDb.java index 5775dccb5a..7ca3242936 100644 --- a/source/java/org/alfresco/util/schemacomp/ExportDb.java +++ b/source/java/org/alfresco/util/schemacomp/ExportDb.java @@ -484,13 +484,29 @@ public class ExportDb private String namePrefixFilter(DatabaseMetaData dbmd) throws SQLException { String filter = namePrefix + "%"; + + // Note, MySQL on Linux reports true for: + // dbmd.storesMixedCaseIdentifiers() + // dbmd.storesMixedCaseQuotedIdentifiers() + // dbmd.storesUpperCaseQuotedIdentifiers() + // and false for the other storesXYZ() methods. In reality it stores + // the table names in whatever case was provided, quoted or not. + // Make sure the filter works for the particular DBMS. - if (dbmd.storesLowerCaseIdentifiers() || dbmd.storesLowerCaseQuotedIdentifiers()) + if (dbmd.storesLowerCaseIdentifiers()) { + if (log.isDebugEnabled()) + { + log.debug("DB uses lowercase identifiers"); + } filter = filter.toLowerCase(); } - else + else if (dbmd.storesUpperCaseIdentifiers()) { + if (log.isDebugEnabled()) + { + log.debug("DB uses uppercase identifiers"); + } filter = filter.toUpperCase(); } return filter;