Improved Checkout performance
B2016-012 Bug Fixed. Not sure how, but the issue is no longer seen.
This commit is contained in:
parent
7c7e29053c
commit
0bcbbd9235
@ -7873,7 +7873,9 @@ BEGIN
|
|||||||
(select convert(bigint,max(lastchanged)) from contents) LastContentChange
|
(select convert(bigint,max(lastchanged)) from contents) LastContentChange
|
||||||
FROM [Sessions]
|
FROM [Sessions]
|
||||||
WHERE DTSEnd IS NULL
|
WHERE DTSEnd IS NULL
|
||||||
END ELSE BEGIN
|
END
|
||||||
|
ELSE
|
||||||
|
BEGIN
|
||||||
DECLARE @ObjectAndEnhancedIDs Table
|
DECLARE @ObjectAndEnhancedIDs Table
|
||||||
(
|
(
|
||||||
ObjectID int
|
ObjectID int
|
||||||
@ -7881,105 +7883,89 @@ BEGIN
|
|||||||
IF @ObjectType = 0 BEGIN
|
IF @ObjectType = 0 BEGIN
|
||||||
INSERT INTO @ObjectAndEnhancedIDs
|
INSERT INTO @ObjectAndEnhancedIDs
|
||||||
select ItemID from vefn_GetEnhancedProcedures(@ObjectID)
|
select ItemID from vefn_GetEnhancedProcedures(@ObjectID)
|
||||||
--select distinct itemid from
|
|
||||||
--items ii
|
|
||||||
--join (select *, cast(config as xml) xconfig from contents
|
|
||||||
--) cc on cc.contentid = ii.contentid
|
|
||||||
--cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced)
|
|
||||||
--where cc.Type = 0 and (xEnhanced.value('@ItemID', 'int') = @ObjectID or
|
|
||||||
--itemid = @ObjectID)
|
|
||||||
END
|
END
|
||||||
ELSE IF @ObjectType = 2 BEGIN
|
ELSE IF @ObjectType = 2 BEGIN
|
||||||
INSERT INTO @ObjectAndEnhancedIDs
|
INSERT INTO @ObjectAndEnhancedIDs
|
||||||
select VersionID from vefn_GetEnhancedDocVersions(@ObjectID)
|
select VersionID from vefn_GetEnhancedDocVersions(@ObjectID)
|
||||||
--select distinct versionid from
|
|
||||||
--(select *, cast(config as xml) xconfig from docversions) dv
|
|
||||||
--cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced)
|
|
||||||
--where xEnhanced.value('@VersionID', 'int') = @ObjectID or versionid = @ObjectID
|
|
||||||
END
|
END
|
||||||
ELSE IF @ObjectType = 3 BEGIN
|
ELSE IF @ObjectType = 3 BEGIN
|
||||||
INSERT INTO @ObjectAndEnhancedIDs
|
INSERT INTO @ObjectAndEnhancedIDs
|
||||||
select FolderID from vefn_GetEnhancedFolders(@ObjectID)
|
select FolderID from vefn_GetEnhancedFolders(@ObjectID)
|
||||||
--select distinct dv.folderid from
|
|
||||||
--(select *, cast(config as xml) xconfig from docversions) dv
|
|
||||||
--cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced)
|
|
||||||
--join docversions denh on xEnhanced.value('@VersionID', 'int') = denh.VersionID
|
|
||||||
--where denh.FolderID = @ObjectID or dv.folderid = @ObjectID
|
|
||||||
END
|
END
|
||||||
ELSE BEGIN
|
ELSE BEGIN
|
||||||
INSERT INTO @ObjectAndEnhancedIDs select @ObjectID
|
INSERT INTO @ObjectAndEnhancedIDs select @ObjectID
|
||||||
END
|
END
|
||||||
--look to see if object is already checked out in owner table as passed object type
|
|
||||||
INSERT INTO @CheckOuts SELECT DISTINCT SessionID FROM Owners
|
INSERT INTO @CheckOuts SELECT DISTINCT SessionID FROM Owners
|
||||||
WHERE OwnerItemID in (select ObjectID from @ObjectAndEnhancedIDs) AND OwnerType = @ObjectType
|
WHERE OwnerItemID in (select ObjectID from @ObjectAndEnhancedIDs) AND OwnerType = @ObjectType
|
||||||
--look to see if object is part of a checked out docversion as passed object type
|
IF @ObjectType = 2
|
||||||
DECLARE @VersionIDList varchar(max)
|
BEGIN
|
||||||
SELECT @VersionIDList = COALESCE(@VersionIDList + ',','') + CAST(OwnerItemID as varchar(10)) FROM Owners WHERE OwnerType = 2
|
with ItemZ (VersionID,ItemID,PreviousID,SessionID)
|
||||||
IF ISNULL(@VersionIDList,'') != '' AND @ObjectType = 0 BEGIN --procedure
|
as(
|
||||||
|
--> Procedure Owners
|
||||||
|
select null,II.ItemID, PreviousID, SessionID
|
||||||
|
from Owners OO
|
||||||
|
Join Items II on OO.OwnerItemID= II.ItemID
|
||||||
|
Where OO.OwnerType=0
|
||||||
|
UNION ALL --> Document Owners
|
||||||
|
select null,II.ItemID, PreviousID, SessionID
|
||||||
|
from Owners OO
|
||||||
|
Join Entries EE ON OO.OwnerItemID = EE.DocID
|
||||||
|
Join Items II on EE.ContentID= II.ContentID
|
||||||
|
Where OO.OwnerType=1
|
||||||
|
UNION ALL --> Previous Owners
|
||||||
|
Select null, ii.ItemID, ii.PreviousID,ZZ.SessionID From ItemZ ZZ
|
||||||
|
Join Items II ON II.ItemID = ZZ.PreviousID
|
||||||
|
Where ZZ.VersionID IS NULL and ZZ.PreviousID IS NOT NULL
|
||||||
|
UNION ALL -- Parts Owners
|
||||||
|
Select null, II.ItemID, II.PreviousID, ZZ.SessionID
|
||||||
|
from ItemZ ZZ
|
||||||
|
Join Parts PP ON PP.ItemID = ZZ.ItemID
|
||||||
|
Join Items II ON II.ContentID = PP.ContentID
|
||||||
|
Where ZZ.VersionID IS NULL
|
||||||
|
UNION ALL -- Version Owners
|
||||||
|
Select DV.VersionID,null,null,ZZ.SessionID From ItemZ ZZ
|
||||||
|
Join DocVersions DV ON ZZ.ItemID = DV.ItemID
|
||||||
|
Where ZZ.VersionID IS NULL AND ZZ.PreviousID IS NULL
|
||||||
|
)
|
||||||
|
--Select Distinct 'Phase 2b' Result, * from Itemz
|
||||||
INSERT INTO @CheckOuts
|
INSERT INTO @CheckOuts
|
||||||
SELECT ss.SessionID FROM dbo.vefn_GetVersionItems(@VersionIDList) vi
|
Select DIstinct SessionID from ItemZ
|
||||||
INNER JOIN Contents cc ON vi.ContentID = cc.ContentID
|
where VersionID in(select ObjectID FROM @ObjectAndEnhancedIDs)
|
||||||
INNER JOIN Owners oo ON vi.VersionID = oo.OwnerItemID
|
|
||||||
INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID
|
|
||||||
WHERE cc.Type = 0 AND vi.ItemID in (select ObjectID from @ObjectAndEnhancedIDs)
|
|
||||||
END
|
|
||||||
IF ISNULL(@VersionIDList,'') != '' AND @ObjectType = 1 BEGIN --document
|
|
||||||
INSERT INTO @CheckOuts
|
|
||||||
SELECT ss.SessionID FROM dbo.vefn_GetVersionItems(@VersionIDList) vi
|
|
||||||
INNER JOIN Contents cc ON vi.ContentID = cc.ContentID
|
|
||||||
INNER JOIN Entries ee ON vi.ContentID = ee.ContentID
|
|
||||||
INNER JOIN Owners oo ON vi.VersionID = oo.OwneritemID
|
|
||||||
INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID
|
|
||||||
WHERE ee.DocID in (select ObjectID from @ObjectAndEnhancedIDs)
|
|
||||||
END
|
|
||||||
--look to see if object type is docversion that no part of docversion passed is checked out
|
|
||||||
IF @ObjectType = 2 BEGIN
|
|
||||||
SELECT @VersionIDList = COALESCE(@VersionIDList + ',','') + CAST(ObjectID as varchar(10)) FROM @ObjectAndEnhancedIDs
|
|
||||||
IF ISNULL(@VersionIDList,'') != '' BEGIN
|
|
||||||
--see what procedures maybe checked out
|
|
||||||
INSERT INTO @CheckOuts
|
|
||||||
SELECT ss.SessionID FROM dbo.vefn_GetVersiONItems(@VersionIDList) vi
|
|
||||||
INNER JOIN Contents cc ON vi.ContentID = cc.ContentID
|
|
||||||
INNER JOIN Owners oo ON vi.ItemID = oo.OwnerItemID
|
|
||||||
INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID
|
|
||||||
WHERE cc.Type = 0
|
|
||||||
--see what documents maybe checked out
|
|
||||||
INSERT INTO @CheckOuts
|
|
||||||
SELECT ss.SessionID FROM dbo.vefn_GetVersiONItems(@VersionIDList) vi
|
|
||||||
INNER JOIN Contents cc ON vi.ContentID = cc.ContentID
|
|
||||||
INNER JOIN Entries ee ON vi.ContentID = ee.ContentID
|
|
||||||
INNER JOIN Owners oo ON ee.DocID = oo.OwnerItemID
|
|
||||||
INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID
|
|
||||||
END
|
|
||||||
END
|
END
|
||||||
--look to see if object type is folder that no part of folder passed is checked out
|
--look to see if object type is folder that no part of folder passed is checked out
|
||||||
IF @ObjectType = 3 BEGIN
|
IF @ObjectType = 3 BEGIN
|
||||||
SELECT @VersionIDList = COALESCE(@VersionIDList + ',','') + CAST(VersionID as varchar(10))
|
with ItemZ (VersionID,ItemID,PreviousID,SessionID)
|
||||||
FROM DocVersions where FolderID in (SELECT ObjectID FROM @ObjectAndEnhancedIDs)
|
as(
|
||||||
IF ISNULL(@VersionIDList,'') != '' BEGIN
|
--> Procedure Owners
|
||||||
--DECLARE @VersionID int
|
select null,II.ItemID, PreviousID, SessionID
|
||||||
--SELECT @VersionID = VersionID from DocVersions
|
from Owners OO
|
||||||
--WHERE FolderID in (select ObjectID from @ObjectAndEnhancedIDs)
|
Join Items II on OO.OwnerItemID= II.ItemID
|
||||||
-- Add this DocVersion to @Checkouts
|
Where OO.OwnerType=0
|
||||||
INSERT INTO @CheckOuts SELECT DISTINCT SessionID FROM Owners
|
UNION ALL --> Document Owners
|
||||||
WHERE OwnerItemID in
|
select null,II.ItemID, PreviousID, SessionID
|
||||||
(select VersionID from DocVersions where FolderID in (select ObjectID from @ObjectAndEnhancedIDs)) AND OwnerType = 2
|
from Owners OO
|
||||||
--see what procedures maybe checked out
|
Join Entries EE ON OO.OwnerItemID = EE.DocID
|
||||||
|
Join Items II on EE.ContentID= II.ContentID
|
||||||
|
Where OO.OwnerType=1
|
||||||
|
UNION ALL --> Previous Owners
|
||||||
|
Select null, ii.ItemID, ii.PreviousID,ZZ.SessionID From ItemZ ZZ
|
||||||
|
Join Items II ON II.ItemID = ZZ.PreviousID
|
||||||
|
Where ZZ.VersionID IS NULL and ZZ.PreviousID IS NOT NULL
|
||||||
|
UNION ALL -- Parts Owners
|
||||||
|
Select null, II.ItemID, II.PreviousID, ZZ.SessionID
|
||||||
|
from ItemZ ZZ
|
||||||
|
Join Parts PP ON PP.ItemID = ZZ.ItemID
|
||||||
|
Join Items II ON II.ContentID = PP.ContentID
|
||||||
|
Where ZZ.VersionID IS NULL
|
||||||
|
UNION ALL -- Version Owners
|
||||||
|
Select DV.VersionID,null,null,ZZ.SessionID From ItemZ ZZ
|
||||||
|
Join DocVersions DV ON ZZ.ItemID = DV.ItemID
|
||||||
|
Where ZZ.VersionID IS NULL AND ZZ.PreviousID IS NULL
|
||||||
|
)
|
||||||
|
--Select Distinct 'Phase 2b' Result, * from Itemz
|
||||||
INSERT INTO @CheckOuts
|
INSERT INTO @CheckOuts
|
||||||
SELECT DISTINCT ss.SessionID FROM dbo.vefn_GetVersiONItems(@VersionIDList) vi
|
Select DIstinct SessionID from ItemZ
|
||||||
INNER JOIN Contents cc ON vi.ContentID = cc.ContentID
|
where VersionID in(select ObjectID FROM @ObjectAndEnhancedIDs)
|
||||||
INNER JOIN Owners oo ON vi.ItemID = oo.OwnerItemID
|
|
||||||
INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID
|
|
||||||
WHERE cc.Type = 0 and ss.SessionID not in (select SessionID FROM @CheckOuts)
|
|
||||||
--see what documents maybe checked out
|
|
||||||
INSERT INTO @CheckOuts
|
|
||||||
SELECT DISTINCT ss.SessionID FROM dbo.vefn_GetVersiONItems(@VersionIDList) vi
|
|
||||||
INNER JOIN Contents cc ON vi.ContentID = cc.ContentID
|
|
||||||
INNER JOIN Entries ee ON vi.ContentID = ee.ContentID
|
|
||||||
INNER JOIN Owners oo ON ee.DocID = oo.OwnerItemID
|
|
||||||
INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID
|
|
||||||
WHERE ss.SessionID not in (select SessionID FROM @CheckOuts)
|
|
||||||
END
|
|
||||||
END
|
END
|
||||||
SELECT
|
SELECT
|
||||||
[SessionID],
|
[SessionID],
|
||||||
@ -11213,25 +11199,15 @@ RETURNS @VersionItems TABLE
|
|||||||
WITH EXECUTE AS OWNER
|
WITH EXECUTE AS OWNER
|
||||||
AS
|
AS
|
||||||
BEGIN
|
BEGIN
|
||||||
with Itemz([VersionID], [ItemID], [ContentID], [eItemID], [Level]) as
|
with ItemZ(ItemId, EnhID, Level) as
|
||||||
(Select DV.VersionID, [I].[ItemID], [I].[ContentID],xEnhanced1.value('@ItemID','int') eItemID, 0 Level
|
(Select ItemID,xEnhanced.value('@ItemID','int') EnhID, 0 from Items II Join (Select ContentID, cast(config as xml) xconfig From Contents)
|
||||||
FROM [Items] I
|
CC On CC.ContentID = II.ContentID cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) Where ItemID = @ItemID
|
||||||
Join (Select ContentID, cast(config as xml) xConfig from contents) c1 on i.cONTENTid = c1.ContentID
|
Union ALL
|
||||||
cross apply c1.xConfig.nodes('//Enhanced') tEnhanced1(xEnhanced1)
|
Select II.ItemID,xEnhanced.value('@ItemID','int') EnhID, ZZ.Level+1 from Items II Join ItemZ ZZ on ZZ.EnhID = II.ItemID
|
||||||
JOIN vefn_GetVersionItems('') DV ON I.[ItemID] = DV.[ItemID]
|
Join (Select ContentID, cast(config as xml) xconfig From Contents) CC On CC.ContentID = II.ContentID
|
||||||
Where I.ItemID = @ItemID
|
cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) Where zz.Level < 2)
|
||||||
Union All
|
|
||||||
-- Enhanced
|
|
||||||
select DV.VersionID, I2.[ItemID], I2.[ContentID],xEnhanced2.value('@ItemID','int') eItemID,Z.Level+1
|
|
||||||
from Itemz Z
|
|
||||||
Join Items I2 ON I2.ItemID = z.eItemID
|
|
||||||
JOIN vefn_GetVersionItems('') DV ON I2.[ItemID] = DV.[ItemID]
|
|
||||||
Join (Select ContentID, cast(config as xml) xConfig from contents) c2 on i2.cONTENTid = c2.ContentID
|
|
||||||
cross apply c2.xConfig.nodes('//Enhanced') tEnhanced2(xEnhanced2)
|
|
||||||
Where Z.Level < 3
|
|
||||||
)
|
|
||||||
INSERT INTO @VersionItems
|
INSERT INTO @VersionItems
|
||||||
select distinct VersionID, ItemID, ContentID from Itemz
|
Select distinct dbo.vefn_GetVersionIDByItemID(ZZ.ItemID) VersionID, ZZ.ItemID, II.ContentID from ItemZ ZZ Join Items II on II.ItemID = ZZ.ItemID
|
||||||
OPTION (MAXRECURSION 10000)
|
OPTION (MAXRECURSION 10000)
|
||||||
RETURN
|
RETURN
|
||||||
END
|
END
|
||||||
@ -11258,7 +11234,7 @@ Select * from vefn_GetVersionTblItems('')
|
|||||||
*/
|
*/
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||||
Copyright 2013 - Volian Enterprises, Inc. All rights reserved.
|
Copyright 2016 - Volian Enterprises, Inc. All rights reserved.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
CREATE FUNCTION [dbo].[vefn_GetVersionTblItems](@DocVersionList varchar(MAX))
|
CREATE FUNCTION [dbo].[vefn_GetVersionTblItems](@DocVersionList varchar(MAX))
|
||||||
RETURNS @VersionItems TABLE
|
RETURNS @VersionItems TABLE
|
||||||
@ -11309,7 +11285,7 @@ GO
|
|||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||||
Copyright 2012 - Volian Enterprises, Inc. All rights reserved.
|
Copyright 2016 - Volian Enterprises, Inc. All rights reserved.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
CREATE PROCEDURE [dbo].[vesp_PurgeDisconnectedData]
|
CREATE PROCEDURE [dbo].[vesp_PurgeDisconnectedData]
|
||||||
WITH EXECUTE AS OWNER
|
WITH EXECUTE AS OWNER
|
||||||
@ -11376,4 +11352,4 @@ END CATCH
|
|||||||
IF (@@Error = 0) PRINT 'Procedure Creation: vesp_PurgeDisconnectedData Succeeded'
|
IF (@@Error = 0) PRINT 'Procedure Creation: vesp_PurgeDisconnectedData Succeeded'
|
||||||
ELSE PRINT 'Procedure Creation: vesp_PurgeDisconnectedData Error on Creation'
|
ELSE PRINT 'Procedure Creation: vesp_PurgeDisconnectedData Error on Creation'
|
||||||
GO
|
GO
|
||||||
PRINT '20150808 Improved performance for delete procedure'
|
PRINT '20160126 Improved performance for checkouts'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user