45 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			PL/PgSQL
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			PL/PgSQL
		
	
	
	
	
	
| 
 | |
| CREATE   PROCEDURE [dbo].[SetBucketProcesses]
 | |
| 	(
 | |
| 	@DebugMode BIT = 0
 | |
| 	)
 | |
| AS
 | |
| 
 | |
| BEGIN
 | |
| 	
 | |
| 	DELETE FROM [dbo].[BucketToProcessMap] 
 | |
| 
 | |
| 	;WITH maxBuckets AS
 | |
| 		(
 | |
| 		SELECT MAX([BucketId]) AS 'MaxBucket' FROM [dbo].[Buckets]
 | |
| 		)
 | |
| 
 | |
| 	INSERT INTO [dbo].[BucketToProcessMap] 
 | |
| 	SELECT
 | |
| 		CASE
 | |
| 			WHEN (ROW_NUMBER() OVER (ORDER BY p.[Duration] DESC) * 1) % maxBuckets.[MaxBucket] = 0 THEN maxBuckets.[MaxBucket]
 | |
| 			ELSE (ROW_NUMBER() OVER (ORDER BY p.[Duration] DESC) * 1) % maxBuckets.[MaxBucket]
 | |
| 		END AS 'NewBucketId',
 | |
| 		p.[ProcessId]
 | |
| 	FROM 
 | |
| 		[dbo].[BucketProcesses] p
 | |
| 		CROSS JOIN maxBuckets
 | |
| 
 | |
| 	IF @DebugMode = 1
 | |
| 	BEGIN
 | |
| 		;WITH maxBuckets AS
 | |
| 			(
 | |
| 			SELECT MAX([BucketId]) AS 'MaxBucket' FROM [dbo].[Buckets]
 | |
| 			)
 | |
| 		SELECT
 | |
| 			CASE
 | |
| 				WHEN (ROW_NUMBER() OVER (ORDER BY p.[Duration] DESC) * 1) % maxBuckets.[MaxBucket] = 0 THEN maxBuckets.[MaxBucket]
 | |
| 				ELSE (ROW_NUMBER() OVER (ORDER BY p.[Duration] DESC) * 1) % maxBuckets.[MaxBucket]
 | |
| 			END AS 'NewBucketId',
 | |
| 			p.*
 | |
| 		FROM 
 | |
| 			[dbo].[BucketProcesses] p
 | |
| 			CROSS JOIN maxBuckets
 | |
| 	END
 | |
| END
 |