PostgreSQL的序列

PostgreSQL的序列

问题描述:

我测试的PostgreSQL序列(使用http://sqlfiddle.com在PostgreSQL 9.3我没有在时刻一个PostgreSQL安装在本地)nextval()会奇怪的行为,但我看到奇怪的行为。PostgreSQL的序列

创建序列

CREATE SEQUENCE counter_seq; 
ALTER SEQUENCE counter_seq RESTART 9223372036854775805; 

然后选择fromt序列的下一个值:

SELECT nextval('counter_seq'); 

结果是9223372036854776000这是BIGINT范围之外!?!?

序列本身似乎更新正确(在ERROR: nextval: reached maximum value of sequence "counter_seq" (9223372036854775807)几次选择后它会失败),但nextval的结果在运行时不正确。

我又试图顺序设置为低得多:

ALTER SEQUENCE counter_seq RESTART 5223372036854775805; 
SELECT nextval('counter_seq'); 

但结果是:

5223372036854776000 

,直到我的序列值下降到5000000000000000我不能得到可靠的行为。

这是PostgreSQL错误或sqlfiddle?

+0

其他会议不能同时滚动序列? –

+0

可能,但我做了不同的序列名称sqlfiddle测试,它给了相同的确切的结果。所以我认为可以安全地假设他们身上有什么东西被打破了。 –

+0

** ** counter_seq显得过于共同的名字 - 如果我没有记错 - 用户共享同一个模式在那里,所以我认为人们只滚领先你的序列 –

看起来像SQLFiddle错误或pgsql 9.3问题。我没有得到我的本地9.6相同的结果,也没有给出这样的错误http://rextester.com/COJS32891

+0

不是在x86_64-红帽Linux的GNU的重现上'PostgreSQL的9.3.14,编译由海湾合作委员会(GCC)4.8.3 20140911(红帽4.8.3-9),64位' –

+0

@VaoTsun这是令人放心的,谢谢。 – Neilos

+0

@ŁukaszKamiński看起来像我将 – Neilos