Skip to content

Commit b33bc31

Browse files
authored
fix: fallback on btree indexes when hash is unavailable (#1856)
## What kind of change does this PR introduce? Edits an existing migration to fallback onto btree indexes when hash indexes are unavailable. This change allows auth to be compatible with the orioledb storage engine. At time of writing orioledb only support btree indexes. That issue is expected to be addressed by the end of Q1 - 2025. Once that support is added, both heap and orioledb projects will both use the code path for hash indexes. hash indexes are preferred because they are [safer from timing attacks](https://dba.stackexchange.com/questions/285739/prevent-timing-attacks-in-postgres) A reminder has been set for May 1st for us to - remove the fork in this migration - identify and update the index type (from btree to hash) on any orioledb-alpha projects that are still in existence
1 parent 834a380 commit b33bc31

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

migrations/20240427152123_add_one_time_tokens_table.up.sql

+9-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,14 @@ do $$ begin
2424
check (char_length(token_hash) > 0)
2525
);
2626

27-
create index if not exists one_time_tokens_token_hash_hash_idx on {{ index .Options "Namespace" }}.one_time_tokens using hash (token_hash);
28-
create index if not exists one_time_tokens_relates_to_hash_idx on {{ index .Options "Namespace" }}.one_time_tokens using hash (relates_to);
27+
begin
28+
create index if not exists one_time_tokens_token_hash_hash_idx on {{ index .Options "Namespace" }}.one_time_tokens using hash (token_hash);
29+
create index if not exists one_time_tokens_relates_to_hash_idx on {{ index .Options "Namespace" }}.one_time_tokens using hash (relates_to);
30+
exception when others then
31+
-- Fallback to btree indexes if hash creation fails
32+
create index if not exists one_time_tokens_token_hash_hash_idx on {{ index .Options "Namespace" }}.one_time_tokens using btree (token_hash);
33+
create index if not exists one_time_tokens_relates_to_hash_idx on {{ index .Options "Namespace" }}.one_time_tokens using btree (relates_to);
34+
end;
35+
2936
create unique index if not exists one_time_tokens_user_id_token_type_key on {{ index .Options "Namespace" }}.one_time_tokens (user_id, token_type);
3037
end $$;

0 commit comments

Comments
 (0)