Enhanced Document support (multi-user queries)
This commit is contained in:
parent
5bd8ed3bc0
commit
bdb5a0c36a
@ -7836,9 +7836,14 @@ GO
|
||||
Copyright 2012 - Volian Enterprises, Inc. All rights reserved.
|
||||
*****************************************************************************/
|
||||
/*
|
||||
exec dbo.vesp_SessionCanCheckOutItem 25915,0
|
||||
exec dbo.vesp_SessionCanCheckOutItem 17012,0
|
||||
exec dbo.vesp_SessionCanCheckOutItem 17066,0
|
||||
exec dbo.vesp_SessionCanCheckOutItem 17119,0
|
||||
exec dbo.vesp_SessionCanCheckOutItem 554,1
|
||||
exec dbo.vesp_SessionCanCheckOutItem 13,2
|
||||
exec dbo.vesp_SessionCanCheckOutItem 8,2
|
||||
exec dbo.vesp_SessionCanCheckOutItem 2,2
|
||||
exec dbo.vesp_SessionCanCheckOutItem 9,3
|
||||
*/
|
||||
CREATE PROCEDURE [dbo].[vesp_SessionCanCheckOutItem]
|
||||
(
|
||||
@ -7869,18 +7874,54 @@ BEGIN
|
||||
FROM [Sessions]
|
||||
WHERE DTSEnd IS NULL
|
||||
END ELSE BEGIN
|
||||
DECLARE @ObjectAndEnhancedIDs Table
|
||||
(
|
||||
ObjectID int
|
||||
)
|
||||
IF @ObjectType = 0 BEGIN
|
||||
INSERT INTO @ObjectAndEnhancedIDs
|
||||
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
|
||||
ELSE IF @ObjectType = 2 BEGIN
|
||||
INSERT INTO @ObjectAndEnhancedIDs
|
||||
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
|
||||
ELSE IF @ObjectType = 3 BEGIN
|
||||
INSERT INTO @ObjectAndEnhancedIDs
|
||||
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
|
||||
ELSE BEGIN
|
||||
INSERT INTO @ObjectAndEnhancedIDs select @ObjectID
|
||||
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 WHERE OwnerItemID = @ObjectID AND OwnerType = @ObjectType
|
||||
INSERT INTO @CheckOuts SELECT DISTINCT SessionID FROM Owners
|
||||
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
|
||||
DECLARE @VersionIDList varchar(max)
|
||||
SELECT @VersionIDList = COALESCE(@VersionIDList + ',','') + CAST(OwnerItemID as varchar(4)) FROM Owners WHERE OwnerType = 2
|
||||
SELECT @VersionIDList = COALESCE(@VersionIDList + ',','') + CAST(OwnerItemID as varchar(10)) FROM Owners WHERE OwnerType = 2
|
||||
IF ISNULL(@VersionIDList,'') != '' AND @ObjectType = 0 BEGIN --procedure
|
||||
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.VersionID = oo.OwnerItemID
|
||||
INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID
|
||||
WHERE cc.Type = 0 AND vi.ItemID = @ObjectID
|
||||
WHERE cc.Type = 0 AND vi.ItemID in (select ObjectID from @ObjectAndEnhancedIDs)
|
||||
END
|
||||
IF ISNULL(@VersionIDList,'') != '' AND @ObjectType = 1 BEGIN --document
|
||||
INSERT INTO @CheckOuts
|
||||
@ -7889,48 +7930,57 @@ BEGIN
|
||||
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 = @ObjectID
|
||||
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
|
||||
--see what procedures maybe checked out
|
||||
INSERT INTO @CheckOuts
|
||||
SELECT ss.SessionID FROM dbo.vefn_GetVersiONItems(@ObjectID) 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(@ObjectID) 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
|
||||
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
|
||||
--look to see if object type is folder that no part of folder passed is checked out
|
||||
IF @ObjectType = 3 BEGIN
|
||||
DECLARE @VersionID int
|
||||
SELECT @VersionID = VersionID from DocVersions
|
||||
WHERE FolderID = @ObjectID
|
||||
-- Add this DocVersion to @Checkouts
|
||||
INSERT INTO @CheckOuts SELECT DISTINCT SessionID FROM Owners WHERE OwnerItemID = @VersionID AND OwnerType = 2
|
||||
--see what procedures maybe checked out
|
||||
INSERT INTO @CheckOuts
|
||||
SELECT ss.SessionID FROM dbo.vefn_GetVersiONItems(isnull(@VersionID,'0')) 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(isnull(@VersionID,'0')) 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
|
||||
SELECT @VersionIDList = COALESCE(@VersionIDList + ',','') + CAST(VersionID as varchar(10))
|
||||
FROM DocVersions where FolderID in (SELECT ObjectID FROM @ObjectAndEnhancedIDs)
|
||||
IF ISNULL(@VersionIDList,'') != '' BEGIN
|
||||
--DECLARE @VersionID int
|
||||
--SELECT @VersionID = VersionID from DocVersions
|
||||
--WHERE FolderID in (select ObjectID from @ObjectAndEnhancedIDs)
|
||||
-- Add this DocVersion to @Checkouts
|
||||
INSERT INTO @CheckOuts SELECT DISTINCT SessionID FROM Owners
|
||||
WHERE OwnerItemID in
|
||||
(select VersionID from DocVersions where FolderID in (select ObjectID from @ObjectAndEnhancedIDs)) AND OwnerType = 2
|
||||
--see what procedures 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 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
|
||||
|
||||
SELECT
|
||||
[SessionID],
|
||||
[UserID],
|
||||
@ -7946,6 +7996,7 @@ BEGIN
|
||||
END
|
||||
END
|
||||
GO
|
||||
|
||||
-- Display the status of Proc creation
|
||||
IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SessionCanCheckOutItem Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: vesp_SessionCanCheckOutItem Error on Creation'
|
||||
@ -11037,3 +11088,158 @@ IF (@@Error = 0) PRINT 'Procedure Creation: addROImage Succeeded'
|
||||
ELSE PRINT 'Procedure Creation: addROImage Error on Creation'
|
||||
GO
|
||||
PRINT '20150808 Improved performance for delete procedure'
|
||||
|
||||
/****** Object: UserDefinedFunction [dbo].[vefn_GetEnhancedFolders] ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetEnhancedFolders]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1)
|
||||
DROP FUNCTION [vefn_GetEnhancedFolders];
|
||||
GO
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
/*
|
||||
select * from vefn_GetEnhancedFolders(11)
|
||||
*/
|
||||
/*****************************************************************************
|
||||
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||
Copyright 2016 - Volian Enterprises, Inc. All rights reserved.
|
||||
*****************************************************************************/
|
||||
|
||||
CREATE FUNCTION dbo.[vefn_GetEnhancedFolders](@FolderID as int)
|
||||
RETURNS @AllValues TABLE
|
||||
(
|
||||
FolderID int PRIMARY KEY,
|
||||
[Type] int,
|
||||
[Name] varchar(100),
|
||||
VersionID int
|
||||
)
|
||||
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
INSERT INTO @AllValues
|
||||
select DISTINCT ddenh.folderid, xxEnhanced.value('@Type', 'int') xxType, xxEnhanced.value('@Name', 'varchar(20)') xxName,
|
||||
xxEnhanced.value('@VersionID', 'int') xxVersionID from
|
||||
(select *, cast(config as xml) xconfig from docversions) dv
|
||||
cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced)
|
||||
join (select *, cast(config as xml) xconfig from docversions)
|
||||
denh on xEnhanced.value('@VersionID', 'int') = denh.VersionID
|
||||
cross apply denh.xconfig.nodes('//Enhanced') ttEnhanced(xxEnhanced)
|
||||
join (select *, cast(config as xml) xconfig from docversions)
|
||||
ddenh on xxEnhanced.value('@VersionID', 'int') = ddenh.VersionID
|
||||
where denh.FolderID = @FolderID or dv.folderid = @FolderID
|
||||
|
||||
RETURN
|
||||
END
|
||||
GO
|
||||
|
||||
-- Display the status of Proc creation
|
||||
IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetEnhancedFolders Succeeded'
|
||||
ELSE PRINT 'TableFunction Creation: vefn_GetEnhancedFolders Error on Creation'
|
||||
GO
|
||||
|
||||
/****** Object: UserDefinedFunction [dbo].[vefn_GetEnhancedDocVersions] ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetEnhancedDocVersions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1)
|
||||
DROP FUNCTION [vefn_GetEnhancedDocVersions];
|
||||
GO
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
/*
|
||||
select * from vefn_GetEnhancedDocVersions(6)
|
||||
*/
|
||||
/*****************************************************************************
|
||||
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||
Copyright 2016 - Volian Enterprises, Inc. All rights reserved.
|
||||
*****************************************************************************/
|
||||
|
||||
CREATE FUNCTION dbo.[vefn_GetEnhancedDocVersions](@VersionID as int)
|
||||
RETURNS @AllValues TABLE
|
||||
(
|
||||
VersionID int PRIMARY KEY,
|
||||
[Type] int,
|
||||
[Name] varchar(100),
|
||||
FolderID int
|
||||
)
|
||||
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
INSERT INTO @AllValues
|
||||
select DISTINCT xxEnhanced.value('@VersionID', 'int') xxVersionID, xxEnhanced.value('@Type', 'int') xxType,
|
||||
xxEnhanced.value('@Name', 'varchar(20)') xxName, ddenh.folderid from
|
||||
(select *, cast(config as xml) xconfig from docversions) dv
|
||||
cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced)
|
||||
join (select *, cast(config as xml) xconfig from docversions)
|
||||
denh on xEnhanced.value('@VersionID', 'int') = denh.VersionID
|
||||
cross apply denh.xconfig.nodes('//Enhanced') ttEnhanced(xxEnhanced)
|
||||
join (select *, cast(config as xml) xconfig from docversions)
|
||||
ddenh on xxEnhanced.value('@VersionID', 'int') = ddenh.VersionID
|
||||
where denh.VersionID = @VersionID or dv.VersionID = @VersionID
|
||||
|
||||
RETURN
|
||||
END
|
||||
GO
|
||||
|
||||
-- Display the status of Proc creation
|
||||
IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetEnhancedDocVersions Succeeded'
|
||||
ELSE PRINT 'TableFunction Creation: vefn_GetEnhancedDocVersions Error on Creation'
|
||||
GO
|
||||
|
||||
/****** Object: UserDefinedFunction [dbo].[vefn_GetEnhancedProcedures] ******/
|
||||
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetEnhancedProcedures]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1)
|
||||
DROP FUNCTION vefn_GetEnhancedProcedures;
|
||||
GO
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
/*****************************************************************************
|
||||
Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
|
||||
Copyright 2016 - Volian Enterprises, Inc. All rights reserved.
|
||||
*****************************************************************************/
|
||||
|
||||
CREATE FUNCTION dbo.[vefn_GetEnhancedProcedures](@ItemID int)
|
||||
RETURNS @VersionItems TABLE
|
||||
(
|
||||
VersionID int,
|
||||
ItemID int primary key,
|
||||
ContentID int
|
||||
)
|
||||
WITH EXECUTE AS OWNER
|
||||
AS
|
||||
BEGIN
|
||||
with Itemz([VersionID], [ItemID], [ContentID], [eItemID], [Level]) as
|
||||
(Select DV.VersionID, [I].[ItemID], [I].[ContentID],xEnhanced1.value('@ItemID','int') eItemID, 0 Level
|
||||
FROM [Items] I
|
||||
Join (Select ContentID, cast(config as xml) xConfig from contents) c1 on i.cONTENTid = c1.ContentID
|
||||
cross apply c1.xConfig.nodes('//Enhanced') tEnhanced1(xEnhanced1)
|
||||
JOIN vefn_GetVersionItems('') DV ON I.[ItemID] = DV.[ItemID]
|
||||
Where I.ItemID = @ItemID
|
||||
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
|
||||
select distinct VersionID, ItemID, ContentID from Itemz
|
||||
OPTION (MAXRECURSION 10000)
|
||||
RETURN
|
||||
END
|
||||
GO
|
||||
|
||||
-- Display the status
|
||||
IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetEnhancedProcedures Succeeded'
|
||||
ELSE PRINT 'TableFunction Creation: vefn_GetEnhancedProcedures Error on Creation'
|
||||
GO
|
||||
|
||||
PRINT '20160106 Enhanced Documents'
|
Loading…
x
Reference in New Issue
Block a user