2017-06-02 54 views
1

我測試的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顯得過於共同的名字 - 如果我沒有記錯 - 用戶共享同一個模式在那裏,所以我認爲人們只滾領先你的序列 –

回答

1

看起來像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