Author: areshetnyak
Date: 2011-10-24 11:04:53 -0400 (Mon, 24 Oct 2011)
New Revision: 5081
Removed:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DB2DBRestore.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/H2DBRestore.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/MySQLDBRestore.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/OracleDBRestore.java
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBRestore.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/SybaseDBRestore.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleaner.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializerHelper.java
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-mjdbc.mysql-utf8.sql
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-mjdbc.mysql.sql
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-sjdbc.mysql-utf8.sql
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-sjdbc.mysql.sql
Log:
EXOJCR-1571 : Rename approach was adopted for MySQL, PostgreSQL and Sybase DBs.
Deleted:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DB2DBRestore.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DB2DBRestore.java 2011-10-24
10:11:04 UTC (rev 5080)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DB2DBRestore.java 2011-10-24
15:04:53 UTC (rev 5081)
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2003-2011 eXo Platform SAS.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation; either version 3
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not,
see<http://www.gnu.org/licenses/>.
- */
-package org.exoplatform.services.jcr.impl.backup.rdbms;
-
-import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
-import org.exoplatform.services.jcr.config.WorkspaceEntry;
-import org.exoplatform.services.jcr.impl.clean.rdbms.DBCleaner;
-import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
-
-import java.io.File;
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.util.Map;
-
-import javax.naming.NamingException;
-
-/**
- * Created by The eXo Platform SAS.
- *
- * <br/>Date: 2011
- *
- * @author <a href="mailto:alex.reshetnyak@exoplatform.com.ua">Alex
Reshetnyak</a>
- * @version $Id: DB2DBRestore.java 111 2011-11-11 11:11:11Z rainf0x $
- */
-public class DB2DBRestore extends DBRestore
-{
- /**
- * The constraint name is limited by 18 symbols.
- */
- private static final int DB2_CONSTRAINT_NAME_LENGTH_LIMIT = 18;
-
- /**
- * Constructor DB2DBRestore.
- */
- public DB2DBRestore(File storageDir, Connection jdbcConn, Map<String,
RestoreTableRule> tables,
- WorkspaceEntry wsConfig, FileCleaner fileCleaner, DBCleaner dbCleaner) throws
NamingException, SQLException,
- RepositoryConfigurationException
- {
- super(storageDir, jdbcConn, tables, wsConfig, fileCleaner, dbCleaner);
- }
-
- /**
- * {@inheritDoc}
- */
- protected String validateConstraintName(String string)
- {
- return string.substring(0, DB2_CONSTRAINT_NAME_LENGTH_LIMIT);
- }
-}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBRestore.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBRestore.java 2011-10-24
10:11:04 UTC (rev 5080)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBRestore.java 2011-10-24
15:04:53 UTC (rev 5081)
@@ -46,10 +46,8 @@
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.sql.Statement;
import java.sql.Types;
import java.util.ArrayList;
-import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -119,19 +117,9 @@
/**
* Database dialect.
*/
- protected final int dialect;
+ protected final String dialect;
/**
- * Contains queries for adding constraints and indexes.
- */
- protected Map<String, String> addQueries = new LinkedHashMap<String,
String>();
-
- /**
- * Contains queries for dropping constraints and indexes.
- */
- protected Map<String, String> dropQueries = new LinkedHashMap<String,
String>();
-
- /**
* Contains object names which executed queries.
*/
protected List<String> successfulExecuted;
@@ -156,7 +144,7 @@
this.storageDir = storageDir;
this.tables = tables;
this.dbCleaner = dbCleaner;
- this.dialect = DialectDetecter.detect(jdbcConn.getMetaData()).hashCode();
+ this.dialect = DialectDetecter.detect(jdbcConn.getMetaData());
}
/**
@@ -181,11 +169,6 @@
{
try
{
- boolean isMultiDb =
tables.entrySet().iterator().next().getValue().getDstMultiDb();
- prepareQueries(isMultiDb);
-
- preRestoreTables(isMultiDb);
-
for (Entry<String, RestoreTableRule> entry : tables.entrySet())
{
String tableName = entry.getKey();
@@ -193,8 +176,6 @@
restoreTable(storageDir, jdbcConn, tableName, restoreRule);
}
-
- postRestoreTables(isMultiDb);
}
catch (IOException e)
{
@@ -207,138 +188,6 @@
}
/**
- * Prepare queries for restoring.
- *
- * @param isMultiDb
- * indicates if we have multi-db configuration or not
- */
- protected void prepareQueries(boolean isMultiDb)
- {
- String multiDb = isMultiDb ? "M" : "S";
-
- String constraintName = validateConstraintName("JCR_PK_" + multiDb +
"VALUE");
- String constraint = "CONSTRAINT " + constraintName + " PRIMARY
KEY(ID)";
- addQueries.put(constraintName, "ALTER TABLE JCR_" + multiDb + "VALUE
ADD " + constraint);
- dropQueries.put(constraintName, "ALTER TABLE JCR_" + multiDb +
"VALUE " + dropCommand(true, constraintName));
-
- constraintName = validateConstraintName("JCR_PK_" + multiDb +
"ITEM");
- constraint = "CONSTRAINT " + constraintName + " PRIMARY
KEY(ID)";
- addQueries.put(constraintName, "ALTER TABLE JCR_" + multiDb + "ITEM
ADD " + constraint);
-
- constraintName = validateConstraintName("JCR_FK_" + multiDb +
"VALUE_PROPERTY");
- constraint = "CONSTRAINT " + constraintName + " FOREIGN
KEY(PROPERTY_ID) REFERENCES JCR_" + multiDb + "ITEM(ID)";
- addQueries.put(constraintName, "ALTER TABLE JCR_" + multiDb + "VALUE
ADD " + constraint);
- dropQueries.put(constraintName, "ALTER TABLE JCR_" + multiDb +
"VALUE " + dropCommand(false, constraintName));
-
- constraintName = validateConstraintName("JCR_FK_" + multiDb +
"ITEM_PARENT");
- constraint = "CONSTRAINT " + constraintName + " FOREIGN
KEY(PARENT_ID) REFERENCES JCR_" + multiDb + "ITEM(ID)";
- addQueries.put(constraintName, "ALTER TABLE JCR_" + multiDb + "ITEM
ADD " + constraint);
- dropQueries.put(constraintName, "ALTER TABLE JCR_" + multiDb + "ITEM
" + dropCommand(false, constraintName));
-
- constraintName = validateConstraintName("JCR_PK_" + multiDb +
"ITEM");
- dropQueries.put(constraintName, "ALTER TABLE JCR_" + multiDb + "ITEM
" + dropCommand(true, constraintName));
-
- constraintName = validateConstraintName("JCR_PK_" + multiDb +
"REF");
- constraint = "CONSTRAINT " + constraintName + " PRIMARY KEY(NODE_ID,
PROPERTY_ID, ORDER_NUM)";
- addQueries.put(constraintName, "ALTER TABLE JCR_" + multiDb + "REF
ADD " + constraint);
- dropQueries.put(constraintName, "ALTER TABLE JCR_" + multiDb + "REF
" + dropCommand(true, constraintName));
-
- constraintName = validateConstraintName("JCR_PK_" + multiDb +
"CONTAINER");
- constraint = "CONSTRAINT " + constraintName + " PRIMARY
KEY(VERSION)";
- addQueries.put(constraintName, "ALTER TABLE JCR_" + multiDb +
"CONTAINER ADD " + constraint);
- dropQueries.put(constraintName, "ALTER TABLE JCR_" + multiDb +
"CONTAINER " + dropCommand(true, constraintName));
- }
-
- /**
- * Validate name of constraint. For some DBs constrains name is limited.
- *
- * @param string
- * the constraint name
- * @return the constraint name accepted for specific DB
- */
- protected String validateConstraintName(String string)
- {
- return string;
- }
-
- /**
- * Return the command to drop primary or foreign key.
- *
- * @param isPrimaryKey
- * boolean
- * @return String
- */
- protected String dropCommand(boolean isPrimaryKey, String constraintName)
- {
- return "DROP CONSTRAINT " + constraintName;
- }
-
- /**
- * Prepare of restore tables. (Drop constraint, etc...)
- *
- * @param isMultiDb
- * boolean
- * @throws SQLException
- * will throw SQLException if fail.
- */
- public void preRestoreTables(boolean isMultiDb) throws SQLException
- {
- executeQueries(dropQueries);
- }
-
- /**
- * After of restore tables. (Add constraint, etc...)
- *
- * @param isMultiDb
- * boolean
- * @throws SQLException
- * Will throw SQLException if fail.
- */
- public void postRestoreTables(boolean isMultiDb) throws SQLException
- {
- executeQueries(addQueries);
- }
-
- /**
- * Execute queries.
- *
- * @param queries
- * the map with queries.
- * @throws SQLException
- */
- protected List<String> executeQueries(final Map<String, String> queries)
throws SQLException
- {
- successfulExecuted = new ArrayList<String>();
- Statement st = null;
-
- for (String constraintName : queries.keySet())
- {
- try
- {
- st = jdbcConn.createStatement();
- st.execute(queries.get(constraintName));
- successfulExecuted.add(constraintName);
- }
- finally
- {
- if (st != null)
- {
- try
- {
- st.close();
- }
- catch (SQLException e)
- {
- LOG.warn("Can't close statemnt", e);
- }
- }
- }
- }
-
- return successfulExecuted;
- }
-
- /**
* {@inheritDoc}
*/
public void commit() throws BackupException
@@ -420,7 +269,7 @@
ResultSet tableMetaData = null;
// switch table name to lower case
- if (dialect == DBBackup.DB_DIALECT_PGSQL)
+ if (dialect.equals(DBBackup.DB_DIALECT_PGSQL))
{
tableName = tableName.toLowerCase();
}
@@ -478,7 +327,7 @@
columnType.add(restoreRule.getNewColumnIndex(),
restoreRule.getNewColumnType());
String newColumnName =
- dialect == DBBackup.DB_DIALECT_PGSQL ?
restoreRule.getNewColumnName().toLowerCase() : restoreRule
+ dialect.equals(DBBackup.DB_DIALECT_PGSQL) ?
restoreRule.getNewColumnName().toLowerCase() : restoreRule
.getNewColumnName();
columnName.add(restoreRule.getNewColumnIndex(), newColumnName);
}
@@ -619,7 +468,7 @@
ba.read(readBuffer);
String value = new String(readBuffer);
- if (dialect == DBBackup.DB_DIALECT_PGSQL)
+ if (dialect.equals(DBBackup.DB_DIALECT_PGSQL))
{
insertNode.setBoolean(targetIndex + 1,
value.equals("t"));
}
@@ -663,6 +512,9 @@
if (++batchSize == MAXIMUM_BATCH_SIZE)
{
insertNode.executeBatch();
+
+ commitBatch();
+
batchSize = 0;
}
}
@@ -670,6 +522,8 @@
if (batchSize != 0)
{
insertNode.executeBatch();
+
+ commitBatch();
}
}
finally
@@ -706,6 +560,13 @@
}
/**
+ * Committing changes from batch.
+ */
+ protected void commitBatch() throws SQLException
+ {
+ }
+
+ /**
* Spool input stream.
*/
private InputStream spoolInputStream(ObjectReader in, long contentLen) throws
IOException
Deleted:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/H2DBRestore.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/H2DBRestore.java 2011-10-24
10:11:04 UTC (rev 5080)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/H2DBRestore.java 2011-10-24
15:04:53 UTC (rev 5081)
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2003-2011 eXo Platform SAS.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation; either version 3
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not,
see<http://www.gnu.org/licenses/>.
- */
-package org.exoplatform.services.jcr.impl.backup.rdbms;
-
-import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
-import org.exoplatform.services.jcr.config.WorkspaceEntry;
-import org.exoplatform.services.jcr.impl.clean.rdbms.DBCleaner;
-import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
-
-import java.io.File;
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.util.Map;
-
-import javax.naming.NamingException;
-
-/**
- * Created by The eXo Platform SAS.
- *
- * <br/>Date: 2011
- *
- * @author <a href="mailto:alex.reshetnyak@exoplatform.com.ua">Alex
Reshetnyak</a>
- * @version $Id: H2DBRestore.java 111 2011-11-11 11:11:11Z rainf0x $
- */
-public class H2DBRestore extends DBRestore
-{
-
- /**
- * Constructor H2DBRestore.
- */
- public H2DBRestore(File storageDir, Connection jdbcConn, Map<String,
RestoreTableRule> tables,
- WorkspaceEntry wsConfig, FileCleaner fileCleaner, DBCleaner dbCleaner) throws
NamingException, SQLException,
- RepositoryConfigurationException
- {
- super(storageDir, jdbcConn, tables, wsConfig, fileCleaner, dbCleaner);
- }
-
- /**
- * {@inheritDoc}
- */
- protected void prepareQueries(boolean isMultiDb)
- {
- super.prepareQueries(isMultiDb);
-
- // H2 doesn't contain primary key for JCR_SVALUE (JCR_MVALUE) table
- String constraintName = "JCR_PK_" + (isMultiDb ? "M" :
"S") + "VALUE";
- addQueries.remove(constraintName);
- dropQueries.remove(constraintName);
- }
-}
Deleted:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/MySQLDBRestore.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/MySQLDBRestore.java 2011-10-24
10:11:04 UTC (rev 5080)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/MySQLDBRestore.java 2011-10-24
15:04:53 UTC (rev 5081)
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2003-2011 eXo Platform SAS.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation; either version 3
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not,
see<http://www.gnu.org/licenses/>.
- */
-package org.exoplatform.services.jcr.impl.backup.rdbms;
-
-import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
-import org.exoplatform.services.jcr.config.WorkspaceEntry;
-import org.exoplatform.services.jcr.impl.clean.rdbms.DBCleaner;
-import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
-
-import java.io.File;
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.util.Map;
-
-import javax.naming.NamingException;
-
-/**
- * Created by The eXo Platform SAS.
- *
- * <br/>Date: 2011
- *
- * @author <a href="mailto:alex.reshetnyak@exoplatform.com.ua">Alex
Reshetnyak</a>
- * @version $Id: MySQLDBRestore.java 111 2011-11-11 11:11:11Z rainf0x $
- */
-public class MySQLDBRestore extends DBRestore
-{
-
- /**
- * Constructor MySQLDBRestore.
- */
- public MySQLDBRestore(File storageDir, Connection jdbcConn, Map<String,
RestoreTableRule> tables,
- WorkspaceEntry wsConfig, FileCleaner fileCleaner, DBCleaner dbCleaner) throws
NamingException, SQLException,
- RepositoryConfigurationException
- {
- super(storageDir, jdbcConn, tables, wsConfig, fileCleaner, dbCleaner);
- }
-
- /**
- * {@inheritDoc}
- */
- protected String dropCommand(boolean isPrimaryKey, String constraintName)
- {
- return isPrimaryKey == true ? "DROP PRIMARY KEY" : "DROP FOREIGN KEY
" + constraintName;
- }
-
-}
Deleted:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/OracleDBRestore.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/OracleDBRestore.java 2011-10-24
10:11:04 UTC (rev 5080)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/OracleDBRestore.java 2011-10-24
15:04:53 UTC (rev 5081)
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2003-2011 eXo Platform SAS.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Affero General Public License
- * as published by the Free Software Foundation; either version 3
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not,
see<http://www.gnu.org/licenses/>.
- */
-package org.exoplatform.services.jcr.impl.backup.rdbms;
-
-import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
-import org.exoplatform.services.jcr.config.WorkspaceEntry;
-import org.exoplatform.services.jcr.impl.clean.rdbms.DBCleaner;
-import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
-
-import java.io.File;
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.util.Map;
-
-import javax.naming.NamingException;
-
-/**
- * Created by The eXo Platform SAS.
- *
- * <br/>Date: 2011
- *
- * @author <a href="mailto:alex.reshetnyak@exoplatform.com.ua">Alex
Reshetnyak</a>
- * @version $Id: OracleDBRestore.java 111 2011-11-11 11:11:11Z rainf0x $
- */
-public class OracleDBRestore extends DBRestore
-{
-
- /**
- * OracleDBRestore constructor.
- */
- public OracleDBRestore(File storageDir, Connection jdbcConn, Map<String,
RestoreTableRule> tables,
- WorkspaceEntry wsConfig, FileCleaner fileCleaner, DBCleaner dbCleaner) throws
NamingException, SQLException,
- RepositoryConfigurationException
- {
- super(storageDir, jdbcConn, tables, wsConfig, fileCleaner, dbCleaner);
- }
-
- /**
- * {@inheritDoc}
- */
- protected void prepareQueries(boolean isMultiDb)
- {
- String multiDb = isMultiDb ? "M" : "S";
-
- String indexName = "JCR_IDX_" + multiDb + "ITEM_PARENT_FK";
- addQueries.put(indexName, "CREATE INDEX " + indexName + " ON
JCR_" + multiDb + "ITEM(PARENT_ID)");
- dropQueries.put(indexName, "DROP INDEX " + indexName);
-
- indexName = "JCR_IDX_" + multiDb + "ITEM_PARENT";
- addQueries.put(indexName, "CREATE UNIQUE INDEX " + indexName + " ON
JCR_" + multiDb
- + "ITEM(CONTAINER_NAME, PARENT_ID, NAME, I_INDEX, I_CLASS, VERSION
DESC)");
- dropQueries.put(indexName, "DROP INDEX " + indexName);
-
- indexName = "JCR_IDX_" + multiDb + "ITEM_PARENT_NAME";
- addQueries.put(indexName, "CREATE UNIQUE INDEX " + indexName + " ON
JCR_" + multiDb
- + "ITEM(I_CLASS, CONTAINER_NAME, PARENT_ID, NAME, I_INDEX, VERSION
DESC)");
- dropQueries.put(indexName, "DROP INDEX " + indexName);
-
- indexName = "JCR_IDX_" + multiDb + "ITEM_PARENT_ID";
- addQueries.put(indexName, "CREATE UNIQUE INDEX " + indexName + " ON
JCR_" + multiDb
- + "ITEM(I_CLASS, CONTAINER_NAME, PARENT_ID, ID, VERSION DESC)");
- dropQueries.put(indexName, "DROP INDEX " + indexName);
-
- indexName = "JCR_IDX_" + multiDb + "VALUE_PROPERTY";
- addQueries.put(indexName, "CREATE UNIQUE INDEX " + indexName + " ON
JCR_" + multiDb
- + "VALUE(PROPERTY_ID, ORDER_NUM)");
- dropQueries.put(indexName, "DROP INDEX " + indexName);
-
- indexName = "JCR_IDX_" + multiDb + "REF_PROPERTY";
- addQueries.put(indexName, "CREATE UNIQUE INDEX " + indexName + " ON
JCR_" + multiDb
- + "REF(PROPERTY_ID, ORDER_NUM)");
- dropQueries.put(indexName, "DROP INDEX " + indexName);
-
- super.prepareQueries(isMultiDb);
- }
-}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/SybaseDBRestore.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/SybaseDBRestore.java 2011-10-24
10:11:04 UTC (rev 5080)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/SybaseDBRestore.java 2011-10-24
15:04:53 UTC (rev 5081)
@@ -26,7 +26,6 @@
import java.io.File;
import java.sql.Connection;
import java.sql.SQLException;
-import java.util.ArrayList;
import java.util.Map;
import javax.naming.NamingException;
@@ -62,10 +61,12 @@
try
{
// the Sybase is not allowed DDL query (CREATE TABLE, DROP TABLE, etc. ) within
a multi-statement transaction
- jdbcConn.setAutoCommit(true);
+ if (!jdbcConn.getAutoCommit())
+ {
+ jdbcConn.setAutoCommit(true);
+ }
- super.prepareQueries(isMultiDb);
- super.executeQueries(dropQueries);
+ super.clean();
}
catch (SQLException e)
{
@@ -82,8 +83,6 @@
LOG.warn("Can't set auto commit to \"false\"", e);
}
}
-
- super.clean();
}
/**
@@ -91,82 +90,51 @@
*/
public void commit() throws BackupException
{
- super.commit();
-
- restoreConstraint();
- }
-
- /**
- * {@inheritDoc}
- */
- public void rollback() throws BackupException
- {
- BackupException rollbackException = null;
-
try
{
- super.rollback();
+ // the Sybase is not allowed DDL query (CREATE TABLE, DROP TABLE, etc. ) within
a multi-statement transaction
+ if (!jdbcConn.getAutoCommit())
+ {
+ jdbcConn.setAutoCommit(true);
+ }
+
+ super.commit();
}
- catch (BackupException e)
+ catch (SQLException e)
{
- rollbackException = e;
- throw rollbackException;
+ throw new
BackupException(ExceptionManagementHelper.getFullSQLExceptionMessage(e), e);
}
finally
{
try
{
- restoreConstraint();
+ jdbcConn.setAutoCommit(false);
}
- catch (BackupException e)
+ catch (SQLException e)
{
- if (rollbackException != null)
- {
- LOG.error("Can not restore constraint", e);
- throw rollbackException;
- }
- else
- {
- throw e;
- }
+ LOG.warn("Can't set auto commit to \"false\"", e);
}
}
}
/**
- * Restore constraint.
- *
- * @throws BackupException
- * Will throw BackupException if fail.
+ * {@inheritDoc}
*/
- private void restoreConstraint() throws BackupException
+ public void rollback() throws BackupException
{
try
{
- // restore constraint
- jdbcConn.setAutoCommit(true);
-
- if (successfulExecuted.size() == addQueries.size())
+ // the Sybase is not allowed DDL query (CREATE TABLE, DROP TABLE, etc. ) within
a multi-statement transaction
+ if (!jdbcConn.getAutoCommit())
{
- executeQueries(addQueries);
+ jdbcConn.setAutoCommit(true);
}
- else
- {
- ArrayList<String> notDeletedConstraints = new
ArrayList<String>();
- notDeletedConstraints.addAll(addQueries.keySet());
- notDeletedConstraints.removeAll(successfulExecuted);
- for (String notDeletedConstraint : notDeletedConstraints)
- {
- addQueries.remove(notDeletedConstraint);
- }
-
- executeQueries(addQueries);
- }
+ super.rollback();
}
catch (SQLException e)
{
- throw new BackupException(e);
+ throw new
BackupException(ExceptionManagementHelper.getFullSQLExceptionMessage(e), e);
}
finally
{
@@ -184,27 +152,9 @@
/**
* {@inheritDoc}
*/
- public void preRestoreTables(boolean isMultiDb) throws SQLException
+ protected void commitBatch() throws SQLException
{
+ jdbcConn.commit();
}
-
- /**
- * {@inheritDoc}
- */
- public void postRestoreTables(boolean isMultiDb) throws SQLException
- {
- }
-
- /**
- * {@inheritDoc}
- */
- protected String validateConstraintName(String string)
- {
- if (string.equals("JCR_PK_SCONTAINER"))
- {
- return "JCR_PK_MCONTAINER";
- }
-
- return super.validateConstraintName(string);
- }
}
+
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java 2011-10-24
10:11:04 UTC (rev 5080)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java 2011-10-24
15:04:53 UTC (rev 5081)
@@ -20,7 +20,6 @@
import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
import org.exoplatform.services.jcr.config.RepositoryEntry;
import org.exoplatform.services.jcr.config.WorkspaceEntry;
-import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.storage.jdbc.DBConstants;
import org.exoplatform.services.jcr.impl.storage.jdbc.DialectDetecter;
import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer;
@@ -31,10 +30,9 @@
import java.io.IOException;
import java.security.PrivilegedExceptionAction;
import java.sql.Connection;
-import java.sql.ResultSet;
import java.sql.SQLException;
-import java.sql.Statement;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import javax.naming.InitialContext;
@@ -63,6 +61,11 @@
public static final String OLD_OBJECT_SUFFIX = "_OLD";
/**
+ * The constraint name is limited by 18 symbols.
+ */
+ private static final int DB2_CONSTRAINT_NAME_LENGTH_LIMIT = 18;
+
+ /**
* Cleans workspace data from database.
*
* @param wsEntry
@@ -162,36 +165,288 @@
String dialect = DialectDetecter.detect(jdbcConn.getMetaData());
- if (dialect.equals(DBConstants.DB_DIALECT_ORACLE) ||
dialect.equals(DBConstants.DB_DIALECT_ORACLEOCI))
+ if (dialect.equals(DBConstants.DB_DIALECT_ORACLE) ||
dialect.equals(DBConstants.DB_DIALECT_ORACLEOCI)
+ || dialect.equals(DBConstants.DB_DIALECT_MYSQL) ||
dialect.equals(DBConstants.DB_DIALECT_MYSQL_UTF8)
+ || dialect.equals(DBConstants.DB_DIALECT_SYBASE) ||
dialect.equals(DBConstants.DB_DIALECT_HSQLDB))
{
ArrayList<String> dbCleanerScripts = new ArrayList<String>();
dbCleanerScripts.addAll(getRenameScripts(isMultiDB, dialect));
- dbCleanerScripts.addAll(getInitializationDBScript(isMultiDB, dialect));
+
dbCleanerScripts.addAll(prepareInirializationScript(getInitializationDBScript(isMultiDB,
dialect), isMultiDB,
+ dialect));
+ dbCleanerScripts.addAll(getPreTablesRestoreScript(isMultiDB, dialect));
+ ArrayList<String> afterRestoreScript = new ArrayList<String>();
+ afterRestoreScript.addAll(getAfterRestoreScript(isMultiDB, dialect));
+ afterRestoreScript.addAll(getPostTablesRestoreScript(isMultiDB, dialect));
+
return new DBCleaner(jdbcConn, dbCleanerScripts,
getRollbackRenamedScript(isMultiDB, dialect),
- getAfterRestoreScript(isMultiDB, dialect));
+ afterRestoreScript);
}
- else if (dialect.equals(DBConstants.DB_DIALECT_HSQLDB))
- {
- ArrayList<String> dbCleanerScripts = new ArrayList<String>();
- dbCleanerScripts.add("delete from JCR_" + (isMultiDB ? "M" :
"S") + "VALUE");
- dbCleanerScripts.add("delete from JCR_" + (isMultiDB ? "M" :
"S") + "ITEM");
- dbCleanerScripts.add("delete from JCR_" + (isMultiDB ? "M" :
"S") + "REF");
- dbCleanerScripts.add("delete from JCR_" + (isMultiDB ? "M" :
"S") + "CONTAINER");
-
dbCleanerScripts.add(DBInitializerHelper.getRootNodeInitializeScript(isMultiDB));
- return new DBCleaner(jdbcConn, dbCleanerScripts);
- }
-
ArrayList<String> dbCleanerScripts = new ArrayList<String>();
dbCleanerScripts.addAll(getDropTableScripts(isMultiDB, dialect));
dbCleanerScripts.addAll(getInitializationDBScript(isMultiDB, dialect));
+ dbCleanerScripts.addAll(getPreTablesRestoreScript(isMultiDB, dialect));
- return new DBCleaner(jdbcConn, dbCleanerScripts);
+ return new DBCleaner(jdbcConn, dbCleanerScripts, new ArrayList<String>(),
getPostTablesRestoreScript(isMultiDB,
+ dialect));
}
/**
+ * Prepare database initialization script.
+ *
+ * @param initializationDBScript
+ * list with scripts
+ * @param isMultiDB
+ * boolean, is multi-db
+ * @param dialect
+ * string, dialect of DB
+ * @return List with database initialization scripts
+ */
+ private static Collection<? extends String>
prepareInirializationScript(List<String> initializationDBScript,
+ boolean isMultiDB, String dialect)
+ {
+ if (dialect.equals(DBConstants.DB_DIALECT_MYSQL) ||
dialect.equals(DBConstants.DB_DIALECT_MYSQL_UTF8))
+ {
+ String multiDb = isMultiDB ? "M" : "S";
+
+ for (int i = 0; i < initializationDBScript.size(); i++)
+ {
+ String query = initializationDBScript.get(i);
+ if (query.contains("JCR_FK_" + multiDb + "ITEM_PARENT")
+ || query.contains("JCR_FK_" + multiDb +
"VALUE_PROPERTY"))
+ {
+ initializationDBScript.remove(i);
+ i--;
+ }
+ }
+ }
+ else if (dialect.equals(DBConstants.DB_DIALECT_SYBASE))
+ {
+ String multiDb = isMultiDB ? "M" : "S";
+
+ for (int i = 0; i < initializationDBScript.size(); i++)
+ {
+ String query = initializationDBScript.get(i);
+ if (query.contains("JCR_IDX_" + multiDb + "ITEM_PARENT")
+ || query.contains("JCR_IDX_" + multiDb +
"ITEM_PARENT_NAME")
+ || query.contains("JCR_IDX_" + multiDb +
"ITEM_PARENT_ID")
+ || query.contains("JCR_IDX_" + multiDb +
"VALUE_PROPERTY")
+ || query.contains("JCR_IDX_" + multiDb +
"REF_PROPERTY"))
+ {
+ initializationDBScript.remove(i);
+ i--;
+ }
+ }
+ }
+
+ return initializationDBScript;
+ }
+
+ /**
+ * Prepare of restore tables. (Drop constraint, etc...)
+ *
+ * @param isMultiDb
+ * boolean
+ * @param dialect
+ * String, dialect of DB
+ */
+ private static List<String> getPreTablesRestoreScript(boolean isMultiDB, String
dialect)
+ {
+ ArrayList<String> dropScript = new ArrayList<String>();
+
+ String multiDb = isMultiDB ? "M" : "S";
+ String constraintName;
+ String constraint;
+
+ if (dialect.equals(DBConstants.DB_DIALECT_MYSQL) ||
dialect.equals(DBConstants.DB_DIALECT_MYSQL))
+ {
+ return dropScript;
+ }
+
+ constraintName = validateConstraintName("JCR_FK_" + multiDb +
"ITEM_PARENT", dialect);
+ constraint = "CONSTRAINT " + constraintName + " FOREIGN
KEY(PARENT_ID) REFERENCES JCR_" + multiDb + "ITEM(ID)";
+ dropScript.add("ALTER TABLE JCR_" + multiDb + "ITEM " +
dropCommand(false, constraintName, dialect));
+
+ if (dialect.equals(DBConstants.DB_DIALECT_ORACLE) ||
dialect.equals(DBConstants.DB_DIALECT_ORACLEOCI))
+ {
+ constraintName = validateConstraintName("JCR_PK_" + multiDb +
"VALUE", dialect);
+ constraint = "CONSTRAINT " + constraintName + " PRIMARY
KEY(ID)";
+ dropScript.add("ALTER TABLE JCR_" + multiDb + "VALUE " +
dropCommand(true, constraintName, dialect));
+
+ constraintName = validateConstraintName("JCR_FK_" + multiDb +
"VALUE_PROPERTY", dialect);
+ constraint =
+ "CONSTRAINT " + constraintName + " FOREIGN KEY(PROPERTY_ID)
REFERENCES JCR_" + multiDb + "ITEM(ID)";
+ dropScript.add("ALTER TABLE JCR_" + multiDb + "VALUE " +
dropCommand(false, constraintName, dialect));
+
+ constraintName = validateConstraintName("JCR_PK_" + multiDb +
"ITEM", dialect);
+ dropScript.add("ALTER TABLE JCR_" + multiDb + "ITEM " +
dropCommand(true, constraintName, dialect));
+
+ constraintName = validateConstraintName("JCR_PK_" + multiDb +
"REF", dialect);
+ constraint = "CONSTRAINT " + constraintName + " PRIMARY
KEY(NODE_ID, PROPERTY_ID, ORDER_NUM)";
+ dropScript.add("ALTER TABLE JCR_" + multiDb + "REF " +
dropCommand(true, constraintName, dialect));
+
+ constraintName = validateConstraintName("JCR_PK_" + multiDb +
"CONTAINER", dialect);
+ constraint = "CONSTRAINT " + constraintName + " PRIMARY
KEY(VERSION)";
+ dropScript.add("ALTER TABLE JCR_" + multiDb + "CONTAINER " +
dropCommand(true, constraintName, dialect));
+
+ dropScript.add("DROP INDEX JCR_IDX_" + multiDb +
"ITEM_PARENT_FK");
+ dropScript.add("DROP INDEX JCR_IDX_" + multiDb +
"ITEM_PARENT");
+ dropScript.add("DROP INDEX JCR_IDX_" + multiDb +
"ITEM_PARENT_NAME");
+ dropScript.add("DROP INDEX JCR_IDX_" + multiDb +
"ITEM_PARENT_ID");
+ dropScript.add("DROP INDEX JCR_IDX_" + multiDb +
"VALUE_PROPERTY");
+ dropScript.add("DROP INDEX JCR_IDX_" + multiDb +
"REF_PROPERTY");
+ }
+ else if (dialect.equals(DBConstants.DB_DIALECT_SYBASE))
+ {
+ dropScript.add("ALTER TABLE JCR_" + multiDb + "VALUE DROP
CONSTRAINT JCR_FK_" + multiDb + "VALUE_PROPERTY");
+ dropScript.add("ALTER TABLE JCR_" + multiDb + "ITEM DROP
CONSTRAINT JCR_PK_" + multiDb + "ITEM");
+ dropScript.add("ALTER TABLE JCR_" + multiDb + "VALUE DROP
CONSTRAINT JCR_PK_" + multiDb + "VALUE");
+ }
+
+ return dropScript;
+ }
+
+ /**
+ * After of restore tables. (Add constraint, etc...)
+ *
+ * @param isMultiDb
+ * boolean
+ * @param dialect
+ * String, dialect of DB
+ */
+ private static List<String> getPostTablesRestoreScript(boolean isMultiDB, String
dialect)
+ throws RepositoryConfigurationException
+ {
+ ArrayList<String> addScript = new ArrayList<String>();
+
+ String multiDb = isMultiDB ? "M" : "S";
+
+ String constraintName;
+ String constraint;
+
+ if (dialect.equals(DBConstants.DB_DIALECT_SYBASE))
+ {
+ addScript.add("ALTER TABLE JCR_" + multiDb + "ITEM ADD CONSTRAINT
JCR_PK_" + multiDb
+ + "ITEM PRIMARY KEY(ID)");
+ addScript.add("ALTER TABLE JCR_" + multiDb + "VALUE ADD
CONSTRAINT JCR_PK_" + multiDb
+ + "VALUE PRIMARY KEY(ID)");
+
+ constraintName = validateConstraintName("JCR_FK_" + multiDb +
"ITEM_PARENT", dialect);
+ constraint = "CONSTRAINT " + constraintName + " FOREIGN
KEY(PARENT_ID) REFERENCES JCR_" + multiDb + "ITEM(ID)";
+ addScript.add("ALTER TABLE JCR_" + multiDb + "ITEM ADD " +
constraint);
+
+ addScript.add("ALTER TABLE JCR_" + multiDb + "VALUE ADD
CONSTRAINT JCR_FK_" + multiDb
+ + "VALUE_PROPERTY FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_" +
multiDb + "ITEM(ID)");
+
+ addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb
+ "ITEM_PARENT", isMultiDB, dialect));
+ addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb
+ "ITEM_PARENT_NAME", isMultiDB,
+ dialect));
+ addScript
+ .add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb +
"ITEM_PARENT_ID", isMultiDB, dialect));
+ addScript
+ .add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb +
"VALUE_PROPERTY", isMultiDB, dialect));
+ addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb
+ "REF_PROPERTY", isMultiDB, dialect));
+
+ return addScript;
+ }
+
+ constraintName = validateConstraintName("JCR_FK_" + multiDb +
"ITEM_PARENT", dialect);
+ constraint = "CONSTRAINT " + constraintName + " FOREIGN
KEY(PARENT_ID) REFERENCES JCR_" + multiDb + "ITEM(ID)";
+ addScript.add("ALTER TABLE JCR_" + multiDb + "ITEM ADD " +
constraint);
+
+ if (dialect.equals(DBConstants.DB_DIALECT_MYSQL) ||
dialect.equals(DBConstants.DB_DIALECT_MYSQL))
+ {
+ constraintName = validateConstraintName("JCR_FK_" + multiDb +
"VALUE_PROPERTY", dialect);
+ constraint =
+ "CONSTRAINT " + constraintName + " FOREIGN KEY(PROPERTY_ID)
REFERENCES JCR_" + multiDb + "ITEM(ID)";
+ addScript.add("ALTER TABLE JCR_" + multiDb + "VALUE ADD " +
constraint);
+ }
+
+ if (dialect.equals(DBConstants.DB_DIALECT_ORACLE) ||
dialect.equals(DBConstants.DB_DIALECT_ORACLEOCI))
+ {
+ constraintName = validateConstraintName("JCR_PK_" + multiDb +
"VALUE", dialect);
+ constraint = "CONSTRAINT " + constraintName + " PRIMARY
KEY(ID)";
+ addScript.add("ALTER TABLE JCR_" + multiDb + "VALUE ADD " +
constraint);
+
+ constraintName = validateConstraintName("JCR_PK_" + multiDb +
"ITEM", dialect);
+ constraint = "CONSTRAINT " + constraintName + " PRIMARY
KEY(ID)";
+ addScript.add("ALTER TABLE JCR_" + multiDb + "ITEM ADD " +
constraint);
+
+ constraintName = validateConstraintName("JCR_FK_" + multiDb +
"VALUE_PROPERTY", dialect);
+ constraint =
+ "CONSTRAINT " + constraintName + " FOREIGN KEY(PROPERTY_ID)
REFERENCES JCR_" + multiDb + "ITEM(ID)";
+ addScript.add("ALTER TABLE JCR_" + multiDb + "VALUE ADD " +
constraint);
+
+
+ constraintName = validateConstraintName("JCR_PK_" + multiDb +
"REF", dialect);
+ constraint = "CONSTRAINT " + constraintName + " PRIMARY
KEY(NODE_ID, PROPERTY_ID, ORDER_NUM)";
+ addScript.add("ALTER TABLE JCR_" + multiDb + "REF ADD " +
constraint);
+
+ constraintName = validateConstraintName("JCR_PK_" + multiDb +
"CONTAINER", dialect);
+ constraint = "CONSTRAINT " + constraintName + " PRIMARY
KEY(VERSION)";
+ addScript.add("ALTER TABLE JCR_" + multiDb + "CONTAINER ADD
" + constraint);
+
+ addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb
+ "ITEM_PARENT_FK", isMultiDB, dialect));
+ addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb
+ "ITEM_PARENT", isMultiDB, dialect));
+ addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb
+ "ITEM_PARENT_NAME", isMultiDB, dialect));
+ addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb
+ "ITEM_PARENT_ID", isMultiDB, dialect));
+ addScript
+ .add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb +
"VALUE_PROPERTY", isMultiDB, dialect));
+ addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb
+ "REF_PROPERTY", isMultiDB, dialect));
+ }
+
+ return addScript;
+ }
+
+ /**
+ * Validate name of constraint. For some DBs constrains name is limited.
+ *
+ * @param string
+ * the constraint name
+ * @param dialect
+ * String, dialect of DB
+ * @return the constraint name accepted for specific DB
+ */
+ private static String validateConstraintName(String string, String dialect)
+ {
+ if (dialect.equals(DBConstants.DB_DIALECT_DB2) ||
dialect.equals(DBConstants.DB_DIALECT_DB2V8))
+ {
+ return string.substring(0, DB2_CONSTRAINT_NAME_LENGTH_LIMIT);
+ }
+ else if (dialect.equals(DBConstants.DB_DIALECT_SYBASE) &&
string.equals("JCR_PK_SCONTAINER"))
+ {
+ return "JCR_PK_MCONTAINER";
+ }
+ else
+ {
+ return string;
+ }
+ }
+
+ /**
+ * Return the command to drop primary or foreign key.
+ *
+ * @param isPrimaryKey
+ * boolean
+ * @param dialect
+ * String, dialect of DB
+ * @return String
+ */
+ protected static String dropCommand(boolean isPrimaryKey, String constraintName,
String dialect)
+ {
+ if (dialect.equals(DBConstants.DB_DIALECT_MYSQL) ||
dialect.equals(DBConstants.DB_DIALECT_MYSQL_UTF8))
+ {
+ return isPrimaryKey == true ? "DROP PRIMARY KEY" : "DROP FOREIGN
KEY " + constraintName;
+ }
+ else
+ {
+ return "DROP CONSTRAINT " + constraintName;
+ }
+ }
+
+ /**
* Create list with queries to drop tables, etc...
*
* @param multiDb
@@ -234,61 +489,130 @@
List<String> renameScripts = new ArrayList<String>();
- // JCR_[S,M]VALUE
- renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE RENAME TO
JCR_" + isMultiDB + "VALUE"
- + OLD_OBJECT_SUFFIX);
- renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE" +
OLD_OBJECT_SUFFIX + " RENAME CONSTRAINT JCR_PK_"
- + isMultiDB + "VALUE TO JCR_PK_" + isMultiDB + "VALUE" +
OLD_OBJECT_SUFFIX);
- renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE" +
OLD_OBJECT_SUFFIX + " RENAME CONSTRAINT JCR_FK_"
- + isMultiDB + "VALUE_PROPERTY TO JCR_FK_" + isMultiDB +
"VALUE_PROPERTY" + OLD_OBJECT_SUFFIX);
- renameScripts.add("ALTER INDEX JCR_PK_" + isMultiDB + "VALUE RENAME
TO JCR_PK_" + isMultiDB + "VALUE"
- + OLD_OBJECT_SUFFIX);
- renameScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"VALUE_PROPERTY RENAME TO JCR_IDX_" + isMultiDB
- + "VALUE_PROPERTY" + OLD_OBJECT_SUFFIX);
-
if (dialect.equals(DBConstants.DB_DIALECT_ORACLE) ||
dialect.equals(DBConstants.DB_DIALECT_ORACLEOCI))
{
+ // JCR_[S,M]VALUE
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE RENAME
TO JCR_" + isMultiDB + "VALUE"
+ + OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE" +
OLD_OBJECT_SUFFIX + " RENAME CONSTRAINT JCR_PK_"
+ + isMultiDB + "VALUE TO JCR_PK_" + isMultiDB + "VALUE" +
OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE" +
OLD_OBJECT_SUFFIX + " RENAME CONSTRAINT JCR_FK_"
+ + isMultiDB + "VALUE_PROPERTY TO JCR_FK_" + isMultiDB +
"VALUE_PROPERTY" + OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER INDEX JCR_PK_" + isMultiDB + "VALUE
RENAME TO JCR_PK_" + isMultiDB + "VALUE"
+ + OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"VALUE_PROPERTY RENAME TO JCR_IDX_" + isMultiDB
+ + "VALUE_PROPERTY" + OLD_OBJECT_SUFFIX);
+
renameScripts.add("RENAME JCR_" + isMultiDB + "VALUE_SEQ TO
JCR_" + isMultiDB + "VALUE_SEQ"
+ OLD_OBJECT_SUFFIX);
renameScripts.add("ALTER TRIGGER BI_JCR_" + isMultiDB + "VALUE
RENAME TO BI_JCR_" + isMultiDB + "VALUE"
+ OLD_OBJECT_SUFFIX);
+
+ // JCR_[S,M]ITEM
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM RENAME
TO JCR_" + isMultiDB + "ITEM"
+ + OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM" +
OLD_OBJECT_SUFFIX + " RENAME CONSTRAINT JCR_PK_"
+ + isMultiDB + "ITEM TO JCR_PK_" + isMultiDB + "ITEM" +
OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM" +
OLD_OBJECT_SUFFIX + " RENAME CONSTRAINT JCR_FK_"
+ + isMultiDB + "ITEM_PARENT TO JCR_FK_" + isMultiDB +
"ITEM_PARENT" + OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER INDEX JCR_PK_" + isMultiDB + "ITEM
RENAME TO JCR_PK_" + isMultiDB + "ITEM"
+ + OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT_FK RENAME TO JCR_IDX_" + isMultiDB
+ + "ITEM_PARENT_FK" + OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT RENAME TO JCR_IDX_" + isMultiDB
+ + "ITEM_PARENT" + OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT_NAME RENAME TO JCR_IDX_" + isMultiDB
+ + "ITEM_PARENT_NAME" + OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT_ID RENAME TO JCR_IDX_" + isMultiDB
+ + "ITEM_PARENT_ID" + OLD_OBJECT_SUFFIX);
+
+ // JCR_[S,M]CONTAINER
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "CONTAINER
RENAME TO JCR_" + isMultiDB + "CONTAINER"
+ + OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB +
"CONTAINER" + OLD_OBJECT_SUFFIX
+ + " RENAME CONSTRAINT JCR_PK_" + isMultiDB + "CONTAINER TO
JCR_PK_" + isMultiDB + "CONTAINER"
+ + OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER INDEX JCR_PK_" + isMultiDB + "CONTAINER
RENAME TO JCR_PK_" + isMultiDB + "CONTAINER"
+ + OLD_OBJECT_SUFFIX);
+
+ // JCR_[S,M]REF
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "REF RENAME TO
JCR_" + isMultiDB + "REF"
+ + OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "REF" +
OLD_OBJECT_SUFFIX + " RENAME CONSTRAINT JCR_PK_"
+ + isMultiDB + "REF TO JCR_PK_" + isMultiDB + "REF" +
OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER INDEX JCR_PK_" + isMultiDB + "REF RENAME
TO JCR_PK_" + isMultiDB + "REF"
+ + OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"REF_PROPERTY RENAME TO JCR_IDX_" + isMultiDB
+ + "REF_PROPERTY" + OLD_OBJECT_SUFFIX);
}
+ else if (dialect.equals(DBConstants.DB_DIALECT_MYSQL) ||
dialect.equals(DBConstants.DB_DIALECT_MYSQL_UTF8))
+ {
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE RENAME
TO JCR_" + isMultiDB + "VALUE"
+ + OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM RENAME
TO JCR_" + isMultiDB + "ITEM"
+ + OLD_OBJECT_SUFFIX);
- // JCR_[S,M]ITEM
- renameScripts
- .add("ALTER TABLE JCR_" + isMultiDB + "ITEM RENAME TO JCR_"
+ isMultiDB + "ITEM" + OLD_OBJECT_SUFFIX);
- renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM" +
OLD_OBJECT_SUFFIX + " RENAME CONSTRAINT JCR_PK_"
- + isMultiDB + "ITEM TO JCR_PK_" + isMultiDB + "ITEM" +
OLD_OBJECT_SUFFIX);
- renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM" +
OLD_OBJECT_SUFFIX + " RENAME CONSTRAINT JCR_FK_"
- + isMultiDB + "ITEM_PARENT TO JCR_FK_" + isMultiDB +
"ITEM_PARENT" + OLD_OBJECT_SUFFIX);
- renameScripts.add("ALTER INDEX JCR_PK_" + isMultiDB + "ITEM RENAME
TO JCR_PK_" + isMultiDB + "ITEM"
- + OLD_OBJECT_SUFFIX);
- renameScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT_FK RENAME TO JCR_IDX_" + isMultiDB
- + "ITEM_PARENT_FK" + OLD_OBJECT_SUFFIX);
- renameScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB + "ITEM_PARENT
RENAME TO JCR_IDX_" + isMultiDB
- + "ITEM_PARENT" + OLD_OBJECT_SUFFIX);
- renameScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT_NAME RENAME TO JCR_IDX_" + isMultiDB
- + "ITEM_PARENT_NAME" + OLD_OBJECT_SUFFIX);
- renameScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT_ID RENAME TO JCR_IDX_" + isMultiDB
- + "ITEM_PARENT_ID" + OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "REF RENAME TO
JCR_" + isMultiDB + "REF"
+ + OLD_OBJECT_SUFFIX);
- // JCR_[S,M]CONTAINER
- renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "CONTAINER RENAME
TO JCR_" + isMultiDB + "CONTAINER"
- + OLD_OBJECT_SUFFIX);
- renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "CONTAINER"
+ OLD_OBJECT_SUFFIX + " RENAME CONSTRAINT JCR_PK_"
- + isMultiDB + "CONTAINER TO JCR_PK_" + isMultiDB +
"CONTAINER" + OLD_OBJECT_SUFFIX);
- renameScripts.add("ALTER INDEX JCR_PK_" + isMultiDB + "CONTAINER
RENAME TO JCR_PK_" + isMultiDB + "CONTAINER"
- + OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "CONTAINER
RENAME TO JCR_" + isMultiDB + "CONTAINER"
+ + OLD_OBJECT_SUFFIX);
+ }
+ else if (dialect.equals(DBConstants.DB_DIALECT_SYBASE))
+ {
+ renameScripts.add("sp_rename JCR_" + isMultiDB + "VALUE,
JCR_" + isMultiDB + "VALUE" + OLD_OBJECT_SUFFIX);
+ renameScripts.add("sp_rename JCR_" + isMultiDB + "ITEM,
JCR_" + isMultiDB + "ITEM" + OLD_OBJECT_SUFFIX);
+ renameScripts.add("sp_rename JCR_" + isMultiDB + "CONTAINER,
JCR_" + isMultiDB + "CONTAINER" + OLD_OBJECT_SUFFIX);
+ renameScripts.add("sp_rename JCR_" + isMultiDB + "REF, JCR_"
+ isMultiDB + "REF" + OLD_OBJECT_SUFFIX);
+ renameScripts.add("sp_rename JCR_FK_" + isMultiDB +
"VALUE_PROPERTY, JCR_FK_" + isMultiDB + "VALUE_PROPERTY"
+ + OLD_OBJECT_SUFFIX);
+ renameScripts.add("sp_rename JCR_FK_" + isMultiDB + "ITEM_PARENT,
JCR_FK_" + isMultiDB + "ITEM_PARENT_OLD");
+ }
+ else if (dialect.equals(DBConstants.DB_DIALECT_HSQLDB))
+ {
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE RENAME
TO JCR_" + isMultiDB + "VALUE"
+ + OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM RENAME
TO JCR_" + isMultiDB + "ITEM"
+ + OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "CONTAINER
RENAME TO JCR_" + isMultiDB + "CONTAINER"
+ + OLD_OBJECT_SUFFIX);
+ renameScripts
+ .add("ALTER TABLE JCR_" + isMultiDB + "REF RENAME TO
JCR_" + isMultiDB + "REF" + OLD_OBJECT_SUFFIX);
- // JCR_[S,M]REF
- renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "REF RENAME TO
JCR_" + isMultiDB + "REF" + OLD_OBJECT_SUFFIX);
- renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "REF" +
OLD_OBJECT_SUFFIX + " RENAME CONSTRAINT JCR_PK_"
- + isMultiDB + "REF TO JCR_PK_" + isMultiDB + "REF" +
OLD_OBJECT_SUFFIX);
- renameScripts.add("ALTER INDEX JCR_PK_" + isMultiDB + "REF RENAME TO
JCR_PK_" + isMultiDB + "REF"
- + OLD_OBJECT_SUFFIX);
- renameScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB + "REF_PROPERTY
RENAME TO JCR_IDX_" + isMultiDB
- + "REF_PROPERTY" + OLD_OBJECT_SUFFIX);
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE"
+ OLD_OBJECT_SUFFIX + " DROP CONSTRAINT JCR_FK_"
+ + isMultiDB + "VALUE_PROPERTY");
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM" +
OLD_OBJECT_SUFFIX + " DROP CONSTRAINT JCR_FK_"
+ + isMultiDB + "ITEM_PARENT");
+
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB +
"CONTAINER" + OLD_OBJECT_SUFFIX
+ + " DROP CONSTRAINT JCR_PK_" + isMultiDB + "CONTAINER");
+
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM" +
OLD_OBJECT_SUFFIX + " DROP CONSTRAINT JCR_PK_"
+ + isMultiDB + "ITEM");
+
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE"
+ OLD_OBJECT_SUFFIX + " DROP CONSTRAINT JCR_PK_"
+ + isMultiDB + "VALUE");
+
+ renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "REF" +
OLD_OBJECT_SUFFIX + " DROP CONSTRAINT JCR_PK_"
+ + isMultiDB + "REF");
+
+ renameScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT RENAME TO JCR_IDX_" + isMultiDB
+ + "ITEM_PARENT" + OLD_OBJECT_SUFFIX);
+
+ renameScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT_NAME RENAME TO JCR_IDX_" + isMultiDB
+ + "ITEM_PARENT_NAME" + OLD_OBJECT_SUFFIX);
+
+ renameScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT_ID RENAME TO JCR_IDX_" + isMultiDB
+ + "ITEM_PARENT_ID" + OLD_OBJECT_SUFFIX);
+
+ renameScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"VALUE_PROPERTY RENAME TO JCR_IDX_" + isMultiDB
+ + "VALUE_PROPERTY" + OLD_OBJECT_SUFFIX);
+
+ renameScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"REF_PROPERTY RENAME TO JCR_IDX_" + isMultiDB
+ + "REF_PROPERTY" + OLD_OBJECT_SUFFIX);
+ }
+
return renameScripts;
}
@@ -301,8 +625,10 @@
* string
* @return List
* return list with query
+ * @throws RepositoryConfigurationException
*/
protected static List<String> getRollbackRenamedScript(boolean multiDb, String
dialect)
+ throws RepositoryConfigurationException
{
final String isMultiDB = (multiDb ? "M" : "S");
@@ -310,62 +636,140 @@
rollbackScripts.addAll(getDropTableScripts(multiDb, dialect));
- // JCR_[S,M]VALUE
- rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE" +
OLD_OBJECT_SUFFIX + " RENAME TO JCR_" + isMultiDB
- + "VALUE");
- rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE RENAME
CONSTRAINT JCR_PK_" + isMultiDB
- + "VALUE" + OLD_OBJECT_SUFFIX + " TO JCR_PK_" + isMultiDB +
"VALUE");
- rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE RENAME
CONSTRAINT JCR_FK_" + isMultiDB
- + "VALUE_PROPERTY" + OLD_OBJECT_SUFFIX + " TO JCR_FK_" +
isMultiDB + "VALUE_PROPERTY");
- rollbackScripts.add("ALTER INDEX JCR_PK_" + isMultiDB + "VALUE"
+ OLD_OBJECT_SUFFIX + " RENAME TO JCR_PK_"
- + isMultiDB + "VALUE");
- rollbackScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"VALUE_PROPERTY" + OLD_OBJECT_SUFFIX
- + " RENAME TO JCR_IDX_" + isMultiDB + "VALUE_PROPERTY");
-
if (dialect.equals(DBConstants.DB_DIALECT_ORACLE) ||
dialect.equals(DBConstants.DB_DIALECT_ORACLEOCI))
{
+ // JCR_[S,M]VALUE
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE"
+ OLD_OBJECT_SUFFIX + " RENAME TO JCR_" + isMultiDB
+ + "VALUE");
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE
RENAME CONSTRAINT JCR_PK_" + isMultiDB
+ + "VALUE" + OLD_OBJECT_SUFFIX + " TO JCR_PK_" + isMultiDB
+ "VALUE");
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE
RENAME CONSTRAINT JCR_FK_" + isMultiDB
+ + "VALUE_PROPERTY" + OLD_OBJECT_SUFFIX + " TO JCR_FK_" +
isMultiDB + "VALUE_PROPERTY");
+ rollbackScripts.add("ALTER INDEX JCR_PK_" + isMultiDB +
"VALUE" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_PK_"
+ + isMultiDB + "VALUE");
+ rollbackScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"VALUE_PROPERTY" + OLD_OBJECT_SUFFIX
+ + " RENAME TO JCR_IDX_" + isMultiDB + "VALUE_PROPERTY");
+
rollbackScripts.add("RENAME JCR_" + isMultiDB + "VALUE_SEQ"
+ OLD_OBJECT_SUFFIX + " TO JCR_" + isMultiDB
+ "VALUE_SEQ");
rollbackScripts.add("ALTER TRIGGER BI_JCR_" + isMultiDB +
"VALUE" + OLD_OBJECT_SUFFIX + " RENAME TO BI_JCR_"
+ isMultiDB + "VALUE");
+
+ // JCR_[S,M]ITEM
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM"
+ OLD_OBJECT_SUFFIX + " RENAME TO JCR_" + isMultiDB
+ + "ITEM");
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM RENAME
CONSTRAINT JCR_PK_" + isMultiDB
+ + "ITEM" + OLD_OBJECT_SUFFIX + " TO JCR_PK_" + isMultiDB
+ "ITEM");
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM RENAME
CONSTRAINT JCR_FK_" + isMultiDB
+ + "ITEM_PARENT" + OLD_OBJECT_SUFFIX + " TO JCR_FK_" +
isMultiDB + "ITEM_PARENT");
+ rollbackScripts.add("ALTER INDEX JCR_PK_" + isMultiDB +
"ITEM" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_PK_"
+ + isMultiDB + "ITEM");
+ rollbackScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT_FK" + OLD_OBJECT_SUFFIX
+ + " RENAME TO JCR_IDX_" + isMultiDB + "ITEM_PARENT_FK");
+ rollbackScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT" + OLD_OBJECT_SUFFIX
+ + " RENAME TO JCR_IDX_" + isMultiDB + "ITEM_PARENT");
+ rollbackScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT_NAME" + OLD_OBJECT_SUFFIX
+ + " RENAME TO JCR_IDX_" + isMultiDB +
"ITEM_PARENT_NAME");
+ rollbackScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT_ID" + OLD_OBJECT_SUFFIX
+ + " RENAME TO JCR_IDX_" + isMultiDB + "ITEM_PARENT_ID");
+
+ // JCR_[S,M]CONTAINER
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB +
"CONTAINER" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_"
+ + isMultiDB + "CONTAINER");
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "CONTAINER
RENAME CONSTRAINT JCR_PK_" + isMultiDB
+ + "CONTAINER" + OLD_OBJECT_SUFFIX + " TO JCR_PK_" +
isMultiDB + "CONTAINER");
+ rollbackScripts.add("ALTER INDEX JCR_PK_" + isMultiDB +
"CONTAINER" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_PK_"
+ + isMultiDB + "CONTAINER");
+
+ // JCR_[S,M]REF
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "REF" +
OLD_OBJECT_SUFFIX + " RENAME TO JCR_" + isMultiDB
+ + "REF");
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "REF RENAME
CONSTRAINT JCR_PK_" + isMultiDB
+ + "REF" + OLD_OBJECT_SUFFIX + " TO JCR_PK_" + isMultiDB +
"REF");
+ rollbackScripts.add("ALTER INDEX JCR_PK_" + isMultiDB +
"REF" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_PK_"
+ + isMultiDB + "REF");
+ rollbackScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"REF_PROPERTY" + OLD_OBJECT_SUFFIX
+ + " RENAME TO JCR_IDX_" + isMultiDB + "REF_PROPERTY");
}
+ else if (dialect.equals(DBConstants.DB_DIALECT_MYSQL) ||
dialect.equals(DBConstants.DB_DIALECT_MYSQL_UTF8))
+ {
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM"
+ OLD_OBJECT_SUFFIX + " RENAME TO JCR_"
+ + isMultiDB + "ITEM");
- // JCR_[S,M]ITEM
- rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM" +
OLD_OBJECT_SUFFIX + " RENAME TO JCR_" + isMultiDB
- + "ITEM");
- rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM RENAME
CONSTRAINT JCR_PK_" + isMultiDB
- + "ITEM" + OLD_OBJECT_SUFFIX + " TO JCR_PK_" + isMultiDB +
"ITEM");
- rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM RENAME
CONSTRAINT JCR_FK_" + isMultiDB
- + "ITEM_PARENT" + OLD_OBJECT_SUFFIX + " TO JCR_FK_" +
isMultiDB + "ITEM_PARENT");
- rollbackScripts.add("ALTER INDEX JCR_PK_" + isMultiDB + "ITEM"
+ OLD_OBJECT_SUFFIX + " RENAME TO JCR_PK_"
- + isMultiDB + "ITEM");
- rollbackScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT_FK" + OLD_OBJECT_SUFFIX
- + " RENAME TO JCR_IDX_" + isMultiDB + "ITEM_PARENT_FK");
- rollbackScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT" + OLD_OBJECT_SUFFIX
- + " RENAME TO JCR_IDX_" + isMultiDB + "ITEM_PARENT");
- rollbackScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT_NAME" + OLD_OBJECT_SUFFIX
- + " RENAME TO JCR_IDX_" + isMultiDB + "ITEM_PARENT_NAME");
- rollbackScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT_ID" + OLD_OBJECT_SUFFIX
- + " RENAME TO JCR_IDX_" + isMultiDB + "ITEM_PARENT_ID");
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM ADD
CONSTRAINT JCR_FK_" + isMultiDB
+ + "ITEM_PARENT FOREIGN KEY(PARENT_ID) REFERENCES JCR_" + isMultiDB
+ "ITEM(ID)");
- // JCR_[S,M]CONTAINER
- rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB +
"CONTAINER" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_"
- + isMultiDB + "CONTAINER");
- rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "CONTAINER
RENAME CONSTRAINT JCR_PK_" + isMultiDB
- + "CONTAINER" + OLD_OBJECT_SUFFIX + " TO JCR_PK_" +
isMultiDB + "CONTAINER");
- rollbackScripts.add("ALTER INDEX JCR_PK_" + isMultiDB +
"CONTAINER" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_PK_"
- + isMultiDB + "CONTAINER");
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE"
+ OLD_OBJECT_SUFFIX + " RENAME TO JCR_"
+ + isMultiDB + "VALUE");
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE ADD
CONSTRAINT JCR_FK_" + isMultiDB
+ + "VALUE_PROPERTY FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_" +
isMultiDB + "ITEM(ID)");
- // JCR_[S,M]REF
- rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "REF" +
OLD_OBJECT_SUFFIX + " RENAME TO JCR_" + isMultiDB
- + "REF");
- rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "REF RENAME
CONSTRAINT JCR_PK_" + isMultiDB
- + "REF" + OLD_OBJECT_SUFFIX + " TO JCR_PK_" + isMultiDB +
"REF");
- rollbackScripts.add("ALTER INDEX JCR_PK_" + isMultiDB + "REF" +
OLD_OBJECT_SUFFIX + " RENAME TO JCR_PK_"
- + isMultiDB + "REF");
- rollbackScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"REF_PROPERTY" + OLD_OBJECT_SUFFIX
- + " RENAME TO JCR_IDX_" + isMultiDB + "REF_PROPERTY");
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB +
"CONTAINER" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_"
+ + isMultiDB + "CONTAINER");
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "REF" +
OLD_OBJECT_SUFFIX + " RENAME TO JCR_" + isMultiDB
+ + "REF");
+ }
+ else if (dialect.equals(DBConstants.DB_DIALECT_SYBASE))
+ {
+ rollbackScripts.add("sp_rename JCR_" + isMultiDB + "VALUE" +
OLD_OBJECT_SUFFIX + ", JCR_" + isMultiDB
+ + "VALUE");
+ rollbackScripts.add("sp_rename JCR_" + isMultiDB + "ITEM" +
OLD_OBJECT_SUFFIX + ", JCR_" + isMultiDB + "ITEM");
+ rollbackScripts.add("sp_rename JCR_" + isMultiDB +
"CONTAINER" + OLD_OBJECT_SUFFIX + ", JCR_" + isMultiDB
+ + "CONTAINER");
+ rollbackScripts.add("sp_rename JCR_" + isMultiDB + "REF" +
OLD_OBJECT_SUFFIX + ", JCR_" + isMultiDB + "REF");
+
+ rollbackScripts.add("sp_rename JCR_FK_" + isMultiDB +
"VALUE_PROPERTY" + OLD_OBJECT_SUFFIX + ", JCR_FK_"
+ + isMultiDB + "VALUE_PROPERTY");
+
+ rollbackScripts.add("sp_rename JCR_FK_" + isMultiDB +
"ITEM_PARENT" + OLD_OBJECT_SUFFIX + ", JCR_FK_"
+ + isMultiDB + "ITEM_PARENT");
+ }
+ else if (dialect.equals(DBConstants.DB_DIALECT_HSQLDB))
+ {
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE"
+ OLD_OBJECT_SUFFIX + " RENAME TO JCR_"
+ + isMultiDB + "VALUE");
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM"
+ OLD_OBJECT_SUFFIX + " RENAME TO JCR_"
+ + isMultiDB + "ITEM");
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB +
"CONTAINER" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_"
+ + isMultiDB + "CONTAINER");
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "REF" +
OLD_OBJECT_SUFFIX + " RENAME TO JCR_" + isMultiDB
+ + "REF");
+
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE ADD
CONSTRAINT JCR_FK_" + isMultiDB
+ + "VALUE_PROPERTY FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_" +
isMultiDB + "ITEM(ID");
+
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM ADD
CONSTRAINT JCR_FK_" + isMultiDB
+ + "ITEM_PARENT FOREIGN KEY(PARENT_ID) REFERENCES JCR_" + isMultiDB
+ "ITEM(ID)");
+
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "CONTAINER
ADD CONSTRAINT JCR_PK_" + isMultiDB
+ + "CONTAINER PRIMARY KEY(VERSION)");
+
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM ADD
CONSTRAINT JCR_PK_" + isMultiDB
+ + "ITEM PRIMARY KEY(ID)");
+
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE ADD
CONSTRAINT JCR_PK_" + isMultiDB
+ + "VALUE PRIMARY KEY(ID)");
+
+ rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "REF ADD
CONSTRAINT JCR_PK_" + isMultiDB
+ + "REF PRIMARY KEY(NODE_ID, PROPERTY_ID, ORDER_NUM)");
+
+ rollbackScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT" + OLD_OBJECT_SUFFIX
+ + " RENAME TO JCR_IDX_" + isMultiDB + "ITEM_PARENT");
+
+ rollbackScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT_NAME" + OLD_OBJECT_SUFFIX
+ + " RENAME TO JCR_IDX_" + isMultiDB +
"ITEM_PARENT_NAME");
+
+ rollbackScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"ITEM_PARENT_ID" + OLD_OBJECT_SUFFIX
+ + " RENAME TO JCR_IDX_" + isMultiDB + "ITEM_PARENT_ID");
+
+ rollbackScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"VALUE_PROPERTY" + OLD_OBJECT_SUFFIX
+ + " RENAME TO JCR_IDX_" + isMultiDB + "VALUE_PROPERTY");
+
+ rollbackScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB +
"REF_PROPERTY" + OLD_OBJECT_SUFFIX
+ + " RENAME TO JCR_IDX_" + isMultiDB + "REF_PROPERTY");
+ }
+
return rollbackScripts;
}
@@ -441,99 +845,39 @@
public static DBCleaner getWorkspaceDBCleaner(Connection jdbcConn, WorkspaceEntry
wsEntry) throws SQLException,
RepositoryConfigurationException
{
- boolean multiDb =
+ boolean isMultiDB =
Boolean.parseBoolean(wsEntry.getContainer().getParameterValue(JDBCWorkspaceDataContainer.MULTIDB));
String containerName = wsEntry.getName();
String dialect = DialectDetecter.detect(jdbcConn.getMetaData());
- boolean cleanWithHelper = false;
- if (dialect.equals(DBConstants.DB_DIALECT_HSQLDB))
+ if (dialect.equals(DBConstants.DB_DIALECT_ORACLE) ||
dialect.equals(DBConstants.DB_DIALECT_ORACLEOCI)
+ || dialect.equals(DBConstants.DB_DIALECT_MYSQL) ||
dialect.equals(DBConstants.DB_DIALECT_MYSQL_UTF8)
+ || dialect.equals(DBConstants.DB_DIALECT_SYBASE))
{
- cleanWithHelper = true;
- }
- else if (dialect.equals(DBConstants.DB_DIALECT_MYSQL) ||
dialect.equals(DBConstants.DB_DIALECT_MYSQL_UTF8))
- {
- cleanWithHelper = true;
+ ArrayList<String> dbCleanerScripts = new ArrayList<String>();
+ dbCleanerScripts.addAll(getRenameScripts(isMultiDB, dialect));
+
dbCleanerScripts.addAll(prepareInirializationScript(getInitializationDBScript(isMultiDB,
dialect), isMultiDB,
+ dialect));
+ dbCleanerScripts.addAll(getPreTablesRestoreScript(isMultiDB, dialect));
- Statement st = jdbcConn.createStatement();
- st.execute("SELECT ENGINE FROM information_schema.TABLES where
TABLE_SCHEMA='" + jdbcConn.getCatalog()
- + "' and (TABLE_NAME='JCR_SITEM' or
TABLE_NAME='JCR_MITEM')");
- ResultSet result = st.getResultSet();
- if (result.next())
- {
- String engine = result.getString("ENGINE");
- if (engine.equalsIgnoreCase("MyISAM"))
- {
- cleanWithHelper = false;
- }
- }
- }
+ ArrayList<String> afterRestoreScript = new ArrayList<String>();
+ afterRestoreScript.addAll(getAfterRestoreScript(isMultiDB, dialect));
+ afterRestoreScript.addAll(getPostTablesRestoreScript(isMultiDB, dialect));
- List<String> cleanScripts = new ArrayList<String>();
-
- if (multiDb)
- {
- if (dialect.equals(DBConstants.DB_DIALECT_SYBASE) ||
dialect.equals(DBConstants.DB_DIALECT_HSQLDB))
- {
- cleanScripts.add("delete from JCR_MVALUE");
- cleanScripts.add("delete from JCR_MREF");
-
- if (cleanWithHelper)
- {
- cleanScripts.add("delete from JCR_MITEM where I_CLASS=2");
-
- String selectItems = "select ID from JCR_MITEM where I_CLASS=1 and
PARENT_ID=?";
- String deleteItems = "delete from JCR_MITEM where I_CLASS=1 and
PARENT_ID=?";
-
- return new DBCleaner(jdbcConn, cleanScripts, new
RecursiveDBCleanHelper(jdbcConn, selectItems,
- deleteItems));
- }
-
- cleanScripts.add("delete from JCR_MITEM where JCR_MITEM.name <>
'" + Constants.ROOT_PARENT_NAME + "'");
- }
- else
- {
- cleanScripts.addAll(getDropTableScripts(multiDb, dialect));
- cleanScripts.addAll(getInitializationDBScript(multiDb, dialect));
- }
+ return new DBCleaner(jdbcConn, dbCleanerScripts,
getRollbackRenamedScript(isMultiDB, dialect),
+ afterRestoreScript);
}
else
{
- cleanScripts
- .add("delete from JCR_SVALUE where exists(select * from JCR_SITEM where
JCR_SITEM.ID=JCR_SVALUE.PROPERTY_ID and JCR_SITEM.CONTAINER_NAME='"
- + containerName + "')");
- cleanScripts
- .add("delete from JCR_SREF where exists(select * from JCR_SITEM where
JCR_SITEM.ID=JCR_SREF.PROPERTY_ID and JCR_SITEM.CONTAINER_NAME='"
- + containerName + "')");
+ List<String> cleanScripts = new ArrayList<String>();
+
+ cleanScripts.addAll(getDropTableScripts(isMultiDB, dialect));
+ cleanScripts.addAll(getInitializationDBScript(isMultiDB, dialect));
+ cleanScripts.addAll(getPreTablesRestoreScript(isMultiDB, dialect));
- if (cleanWithHelper)
- {
- cleanScripts.add("delete from JCR_SITEM where I_CLASS=2 and
CONTAINER_NAME='" + containerName + "'");
-
- String selectItems =
- "select ID from JCR_SITEM where I_CLASS=1 and
CONTAINER_NAME='" + containerName + "' and PARENT_ID=?";
- String deleteItems =
- "delete from JCR_SITEM where I_CLASS=1 and CONTAINER_NAME='"
+ containerName + "' and PARENT_ID=?";
-
- return new DBCleaner(jdbcConn, cleanScripts, new
RecursiveDBCleanHelper(jdbcConn, selectItems, deleteItems));
- }
-
- cleanScripts.add("delete from JCR_SITEM where CONTAINER_NAME='" +
containerName + "'");
+ return new DBCleaner(jdbcConn, cleanScripts, new ArrayList<String>(),
getPostTablesRestoreScript(
+ isMultiDB, dialect));
}
-
- if (dialect.equals(DBConstants.DB_DIALECT_ORACLE) ||
dialect.equals(DBConstants.DB_DIALECT_ORACLEOCI))
- {
- ArrayList<String> dbCleanerScripts = new ArrayList<String>();
- dbCleanerScripts.addAll(getRenameScripts(multiDb, dialect));
- dbCleanerScripts.addAll(getInitializationDBScript(multiDb, dialect));
-
- return new DBCleaner(jdbcConn, dbCleanerScripts,
getRollbackRenamedScript(multiDb, dialect),
- getAfterRestoreScript(multiDb, dialect));
- }
- else
- {
- return new DBCleaner(jdbcConn, cleanScripts);
- }
}
}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleaner.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleaner.java 2011-10-24
10:11:04 UTC (rev 5080)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleaner.java 2011-10-24
15:04:53 UTC (rev 5081)
@@ -153,7 +153,7 @@
*/
public void executeCleanScripts() throws SQLException
{
- executeScripts(cleanScripts);
+ executeScripts(cleanScripts, false);
if (dbCleanHelper != null)
{
@@ -169,7 +169,7 @@
*/
public void executeRollbackScripts() throws SQLException
{
- executeScripts(rollbackScripts);
+ executeScripts(rollbackScripts, true);
}
/**
@@ -180,7 +180,7 @@
*/
public void executeCommitScripts() throws SQLException
{
- executeScripts(commitScripts);
+ executeScripts(commitScripts, false);
}
/**
@@ -188,10 +188,12 @@
*
* @param scripts
* the scripts for execution
+ * @param isSkipSQLExceprion
+ * boolean, skipping SQLException on rollback.
* @throws SQLException
* if any exception occurred
*/
- protected void executeScripts(List<String> scripts) throws SQLException
+ protected void executeScripts(List<String> scripts, boolean isSkipSQLExceprion)
throws SQLException
{
SecurityManager security = System.getSecurityManager();
if (security != null)
@@ -211,7 +213,23 @@
{
LOG.debug("Execute script: \n[" + sql + "]");
}
- executeQuery(st, sql);
+
+ try
+ {
+ executeQuery(st, sql);
+ }
+ catch (SQLException e)
+ {
+ if (isSkipSQLExceprion)
+ {
+ LOG.warn("Execute script fail: \n[" + sql +
"]");
+ continue;
+ }
+ else
+ {
+ throw e;
+ }
+ }
}
}
}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java 2011-10-24
10:11:04 UTC (rev 5080)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java 2011-10-24
15:04:53 UTC (rev 5081)
@@ -33,14 +33,10 @@
import org.exoplatform.services.jcr.impl.backup.Backupable;
import org.exoplatform.services.jcr.impl.backup.ComplexDataRestore;
import org.exoplatform.services.jcr.impl.backup.DataRestore;
-import org.exoplatform.services.jcr.impl.backup.rdbms.DB2DBRestore;
import org.exoplatform.services.jcr.impl.backup.rdbms.DBBackup;
import org.exoplatform.services.jcr.impl.backup.rdbms.DBRestore;
import org.exoplatform.services.jcr.impl.backup.rdbms.DataRestoreContext;
import org.exoplatform.services.jcr.impl.backup.rdbms.DirectoryRestore;
-import org.exoplatform.services.jcr.impl.backup.rdbms.H2DBRestore;
-import org.exoplatform.services.jcr.impl.backup.rdbms.MySQLDBRestore;
-import org.exoplatform.services.jcr.impl.backup.rdbms.OracleDBRestore;
import org.exoplatform.services.jcr.impl.backup.rdbms.RestoreTableRule;
import org.exoplatform.services.jcr.impl.backup.rdbms.SybaseDBRestore;
import org.exoplatform.services.jcr.impl.clean.rdbms.DBCleanService;
@@ -1309,26 +1305,10 @@
dbCleaner = DBCleanService.getWorkspaceDBCleaner(jdbcConn, wsConfig);
}
- if (dbDialect == DBConstants.DB_DIALECT_DB2 || dbDialect ==
DBConstants.DB_DIALECT_DB2V8)
+ if (dbDialect == DBConstants.DB_DIALECT_SYBASE)
{
- restorers.add(new DB2DBRestore(storageDir, jdbcConn, tables, wsConfig,
swapCleaner, dbCleaner));
- }
- else if (dbDialect == DBConstants.DB_DIALECT_MYSQL || dbDialect ==
DBConstants.DB_DIALECT_MYSQL_UTF8)
- {
- restorers.add(new MySQLDBRestore(storageDir, jdbcConn, tables, wsConfig,
swapCleaner, dbCleaner));
- }
- else if (dbDialect == DBConstants.DB_DIALECT_H2)
- {
- restorers.add(new H2DBRestore(storageDir, jdbcConn, tables, wsConfig,
swapCleaner, dbCleaner));
- }
- else if (dbDialect == DBConstants.DB_DIALECT_SYBASE)
- {
restorers.add(new SybaseDBRestore(storageDir, jdbcConn, tables, wsConfig,
swapCleaner, dbCleaner));
}
- else if (dbDialect == DBConstants.DB_DIALECT_ORACLE || dbDialect ==
DBConstants.DB_DIALECT_ORACLEOCI)
- {
- restorers.add(new OracleDBRestore(storageDir, jdbcConn, tables, wsConfig,
swapCleaner, dbCleaner));
- }
else
{
restorers.add(new DBRestore(storageDir, jdbcConn, tables, wsConfig,
swapCleaner, dbCleaner));
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializerHelper.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializerHelper.java 2011-10-24
10:11:04 UTC (rev 5080)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializerHelper.java 2011-10-24
15:04:53 UTC (rev 5081)
@@ -17,6 +17,7 @@
package org.exoplatform.services.jcr.impl.util.jdbc;
import org.exoplatform.commons.utils.SecurityHelper;
+import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.storage.jdbc.DBConstants;
import org.exoplatform.services.log.ExoLogger;
@@ -268,4 +269,34 @@
}
return string;
}
+
+ /**
+ * Get script for creating object (index, etc...)
+ * @throws RepositoryConfigurationException
+ */
+ public static String getObjectScript(String objectName, boolean multiDb, String
dialect)
+ throws RepositoryConfigurationException
+ {
+ String scriptsPath = DBInitializerHelper.scriptPath(dialect, multiDb);
+ String script;
+ try
+ {
+ script = DBInitializerHelper.readScriptResource(scriptsPath);
+ }
+ catch (IOException e)
+ {
+ throw new RepositoryConfigurationException("Can not read script file "
+ scriptsPath, e);
+ }
+
+ for (String query : DBInitializerHelper.scripts(script))
+ {
+ String q = DBInitializerHelper.cleanWhitespaces(query);
+ if (q.contains(objectName))
+ {
+ return q;
+ }
+ }
+
+ return null;
+ }
}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-mjdbc.mysql-utf8.sql
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-mjdbc.mysql-utf8.sql 2011-10-24
10:11:04 UTC (rev 5080)
+++
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-mjdbc.mysql-utf8.sql 2011-10-24
15:04:53 UTC (rev 5081)
@@ -12,9 +12,9 @@
N_ORDER_NUM INTEGER,
P_TYPE INTEGER,
P_MULTIVALUED BOOLEAN,
- CONSTRAINT JCR_PK_MITEM PRIMARY KEY(ID),
- CONSTRAINT JCR_FK_MITEM_PARENT FOREIGN KEY(PARENT_ID) REFERENCES JCR_MITEM(ID)
+ CONSTRAINT JCR_PK_MITEM PRIMARY KEY(ID)
) ENGINE=InnoDB;
+ALTER TABLE JCR_MITEM ADD CONSTRAINT JCR_FK_MITEM_PARENT FOREIGN KEY(PARENT_ID)
REFERENCES JCR_MITEM(ID);
CREATE UNIQUE INDEX JCR_IDX_MITEM_PARENT ON JCR_MITEM(PARENT_ID, NAME(255), I_INDEX,
I_CLASS, VERSION DESC);
CREATE UNIQUE INDEX JCR_IDX_MITEM_PARENT_NAME ON JCR_MITEM(I_CLASS, PARENT_ID, NAME(255),
I_INDEX, VERSION DESC);
CREATE UNIQUE INDEX JCR_IDX_MITEM_PARENT_ID ON JCR_MITEM(I_CLASS, PARENT_ID, ID, VERSION
DESC);
@@ -25,9 +25,9 @@
ORDER_NUM INTEGER NOT NULL,
PROPERTY_ID VARCHAR(56) NOT NULL,
STORAGE_DESC VARCHAR(512),
- CONSTRAINT JCR_PK_MVALUE PRIMARY KEY(ID),
- CONSTRAINT JCR_FK_MVALUE_PROPERTY FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_MITEM(ID)
+ CONSTRAINT JCR_PK_MVALUE PRIMARY KEY(ID)
) ENGINE=InnoDB;
+ALTER TABLE JCR_MVALUE ADD CONSTRAINT JCR_FK_MVALUE_PROPERTY FOREIGN KEY(PROPERTY_ID)
REFERENCES JCR_MITEM(ID);
CREATE UNIQUE INDEX JCR_IDX_MVALUE_PROPERTY ON JCR_MVALUE(PROPERTY_ID, ORDER_NUM);
CREATE INDEX JCR_IDX_MVALUE_STORAGE_DESC ON JCR_MVALUE(PROPERTY_ID, STORAGE_DESC);
CREATE TABLE JCR_MREF(
Modified:
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-mjdbc.mysql.sql
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-mjdbc.mysql.sql 2011-10-24
10:11:04 UTC (rev 5080)
+++
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-mjdbc.mysql.sql 2011-10-24
15:04:53 UTC (rev 5081)
@@ -12,9 +12,9 @@
N_ORDER_NUM INTEGER,
P_TYPE INTEGER,
P_MULTIVALUED BOOLEAN,
- CONSTRAINT JCR_PK_MITEM PRIMARY KEY(ID),
- CONSTRAINT JCR_FK_MITEM_PARENT FOREIGN KEY(PARENT_ID) REFERENCES JCR_MITEM(ID)
+ CONSTRAINT JCR_PK_MITEM PRIMARY KEY(ID)
) ENGINE=InnoDB;
+ALTER TABLE JCR_MITEM ADD CONSTRAINT JCR_FK_MITEM_PARENT FOREIGN KEY(PARENT_ID)
REFERENCES JCR_MITEM(ID);
CREATE UNIQUE INDEX JCR_IDX_MITEM_PARENT ON JCR_MITEM(PARENT_ID, NAME, I_INDEX, I_CLASS,
VERSION DESC);
CREATE UNIQUE INDEX JCR_IDX_MITEM_PARENT_NAME ON JCR_MITEM(I_CLASS, PARENT_ID, NAME,
I_INDEX, VERSION DESC);
CREATE UNIQUE INDEX JCR_IDX_MITEM_PARENT_ID ON JCR_MITEM(I_CLASS, PARENT_ID, ID, VERSION
DESC);
@@ -25,9 +25,9 @@
ORDER_NUM INTEGER NOT NULL,
PROPERTY_ID VARCHAR(96) NOT NULL,
STORAGE_DESC VARCHAR(512),
- CONSTRAINT JCR_PK_MVALUE PRIMARY KEY(ID),
- CONSTRAINT JCR_FK_MVALUE_PROPERTY FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_MITEM(ID)
+ CONSTRAINT JCR_PK_MVALUE PRIMARY KEY(ID)
) ENGINE=InnoDB;
+ALTER TABLE JCR_MVALUE ADD CONSTRAINT JCR_FK_MVALUE_PROPERTY FOREIGN KEY(PROPERTY_ID)
REFERENCES JCR_MITEM(ID);
CREATE UNIQUE INDEX JCR_IDX_MVALUE_PROPERTY ON JCR_MVALUE(PROPERTY_ID, ORDER_NUM);
CREATE INDEX JCR_IDX_MVALUE_STORAGE_DESC ON JCR_MVALUE(PROPERTY_ID, STORAGE_DESC);
CREATE TABLE JCR_MREF(
Modified:
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-sjdbc.mysql-utf8.sql
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-sjdbc.mysql-utf8.sql 2011-10-24
10:11:04 UTC (rev 5080)
+++
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-sjdbc.mysql-utf8.sql 2011-10-24
15:04:53 UTC (rev 5081)
@@ -13,9 +13,9 @@
N_ORDER_NUM INTEGER,
P_TYPE INTEGER,
P_MULTIVALUED BOOLEAN,
- CONSTRAINT JCR_PK_SITEM PRIMARY KEY(ID),
- CONSTRAINT JCR_FK_SITEM_PARENT FOREIGN KEY(PARENT_ID) REFERENCES JCR_SITEM(ID)
+ CONSTRAINT JCR_PK_SITEM PRIMARY KEY(ID)
) ENGINE=InnoDB;
+ALTER TABLE JCR_SITEM ADD CONSTRAINT JCR_FK_SITEM_PARENT FOREIGN KEY(PARENT_ID)
REFERENCES JCR_SITEM(ID);
CREATE UNIQUE INDEX JCR_IDX_SITEM_PARENT ON JCR_SITEM(CONTAINER_NAME, PARENT_ID,
NAME(255), I_INDEX, I_CLASS, VERSION DESC);
CREATE UNIQUE INDEX JCR_IDX_SITEM_PARENT_NAME ON JCR_SITEM(I_CLASS, CONTAINER_NAME,
PARENT_ID, NAME(255), I_INDEX, VERSION DESC);
CREATE UNIQUE INDEX JCR_IDX_SITEM_PARENT_ID ON JCR_SITEM(I_CLASS, CONTAINER_NAME,
PARENT_ID, ID, VERSION DESC);
@@ -26,9 +26,9 @@
ORDER_NUM INTEGER NOT NULL,
PROPERTY_ID VARCHAR(56) NOT NULL,
STORAGE_DESC VARCHAR(512),
- CONSTRAINT JCR_PK_SVALUE PRIMARY KEY(ID),
- CONSTRAINT JCR_FK_SVALUE_PROPERTY FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_SITEM(ID)
+ CONSTRAINT JCR_PK_SVALUE PRIMARY KEY(ID)
) ENGINE=InnoDB;
+ALTER TABLE JCR_SVALUE ADD CONSTRAINT JCR_FK_SVALUE_PROPERTY FOREIGN KEY(PROPERTY_ID)
REFERENCES JCR_SITEM(ID);
CREATE UNIQUE INDEX JCR_IDX_SVALUE_PROPERTY ON JCR_SVALUE(PROPERTY_ID, ORDER_NUM);
CREATE INDEX JCR_IDX_SVALUE_STORAGE_DESC ON JCR_SVALUE(PROPERTY_ID, STORAGE_DESC);
CREATE TABLE JCR_SREF(
Modified:
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-sjdbc.mysql.sql
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-sjdbc.mysql.sql 2011-10-24
10:11:04 UTC (rev 5080)
+++
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-sjdbc.mysql.sql 2011-10-24
15:04:53 UTC (rev 5081)
@@ -13,9 +13,9 @@
N_ORDER_NUM INTEGER,
P_TYPE INTEGER,
P_MULTIVALUED BOOLEAN,
- CONSTRAINT JCR_PK_SITEM PRIMARY KEY(ID),
- CONSTRAINT JCR_FK_SITEM_PARENT FOREIGN KEY(PARENT_ID) REFERENCES JCR_SITEM(ID)
+ CONSTRAINT JCR_PK_SITEM PRIMARY KEY(ID)
) ENGINE=InnoDB;
+ALTER TABLE JCR_SITEM ADD CONSTRAINT JCR_FK_SITEM_PARENT FOREIGN KEY(PARENT_ID)
REFERENCES JCR_SITEM(ID);
CREATE UNIQUE INDEX JCR_IDX_SITEM_PARENT ON JCR_SITEM(CONTAINER_NAME, PARENT_ID, NAME,
I_INDEX, I_CLASS, VERSION DESC);
CREATE UNIQUE INDEX JCR_IDX_SITEM_PARENT_NAME ON JCR_SITEM(I_CLASS, CONTAINER_NAME,
PARENT_ID, NAME, I_INDEX, VERSION DESC);
CREATE UNIQUE INDEX JCR_IDX_SITEM_PARENT_ID ON JCR_SITEM(I_CLASS, CONTAINER_NAME,
PARENT_ID, ID, VERSION DESC);
@@ -26,9 +26,9 @@
ORDER_NUM INTEGER NOT NULL,
PROPERTY_ID VARCHAR(96) NOT NULL,
STORAGE_DESC VARCHAR(512),
- CONSTRAINT JCR_PK_SVALUE PRIMARY KEY(ID),
- CONSTRAINT JCR_FK_SVALUE_PROPERTY FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_SITEM(ID)
+ CONSTRAINT JCR_PK_SVALUE PRIMARY KEY(ID)
) ENGINE=InnoDB;
+ALTER TABLE JCR_SVALUE ADD CONSTRAINT JCR_FK_SVALUE_PROPERTY FOREIGN KEY(PROPERTY_ID)
REFERENCES JCR_SITEM(ID);
CREATE UNIQUE INDEX JCR_IDX_SVALUE_PROPERTY ON JCR_SVALUE(PROPERTY_ID, ORDER_NUM);
CREATE INDEX JCR_IDX_SVALUE_STORAGE_DESC ON JCR_SVALUE(PROPERTY_ID, STORAGE_DESC);
CREATE TABLE JCR_SREF(