問題匯報教學

當您在 PostgreSQL 裡碰到臭蟲時, 我們也希望能聽到它。您的臭蟲匯報是將 PostgreSQL 做得更加可靠的一個非常重要的部分, 因為再細緻的工作也不能保證在任何情況任何平台下 PostgreSQL的每一個部分都能正常工作。

下面的建議試圖幫助您正確格式化臭蟲報告, 這樣這些報告就能夠以一種有效的方法處理。 我們不強迫任何人遵循這些東西,但是這樣做對我們每個人都有好處。

我們不能保證能夠馬上修補每個臭蟲。如果臭蟲是顯而易見的, 很關鍵的或者影響許多用戶,那麼很有可能有些人會認真檢查它們。 同樣我們也可能是告訴您升級到一個新版本, 看看臭蟲是否仍然存在。否則,我們可能會說這個臭蟲在我們正計劃的幾個主要改寫之前不會得到修補。 或者這個臭蟲只是太費事了,而且目前的日程資料表上有更重要的事情要做。如果您立即需要幫助, 那麼請考慮獲取一個商業性的支援。

標識臭蟲

在您報告臭蟲之前這樣的問題之前,請一再仔細地讀文件, 以確認您確實可以做您在做的事情。如果文件中對您能否處理您所做的事情並不清楚,也請您匯報過來; 因為這個是文件的臭蟲。如果發現您的程序的資料表現不像文件裡說的那樣,那就是一個臭蟲。 這時可能包括(不過不一定局限於)下面的現象:

這裡的"程序"代資料表任何可執行文件,而不僅僅是後端伺服器。

速度慢或者資源消耗大不算是臭蟲。 請閱讀文件或者提交郵件列資料表之一獲取調節您的應用(的性能)的幫助。 未能遵循 SQL 標準也不算是一個臭蟲, 除非(文件)明確聲明了遵守該特定特性。

在您準備繼續匯報臭蟲之前,請檢查 TODO 列資料表和 FAQ, 看看您報告的臭蟲是否已知。如果您不能解析 TODO 列資料表裡面的訊息,請匯報您的問題。 至少我們可以把 TODO 列資料表做得更清晰。

匯報什麼

關於匯報臭蟲需要記住的最重要的事就是寫出所有事實並且只寫事實。 不要推測您認為是什麼錯了,什麼"看起來像",或者是推測程序的哪一部分失靈了。 如果您不熟悉 PostgreSQL 的實現, 您很可能猜錯因而不能幫我們任何忙。 而且即使您熟悉 Postgres 的實現, 提煉出來的解釋也只是事實的補充而不是代替。 如果我們準備修理這個臭蟲,我們仍然需要首先親自看到臭蟲的出現。 報告簡單的事實相對而言比較直接(您可以從屏幕上拷貝和粘貼), 不過經常發生的是很多人認為這些事實不重要而忽略了重要的細節, 否則匯報總是能夠被我們理解。

下面的條目應該包含在所有臭蟲匯報裡面:

不要怕您的臭蟲匯報太長。這就是生活。 一開始就匯報所有的事情要比讓我們從您那裡擠出事實要好。另外, 如果您的輸入文件非常巨大,先問問有沒有人有興趣查看它也是合理的。

不要把您的時間花在尋找如何透過修改輸入來消除問題的方法上。 這樣很可能不會對解決問題有任何幫助。 如果發現不能直接修理臭蟲,您還有時間來查找和共享您的繞過方法。 還有,我們再說一便,不要在猜測臭蟲 的位置上面浪費時間。我們能夠及時找到錯誤。

在您書寫臭蟲匯報時,請選用不易混淆的術語。 軟件包本身被稱為"PostgreSQL",有時簡稱為 "Postgres"。 當您特指後端伺服器進程時, 請明確說明,而不要僅僅是說"PostgreSQL 崩潰了"。 一個獨立後端伺服器進程的崩潰和父進程 "postmaster" 崩潰是相當不同的; 如果您是說獨立後端進程崩潰了,那麼請不要說 "postmaster 崩潰",反之亦然。同樣,客戶端程序, 比如交互式前端 "psql" 是和後端完全獨立的。 請試圖說明清楚問題是出現再客戶端還是伺服器端。

到哪裡匯報臭蟲

通常,把匯報發到 臭蟲匯報郵件列資料表。 我們要求您為您的電子郵件消息選用一個描述性的題目, 也許就用錯誤訊息的一部分。

另外一個方法是填充 web 資料表單形式的臭蟲報告,您可以在項目的 web 站點 http://www.postgresql.org/ 找到。 用這種方法輸入一個臭蟲報告會導致它被發送到 郵遞列資料表。

不要把臭蟲匯報發送到任何用戶郵件列資料表裡,例如 SQL 語言郵件列資料表 或 通用話題郵件列資料表。這些郵件列資料表用於回答用戶問題, 而且那些訂閱者通常不希望接收臭蟲匯報。 更重要的是,他們很可能不會修理這些臭蟲。

還有,請不要向開發者郵件列資料表 發送臭蟲匯報。這個列資料表用於討論 PostgreSQL 的開發, 因而我們很希望能和臭蟲匯報分離開。 如果修理某個毛病需要更多評論, 我們可能會在這個pgsql-hackers列資料表開一個關於您的臭蟲的討論會。

如果您覺得文件有問題,請發電子郵件到文件郵件列資料表 . 在您的問題匯報裡面指明您認為哪部分。

如果您的臭蟲是一個在不支援平台上的移植性問題,向 移植性問題郵件列資料表 , 發送電子郵件,這樣我們(還有您)可以一起嘗試把 PostgreSQL 移植到您的平台上。

注意: 由於我們不願意看到的各種各樣的垃圾郵件, 上面的所有電子郵件地址都是封閉的郵件地址。 也就是說,您需要先申請,然後才能發帖子。 (不過,您用 web 資料表單提交臭蟲報告的時候用不著申請。) 如果您只是想發送郵件而不想接受列資料表的往來的郵件, 您可以提交郵件並且把您的提交選項設置為nomail。 如果需要更多的訊息, 您可以向 發送一封郵件,郵件的正文只有一個單詞help 就可以了。