1
This file contains only important changes made to Bugzilla. If you
2
are updating from an older verseion, make sure that you check this file!
4
For a more complete list of what has changed, use Bonsai
5
(http://cvs-mirror.mozilla.org/webtools/bonsai/cvsqueryform.cgi) to
6
query the CVS tree. For example,
8
http://cvs-mirror.mozilla.org/webtools/bonsai/cvsquery.cgi?module=all&branch=HEAD&branchtype=match&dir=mozilla%2Fwebtools%2Fbugzilla&file=&filetype=match&who=&whotype=match&sortby=Date&hours=2&date=week&mindate=&maxdate=&cvsroot=%2Fcvsroot
10
will tell you what has been changed in the last week.
13
10/12/99 The CHANGES file is now obsolete! There is a new file called
14
checksetup.pl. You should get in the habit of running that file every time
15
you update your installation of Bugzilla. That file will be constantly
16
updated to automatically update your installation to match any code changes.
17
If you're curious as to what is going on, changes are commented in that file,
20
Many thanks to Holger Schurig <holgerschurig@nikocity.de> for writing this
25
10/11/99 Restructured voting database to add a cached value in each
26
bug recording how many total votes that bug has. While I'm at it, I
27
removed the unused "area" field from the bugs database. It is
28
distressing to realize that the bugs table has reached the maximum
29
number of indices allowed by MySQL (16), which may make future
32
You must feed the following to MySQL:
34
alter table bugs drop column area;
35
alter table bugs add column votes mediumint not null, add index (votes);
37
You then *must* delete the data/versioncache file when you make this
38
change, as it contains references to the "area" field. Deleting it is safe,
39
bugzilla will correctly regenerate it.
41
If you have been using the voting feature at all, then you will then
42
need to update the voting cache. You can do this by visiting the
43
sanitycheck.cgi page, and taking it up on its offer to rebuild the
47
10/7/99 Added voting ability. You must run the new script
48
"makevotestable.sh". You must also feed the following to mysql:
50
alter table products add column votesperuser smallint not null;
54
9/15/99 Apparently, newer alphas of MySQL won't allow you to have
55
"when" as a column name. So, I have had to rename a column in the
56
bugs_activity table. You must feed the below to mysql or you won't
59
alter table bugs_activity change column when bug_when datetime not null;
62
8/16/99 Added "OpenVMS" to the list of OS's. Feed this to mysql:
64
alter table bugs change column op_sys op_sys enum("All", "Windows 3.1", "Windows 95", "Windows 98", "Windows NT", "Mac System 7", "Mac System 7.5", "Mac System 7.6.1", "Mac System 8.0", "Mac System 8.5", "Mac System 8.6", "AIX", "BSDI", "HP-UX", "IRIX", "Linux", "FreeBSD", "OSF/1", "Solaris", "SunOS", "Neutrino", "OS/2", "BeOS", "OpenVMS", "other") not null;
66
6/22/99 Added an entry to the attachments table to record who the submitter
67
was. Nothing uses this yet, but it still should be recorded.
69
alter table attachments add column submitter_id mediumint not null;
71
You should also run this script to populate the new field:
73
#!/usr/bonsaitools/bin/perl -w
79
SendSQL("select bug_id, attach_id from attachments order by bug_id");
81
while (MoreSQLData()) {
82
my @row = FetchSQLData();
85
foreach my $ref (@list) {
86
my ($bug, $attach) = (@$ref);
87
SendSQL("select long_desc from bugs where bug_id = $bug");
88
my $comment = FetchOneColumn() . "Created an attachment (id=$attach)";
90
if ($comment =~ m@-* Additional Comments From ([^ ]*)[- 0-9/:]*\nCreated an attachment \(id=$attach\)@) {
92
SendSQL("select userid from profiles where login_name=" .
94
my $userid = FetchOneColumn();
95
if (defined $userid && $userid > 0) {
96
SendSQL("update attachments set submitter_id=$userid where attach_id = $attach");
99
print "Bug $bug can't find comment for attachment $attach\n";
108
6/14/99 Added "BeOS" to the list of OS's. Feed this to mysql:
110
alter table bugs change column op_sys op_sys enum("All", "Windows 3.1", "Windows 95", "Windows 98", "Windows NT", "Mac System 7", "Mac System 7.5", "Mac System 7.6.1", "Mac System 8.0", "Mac System 8.5", "Mac System 8.6", "AIX", "BSDI", "HP-UX", "IRIX", "Linux", "FreeBSD", "OSF/1", "Solaris", "SunOS", "Neutrino", "OS/2", "BeOS", "other") not null;
113
5/27/99 Added support for dependency information. You must run the new
114
"makedependenciestable.sh" script. You can turn off dependencies with the new
115
"usedependencies" param, but it defaults to being on. Also, read very
116
carefully the description for the new "webdotbase" param; you will almost
117
certainly need to tweak it.
120
5/24/99 Added "Mac System 8.6" and "Neutrino" to the list of OS's.
123
alter table bugs change column op_sys op_sys enum("All", "Windows 3.1", "Windows 95", "Windows 98", "Windows NT", "Mac System 7", "Mac System 7.5", "Mac System 7.6.1", "Mac System 8.0", "Mac System 8.5", "Mac System 8.6", "AIX", "BSDI", "HP-UX", "IRIX", "Linux", "FreeBSD", "OSF/1", "Solaris", "SunOS", "Neutrino", "OS/2", "other") not null;
126
5/12/99 Added a pref to control how much email you get. This needs a new
127
column in the profiles table, so feed the following to mysql:
129
alter table profiles add column emailnotification enum("ExcludeSelfChanges", "CConly", "All") not null default "ExcludeSelfChanges";
131
5/5/99 Added the ability to search by creation date. To make this perform
132
well, you ought to do the following:
134
alter table bugs change column creation_ts creation_ts datetime not null, add index (creation_ts);
137
4/30/99 Added a new severity, "blocker". To get this into your running
138
Bugzilla, do the following:
140
alter table bugs change column bug_severity bug_severity enum("blocker", "critical", "major", "normal", "minor", "trivial", "enhancement") not null;
143
4/22/99 There was a bug where the long descriptions of bugs had a variety of
144
newline characters at the end, depending on the operating system of the browser
145
that submitted the text. This bug has been fixed, so that no further changes
146
like that will happen. But to fix problems that have already crept into your
147
database, you can run the following perl script (which is slow and ugly, but
149
#!/usr/bonsaitools/bin/perl -w
152
require "globals.pl";
155
SendSQL("select bug_id from bugs order by bug_id");
157
while (MoreSQLData()) {
158
push(@list, FetchOneColumn());
160
foreach my $id (@list) {
164
SendSQL("select long_desc from bugs where bug_id = $id");
165
my $comment = FetchOneColumn();
167
$comment =~ s/\r\n/\n/g; # Get rid of windows-style line endings.
168
$comment =~ s/\r/\n/g; # Get rid of mac-style line endings.
169
if ($comment ne $orig) {
170
SendSQL("update bugs set long_desc = " . SqlQuote($comment) .
171
" where bug_id = $id");
180
4/8/99 Added ability to store patches with bugs. This requires a new table
181
to store the data, so you will need to run the "makeattachmenttable.sh" script.
183
3/25/99 Unfortunately, the HTML::FromText CPAN module had too many bugs, and
184
so I had to roll my own. We no longer use the HTML::FromText CPAN module.
186
3/24/99 (This entry has been removed. It used to say that we required the
187
HTML::FromText CPAN module, but that's no longer true.)
189
3/22/99 Added the ability to query by fields which have changed within a date
190
range. To make this perform a bit better, we need a new index:
192
alter table bugs_activity add index (field);
194
3/10/99 Added 'groups' stuff, where we have different group bits that we can
195
put on a person or on a bug. Some of the group bits control access to bugzilla
196
features. And a person can't access a bug unless he has every group bit set
197
that is also set on the bug. See the comments in makegroupstable.sh for a bit
200
The 'maintainer' param is now used only as an email address for people to send
201
complaints to. The groups table is what is now used to determine permissions.
203
You will need to run the new script "makegroupstable.sh". And then you need to
204
feed the following lines to MySQL (replace XXX with the login name of the
205
maintainer, the person you wish to be all-powerful).
207
alter table bugs add column groupset bigint not null;
208
alter table profiles add column groupset bigint not null;
209
update profiles set groupset=0x7fffffffffffffff where login_name = XXX;
213
3/8/99 Added params to control how priorities are set in a new bug. You can
214
now choose whether to let submitters of new bugs choose a priority, or whether
215
they should just accept the default priority (which is now no longer hardcoded
216
to "P2", but is instead a param.) The default value of the params will cause
217
the same behavior as before.
219
3/3/99 Added a "disallownew" field to the products table. If non-zero, then
220
don't let people file new bugs against this product. (This is for when a
221
product is retired, but you want to keep the bug reports around for posterity.)
224
alter table products add column disallownew tinyint not null;
227
2/8/99 Added FreeBSD to the list of OS's. Feed this to MySQL:
229
alter table bugs change column op_sys op_sys enum("All", "Windows 3.1", "Windows 95", "Windows 98", "Windows NT", "Mac System 7", "Mac System 7.5", "Mac System 7.6.1", "Mac System 8.0", "Mac System 8.5", "AIX", "BSDI", "HP-UX", "IRIX", "Linux", "FreeBSD", "OSF/1", "Solaris", "SunOS", "OS/2", "other") not null;
232
2/4/99 Added a new column "description" to the components table, and added
233
links to a new page which will use this to describe the components of a
234
given product. Feed this to MySQL:
236
alter table components add column description mediumtext not null;
239
2/3/99 Added a new column "initialqacontact" to the components table that gives
240
an initial QA contact field. It may be empty if you wish the initial qa
241
contact to be empty. If you're not using the QA contact field, you don't need
242
to add this column, but you might as well be safe and add it anyway:
244
alter table components add column initialqacontact tinytext not null;
247
2/2/99 Added a new column "milestoneurl" to the products table that gives a URL
248
which is to describe the currently defined milestones for a product. If you
249
don't use target milestone, you might be able to get away without adding this
250
column, but you might as well be safe and add it anyway:
252
alter table products add column milestoneurl tinytext not null;
255
1/29/99 Whoops; had a mispelled op_sys. It was "Mac System 7.1.6"; it should
256
be "Mac System 7.6.1". It turns out I had no bugs with this value set, so I
257
could just do the below simple command. If you have bugs with this value, you
258
may need to do something more complicated.
260
alter table bugs change column op_sys op_sys enum("All", "Windows 3.1", "Windows 95", "Windows 98", "Windows NT", "Mac System 7", "Mac System 7.5", "Mac System 7.6.1", "Mac System 8.0", "Mac System 8.5", "AIX", "BSDI", "HP-UX", "IRIX", "Linux", "OSF/1", "Solaris", "SunOS", "OS/2", "other") not null;
264
1/20/99 Added new fields: Target Milestone, QA Contact, and Status Whiteboard.
265
These fields are all optional in the UI; there are parameters to turn them on.
266
However, whether or not you use them, the fields need to be in the DB. There
267
is some code that needs them, even if you don't.
269
To update your DB to have these fields, send the following to MySQL:
271
alter table bugs add column target_milestone varchar(20) not null,
272
add column qa_contact mediumint not null,
273
add column status_whiteboard mediumtext not null,
274
add index (target_milestone), add index (qa_contact);
278
1/18/99 You can now query by CC. To make this perform reasonably, the CC table
279
needs some indices. The following MySQL does the necessary stuff:
281
alter table cc add index (bug_id), add index (who);
284
1/15/99 The op_sys field can now be queried by (and more easily tweaked).
285
To make this perform reasonably, it needs an index. The following MySQL
286
command will create the necessary index:
288
alter table bugs add index (op_sys);
291
12/2/98 The op_sys and rep_platform fields have been tweaked. op_sys
292
is now an enum, rather than having the legal values all hard-coded in
293
perl. rep_platform now no longer allows a value of "X-Windows".
295
Here's how I ported to the new world. This ought to work for you too.
296
Actually, it's probably overkill. I had a lot of illegal values for op_sys
297
in my tables, from importing bugs from strange places. If you haven't done
298
anything funky, then much of the below will be a no-op.
300
First, send the following commands to MySQL to make sure all your values for
301
rep_platform and op_sys are legal in the new world..
303
update bugs set rep_platform="Sun" where rep_platform="X-Windows" and op_sys like "Solaris%";
304
update bugs set rep_platform="SGI" where rep_platform="X-Windows" and op_sys = "IRIX";
305
update bugs set rep_platform="SGI" where rep_platform="X-Windows" and op_sys = "HP-UX";
306
update bugs set rep_platform="DEC" where rep_platform="X-Windows" and op_sys = "OSF/1";
307
update bugs set rep_platform="PC" where rep_platform="X-Windows" and op_sys = "Linux";
308
update bugs set rep_platform="other" where rep_platform="X-Windows";
309
update bugs set rep_platform="other" where rep_platform="";
310
update bugs set op_sys="Mac System 7" where op_sys="System 7";
311
update bugs set op_sys="Mac System 7.5" where op_sys="System 7.5";
312
update bugs set op_sys="Mac System 8.0" where op_sys="8.0";
313
update bugs set op_sys="OSF/1" where op_sys="Digital Unix 4.0";
314
update bugs set op_sys="IRIX" where op_sys like "IRIX %";
315
update bugs set op_sys="HP-UX" where op_sys like "HP-UX %";
316
update bugs set op_sys="Windows NT" where op_sys like "NT %";
317
update bugs set op_sys="OSF/1" where op_sys like "OSF/1 %";
318
update bugs set op_sys="Solaris" where op_sys like "Solaris %";
319
update bugs set op_sys="SunOS" where op_sys like "SunOS%";
320
update bugs set op_sys="other" where op_sys = "Motif";
321
update bugs set op_sys="other" where op_sys = "Other";
323
Next, send the following commands to make sure you now have only legal
324
entries in your table. If either of the queries do not come up empty, then
325
you have to do more stuff like the above.
327
select bug_id,op_sys,rep_platform from bugs where rep_platform not regexp "^(All|DEC|HP|Macintosh|PC|SGI|Sun|X-Windows|Other)$";
328
select bug_id,op_sys,rep_platform from bugs where op_sys not regexp "^(All|Windows 3.1|Windows 95|Windows 98|Windows NT|Mac System 7|Mac System 7.5|Mac System 7.1.6|Mac System 8.0|AIX|BSDI|HP-UX|IRIX|Linux|OSF/1|Solaris|SunOS|other)$";
330
Finally, once that's all clear, alter the table to make enforce the new legal
333
alter table bugs change column op_sys op_sys enum("All", "Windows 3.1", "Windows 95", "Windows 98", "Windows NT", "Mac System 7", "Mac System 7.5", "Mac System 7.1.6", "Mac System 8.0", "AIX", "BSDI", "HP-UX", "IRIX", "Linux", "OSF/1", "Solaris", "SunOS", "other") not null, change column rep_platform rep_platform enum("All", "DEC", "HP", "Macintosh", "PC", "SGI", "Sun", "Other");
339
11/20/98 Added searching of CC field. To better support this, added
340
some indexes to the CC table. You probably want to execute the following
343
alter table cc add index (bug_id);
344
alter table cc add index (who);
347
10/27/98 security check for legal products in place. bug charts are not
348
available as an option if collectstats.pl has never been run. all products
349
get daily stats collected now. README updated: Chart::Base is listed as
350
a requirement, instructions for using collectstats.pl included as
351
an optional step. also got silly and added optional quips to bug
354
10/17/98 modified README installation instructions slightly.
356
10/7/98 Added a new table called "products". Right now, this is used
357
only to have a description for each product, and that description is
358
only used when initially adding a new bug. Anyway, you *must* create
359
the new table (which you can do by running the new makeproducttable.sh
360
script). If you just leave it empty, things will work much as they
361
did before, or you can add descriptions for some or all of your
365
9/15/98 Everything has been ported to Perl. NO MORE TCL. This
366
transition should be relatively painless, except for the "params"
367
file. This is the file that contains parameters you've set up on the
368
editparams.cgi page. Before changing to Perl, this was a tcl-syntax
369
file, stored in the same directory as the code; after the change to
370
Perl, it becomes a perl-syntax file, stored in a subdirectory named
371
"data". See the README file for more details on what version of Perl
374
So, if updating from an older version of Bugzilla, you will need to
375
edit data/param, change the email address listed for
376
$::param{'maintainer'}, and then go revisit the editparams.cgi page
377
and reset all the parameters to your taste. Fortunately, your old
378
params file will still be around, and so you ought to be able to
379
cut&paste important bits from there.
381
Also, note that the "whineatnews" script has changed name (it now has
382
an extension of .pl instead of .tcl), so you'll need to change your
385
And the "comments" file has been moved to the data directory. Just do
386
"cat comments >> data/comments" to restore any old comments that may
391
9/2/98 Changed the way password validation works. We now keep a
392
crypt'd version of the password in the database, and check against
393
that. (This is silly, because we're also keeping the plaintext
394
version there, but I have plans...) Stop passing the plaintext
395
password around as a cookie; instead, we have a cookie that references
396
a record in a new database table, logincookies.
398
IMPORTANT: if updating from an older version of Bugzilla, you must run
399
the following commands to keep things working:
401
./makelogincookiestable.sh
402
echo "alter table profiles add column cryptpassword varchar(64);" | mysql bugs
403
echo "update profiles set cryptpassword = encrypt(password,substring(rand(),3, 4));" | mysql bugs