Eu tenho uma sequência como esta (no PostgreSQL 16.0):
CREATE SEQUENCE public.seq_1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 999999999
START 1
CACHE 1
CYCLE;
e uma tabela contendo tudo integers
de 0 a 1.000.000
Quando eu faço:
select *, nextval('seq_1') as n2
from (
select i,n1,n1-i as d, sum(i) over (order by i) as s
from (
select i,nextval('seq_1') as n1
from integers
)
)
where i=0 or i=1000000
a saída é:
eu | n1 | d | é | n2 |
---|---|---|---|---|
0 | 46137349 | 46137349 | 0 | 50331653 |
1.000.000 | 47137349 | 46137349 | 500000500000 | 50331654 |
Por que o valor n2
na primeira linha é igual a 50331653?
Eu teria esperado 47137349+1, não me importo com pequenos intervalos, mas neste caso o intervalo é 3194304 ( select 50331653 - 47137349
), que é grande (ou grande?)
Eu encontrei:
- números de salto de sequência do postgres 9.0.4 , então eu uso
CACHE 1