O Hologres oferece suporte a um subconjunto das funções que retornam conjuntos do PostgreSQL. Essas funções expandem uma única chamada em um conjunto de linhas, o que as torna úteis para gerar sequências e índices de arrays diretamente em consultas SQL.
Para consultar a especificação completa do PostgreSQL, veja Set Returning Functions na documentação do PostgreSQL.
Funções compatíveis
|
Função |
Tipos de argumento |
Tipo de retorno |
Descrição |
|
GENERATE_SERIES(start, stop [, step]) |
INT, BIGINT ou NUMERIC |
setof INT, BIGINT ou NUMERIC |
Gera uma sequência numérica de |
|
GENERATE_SERIES(start, stop, step INTERVAL) |
TIMESTAMP ou TIMESTAMP WITH TIME ZONE |
setof TIMESTAMP ou TIMESTAMP WITH TIME ZONE |
Gera uma sequência de timestamps de |
|
GENERATE_SUBSCRIPTS(anyarray, dim) |
Qualquer tipo de array, INT |
setof INT |
Gera os índices válidos para uma dimensão de um array. |
GENERATE_SERIES
Gera uma sequência de valores de start até stop, com incremento definido por step. Os valores de start e stop são inclusivos.
Assinaturas
GENERATE_SERIES(start, stop [, step]) -- numeric sequence
GENERATE_SERIES(start, stop, step INTERVAL) -- timestamp sequence
Sequência numérica
Gera uma sequência de valores INT, BIGINT ou NUMERIC.
Parâmetros
|
Parâmetro |
Obrigatório |
Tipo de dados |
Descrição |
|
|
Sim |
INT, BIGINT ou NUMERIC |
Primeiro valor da sequência. |
|
|
Sim |
INT, BIGINT ou NUMERIC |
Último valor da sequência (inclusivo). |
|
|
Não |
INT, BIGINT ou NUMERIC |
Incremento entre os valores. O padrão é |
Tipo de retorno: Um conjunto de valores com o mesmo tipo de dados dos parâmetros de entrada.
Exemplos
Sequência ascendente com o passo padrão:
SELECT GENERATE_SERIES(2, 4);
generate_series
-----------------
2
3
4
Sequência descendente com passo negativo:
SELECT GENERATE_SERIES(5, 1, -2);
generate_series
-----------------
5
3
1
Sequência de timestamp
Gera uma sequência de valores TIMESTAMP ou TIMESTAMP WITH TIME ZONE.
Parâmetros
|
Parâmetro |
Obrigatório |
Tipo de dados |
Descrição |
|
|
Sim |
TIMESTAMP ou TIMESTAMP WITH TIME ZONE |
Primeiro valor da sequência. |
|
|
Sim |
TIMESTAMP ou TIMESTAMP WITH TIME ZONE |
Último valor da sequência (inclusivo). |
|
|
Sim |
INTERVAL |
Intervalo de tempo entre os valores. |
Tipo de retorno: Um conjunto de valores com o mesmo tipo de dados dos parâmetros de entrada.
Exemplo
SELECT GENERATE_SERIES('2024-10-01 00:00'::timestamp, '2024-10-01 12:00', '10 hours');
generate_series
---------------------
2024-10-01 00:00:00
2024-10-01 10:00:00
GENERATE_SUBSCRIPTS
Gera os índices válidos para uma determinada dimensão de um array. Use esta função para iterar sobre elementos de um array por índice.
Assinatura
GENERATE_SUBSCRIPTS(anyarray, dim)
Parâmetros
|
Parâmetro |
Obrigatório |
Tipo de dados |
Descrição |
|
|
Sim |
Qualquer tipo de array |
Array multidimensional de qualquer tipo cujos índices serão gerados. |
|
|
Sim |
INT |
Dimensão do array para a qual os índices serão gerados. |
Tipo de retorno: Um conjunto de inteiros que representam os índices válidos.
Exemplo
SELECT GENERATE_SUBSCRIPTS('{NULL,1,NULL,2}'::int[], 1);
generate_subscripts
---------------------
1
2
3
4