http://www.mediawiki.org/wiki/Special:Code/MediaWiki/54185
Revision: 54185 Author: daniel Date: 2009-08-01 20:49:56 +0000 (Sat, 01 Aug 2009) Log Message: ----------- partial revert of previous change: do use orphan deletion, but use join instead of subquery Modified Paths: -------------- trunk/WikiWord/WikiWordBuilder/src/main/java/de/brightbyte/wikiword/store/builder/DatabaseLocalConceptStoreBuilder.java trunk/WikiWord/WikiWordBuilder/src/main/java/de/brightbyte/wikiword/store/builder/DatabaseWikiWordStoreBuilder.java Modified: trunk/WikiWord/WikiWordBuilder/src/main/java/de/brightbyte/wikiword/store/builder/DatabaseLocalConceptStoreBuilder.java =================================================================== --- trunk/WikiWord/WikiWordBuilder/src/main/java/de/brightbyte/wikiword/store/builder/DatabaseLocalConceptStoreBuilder.java 2009-08-01 20:12:28 UTC (rev 54184) +++ trunk/WikiWord/WikiWordBuilder/src/main/java/de/brightbyte/wikiword/store/builder/DatabaseLocalConceptStoreBuilder.java 2009-08-01 20:49:56 UTC (rev 54185) @@ -250,7 +250,8 @@ deleteDataFrom(rcId, op, langlinkTable, "resource"); deleteDataFrom(rcId, op, broaderTable, "resource"); - deleteDataFrom(rcId, op, conceptTable, "id", aboutTable, "concept", "resource", true); + deleteDataFrom(rcId, op, aboutTable, "resource"); + deleteOrphansFrom(rcId, op, conceptTable, aboutTable, "concept"); deleteDataFrom(rcId, op, aliasTable, "resource"); deleteDataFrom(rcId, op, sectionTable, "resource"); Modified: trunk/WikiWord/WikiWordBuilder/src/main/java/de/brightbyte/wikiword/store/builder/DatabaseWikiWordStoreBuilder.java =================================================================== --- trunk/WikiWord/WikiWordBuilder/src/main/java/de/brightbyte/wikiword/store/builder/DatabaseWikiWordStoreBuilder.java 2009-08-01 20:12:28 UTC (rev 54184) +++ trunk/WikiWord/WikiWordBuilder/src/main/java/de/brightbyte/wikiword/store/builder/DatabaseWikiWordStoreBuilder.java 2009-08-01 20:49:56 UTC (rev 54185) @@ -289,13 +289,21 @@ ReferenceField f = (ReferenceField)ref.getField(refField); String field = f.getTargetField(); - + + /* sql = "DELETE FROM " + table.getSQLName() + " "; sql += " WHERE NOT EXISTS ( "; sql += " SELECT * FROM " + ref.getSQLName() + " AS R "; sql += " WHERE R." + refField + " = "+ table.getSQLName() + "." + field; sql += " )"; + */ + sql = "DELETE FROM E "; + sql += " USING " + table.getSQLName() + " AS E "; + sql += " LEFT JOIN " + ref.getSQLName() + " AS R "; + sql += " ON R." + refField + " = E." + field; + sql += " WHERE R." + refField + " IS NULL;"; + long t = System.currentTimeMillis(); int c = executeUpdate("deleteDataFrom", sql); trace("deleted "+c+" orphan rows from "+table.getName()+" where no reference exists from "+ref.getSQLName()+"."+refField+", took "+(System.currentTimeMillis()-t)/1000+" sec"); _______________________________________________ MediaWiki-CVS mailing list MediaWiki-CVS@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs