diff --git a/bundles/org.eclipse.test.performance.ui/performanceui.jar b/bundles/org.eclipse.test.performance.ui/performanceui.jar
index 019cc18..57ed0e2 100644
--- a/bundles/org.eclipse.test.performance.ui/performanceui.jar
+++ b/bundles/org.eclipse.test.performance.ui/performanceui.jar
Binary files differ
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/db/DB_Results.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/db/DB_Results.java
index 21f8322..427cd3d 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/db/DB_Results.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/db/DB_Results.java
@@ -166,14 +166,19 @@
 	 * 	(see {@link IPerformancesConstants#NETWORK_DATABASE_LOCATION}).
 	 */
 	public static boolean updateDbConstants(boolean connected, int eclipseVersion, String databaseLocation) {
-		shutdown();
-		DB_CONNECTION = connected;
-		DB_LOCATION = databaseLocation == null ? IPerformancesConstants.NETWORK_DATABASE_LOCATION : databaseLocation;
-		DB_NAME = IPerformancesConstants.DATABASE_NAME_PREFIX + eclipseVersion;
-		DB_VERSION = "v" + eclipseVersion;
-		DB_VERSION_REF = "R-3." + (eclipseVersion % 10 - 1);
-		if (connected) {
-			return getDefault().fSQL != null;
+		if (DB_CONNECTION != connected ||
+			((databaseLocation == null && DB_LOCATION != null && !DB_LOCATION.equals(IPerformancesConstants.NETWORK_DATABASE_LOCATION)) ||
+					!DB_LOCATION.equals(databaseLocation)) ||
+			!DB_NAME.equals(IPerformancesConstants.DATABASE_NAME_PREFIX + eclipseVersion)) {
+			shutdown();
+			DB_CONNECTION = connected;
+			DB_LOCATION = databaseLocation == null ? IPerformancesConstants.NETWORK_DATABASE_LOCATION : databaseLocation;
+			DB_NAME = IPerformancesConstants.DATABASE_NAME_PREFIX + eclipseVersion;
+			DB_VERSION = "v" + eclipseVersion;
+			DB_VERSION_REF = "R-3." + (eclipseVersion % 10 - 1);
+			if (connected) {
+				return getDefault().fSQL != null;
+			}
 		}
 		return true;
 	}
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/ConfigTab.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/ConfigTab.java
index 7c22519..37fa49d 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/ConfigTab.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/ConfigTab.java
@@ -300,10 +300,12 @@
  * Dispose all SWT controls associated with the table.
  */
 private void disposeTable() {
-	Iterator cells = this.toolTips.keySet().iterator();
-	while (cells.hasNext()) {
-		ToolTip toolTip = (ToolTip) this.toolTips.get(cells.next());
-		toolTip.dispose();
+	if (this.toolTips != null) {
+		Iterator cells = this.toolTips.keySet().iterator();
+		while (cells.hasNext()) {
+			ToolTip toolTip = (ToolTip) this.toolTips.get(cells.next());
+			toolTip.dispose();
+		}
 	}
 	this.table.dispose();
 	this.tableOrigin = null;
diff --git a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/PerformanceResultsPreferencePage.java b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/PerformanceResultsPreferencePage.java
index c7b9861..081eaef 100644
--- a/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/PerformanceResultsPreferencePage.java
+++ b/bundles/org.eclipse.test.performance.ui/src/org/eclipse/test/internal/performance/results/ui/PerformanceResultsPreferencePage.java
@@ -518,15 +518,13 @@
 	this.defaultDimensionCombo.setText(defaultDimension);
 
 	// Init generated dimensions
-	int i = 0;
 	int count = this.resultsDimensionsList.getItemCount();
 	int[] indices = new int[count];
 	int n = 0;
-	String resultsDimension = store.getString(PRE_RESULTS_DIMENSION + "." + i);
+	String resultsDimension = store.getString(PRE_RESULTS_DIMENSION + "." + n);
 	while (resultsDimension.length() > 0) {
 		indices[n++] = this.resultsDimensionsList.indexOf(resultsDimension);
-		i++;
-		resultsDimension = store.getString(PRE_RESULTS_DIMENSION + "." + i);
+		resultsDimension = store.getString(PRE_RESULTS_DIMENSION + "." + n);
 	}
 	if (n < count) {
 		System.arraycopy(indices, 0, indices = new int[n], 0, n);
@@ -708,8 +706,9 @@
 		IEclipsePreferences preferences = new InstanceScope().getNode(PLUGIN_ID);
 		preferences.flush();
 		BuildsView buildsView = (BuildsView) PerformancesView.getWorkbenchView("org.eclipse.test.internal.performance.results.ui.BuildsView");
-			if (buildsView != null)
-				buildsView.resetView();
+		if (buildsView != null) {
+			buildsView.resetView();
+		}
 	} catch (BackingStoreException e) {
 		e.printStackTrace();
 		return false;
