Author: tolusha
Date: 2012-02-29 07:50:41 -0500 (Wed, 29 Feb 2012)
New Revision: 5712
Modified:
jcr/trunk/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/lock/infinispan/ISPNLockTableHandler.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/DBConstants.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainerChecker.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MultiDbJDBCConnection.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/SingleDbJDBCConnection.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/SingleDbJDBCConnection.java
Log:
EXOJCR-1762: repair db
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/DBConstants.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/DBConstants.java 2012-02-29
12:48:50 UTC (rev 5711)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/DBConstants.java 2012-02-29
12:50:41 UTC (rev 5712)
@@ -145,6 +145,11 @@
protected String FIND_PROPERTIES_BY_PARENTID;
/**
+ * FIND_LOWEST_PROPERTY_VERSIONS.
+ */
+ protected String FIND_LOWEST_PROPERTY_VERSIONS;
+
+ /**
* INSERT_NODE.
*/
protected String INSERT_NODE;
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java 2012-02-29
12:48:50 UTC (rev 5711)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java 2012-02-29
12:50:41 UTC (rev 5712)
@@ -167,6 +167,8 @@
protected PreparedStatement findPropertiesByParentId;
+ protected PreparedStatement findLowestPropertyVersions;
+
protected PreparedStatement insertItem;
protected PreparedStatement insertNode;
@@ -481,6 +483,11 @@
findPropertiesByParentId.close();
}
+ if (findLowestPropertyVersions != null)
+ {
+ findLowestPropertyVersions.close();
+ }
+
if (insertItem != null)
{
insertItem.close();
@@ -2666,6 +2673,16 @@
}
};
+ protected ResultSet findLowestPropertyVersions() throws SQLException
+ {
+ if (findLowestPropertyVersions == null)
+ {
+ findLowestPropertyVersions =
dbConnection.prepareStatement(FIND_LOWEST_PROPERTY_VERSIONS);
+ }
+
+ return findLowestPropertyVersions.executeQuery();
+ }
+
protected abstract int addNodeRecord(NodeData data) throws SQLException;
protected abstract int addPropertyRecord(PropertyData prop) throws SQLException;
@@ -2727,4 +2744,5 @@
protected abstract ResultSet findValuesStorageDescriptorsByPropertyId(String cid)
throws SQLException;
protected abstract ResultSet findValueByPropertyIdOrderNumber(String cid, int
orderNumb) throws SQLException;
+
}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainerChecker.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainerChecker.java 2012-02-29
12:48:50 UTC (rev 5711)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainerChecker.java 2012-02-29
12:50:41 UTC (rev 5712)
@@ -23,7 +23,7 @@
import org.exoplatform.services.jcr.config.WorkspaceEntry;
import org.exoplatform.services.jcr.core.security.JCRRuntimePermissions;
import org.exoplatform.services.jcr.impl.Constants;
-import org.exoplatform.services.jcr.impl.checker.AssignRootAsParentRepair;
+import org.exoplatform.services.jcr.impl.checker.AssignerRootAsParent;
import org.exoplatform.services.jcr.impl.checker.DummyRepair;
import org.exoplatform.services.jcr.impl.checker.InspectionQuery;
import
org.exoplatform.services.jcr.impl.checker.InspectionQueryFilteredMultivaluedProperties;
@@ -456,7 +456,7 @@
: "select * from JCR_SITEM I where I.CONTAINER_NAME='" +
jdbcDataContainer.containerName
+ "' and NOT EXISTS(select * from JCR_SITEM P where P.ID =
I.PARENT_ID)", new String[]{
DBConstants.COLUMN_ID, DBConstants.COLUMN_PARENTID, DBConstants.COLUMN_NAME,
DBConstants.COLUMN_CLASS},
- "Items that do not have parent nodes", new
AssignRootAsParentRepair(jdbcDataContainer
+ "Items that do not have parent nodes", new
AssignerRootAsParent(jdbcDataContainer
.getConnectionFactory())));
itemsInspectionQuery
@@ -524,7 +524,7 @@
: "select * from JCR_SITEM I where I.ID = I.PARENT_ID and
I.CONTAINER_NAME='"
+ jdbcDataContainer.containerName + "' and I.NAME <>
'" + Constants.ROOT_PARENT_NAME + "'", new String[]{
DBConstants.COLUMN_ID, DBConstants.COLUMN_PARENTID, DBConstants.COLUMN_NAME},
"An item is its own parent.",
- new AssignRootAsParentRepair(jdbcDataContainer.getConnectionFactory())));
+ new AssignerRootAsParent(jdbcDataContainer.getConnectionFactory())));
itemsInspectionQuery
.add(new InspectionQuery(
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MultiDbJDBCConnection.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MultiDbJDBCConnection.java 2012-02-29
12:48:50 UTC (rev 5711)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MultiDbJDBCConnection.java 2012-02-29
12:50:41 UTC (rev 5712)
@@ -137,6 +137,10 @@
FIND_PROPERTIES_BY_PARENTID = "select * from JCR_MITEM" + " where
I_CLASS=2 and PARENT_ID=?" + " order by ID";
+ FIND_LOWEST_PROPERTY_VERSIONS =
+ "select max(VERSION) as MAX_VERSION, PARENT_ID, NAME, I_CLASS, I_INDEX from
JCR_SITEM WHERE I_CLASS=2"
+ + " GROUP BY PARENT_ID, NAME, I_CLASS, I_INDEX HAVING count(VERSION)
> 1";
+
INSERT_NODE =
"insert into JCR_MITEM(ID, PARENT_ID, NAME, VERSION, I_CLASS, I_INDEX,
N_ORDER_NUM) VALUES(?,?,?,?,"
+ I_CLASS_NODE + ",?,?)";
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/SingleDbJDBCConnection.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/SingleDbJDBCConnection.java 2012-02-29
12:48:50 UTC (rev 5711)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/SingleDbJDBCConnection.java 2012-02-29
12:50:41 UTC (rev 5712)
@@ -146,6 +146,10 @@
FIND_PROPERTIES_BY_PARENTID =
"select * from JCR_SITEM" + " where I_CLASS=2 and
CONTAINER_NAME=? and PARENT_ID=?" + " order by ID";
+ FIND_LOWEST_PROPERTY_VERSIONS =
+ "select max(VERSION) as MAX_VERSION, PARENT_ID, NAME, CONTAINER_NAME,
I_CLASS, I_INDEX from JCR_SITEM WHERE I_CLASS=2"
+ + " GROUP BY PARENT_ID, CONTAINER_NAME, NAME, I_CLASS, I_INDEX HAVING
count(VERSION) > 1";
+
INSERT_NODE =
"insert into JCR_SITEM(ID, PARENT_ID, NAME, CONTAINER_NAME, VERSION,
I_CLASS, I_INDEX, N_ORDER_NUM) VALUES(?,?,?,?,?,"
+ I_CLASS_NODE + ",?,?)";
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java 2012-02-29
12:48:50 UTC (rev 5711)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java 2012-02-29
12:50:41 UTC (rev 5712)
@@ -181,6 +181,10 @@
FIND_NODES_BY_PARENTID_AND_PATTERN_CQ_TEMPLATE =
"select I.*, P.NAME AS PROP_NAME, V.ORDER_NUM, V.DATA from JCR_MITEM I,
JCR_MITEM P, JCR_MVALUE V";
+ FIND_LOWEST_PROPERTY_VERSIONS =
+ "select max(VERSION) as MAX_VERSION, PARENT_ID, NAME, I_CLASS, I_INDEX from
JCR_SITEM WHERE I_CLASS=2"
+ + " GROUP BY PARENT_ID, NAME, I_CLASS, I_INDEX HAVING count(VERSION)
> 1";
+
INSERT_NODE =
"insert into JCR_MITEM(ID, PARENT_ID, NAME, VERSION, I_CLASS, I_INDEX,
N_ORDER_NUM) VALUES(?,?,?,?,"
+ I_CLASS_NODE + ",?,?)";
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/SingleDbJDBCConnection.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/SingleDbJDBCConnection.java 2012-02-29
12:48:50 UTC (rev 5711)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/SingleDbJDBCConnection.java 2012-02-29
12:50:41 UTC (rev 5712)
@@ -190,6 +190,10 @@
FIND_NODES_BY_PARENTID_AND_PATTERN_CQ_TEMPLATE =
"select I.*, P.NAME AS PROP_NAME, V.ORDER_NUM, V.DATA from JCR_SITEM I,
JCR_SITEM P, JCR_SVALUE V";
+ FIND_LOWEST_PROPERTY_VERSIONS =
+ "select max(VERSION) as MAX_VERSION, PARENT_ID, NAME, CONTAINER_NAME,
I_CLASS, I_INDEX from JCR_SITEM WHERE I_CLASS=2"
+ + " GROUP BY PARENT_ID, CONTAINER_NAME, NAME, I_CLASS, I_INDEX HAVING
count(VERSION) > 1";
+
INSERT_NODE =
"insert into JCR_SITEM(ID, PARENT_ID, NAME, CONTAINER_NAME, VERSION,
I_CLASS, I_INDEX, N_ORDER_NUM) VALUES(?,?,?,?,?,"
+ I_CLASS_NODE + ",?,?)";
Modified:
jcr/trunk/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/lock/infinispan/ISPNLockTableHandler.java
===================================================================
---
jcr/trunk/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/lock/infinispan/ISPNLockTableHandler.java 2012-02-29
12:48:50 UTC (rev 5711)
+++
jcr/trunk/exo.jcr.component.core.impl.infinispan.v5/src/main/java/org/exoplatform/services/jcr/impl/core/lock/infinispan/ISPNLockTableHandler.java 2012-02-29
12:50:41 UTC (rev 5712)
@@ -20,6 +20,7 @@
import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
import org.exoplatform.services.jcr.config.WorkspaceEntry;
+import org.exoplatform.services.jcr.impl.checker.DummyRepair;
import org.exoplatform.services.jcr.impl.checker.InspectionQuery;
import org.exoplatform.services.jcr.impl.core.lock.AbstractLockTableHandler;
import org.exoplatform.services.log.ExoLogger;
@@ -54,7 +55,8 @@
*/
protected InspectionQuery getSelectQuery() throws SQLException
{
- return new InspectionQuery("SELECT * FROM " + getTableName(), new
String[]{getIdColumn()}, "Locks table match");
+ return new InspectionQuery("SELECT * FROM " + getTableName(), new
String[]{getIdColumn()}, "Locks table match",
+ new DummyRepair());
}
/**
@@ -63,7 +65,7 @@
public InspectionQuery getDeleteQuery(String nodeId) throws SQLException
{
return new InspectionQuery("DELETE FROM " + getTableName() + " WHERE
" + getIdColumn() + "='" + nodeId + "'",
- new String[]{}, "");
+ new String[]{}, "", new DummyRepair());
}
/**