Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 0f17e3f

Browse files
committed
Okay, this time I *really* added the bug reporting guidelines.
1 parent 01a9671 commit 0f17e3f

File tree

1 file changed

+296
-0
lines changed

1 file changed

+296
-0
lines changed

doc/src/sgml/bug-reporting.sgml

Lines changed: 296 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,296 @@
1+
<Sect1>
2+
<title>Bug Reporting Guidelines</title>
3+
4+
<para>
5+
When you encounter a bug in <productname>PostgreSQL</productname> we want to
6+
hear about it. Your bug reports are an important part in making
7+
<productname>PostgreSQL</productname> more reliable because even the utmost
8+
care cannot guarantee that every part of PostgreSQL will work on every
9+
platform under every circumstance.
10+
</para>
11+
12+
<para>
13+
The following suggestions are intended to assist you in forming bug reports
14+
that can be handled in an effective fashion. No one is required to follow
15+
them but it tends to be to everyone's advantage.
16+
</para>
17+
18+
<para>
19+
We cannot promise to fix every bug right away. If the bug is obvious, critical,
20+
or affects a lot of users, chances are good that someone will look into it. It
21+
could also happen that we tell you to update to a newer version to see if the
22+
bug happens there. Or we might decide that the bug
23+
cannot be fixed before some major rewrite we might be planning is done. Or
24+
perhaps it's simply too hard and there are more important things on the agenda.
25+
If you need help immediately, consider obtaining a commercial support contract.
26+
</para>
27+
28+
<Sect2>
29+
<title>Identifying Bugs</title>
30+
31+
<para>
32+
Before you ask <quote>Is this a bug?</quote>, please read and re-read the
33+
documentation to verify that you can really do whatever it is you are
34+
trying. If it is not clear from the documentation whether you can do
35+
something or not, please report that too, it's a bug in the documentation.
36+
If it turns out that the program does something different from what the
37+
documentation says, that's a bug. That might include, but is not limited to,
38+
the following circumstances:
39+
40+
<itemizedlist>
41+
<listitem>
42+
<para>
43+
A program terminates with a fatal signal or an operating system
44+
error message that would point to a problem in the program (for
45+
example not <quote>disk full</quote>).
46+
</para>
47+
</listitem>
48+
49+
<listitem>
50+
<para>
51+
A program produces the wrong output for any given input.
52+
</para>
53+
</listitem>
54+
55+
<listitem>
56+
<para>
57+
A program refuses to accept valid input.
58+
</para>
59+
</listitem>
60+
61+
<listitem>
62+
<para>
63+
A program accepts invalid input without a notice or error message.
64+
</para>
65+
</listitem>
66+
67+
<listitem>
68+
<para>
69+
<productname>PostgreSQL</productname> fails to compile, build, or
70+
install according to the instructions on supported platforms.
71+
</para>
72+
</listitem>
73+
</itemizedlist>
74+
75+
Here <quote>program</quote> refers to any executable, not only the backend server.
76+
</para>
77+
78+
<para>
79+
Being slow or resource-hogging is not necessarily a bug. Read the documentation
80+
or ask on one of the mailing lists for help in tuning your applications. Failing
81+
to comply to <acronym>SQL</acronym> is not a bug unless compliance for the
82+
specific feature is explicitly claimed.
83+
</para>
84+
85+
<para>
86+
Before you continue, check on the TODO list and in the FAQ to see if your bug is
87+
already known. If you can't decode the information on the TODO list, report your
88+
problem. The least we can do is make the TODO list clearer.
89+
</para>
90+
</Sect2>
91+
92+
<Sect2>
93+
<title>What to report</title>
94+
95+
<para>
96+
The most important thing to remember about bug reporting is to state all
97+
the facts and only facts. Do not speculate what you think went wrong, what
98+
<quote>it seemed to do</quote>, or which part of the program has a fault.
99+
If you are not familiar with the implementation you would probably guess
100+
wrong and not help us a bit. And even if you are, educated explanations are
101+
a great supplement to but no substitute for facts. If we are going to fix
102+
the bug we still have to see it happen for ourselves first.
103+
Reporting the bare facts
104+
is relatively straightforward (you can probably copy and paste them from the
105+
screen) but all too often important details are left out because someone
106+
thought it doesn't matter or the report would <quote>ring a bell</quote>
107+
anyway.
108+
</para>
109+
110+
<para>
111+
The following items should be contained in every bug report:
112+
113+
<itemizedlist>
114+
<listitem>
115+
<para>
116+
The exact sequence of steps <emphasis>from program startup</emphasis>
117+
necessary to reproduce the problem. This should be self-contained;
118+
it is not enough to send in a bare select statement without the
119+
preceeding create table and insert statements, if the output should
120+
depend on the data in the tables. We do not have the time
121+
to decode your database schema, and if we are supposed to make up
122+
our own data we would probably miss the problem.
123+
The best format for a test case for
124+
query-language related problems is a file that can be run through the
125+
<application>psql</application> frontend
126+
that shows the problem. (Be sure to not have anything in your
127+
<filename>~/.psqlrc</filename> startup file.) You are encouraged to
128+
minimize the size of your example, but this is not absolutely necessary.
129+
If the bug is reproduceable, we'll find it either way.
130+
</para>
131+
<para>
132+
If your application uses some other client interface, such as PHP, then
133+
please try to isolate the offending queries. We probably won't set up a
134+
web server to reproduce your problem. In any case remember to provide
135+
the exact input files, do not guess that the problem happens for
136+
<quote>large files</quote> or <quote>mid-size databases</quote>, etc.
137+
</para>
138+
</listitem>
139+
140+
<listitem>
141+
<para>
142+
The output you got. Please do not say that it <quote>didn't work</quote> or
143+
<quote>failed</quote>. If there is an error message,
144+
show it, even if you don't understand it. If the program terminates with
145+
an operating system error, say which. If nothing at all happens, say so.
146+
Even if the result of your test case is a program crash or otherwise obvious
147+
it might not happen on our platform. The easiest thing is to copy the output
148+
from the terminal, if possible.
149+
</para>
150+
<note>
151+
<para>
152+
In case of fatal errors, the error message provided by the client might
153+
not contain all the information available. In that case, also look at the
154+
output of the database server. If you do not keep your server output,
155+
this would be a good time to start doing so.
156+
</para>
157+
</note>
158+
</listitem>
159+
160+
<listitem>
161+
<para>
162+
The output you expected is very important to state. If you just write
163+
<quote>This command gives me that output.</quote> or <quote>This is not
164+
what I expected.</quote>, we might run it ourselves, scan the output, and
165+
think it looks okay and is exactly what we expected. We shouldn't have to
166+
spend the time to decode the exact semantics behind your commands.
167+
Especially refrain from merely saying that <quote>This is not what SQL says/Oracle
168+
does.</quote> Digging out the correct behavior from <acronym>SQL</acronym>
169+
is not a fun undertaking, nor do we all know how all the other relational
170+
databases out there behave. (If your problem is a program crash you can
171+
obviously omit this item.)
172+
</para>
173+
</listitem>
174+
175+
<listitem>
176+
<para>
177+
Any command line options and other startup options, including concerned
178+
environment variables or configuration files that you changed from the
179+
default. Again, be exact. If you are using a pre-packaged
180+
distribution that starts the database server at boot time, you should try
181+
to find out how that is done.
182+
</para>
183+
</listitem>
184+
185+
<listitem>
186+
<para>
187+
Anything you did at all differently from the installation instructions.
188+
</para>
189+
</listitem>
190+
191+
<listitem>
192+
<para>
193+
The PostgreSQL version. You can run the command
194+
<literal>SELECT version();</literal> to
195+
find out. If this function does not exist, say so, then we know that
196+
your version is old enough. If you can't start up the server or a
197+
client, look into the README file in the source directory or at the
198+
name of your distribution file or package name. If your version is older
199+
than 6.5 we will almost certainly tell you to upgrade. There are tons
200+
of bugs in old versions, that's why we write new ones.
201+
</para>
202+
<para>
203+
If you run a pre-packaged version, such as RPMs, say so, including any
204+
subversion the package may have. If you are talking about a CVS
205+
snapshot, mention that, including its date and time.
206+
</para>
207+
</listitem>
208+
209+
<listitem>
210+
<para>
211+
Platform information. This includes the kernel name and version, C library,
212+
processor, memory information. In most cases it is sufficient to report
213+
the vendor and version, but do not assume everyone knows what exactly
214+
<quote>Debian</quote> contains or that everyone runs on Pentiums. If
215+
you have installation problems information about compilers, make, etc.
216+
is also necessary.
217+
</para>
218+
</listitem>
219+
</itemizedlist>
220+
221+
Do not be afraid if your bug report becomes rather lengthy. That is a fact of life.
222+
It's better to report everything the first time than us having to squeeze the
223+
facts out of you. On the other hand, if your input files are huge, it is
224+
fair to ask first whether somebody is interested in looking into it.
225+
</para>
226+
227+
<para>
228+
Do not spend all your time to figure out which changes in the input make
229+
the problem go away. This will probably not help solving it. If it turns
230+
out that the bug can't be fixed right away, you will still have time to
231+
find and share your work around. Also, once again, do not waste your time
232+
guessing why the bug exists. We'll find that out soon enough.
233+
</para>
234+
235+
<para>
236+
When writing a bug report, please choose non-confusing terminology.
237+
The software package as such is called <quote>PostgreSQL</quote>,
238+
sometimes <quote>Postgres</quote> for short. (Sometimes
239+
the abbreviation <quote>Pgsql</quote> is used but don't do that.) When you
240+
are specifically talking about the backend server, mention that, don't
241+
just say <quote>Postgres crashes</quote>. The interactive frontend is called
242+
<quote>psql</quote> and is for all intends and purposes completely separate
243+
from the backend.
244+
</para>
245+
</Sect2>
246+
247+
<Sect2>
248+
<title>Where to report bugs</title>
249+
250+
<para>
251+
In general, send bug reports to &lt;pgsql-bugs@postgresql.org&gt;. You are
252+
invited to find a descriptive subject for your email message, perhaps parts
253+
of the error message.
254+
</para>
255+
256+
<para>
257+
Do not send bug reports to any of the user mailing lists, such as
258+
pgsql-sql or pgsql-general. These mailing lists are for answering
259+
user questions, their subscribers normally do not wish to receive
260+
bug reports. More importantly, they are unlikely to fix them.
261+
</para>
262+
263+
<para>
264+
Also, please do <emphasis>not</emphasis> send reports to
265+
&lt;pgsql-hackers@postgresql.org&gt;. This list is for discussing the
266+
development of <productname>PostgreSQL</productname>, it would be nice
267+
if we could keep the bug reports separate. We might choose take up a
268+
discussion
269+
about your bug report on it, if the bug needs more review.
270+
</para>
271+
272+
<para>
273+
If you have a problem with the documentation, send email to
274+
&lt;pgsql-docs@postgresql.org&gt;. Refer to the document, chapter, and sections.
275+
</para>
276+
277+
<para>
278+
If your bug is a portability problem on a non-supported platform, send
279+
mail to &lt;pgsql-ports@postgresql.org&gt;, so we (and you) can work on
280+
porting <productname>PostgreSQL</productname> to your platform.
281+
</para>
282+
283+
<note>
284+
<para>
285+
Due to the unfortunate amount of spam going around, all of the above
286+
email addresses are closed mailing lists. That is, you need to be
287+
subscribed to them in order to be allowed to post. If you simply
288+
want to send mail but do not want to receive list traffic, you can
289+
subscribe to the special pgsql-loophole <quote>list</quote>, which
290+
allows you to post to all <productname>PostgreSQL</productname>
291+
mailing lists without receiving any messages. Send email to
292+
&lt;pgsql-loophole-request@postgresql.org&gt; to subscribe.
293+
</para>
294+
</note>
295+
</Sect2>
296+
</Sect1>

0 commit comments

Comments
 (0)