Funções uuid_hash
euuid_hash_extended
Explorando o postgresql descobri 2 funções que parecem interessantes:
SELECT
p.proname ,
obj_description(p.oid) AS func_desc,
pg_get_function_arguments(p.oid) AS args_def,
string_to_array(pg_get_function_identity_arguments(p.oid), ','::text) AS args,
pg_get_function_result(p.oid) AS rettype
FROM
pg_catalog.pg_proc P
WHERE
proname ~~ 'uuid_hash%'
pronome | func_desc | args_def | argumentos | redigitar |
---|---|---|---|---|
uuid_hash | cerquilha | uuid | {uuid} | inteiro |
uuid_hash_extended | cerquilha | uuid, bigint | {uuid, bigint} | bigint |
Vamos tentar usá-los:
SELECT
uuid_hash(uuid_nil()),
uuid_hash_extended(uuid_nil(), 0),
uuid_hash(MD5('hello')::uuid),
uuid_hash_extended(MD5('hello')::uuid, 0);
uuid_hash | uuid_hash_extended | uuid_hash | uuid_hash_extended |
---|---|---|---|
1353656403 | -6859010066814654381 | 1620818621 | -4122998508949357891 |
Feed de banco de dados: https://www.db-fiddle.com/f/8CG8HaFn6D2mLKLk3LTwx2/0
Hum. Parece interessante e talvez tenha possíveis usos.
Alternando as versões do postgresql notei que uuid_hash_extended
apareceu no PostgreSQL 11.
Olhando para a documentação do postgresql - não encontrei nada.
Pesquisa na Web - nada também.
Pergunta
Qual é o objetivo dessas funções?
Para que poderiam ser usados?
ATUALIZAR
A. A resposta https://dba.stackexchange.com/a/295517/82983 é aceita. O código-fonte da função parece muito simples
B. Uso interessante encontrado em https://stackoverflow.com/a/66848699/1168212
Eles são usados para
hash
o método de índice. Como claramente mencionado no código-fonte :É possível rastrear dependências através dos catálogos do sistema pg_amproc/pg_opclass/pg_opfamily, mas isso não é tão óbvio comparado ao comentário.
Uma vez que não estão documentados para chamada direta pelo usuário, a comunidade de desenvolvedores do PostgreSQL pode decidir alterar/substituir/remover tais funções em uma nova versão principal.