Merge pull request #6451 from matrix-org/uhoreg/cross_signing_signatures_index

make cross signing signature index non-unique
This commit is contained in:
Erik Johnston 2019-12-04 09:57:09 +00:00 committed by GitHub
commit 2aa8943809
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 1 deletions

1
changelog.d/6451.bugfix Normal file
View File

@ -0,0 +1 @@
Fix uploading multiple cross signing signatures for the same user.

View File

@ -40,7 +40,8 @@ CREATE TABLE IF NOT EXISTS e2e_cross_signing_signatures (
signature TEXT NOT NULL
);
CREATE UNIQUE INDEX e2e_cross_signing_signatures_idx ON e2e_cross_signing_signatures(user_id, target_user_id, target_device_id);
-- replaced by the index created in signing_keys_nonunique_signatures.sql
-- CREATE UNIQUE INDEX e2e_cross_signing_signatures_idx ON e2e_cross_signing_signatures(user_id, target_user_id, target_device_id);
-- stream of user signature updates
CREATE TABLE IF NOT EXISTS user_signature_stream (

View File

@ -0,0 +1,22 @@
/* Copyright 2019 The Matrix.org Foundation C.I.C.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* The cross-signing signatures index should not be a unique index, because a
* user may upload multiple signatures for the same target user. The previous
* index was unique, so delete it if it's there and create a new non-unique
* index. */
DROP INDEX IF EXISTS e2e_cross_signing_signatures_idx; CREATE INDEX IF NOT
EXISTS e2e_cross_signing_signatures2_idx ON e2e_cross_signing_signatures(user_id, target_user_id, target_device_id);