mirror of
https://github.com/bitwarden/server.git
synced 2025-05-21 11:34:31 -05:00
use completion table on login uris update
This commit is contained in:
parent
8d681738c8
commit
c37016e19e
@ -19,17 +19,41 @@
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
SET NOCOUNT ON
|
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'CompletedIds')
|
||||||
|
BEGIN
|
||||||
|
CREATE TABLE [CompletedIds] ([Id] UNIQUEIDENTIFIER PRIMARY KEY)
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
DECLARE @UriPath VARCHAR(50) = '$.Uri'
|
DECLARE @UriPath VARCHAR(50) = '$.Uri'
|
||||||
DECLARE @UrisPath VARCHAR(50) = '$.Uris'
|
DECLARE @UrisPath VARCHAR(50) = '$.Uris'
|
||||||
DECLARE @BatchSize INT = 1000
|
DECLARE @BatchSize INT = 1000
|
||||||
|
DECLARE @LastId UNIQUEIDENTIFIER = NULL
|
||||||
|
|
||||||
-- Step 1: Add new Uris property with data from Uri
|
-- Step 1: Add new Uris property with data from Uri
|
||||||
WHILE @BatchSize > 0
|
WHILE @BatchSize > 0
|
||||||
BEGIN
|
BEGIN
|
||||||
UPDATE TOP (@BatchSize)
|
SELECT TOP 1
|
||||||
[Cipher]
|
@LastId = [Id]
|
||||||
|
FROM
|
||||||
|
[CompletedIds]
|
||||||
|
ORDER BY
|
||||||
|
[Id] DESC
|
||||||
|
|
||||||
|
;WITH [CTE] AS (
|
||||||
|
SELECT TOP (@BatchSize)
|
||||||
|
*
|
||||||
|
FROM
|
||||||
|
[Cipher]
|
||||||
|
WHERE
|
||||||
|
(@LastId IS NULL OR [Id] > @LastId)
|
||||||
|
AND JSON_VALUE([Data], @UriPath) IS NOT NULL
|
||||||
|
AND JSON_QUERY([Data], @UrisPath) IS NULL
|
||||||
|
ORDER BY
|
||||||
|
[Id] ASC
|
||||||
|
)
|
||||||
|
UPDATE
|
||||||
|
[CTE]
|
||||||
SET
|
SET
|
||||||
[Data] = JSON_MODIFY(
|
[Data] = JSON_MODIFY(
|
||||||
[Data],
|
[Data],
|
||||||
@ -39,27 +63,51 @@ BEGIN
|
|||||||
'$'
|
'$'
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
WHERE
|
OUTPUT INSERTED.[Id] INTO [CompletedIds]
|
||||||
JSON_VALUE([Data], @UriPath) IS NOT NULL
|
|
||||||
AND JSON_QUERY([Data], @UrisPath) IS NULL
|
|
||||||
|
|
||||||
SET @BatchSize = @@ROWCOUNT
|
SET @BatchSize = @@ROWCOUNT
|
||||||
RAISERROR('Updated %d ciphers with Uris', 0, 1, @BatchSize) WITH NOWAIT
|
RAISERROR('Updated %d ciphers with Uris', 0, 1, @BatchSize) WITH NOWAIT
|
||||||
END
|
END
|
||||||
|
|
||||||
-- Step 2: Remove old Uri Property
|
-- Reset
|
||||||
|
TRUNCATE TABLE [CompletedIds]
|
||||||
SET @BatchSize = 1000
|
SET @BatchSize = 1000
|
||||||
|
|
||||||
|
-- Step 2: Remove old Uri Property
|
||||||
WHILE @BatchSize > 0
|
WHILE @BatchSize > 0
|
||||||
BEGIN
|
BEGIN
|
||||||
UPDATE TOP (@BatchSize)
|
SELECT TOP 1
|
||||||
[Cipher]
|
@LastId = [Id]
|
||||||
|
FROM
|
||||||
|
[CompletedIds]
|
||||||
|
ORDER BY
|
||||||
|
[Id] DESC
|
||||||
|
|
||||||
|
;WITH [CTE] AS (
|
||||||
|
SELECT TOP (@BatchSize)
|
||||||
|
*
|
||||||
|
FROM
|
||||||
|
[Cipher]
|
||||||
|
WHERE
|
||||||
|
(@LastId IS NULL OR [Id] > @LastId)
|
||||||
|
AND JSON_VALUE([Data], @UriPath) IS NOT NULL
|
||||||
|
AND JSON_QUERY([Data], @UrisPath) IS NOT NULL
|
||||||
|
ORDER BY
|
||||||
|
[Id] ASC
|
||||||
|
)
|
||||||
|
UPDATE
|
||||||
|
[CTE]
|
||||||
SET
|
SET
|
||||||
[Data] = JSON_MODIFY([Data], @UriPath, NULL)
|
[Data] = JSON_MODIFY([Data], @UriPath, NULL)
|
||||||
WHERE
|
OUTPUT INSERTED.[Id] INTO [CompletedIds]
|
||||||
JSON_VALUE([Data], @UriPath) IS NOT NULL
|
|
||||||
AND JSON_QUERY([Data], @UrisPath) IS NOT NULL
|
|
||||||
|
|
||||||
SET @BatchSize = @@ROWCOUNT
|
SET @BatchSize = @@ROWCOUNT
|
||||||
RAISERROR('Updated %d ciphers with Uri removal', 0, 1, @BatchSize) WITH NOWAIT
|
RAISERROR('Updated %d ciphers with Uri removal', 0, 1, @BatchSize) WITH NOWAIT
|
||||||
END
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'CompletedIds')
|
||||||
|
BEGIN
|
||||||
|
DROP TABLE [CompletedIds]
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
Loading…
x
Reference in New Issue
Block a user