diff --git a/src/SQLCE4Umbraco/Sql/Version4_1_Upgrade.sql b/src/SQLCE4Umbraco/Sql/Version4_1_Upgrade.sql
index 926d486946..d58ebc28a2 100644
--- a/src/SQLCE4Umbraco/Sql/Version4_1_Upgrade.sql
+++ b/src/SQLCE4Umbraco/Sql/Version4_1_Upgrade.sql
@@ -1,6 +1,6 @@
/*******************************************************************************************
- Umbraco database installation script for SQL Server (upgrade from Umbraco 4.0.x)
+ Umbraco database installation script for SQL CE (upgrade from Umbraco 4.0.x)
IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT
@@ -24,133 +24,8 @@
********************************************************************************************/
-/* INSERT NEW MEDIA RECYCLE BIN NODE */
-SET IDENTITY_INSERT [umbracoNode] ON
-INSERT INTO umbracoNode (id, trashed, parentID, nodeUser, level, path, sortOrder, uniqueID, text, nodeObjectType)
-VALUES (-21, 0, -1, 0, 0, '-1,-21', 0, 'BF7C7CBC-952F-4518-97A2-69E9C7B33842', 'Recycle Bin', 'CF3D8E34-1C1C-41e9-AE56-878B57B32113')
-SET IDENTITY_INSERT [umbracoNode] OFF
+/* REMOVE CONSTRAINTS */
+ALTER TABLE [umbracoUser2app] DROP CONSTRAINT [FK_umbracoUser2app_umbracoApp]
;
-/* Add the mediaRecycleBin tree type */
-IF NOT EXISTS (SELECT treeAlias FROM umbracoAppTree WHERE treeAlias='mediaRecycleBin')
-INSERT INTO umbracoAppTree (treeSilent, treeInitialize, treeSortOrder, appAlias, treeAlias, treeTitle, treeIconClosed, treeIconOpen, treeHandlerAssembly, treeHandlerType)
-VALUES (0, 0, 0, 'media', 'mediaRecycleBin', 'RecycleBin', 'folder.gif', 'folder_o.gif', 'umbraco', 'cms.presentation.Trees.MediaRecycleBin')
-;
-
-
-CREATE TABLE [cmsPreviewXml](
- [nodeId] [int] NOT NULL,
- [versionId] [uniqueidentifier] NOT NULL,
- [timestamp] [datetime] NOT NULL,
- [xml] [ntext] NOT NULL,
- CONSTRAINT [PK_cmsContentPreviewXml] PRIMARY KEY CLUSTERED
-(
- [nodeId] ASC,
- [versionId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
-)
-
-
-/************************** CLEANUP ***********************************************/
-
-/* DELETE NON-EXISTING DOCUMENTS */
-delete from cmsDocument where nodeId not in (select id from umbracoNode)
-;
-
-/* CLEAN UNUSED CONTENT ROWS */
-delete from cmsContent where nodeId not in (select id from umbracoNode)
-;
-
-/* CLEAN UNUSED VERSIONS */
-delete from cmsContentVersion where contentid not in (select nodeId from cmsContent)
-;
-
-/* CLEAN UNUSED XML */
-delete from cmsContentXml where nodeid not in (select nodeId from cmsContent)
-;
-
-/* CLEAN UNUSED DOCUMENT TYPES */
-delete from cmsDocumentType where contentTypeNodeId not in (select nodeId from cmsContentType)
-;
-delete from cmsDocumentType where templateNodeId not in (select nodeid from cmsTemplate)
-;
-
-/* UPDATE EMPTY TEMPLATE REFERENCES IN DOCUMENTS */
-update cmsDocument set templateId = NULL where templateId not in (select nodeId from cmsTemplate)
-;
-
-/* DELETE ALL NOTIFICATIONS THAT NO LONGER HAVE NODES */
-delete from umbracoUser2NodeNotify where nodeId not in (select id from umbracoNode)
-;
-
-/* DELETE ALL NOTIFICATIONS THAT NO LONGER HAVE USERS */
-delete from umbracoUser2NodeNotify where userId not in (select id from umbracoUser)
-;
-
-/* DELETE UMBRACO NODE DATA THAT IS FLAGGED AS A DOCUMENT OBJECT TYPE THAT DOESN'T EXIST IN THE CONTENT TABLE ANY LONGER */
-delete from umbracoNode where id not in
-(select nodeId from cmsContent) and nodeObjectType = 'c66ba18e-eaf3-4cff-8a22-41b16d66a972'
-;
-
-/* DELETE PERMISSIONS THAT RELATED TO NON-EXISTING USERS */
-delete from umbracoUser2NodePermission where userId not in (select id from umbracoUser)
-;
-
-/* DELETE PERMISSIONS THAT RELATED TO NON-EXISTING NODES */
-delete from umbracoUser2NodePermission where nodeId not in (select id from umbracoNode)
-;
-
-/* SET MASTER TEMPLATE TO NULL WHEN THERE ISN'T ONE SPECIFIED */
-update cmsTemplate set [master] = NULL where [master] = 0
-
-/*
-We need to remove any data type that doesn't exist in umbracoNode as these shouldn't actually exist
-I think they must be left over from how Umbraco used to show the types of data types registered instead
-of using reflection. Here are the data types in the cmsDataType table that are not in umbracoNode:
-
-12 -91 A74EA9C9-8E18-4D2A-8CF6-73C6206C5DA6 Nvarchar
-22 -44 A3776494-0574-4D93-B7DE-EFDFDEC6F2D1 Ntext
-23 -128 A52C7C1C-C330-476E-8605-D63D3B84B6A6 Nvarchar
-24 -129 928639ED-9C73-4028-920C-1E55DBB68783 Nvarchar
-25 -130 A74EA9C9-8E18-4D2A-8CF6-73C6206C5DA6 Nvarchar
-26 -131 A74EA9C9-8E18-4D2A-8CF6-73C6206C5DA6 Nvarchar
-27 -132 A74EA9C9-8E18-4D2A-8CF6-73C6206C5DA6 Nvarchar
-28 -133 6C738306-4C17-4D88-B9BD-6546F3771597 Ntext
-29 -134 928639ED-9C73-4028-920C-1E55DBB68783 Nvarchar
-30 -50 AAF99BB2-DBBE-444D-A296-185076BF0484 Date
-39 1042 5E9B75AE-FACE-41C8-B47E-5F4B0FD82F83 Ntext
-40 1043 5E9B75AE-FACE-41C8-B47E-5F4B0FD82F83 Ntext
-41 1044 A74EA9C9-8E18-4D2A-8CF6-73C6206C5DA6 Ntext
-42 1045 A74EA9C9-8E18-4D2A-8CF6-73C6206C5DA6 Ntext
-47 1194 D15E1281-E456-4B24-AA86-1DDA3E4299D5 Ntext
-
-*/
-DELETE FROM cmsDataType WHERE nodeId NOT IN (SELECT id FROM umbracoNode)
-;
-
-/* Need to remove any data type prevalues that aren't related to a data type */
-DELETE FROM cmsDataTypePreValues WHERE dataTypeNodeID NOT IN (SELECT nodeId FROM cmsDataType)
-;
-
-/* Remove any domains that should not exist as they weren't deleted before when documents were deleted */
-DELETE FROM umbracoDomains WHERE domainRootStructureId NOT IN (SELECT id FROM umbracoNode)
-;
-
--- It would be good to add constraints from cmsLanguageText to umbracoLanguage but unfortunately, a 'zero' id
--- is entered into cmsLanguageText when a new entry is made, since there's not language with id of zero this won't work.
--- However, we need to remove translations that aren't related to a language (these would be left over from deleting a language)
-DELETE FROM cmsLanguageText
-WHERE languageId <> 0 AND languageId NOT IN (SELECT id FROM umbracoLanguage)
-;
-
-/* need to remove any content restrictions that don't exist in cmsContent */
-
-DELETE FROM cmsContentTypeAllowedContentType WHERE id NOT IN (SELECT nodeId FROM cmsContentType)
-;
-DELETE FROM cmsContentTypeAllowedContentType WHERE Allowedid NOT IN (SELECT nodeId FROM cmsContentType)
-;
-
-/* Though this should not have to be run because it's a new install, you need to clean the previews if you've been testing before the RC */
-DELETE FROM cmsPreviewXml WHERE VersionID NOT IN (SELECT VersionId FROM cmsContentVersion)
-;
-
-/************************** CLEANUP END ********************************************/
+ALTER TABLE [umbracoAppTree] DROP CONSTRAINT [FK_umbracoAppTree_umbracoApp]
+;
\ No newline at end of file
diff --git a/src/SQLCE4Umbraco/SqlCEInstaller.cs b/src/SQLCE4Umbraco/SqlCEInstaller.cs
index 8496eebc87..0d60c20288 100644
--- a/src/SQLCE4Umbraco/SqlCEInstaller.cs
+++ b/src/SQLCE4Umbraco/SqlCEInstaller.cs
@@ -22,14 +22,15 @@ namespace SqlCE4Umbraco
#region Private Constants
/// The latest database version this installer supports.
- private const DatabaseVersion LatestVersionSupported = DatabaseVersion.Version4_1;
+ private const DatabaseVersion LatestVersionSupported = DatabaseVersion.Version4_8;
/// The specifications to determine the database version.
private static readonly VersionSpecs[] m_VersionSpecs = new VersionSpecs[] {
- new VersionSpecs("id","umbracoNode", "-21", DatabaseVersion.Version4_1),
- new VersionSpecs("action","umbracoAppTree",DatabaseVersion.Version4),
- new VersionSpecs("description","cmsContentType",DatabaseVersion.Version3),
- new VersionSpecs("id","sysobjects",DatabaseVersion.None) };
+ new VersionSpecs("SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS LEFT OUTER JOIN umbracoApp ON appAlias = appAlias WHERE CONSTRAINT_NAME = 'FK_umbracoUser2app_umbracoApp'", 0, DatabaseVersion.Version4_8),
+ new VersionSpecs("SELECT id FROM umbracoNode WHERE id = -21", 1, DatabaseVersion.Version4_1),
+ new VersionSpecs("SELECT action FROM umbracoAppTree",DatabaseVersion.Version4),
+ new VersionSpecs("SELECT description FROM cmsContentType",DatabaseVersion.Version3),
+ new VersionSpecs("SELECT id FROM sysobjects",DatabaseVersion.None) };
#endregion
@@ -58,7 +59,7 @@ namespace SqlCE4Umbraco
{
get
{
- return false;
+ return CurrentVersion == DatabaseVersion.Version4_1;
}
}
diff --git a/src/SQLCE4Umbraco/SqlCEResources1.Designer.cs b/src/SQLCE4Umbraco/SqlCEResources1.Designer.cs
index 9fc552f5c8..ebc7ed1154 100644
--- a/src/SQLCE4Umbraco/SqlCEResources1.Designer.cs
+++ b/src/SQLCE4Umbraco/SqlCEResources1.Designer.cs
@@ -1,7 +1,7 @@
//------------------------------------------------------------------------------
//
// This code was generated by a tool.
-// Runtime Version:4.0.30319.269
+// Runtime Version:4.0.30319.17626
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -88,7 +88,7 @@ namespace SQLCE4Umbraco {
///
/// Looks up a localized string similar to /*******************************************************************************************
///
- /// Umbraco database installation script for SQL Server (upgrade from Umbraco 4.0.x)
+ /// Umbraco database installation script for SQL CE (upgrade from Umbraco 4.0.x)
///
/// IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT
///
@@ -96,7 +96,7 @@ namespace SQLCE4Umbraco {
///
/// Please increment this version number if ANY change is made to this script,
/// so compatibility with scripts for other database systems can be verified easily.
- /// The first 3 digits depict [rest of string was truncated]";.
+ /// The first 3 digits depict the [rest of string was truncated]";.
///
internal static string Version4_1_Upgrade {
get {
diff --git a/src/umbraco.businesslogic/GlobalSettings.cs b/src/umbraco.businesslogic/GlobalSettings.cs
index bd0d5df807..218bdd81ce 100644
--- a/src/umbraco.businesslogic/GlobalSettings.cs
+++ b/src/umbraco.businesslogic/GlobalSettings.cs
@@ -18,7 +18,7 @@ namespace umbraco
{
#region Private static fields
// CURRENT UMBRACO VERSION ID
- private static string _currentVersion = "4.8.0";
+ private static string _currentVersion = "4.8.1";
private static string _reservedUrlsCache;
private static string _reservedPathsCache;
diff --git a/src/umbraco.datalayer/SqlHelpers/MySql/MySqlInstaller.cs b/src/umbraco.datalayer/SqlHelpers/MySql/MySqlInstaller.cs
index 719bbff3dd..617d1daba3 100644
--- a/src/umbraco.datalayer/SqlHelpers/MySql/MySqlInstaller.cs
+++ b/src/umbraco.datalayer/SqlHelpers/MySql/MySqlInstaller.cs
@@ -21,14 +21,15 @@ namespace umbraco.DataLayer.SqlHelpers.MySql
#region Private Constants
/// The latest database version this installer supports.
- private const DatabaseVersion LatestVersionSupported = DatabaseVersion.Version4_1;
+ private const DatabaseVersion LatestVersionSupported = DatabaseVersion.Version4_8;
/// The specifications to determine the database version.
private static readonly VersionSpecs[] m_VersionSpecs = new VersionSpecs[] {
- new VersionSpecs("id","umbracoNode", "-21", DatabaseVersion.Version4_1),
- new VersionSpecs("action","umbracoAppTree",DatabaseVersion.Version4),
- new VersionSpecs("description","cmsContentType",DatabaseVersion.Version3),
- new VersionSpecs("version()","",DatabaseVersion.None) };
+ new VersionSpecs("SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS LEFT OUTER JOIN umbracoApp ON appAlias = appAlias WHERE CONSTRAINT_NAME = 'FK_umbracoUser2app_umbracoApp'", 0, DatabaseVersion.Version4_8),
+ new VersionSpecs("SELECT id FROM umbracoNode WHERE id = -21", 1, DatabaseVersion.Version4_1),
+ new VersionSpecs("SELECT action FROM umbracoAppTree", DatabaseVersion.Version4),
+ new VersionSpecs("SELECT description FROM cmsContentType", DatabaseVersion.Version3),
+ new VersionSpecs("SELECT version()", DatabaseVersion.None) };
#endregion
@@ -45,7 +46,7 @@ namespace umbraco.DataLayer.SqlHelpers.MySql
{
get
{
- return CurrentVersion == DatabaseVersion.Version4;
+ return CurrentVersion == DatabaseVersion.Version4_1;
}
}
diff --git a/src/umbraco.datalayer/SqlHelpers/SqlServer/SqlServerInstaller.cs b/src/umbraco.datalayer/SqlHelpers/SqlServer/SqlServerInstaller.cs
index 32603b85ed..74918e459b 100644
--- a/src/umbraco.datalayer/SqlHelpers/SqlServer/SqlServerInstaller.cs
+++ b/src/umbraco.datalayer/SqlHelpers/SqlServer/SqlServerInstaller.cs
@@ -20,14 +20,15 @@ namespace umbraco.DataLayer.SqlHelpers.SqlServer
#region Private Constants
/// The latest database version this installer supports.
- private const DatabaseVersion LatestVersionSupported = DatabaseVersion.Version4_1;
+ private const DatabaseVersion LatestVersionSupported = DatabaseVersion.Version4_8;
/// The specifications to determine the database version.
private static readonly VersionSpecs[] m_VersionSpecs = new VersionSpecs[] {
- new VersionSpecs("id","umbracoNode", "-21", DatabaseVersion.Version4_1),
- new VersionSpecs("action","umbracoAppTree",DatabaseVersion.Version4),
- new VersionSpecs("description","cmsContentType",DatabaseVersion.Version3),
- new VersionSpecs("id","sysobjects",DatabaseVersion.None) };
+ new VersionSpecs("SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS LEFT OUTER JOIN umbracoApp ON appAlias = appAlias WHERE CONSTRAINT_NAME = 'FK_umbracoUser2app_umbracoApp'", 0, DatabaseVersion.Version4_8),
+ new VersionSpecs("SELECT id FROM umbracoNode WHERE id = -21", 1, DatabaseVersion.Version4_1),
+ new VersionSpecs("SELECT action FROM umbracoAppTree", DatabaseVersion.Version4),
+ new VersionSpecs("SELECT description FROM cmsContentType", DatabaseVersion.Version3),
+ new VersionSpecs("SELECT id FROM sysobjects", DatabaseVersion.None) };
#endregion
@@ -44,7 +45,7 @@ namespace umbraco.DataLayer.SqlHelpers.SqlServer
{
get
{
- return CurrentVersion == DatabaseVersion.Version4;
+ return CurrentVersion == DatabaseVersion.Version4_1;
}
}
diff --git a/src/umbraco.datalayer/Utility/Installer/DefaultInstallerUtility.cs b/src/umbraco.datalayer/Utility/Installer/DefaultInstallerUtility.cs
index 05c71d202c..816fc94a8d 100644
--- a/src/umbraco.datalayer/Utility/Installer/DefaultInstallerUtility.cs
+++ b/src/umbraco.datalayer/Utility/Installer/DefaultInstallerUtility.cs
@@ -195,16 +195,37 @@ namespace umbraco.DataLayer.Utility.Installer
{
try
{
- if (!String.IsNullOrEmpty(v.Table) && !String.IsNullOrEmpty(v.Field) && !String.IsNullOrEmpty(v.Value))
- {
- IRecordsReader reader = SqlHelper.ExecuteReader(string.Format("SELECT {0} FROM {1} WHERE {0}={2}", v.Field, v.Table, v.Value));
- if (!reader.Read())
- continue;
- }
- else if (String.IsNullOrEmpty(v.Table))
- SqlHelper.ExecuteNonQuery(string.Format("SELECT {0}", v.Field));
- else
- SqlHelper.ExecuteNonQuery(string.Format("SELECT {0} FROM {1}", v.Field, v.Table));
+ if(v.ExpectedRows > -1)
+ {
+ var reader = SqlHelper.ExecuteReader(v.Sql);
+ var rowCount = 0;
+
+ if(reader.HasRecords)
+ {
+ while (reader.Read())
+ rowCount++;
+ }
+
+ if (v.ExpectedRows != rowCount)
+ continue;
+ }
+ else
+ {
+ SqlHelper.ExecuteNonQuery(v.Sql);
+ }
+
+ //if (!String.IsNullOrEmpty(v.Table) && !String.IsNullOrEmpty(v.Field) && !String.IsNullOrEmpty(v.Value))
+ //{
+ // IRecordsReader reader = SqlHelper.ExecuteReader(string.Format("SELECT {0} FROM {1} WHERE {0}={2}", v.Field, v.Table, v.Value));
+ // var canRead = reader.Read();
+ // if ((v.ShouldExist && !canRead) || (!v.ShouldExist && canRead))
+ // continue;
+ //}
+ //else if (String.IsNullOrEmpty(v.Table))
+ // SqlHelper.ExecuteNonQuery(string.Format("SELECT {0}", v.Field));
+ //else
+ // SqlHelper.ExecuteNonQuery(string.Format("SELECT {0} FROM {1}", v.Field, v.Table));
+
return v.Version;
}
catch { }
@@ -249,14 +270,11 @@ namespace umbraco.DataLayer.Utility.Installer
///
public struct VersionSpecs
{
- /// The name of the field that should exist in order to have at least the specified version.
- public readonly string Field;
- /// The name of the table whose field should exist in order to have at least the specified version.
- public readonly string Table;
- ///
- /// The value to look for in the field, if this is left empty it will not be queried.
- ///
- public readonly string Value;
+ /// The SQL statament to execute in order to test for the specified version
+ public readonly string Sql;
+
+ /// An integer identifying the expected row count from the Sql statement
+ public readonly int ExpectedRows;
/// The minimum version number of a database that contains the specified field.
public readonly DatabaseVersion Version;
@@ -264,29 +282,23 @@ namespace umbraco.DataLayer.Utility.Installer
///
/// Initializes a new instance of the struct.
///
- /// The field.
- /// The table.
+ /// The sql statement to execute.
/// The version.
- public VersionSpecs(string field, string table, DatabaseVersion version)
- {
- Field = field;
- Table = table;
- Version = version;
- Value = "";
- }
+ public VersionSpecs(string sql, DatabaseVersion version)
+ : this(sql, -1, version)
+ { }
///
/// Initializes a new instance of the struct.
- ///
- /// The field.
- /// The table.
+ ///
+ /// The sql statement to execute.
+ /// The expected row count.
/// The version.
- public VersionSpecs(string field, string table, string value, DatabaseVersion version)
+ public VersionSpecs(string sql, int expectedRows, DatabaseVersion version)
{
- Field = field;
- Table = table;
- Value = value;
- Version = version;
+ Sql = sql;
+ ExpectedRows = expectedRows;
+ Version = version;
}
}
}