A partir da versão V3.1, o Hologres oferece suporte a funções compatíveis com Presto por meio da extensão hg_presto_funcs. Todas as funções deste tópico utilizam o mecanismo de execução Velox.
Pré-requisitos
Antes de começar, verifique se você possui:
Uma instância do Hologres executando a versão V3.1 ou superior
Acesso de Superuser ao banco de dados de destino
Instalar a extensão
Execute a instrução a seguir como Superuser. Execute-a uma vez por banco de dados; caso crie um novo banco de dados, execute-a novamente.
CREATE EXTENSION hg_presto_funcs;
A extensão é instalada exclusivamente no schema hg_presto_funcs. Não é possível especificar um schema diferente.
Chamar funções do Presto
Todas as funções do Presto residem no schema hg_presto_funcs. Para chamá-las, adicione o prefixo ao nome de cada função ou defina o caminho de busca (search path) uma vez por sessão:
-- Option 1: prefix each call
SELECT hg_presto_funcs.array_cum_sum(b) FROM public.presto_test;
-- Option 2: set search path for the session
SET search_path = hg_presto_funcs;
SELECT array_cum_sum(b) FROM public.presto_test;
Essas funções não aceitam parâmetros de entrada constantes. Todos os exemplos neste tópico utilizam referências de colunas da tabela de amostra apresentada abaixo.
Tabela de amostra
Os exemplos deste tópico utilizam a seguinte tabela:
CREATE TABLE public.presto_test(
a INT, b INT[], c TEXT, d TEXT, e TEXT, f TEXT, g TEXT,
h TEXT, i TEXT, j TEXT, k TEXT, l TEXT, m TEXT, n TEXT,
o TEXT, p TEXT, r TEXT, s TEXT, t FLOAT, u TEXT
);
INSERT INTO public.presto_test
VALUES (
3, ARRAY[1, 2, 3, 2], 'A', '10010', 'SGVsbG8gV29ybGQh',
'\x00000001', '\x0000000000000001', '48656C6C6F',
'\x40490FD0', '\x400921FB54442D18', '\x48656C6C6F',
'"dwdw"', '[1,2,3,4,5,6]', '{"x": {"a": 1, "b": 2}}',
'café', 'apple,banana,cherry', 'ABCDA', 'running',
3.1415926, '[1.0,2.0]'
);
Funções suportadas
As tabelas abaixo listam todas as funções suportadas, organizadas por categoria. Cada entrada apresenta a assinatura da função com os tipos de parâmetro e de retorno.
Funções de array
|
Assinatura da função |
Descrição |
Exemplo |
Resultado |
|
|
Retorna um array em que a posição n contém a soma dos primeiros n elementos. Retorna null na posição n se qualquer um dos primeiros n elementos for null. |
|
|
|
|
Retorna true se o array contiver elementos duplicados. |
|
|
|
|
Concatena os elementos do array em uma string usando o separador fornecido. |
|
|
|
|
Remove valores NULL de um array. |
|
|
|
|
Remove n elementos do final de um array. |
|
|
Funções bit a bit
|
Assinatura da função |
Descrição |
Exemplo |
Resultado |
|
|
Conta o número de bits definidos (peso de Hamming) no valor dentro da largura de bits especificada. |
|
|
|
|
Retorna o resultado da operação AND bit a bit entre dois inteiros. |
|
|
|
|
Retorna o resultado da operação OR bit a bit entre dois inteiros. |
|
|
|
|
Retorna o resultado da operação XOR bit a bit entre dois inteiros. |
|
|
|
|
Retorna o resultado da operação NOT bit a bit de um inteiro. |
|
|
|
|
Desloca o valor n bits para a esquerda. |
|
|
|
|
Desloca o valor n bits para a esquerda dentro da largura de bits especificada. |
|
|
|
|
Desloca o valor n bits para a direita (lógico, preenchimento com zeros). |
|
|
|
|
Desloca o valor n bits para a direita (lógico, preenchimento com zeros) dentro da largura de bits especificada. |
|
|
|
|
Desloca o valor n bits para a direita, preservando o bit de sinal (deslocamento aritmético à direita). |
|
|
|
|
Alias para |
|
|
As funçõesbitwise_right_shiftebitwise_logical_shift_rightpreenchem os bits vagos com zeros. Já as funçõesbitwise_arithmetic_shift_rightebitwise_right_shift_arithmeticpreenchem com o bit de sinal, tornando-as equivalentes para inteiros negativos.
Funções binárias e de hash
Para hashing de uso geral, utilizexxhash64— ela é significativamente mais rápida quecrc32espooky_hash_v2_*, além de produzir hashes de melhor qualidade. Utilize as funçõeshmac_*quando precisar de códigos de autenticação com chave. Usecrc32apenas para manter compatibilidade com sistemas que já dependem dela.
|
Assinatura da função |
Descrição |
Exemplo |
Resultado |
|
|
Calcula o checksum CRC32 de dados binários. |
|
|
|
|
Calcula o hash xxHash64 de dados binários e retorna um resultado binário de 64 bits. |
|
|
|
|
Calcula o hash SpookyHashV2 de 32 bits de dados binários. |
|
|
|
|
Calcula o hash SpookyHashV2 de 64 bits de dados binários. |
|
|
|
|
Calcula um HMAC usando MD5 e a chave fornecida. |
|
|
|
|
Calcula um HMAC usando SHA-1 e a chave fornecida. |
|
|
|
|
Calcula um HMAC usando SHA-256 e a chave fornecida. |
|
|
|
|
Calcula um HMAC usando SHA-512 e a chave fornecida. |
|
|
|
|
Calcula o hash SHA-1 de dados binários e o retorna como uma string hexadecimal. |
|
|
|
|
Decodifica uma string codificada em Base64 padrão para binário. |
|
|
|
|
Codifica dados binários como uma string Base64 padrão. |
|
|
|
|
Decodifica uma string codificada em Base64 segura para URL para binário. |
|
|
|
|
Codifica dados binários como uma string Base64 segura para URL. |
|
|
|
|
Decodifica uma string hexadecimal para binário. |
|
|
|
|
Decodifica um valor binário big-endian de 32 bits em complemento de dois para um bigint. |
|
|
|
|
Codifica um inteiro como um valor binário big-endian de 32 bits em complemento de dois. |
|
|
|
|
Decodifica um valor binário big-endian de 64 bits em complemento de dois para um bigint. |
|
|
|
|
Codifica um inteiro como um valor binário big-endian de 64 bits em complemento de dois. |
|
|
|
|
Decodifica um valor binário IEEE 754 big-endian de 32 bits para um número de ponto flutuante de precisão simples. |
|
|
|
|
Codifica um número de ponto flutuante de precisão simples como um valor binário IEEE 754 big-endian de 32 bits. |
|
|
|
|
Decodifica um valor binário IEEE 754 big-endian de 64 bits para um número de ponto flutuante de precisão dupla. |
|
|
|
|
Codifica um número de ponto flutuante de precisão dupla como um valor binário IEEE 754 big-endian de 64 bits. |
|
|
|
|
Interpreta uma string como um número na base fornecida e retorna seu valor decimal. |
|
|
|
|
Converte um inteiro para sua representação em string na base fornecida. |
|
|
Funções matemáticas e estatísticas
Matemática geral
|
Assinatura da função |
Descrição |
Exemplo |
Resultado |
|
|
Restringe um valor ao intervalo [min, max]. Retorna o próprio valor se estiver dentro do intervalo ou o limite mais próximo caso contrário. |
|
|
|
|
Retorna o cosseno hiperbólico do valor. |
|
|
|
|
Retorna a tangente hiperbólica do valor. |
|
|
|
|
Retorna o logaritmo na base 2 do valor. |
|
|
|
|
Retorna o logaritmo na base 10 do valor. |
|
|
|
|
Retorna a diferença entre dois números (x − y). |
|
|
|
|
Retorna a negação do valor. |
|
|
|
|
Trunca o valor para n casas decimais. |
|
|
|
|
Retorna true se o valor for finito. |
|
|
|
|
Retorna true se o valor for infinito. |
|
|
|
|
Retorna true se o valor for "não numérico" (NaN). |
|
|
|
|
Retorna um número double aleatório criptograficamente seguro no intervalo [0, 1). |
|
|
|
|
Alias para |
|
|
Funções de distribuição cumulativa (CDF)
|
Assinatura da função |
Descrição |
Exemplo |
Resultado |
|
|
Retorna a função de distribuição cumulativa (CDF) da distribuição beta com os parâmetros de forma fornecidos. |
|
|
|
|
Retorna a CDF da distribuição binomial. |
|
|
|
|
Retorna a CDF da distribuição de Cauchy. |
|
|
|
|
Retorna a CDF da distribuição qui-quadrado. |
|
|
|
|
Retorna a CDF da distribuição F. |
|
|
|
|
Retorna a CDF da distribuição gama. |
|
|
|
|
Retorna a CDF da distribuição de Laplace. |
|
|
|
|
Retorna a CDF da distribuição normal com a média e o desvio padrão fornecidos. |
|
|
|
|
Retorna a CDF da distribuição de Poisson. |
|
|
|
|
Retorna a CDF da distribuição de Weibull. |
|
|
|
|
Retorna a CDF inversa da distribuição beta. |
|
|
|
|
Retorna a CDF inversa da distribuição de Cauchy. |
|
|
|
|
Retorna a CDF inversa da distribuição de Laplace. |
|
|
|
|
Retorna a CDF inversa da distribuição normal com a média e o desvio padrão fornecidos. |
|
|
|
|
Retorna a CDF inversa da distribuição de Weibull. |
|
|
|
|
Retorna o limite inferior do intervalo de confiança de Wilson para um ensaio de Bernoulli no nível de confiança z fornecido. |
|
|
|
|
Retorna o limite superior do intervalo de confiança de Wilson para um ensaio de Bernoulli no nível de confiança z fornecido. |
|
|
Funções de string e Unicode
Essas funções operam em pontos de código Unicode, não em caracteres visíveis ao usuário (clusters de grafemas). As strings de entrada devem estar em UTF-8 válido.
|
Assinatura da função |
Descrição |
Exemplo |
Resultado |
|
|
Retorna o ponto de código Unicode de um único caractere. |
|
|
|
|
Retorna true se a string terminar com o sufixo fornecido. |
|
|
|
|
Retorna a distância de Hamming entre duas strings — o número de posições onde os caracteres diferem. |
|
|
|
|
Retorna a distância de Levenshtein (distância de edição) entre duas strings. |
|
|
|
|
Transforma uma string para a forma normalizada NFC. |
|
|
|
|
Divide uma string usando uma expressão regular e retorna as partes como um array. |
|
|
|
|
Retorna a posição da última ocorrência de uma substring dentro de uma string. |
|
|
|
|
Remove ocorrências dos caracteres especificados de ambas as extremidades da string. |
|
|
|
|
Retorna o radical de uma palavra no idioma especificado. Passe |
|
|
Funções de comparação
|
Assinatura da função |
Descrição |
Exemplo |
Resultado |
|
|
Retorna true se os dois valores forem iguais. |
|
|
|
|
Retorna true se os dois valores não forem iguais. |
|
|
|
|
Retorna true se x > y. |
|
|
|
|
Retorna true se x ≥ y. |
|
|
|
|
Retorna true se x < y. |
|
|
|
|
Retorna true se x ≤ y. |
|
|
Funções JSON
|
Assinatura da função |
Descrição |
Exemplo |
Resultado |
|
|
Retorna true se o valor for um escalar JSON (não sendo objeto nem array). |
|
|
|
|
Retorna true se o array JSON contiver o valor fornecido. |
|
|
|
|
Extrai um valor escalar de uma string JSON no JSONPath fornecido. |
|
|
|
|
Retorna o número de elementos no objeto ou array JSON no JSONPath fornecido. |
|
|
Funções de URL
A extração de URL segue a sintaxe URI definida na RFC 2396:
[protocol:][//host[:port]][path][?query][#fragment]
Os componentes extraídos não incluem separadores de sintaxe URI, como : ou ?.
|
Assinatura da função |
Descrição |
Exemplo |
Resultado |
|
|
Decodifica uma string codificada por URL. |
|
|
|
|
Codifica uma string por URL, escapando caracteres especiais. |
|
|
|
|
Extrai o identificador de fragmento de uma URL. |
|
|
|
|
Extrai o host de uma URL. |
|
|
|
|
Extrai o valor do primeiro parâmetro de consulta com o nome fornecido. |
|
|
|
|
Extrai o caminho (path) de uma URL. |
|
|
|
|
Extrai o número da porta de uma URL. |
|
|
|
|
Extrai o protocolo de uma URL. |
|
|
|
|
Extrai a string de consulta (query string) de uma URL. |
|
|