Hi Sergiu, Shouldn't this have been a new migrator instead? Artem had a comment about leaving the old XWD_ARCHIVE column in the document table. Lots of users have already executed this migrator so they won't execute this. So if it's important to have everyone in the same state, I think a new migrator would be maybe better. But then, maybe it's not important? Thanks -Vincent On Dec 14, 2007, at 2:14 PM, sdumitriu (SVN) wrote:
Author: sdumitriu Date: 2007-12-14 14:14:08 +0100 (Fri, 14 Dec 2007) New Revision: 6377
Modified: xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/ store/migration/hibernate/R4359XWIKI1459Migrator.java Log: XWIKI-1954: When migrating the document archive format from 1.1 to 1.2, delete the contents of the old XWD_ARCHIVE field Fixed.
Modified: xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/ xwiki/store/migration/hibernate/R4359XWIKI1459Migrator.java =================================================================== --- xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/ store/migration/hibernate/R4359XWIKI1459Migrator.java 2007-12-14 13:08:02 UTC (rev 6376) +++ xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/ store/migration/hibernate/R4359XWIKI1459Migrator.java 2007-12-14 13:14:08 UTC (rev 6377) @@ -19,6 +19,7 @@ */ package com.xpn.xwiki.store.migration.hibernate;
+import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; @@ -88,7 +89,7 @@ Statement stmt = session.connection().createStatement(); ResultSet rs; try { - rs = stmt.executeQuery("select XWD_ID, XWD_ARCHIVE, XWD_FULLNAME from xwikidoc"); + rs = stmt.executeQuery("select XWD_ID, XWD_ARCHIVE, XWD_FULLNAME from xwikidoc where XWD_ARCHIVE is not null order by XWD_VERSION"); } catch (SQLException e) { // most likely there is no XWD_ARCHIVE column, so migration is not needed // is there easier way to find what column is not exist? @@ -97,6 +98,7 @@ Transaction originalTransaction = ((XWikiHibernateVersioningStore )context.getWiki().getVersioningStore()).getTransaction(context);
((XWikiHibernateVersioningStore )context.getWiki().getVersioningStore()).setSession(null, context);
((XWikiHibernateVersioningStore )context.getWiki().getVersioningStore()).setTransaction(null, context); + PreparedStatement deleleteStatement = session.connection().prepareStatement("update xwikidoc set XWD_ARCHIVE=null where XWD_ID=?");
while (rs.next()) { if (logger.isInfoEnabled()) { @@ -104,13 +106,13 @@ } long docId = Long.parseLong(rs.getString(1)); String sArchive = rs.getString(2); - if (sArchive==null) { - continue; - } XWikiDocumentArchive docArchive = new XWikiDocumentArchive(docId); docArchive.setArchive(sArchive);
context .getWiki().getVersioningStore().saveXWikiDocArchive(docArchive, true, context); + deleleteStatement.setLong(1, docId); + deleleteStatement.executeUpdate(); } + deleleteStatement.close(); stmt.close();
((XWikiHibernateVersioningStore )context.getWiki().getVersioningStore()).setSession(session, context);
((XWikiHibernateVersioningStore )context .getWiki().getVersioningStore()).setTransaction(originalTransaction, context);
_______________________________________________ notifications mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/notifications