Commit graph

6347 commits

Author SHA1 Message Date
ramil/ram@mysql.com/myoffice.izhnet.ru
c6ee81f0ed Fix for bug #23412: delete rows with null date field
Backport of the fix for bug #8143: A date with value 0 is treated as a NULL value
2006-10-27 18:08:50 +05:00
kroki/tomash@moonlight.intranet
fa60a03073 Merge moonlight.intranet:/home/tomash/src/mysql_ab/mysql-4.1-runtime
into  moonlight.intranet:/home/tomash/src/mysql_ab/mysql-4.1-bug18819
2006-10-25 20:13:07 +04:00
kroki/tomash@moonlight.intranet
b7b991cec3 BUG#18819: DELETE IGNORE hangs on foreign key parent delete
If the error happens during DELETE IGNORE, nothing could be send to the
client, thus leaving it frozen expecting the reply.

The problem was that if some error occurred, it wouldn't be reported to
the client because of IGNORE, but neither success would be reported.

MySQL 4.1 would not freeze the client, but will report

  ERROR 1105 (HY000): Unknown error

instead, which is also a bug.

The solution is to report success if we are in DELETE IGNORE and some
non-fatal error has happened.
2006-10-25 19:53:26 +04:00
msvensson@neptunus.(none)
8f118827c4 Skip innodb test if mysqld doesn't have innodb support 2006-10-25 16:50:06 +02:00
msvensson@neptunus.(none)
de932f2a5f Update the binlog format parse routine to only be avaliable in 5.1 and allow for any binlog_format to be specified 2006-10-25 14:56:36 +02:00
msvensson@neptunus.(none)
a6d87b4c00 Add valgrinding support for mysql_client_test
Fix two memory leaks in mysql_client_test
2006-10-25 14:34:18 +02:00
msvensson@neptunus.(none)
4969081589 Set flag opt_skip_ndbcluster_slave if no slaves are being used.
Add comments
Deperlify
2006-10-25 12:40:33 +02:00
msvensson@neptunus.(none)
1f780b77e7 Adapt mysql-test-run.pl to mysqld in 5.1 using "mixed" binlog format by default 2006-10-24 23:39:46 +02:00
msvensson@neptunus.(none)
ac5b37ef00 Pass --core-file option to mysqld when bootstrapping 2006-10-24 21:02:04 +02:00
msvensson@neptunus.(none)
844369130f Remove debug printout 2006-10-24 19:22:27 +02:00
msvensson@neptunus.(none)
a8d1c62e5f Run mysql_client_test without --silent
Flush both stdout and stderr before abort'ing mysql_client_test
2006-10-24 18:49:19 +02:00
msvensson@neptunus.(none)
3df77e48af Add analyze_testcase_failure which is called when mysqltest has failed
with error 1 and we are running with --force
The specific "analyze" code is enclosed in a .test file fwich can easily
be modified to be more advanced
2006-10-24 17:36:46 +02:00
msvensson@neptunus.(none)
e4df2aac07 Avoid matching the trailing carriage return when parsing the mysqld.spec file
This fixes problem where --replace_result failed in rpl000015 because the MYSQL_TCP_PORT variable was "3306\r"
2006-10-23 20:36:44 +02:00
msvensson@neptunus.(none)
792adb7ce3 The vardir trick can only bge used on platforms with native symlinks - otherwise opt_vardir need to be set to default value. 2006-10-23 16:51:48 +02:00
msvensson@neptunus.(none)
6b5ec53962 Don't use the "4.1 vardir trick" on OS that does not have native symlink(i.e windows) 2006-10-23 13:32:20 +02:00
msvensson@neptunus.(none)
e5c2351b4a Merge bk-internal:/home/bk/mysql-4.1-maint
into  neptunus.(none):/home/msvensson/mysql/mysql-4.1-maint
2006-10-23 12:17:15 +02:00
msvensson@neptunus.(none)
43aa130a38 If "var" is a symlink which does not point to anything, remove it before creating real var 2006-10-23 12:16:40 +02:00
msvensson@neptunus.(none)
962fe84784 As both ndb and im are components that may be disabled as well as the binaries may not exist. Look for
their binaries in a separate function and produce test casea failures for the test thet needs these components
2006-10-23 12:02:56 +02:00
ramil/ram@mysql.com/myoffice.izhnet.ru
dd2a1d1e96 Merge mysql.com:/usr/home/ram/work/mysql-4.1-maint
into  mysql.com:/usr/home/ram/work/bug20732/my41-bug20732
2006-10-23 12:58:20 +05:00
msvensson@neptunus.(none)
125163c03b Init some variables that changes between test cases direclty in run_testcase
This can not be done in run_testcase_start_servers as embedded never starts a server
Add error if mysqld_start is called in embedded mode
2006-10-20 17:09:07 +02:00
gkodinov@dl145s.mysql.com
0612a212d1 Merge bk-internal:/home/bk/mysql-4.1
into  dl145s.mysql.com:/data/bk/team_tree_merge/MERGE/mysql-4.1-opt
2006-10-20 10:57:38 +02:00
msvensson@neptunus.(none)
c4a570aa00 Adapt to running from "binary dist"
Add function mtr_exe_maybe_exists to look for binaries that is optional
Skip ndb support if it's a binary dist where mysqld supports ndb but there is no ndbd
2006-10-19 20:33:32 +02:00
msvensson@neptunus.(none)
c950eee217 Fix problem running rpl_timezone on powermacg5, it was not popular to set TZ to "" so now it's set
to a value wich is not our default
2006-10-19 20:29:33 +02:00
svoj@mysql.com/april.(none)
d2fa9fd192 Merge mysql.com:/home/svoj/devel/mysql/BUG23175/mysql-4.1-engines
into  mysql.com:/home/svoj/devel/mysql/engines/mysql-4.1-engines
2006-10-19 17:35:09 +05:00
gkodinov@dl145s.mysql.com
1dacdd4c85 Merge dl145s.mysql.com:/data/bk/team_tree_merge/mysql-4.1
into  dl145s.mysql.com:/data/bk/team_tree_merge/MERGE/mysql-4.1-opt
2006-10-19 14:34:56 +02:00
svoj@mysql.com/april.(none)
b6f909bf1b Merge mysql.com:/home/svoj/devel/mysql/BUG22562/mysql-4.1-engines
into  mysql.com:/home/svoj/devel/mysql/engines/mysql-4.1-engines
2006-10-19 17:33:22 +05:00
msvensson@neptunus.(none)
9a5b4a1151 Add command "exit" to mysqltest, it will stop processing any more
commands and go directly to result file processing
2006-10-19 13:34:09 +02:00
msvensson@neptunus.(none)
b11dee73ca Backport test cases fixes from 5.0 2006-10-19 10:54:23 +02:00
ramil/ram@mysql.com/myoffice.izhnet.ru
0027b6e4b7 Fix for bug #20732: Partial index and long sjis search with '>' fails sometimes
We miss some records sometimes using RANGE method if we have
partial key segments.
Example:
  Create table t1(a char(2), key(a(1)));
  insert into t1 values ('a'), ('xx');
  select a from t1 where a > 'x';
We call index_read() passing 'x' key and HA_READ_AFTER_KEY flag
in the handler::read_range_first() wich is wrong because we have
a partial key segment for the field and might miss records like 'xx'.

Fix: don't use open segments in such a case.
2006-10-19 12:52:37 +05:00
msvensson@shellback.(none)
4cefd49b81 Put the printf of failed ratio on itäs only line, printf was tricked
into thinking the escaped % + w was a format specifier
2006-10-18 17:58:26 +02:00
msvensson@shellback.(none)
770a1f919f Don't stop the time in mtr_timer_timeout, that will be done after testcase or when program exit 2006-10-18 17:16:08 +02:00
msvensson@shellback.(none)
dd6a9307f1 Remove some junk 2006-10-18 16:40:22 +02:00
msvensson@shellback.(none)
1feac4d44f Stop all timers before exiting when --start-and-exit 2006-10-18 16:39:00 +02:00
mskold/marty@mysql.com/linux.site
9f686a4c99 Merge mysql.com:/windows/Linux_space/MySQL/mysql-4.1
into  mysql.com:/windows/Linux_space/MySQL/mysql-4.1-ndb
2006-10-18 16:34:43 +02:00
msvensson@shellback.(none)
4890ed261c Fix bug where a timer was stopped by calling mtr_timer_stop with a "timer" instead of it's name 2006-10-18 16:30:51 +02:00
svoj@mysql.com/april.(none)
a2e0059f3c BUG#23175 - MYISAM crash/repair failed during repair
Repair table could crash a server if there is not sufficient
memory (myisam_sort_buffer_size) to operate. Affects not only
repair, but also all statements that use create index by sort:
repair by sort, parallel repair, bulk insert.

Return an error if there is not sufficient memory to store at
least one key per BUFFPEK.

Also fixed memory leak if thr_find_all_keys returns an error.
2006-10-18 17:57:29 +05:00
msvensson@shellback.(none)
8d72bf9448 Make --with-ndbcluster only be valid together with --bench
Improve code that detects if ndb shuold be installed
Remove call to stop_all_servers after install db, if any servers are still running 
and need to be stopped they will be stopped atuomatically
2006-10-18 13:24:06 +02:00
kroki/tomash@moonlight.intranet
656b643276 Merge moonlight.intranet:/home/tomash/src/mysql_ab/mysql-4.1-runtime
into  moonlight.intranet:/home/tomash/src/mysql_ab/mysql-4.1-bug21726
2006-10-17 13:41:29 +04:00
msvensson@shellback.(none)
d45b61b1b5 Remove warnings
Set comment properly before calling mtr_report_test failed and report_failure_restart
2006-10-17 10:31:06 +02:00
msvensson@shellback.(none)
3f46c5cdbd When calculating what features to use for _this_ test run, don't look at test that already are deterined to be skipped 2006-10-17 08:10:51 +02:00
gkodinov/kgeorge@rakia.(none)
623df6b128 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-4.1-opt
into  rakia.(none):/home/kgeorge/mysql/autopush/B14019-4.1-opt
2006-10-16 14:42:51 +03:00
gkodinov/kgeorge@macbook.gmz
115616381d BUG#14019 : group by converts literal string to column name
When resolving unqualified name references MySQL was not
   checking what is the item type for the reference. Thus
   e.g a string literal item that has by convention a name
   equal to its string value will also work as a reference to 
   a SELECT list item or a table field.
   Fixed by allowing only Item_ref or Item_field to referenced by
   (unqualified) name.
2006-10-16 13:10:25 +03:00
msvensson@shellback.(none)
947d219d1b Cleanup mtr_timer
Add verbose printouts making it possible to see what happens.
Make it an error if trying to stop a non existing timer
Print warning if fork fails.
2006-10-15 15:38:56 +02:00
msvensson@shellback.(none)
cfd442b67f Merge bk-internal:/home/bk/mysql-4.1-maint
into  shellback.(none):/home/msvensson/mysql/mysql-4.1-maint
2006-10-14 17:49:14 +02:00
msvensson@shellback.(none)
88e11706c3 No need to continue in 'mtr_report_test_failed' after timeout detected, return immediately after 2006-10-14 17:14:03 +02:00
msvensson@shellback.(none)
a9e60bab29 Use char as datatype for the byte that are read with my_fgetc, fixes problem with
mysqltest.test on Solaris and Mac. write_file produced nice files with all zeroes.
2006-10-14 17:09:06 +02:00
msvensson@shellback.(none)
a9bd28307d Skip looking for mysql_client_test in 4.1 on windows as it's not built by default 2006-10-14 16:31:20 +02:00
msvensson@shellback.(none)
1c2113de40 Look for client bindirs client_release and client_debug before other directories. 2006-10-13 20:29:27 +02:00
msvensson@shellback.(none)
8c55cf8f9a rpl_empty_master_crash need a master restart so that all log files are deleted 2006-10-13 20:22:56 +02:00
ramil/ram@mysql.com/myoffice.izhnet.ru
0e3ccedd6b Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1-maint
into  mysql.com:/usr/home/ram/work/bug23254/my41-bug23254
2006-10-13 21:12:07 +05:00
ramil/ram@mysql.com/myoffice.izhnet.ru
31402835d4 Fix for bug #23254: COMPRESS(NULL) makes all futher COMPRESS() calls on same Item return NULL
We don't set null_value to 0 in the Item_func_compress::val_str() for 
not-NULL results.
2006-10-13 19:05:54 +05:00
msvensson@shellback.(none)
c31a028b9d Optimize restarts by using --force-restart option 2006-10-13 11:53:19 +02:00
msvensson@shellback.(none)
c2574de306 Improve the function that parses test files looking for what features it uses
Now also detects "source nnnn;" command, previous version only detected
"--source"
2006-10-13 11:05:46 +02:00
msvensson@shellback.(none)
927c20dd0f Improve function that finds the reason why test was skipped, the old version only looked at the ast line, but there might be some additional debug info there so it's better to scan the whole file.
There should be only one line that says "reason: <reason>"
2006-10-13 10:41:40 +02:00
msvensson@shellback.(none)
6e3280fd3b Add missing semicolon in test file 2006-10-13 08:48:47 +02:00
msvensson@shellback.(none)
31f4aaa5be Skip looking for ndbapi-examples in 4.1, not part of dist 2006-10-12 20:52:53 +02:00
msvensson@shellback.(none)
1be01ceea8 Merge bk-internal:/home/bk/mysql-4.1-maint
into  shellback.(none):/home/msvensson/mysql/mysql-4.1-maint
2006-10-12 18:48:03 +02:00
msvensson@shellback.(none)
2db82814c4 Add missing semicolon 2006-10-12 16:17:09 +02:00
msvensson@shellback.(none)
2c4456d30f Add win paths for mysql_client_test 2006-10-12 13:49:12 +02:00
msvensson@shellback.(none)
d093b1029a Look for mysql_client_test in $path_client_bindir 2006-10-12 12:19:23 +02:00
kaa@polly.local
8c88bb4eaa Merge polly.local:/tmp/maint/bug22728/my41-bug22728
into  polly.local:/home/kaa/src/maint/m41-maint--07OGk
2006-10-12 13:39:52 +04:00
msvensson@shellback.(none)
3c66250e84 Fix unhandled exception in mysql-test-run.pl, creating a dir that already exist 2006-10-12 11:29:13 +02:00
istruewing@chilla.local
3ee35a7618 Merge bk-internal.mysql.com:/home/bk/mysql-4.1-engines
into  chilla.local:/home/mydev/mysql-4.1-bug8283-one
2006-10-11 22:28:06 +02:00
msvensson@shellback.(none)
5b8312986c Fixes for embedded server test 2006-10-11 21:53:43 +02:00
svoj@mysql.com/april.(none)
62b2044279 BUG#22562 - REPAIR TABLE .. USE_FRM causes server crash on Windows and server
hangs on Linux

If REPAIR TABLE ... USE_FRM is issued for table that is located in different
than default database server crash could happen.

In reopen_name_locked_table take database name from table_list (user specified
or default database) instead of from thd (default database).

Affects 4.1 only.
2006-10-11 20:34:20 +05:00
msvensson@shellback.(none)
d02909910b mtr_im_stop returns 1 if all is well 2006-10-11 15:45:35 +02:00
msvensson@shellback.(none)
3e37764216 Improve restart logic all code to detect restart is now in the functions
'run_testcase_need_master/slave_restart'
Remove the faulty qw
Only look for mysql_fix_privilege_tables if not windows
2006-10-11 14:50:19 +02:00
kaa@polly.local
737e13e526 Merge bk-internal.mysql.com:/home/bk/mysql-4.1-maint
into  polly.local:/home/kaa/src/maint/m41-maint--07OGk
2006-10-11 14:57:09 +04:00
kaa@polly.local
a050de9837 Merge polly.local:/tmp/maint/bug11655/my41-bug11655
into  polly.local:/home/kaa/src/maint/m41-maint--07OGk
2006-10-11 14:55:23 +04:00
kaa@polly.local
456fe01d7e Fix for bug #22728 "Handler_rollback value is growing".
The bug is present only in 4.1, will be null-merged to 5.0

For InnoDB, check value of thd->transaction.all.innodb_active_trans instead of thd->transaction.stmt.innobase_tid to see if we really need to rollback.
2006-10-11 12:44:03 +04:00
kroki/tomash@moonlight.intranet
9bbc9bb5de Merge moonlight.intranet:/home/tomash/src/mysql_ab/mysql-4.1-runtime
into  moonlight.intranet:/home/tomash/src/mysql_ab/mysql-4.1-bug21354
2006-10-10 18:14:06 +04:00
kroki/tomash@moonlight.intranet
fbf6507cf7 BUG#21354: (COUNT(*) = 1) not working in SELECT inside prepared
statement.

The problem was that during statement re-execution if the result was
empty the old result could be returned for group functions.

The solution is to implement proper cleanup() method in group
functions.
2006-10-10 17:08:47 +04:00
cmiller@zippy.cornsilk.net
0ab343a7dc Merge bk-internal.mysql.com:/home/bk/mysql-4.1-maint
into  zippy.cornsilk.net:/home/cmiller/work/mysql/bug17583/my41-bug17583
2006-10-09 18:53:17 -04:00
cmiller@zippy.cornsilk.net
4812d81eab Bug#17583: mysql drops connection when stdout is not writable
When the client program had its stdout file descriptor closed by the calling
shell, after some amount of work (enough to fill a socket buffer) the server 
would complain about a packet error and then disconnect the client.

This is a serious security problem.  If stdout is closed before the mysql is
exec()d, then the first socket() call allocates file number 1 to communicate
with the server.  Subsequent write()s to that file number (as when printing
results that come back from the database) go back to the server instead in 
the command channel.  So, one should be able to craft data which, upon being
selected back from the server to the client, and injected into the command
stream become valid MySQL protocol to do something nasty when sent /back/ to 
the server.

The solution is to close explicitly the file descriptor that we *printf() to, 
so that the libc layer and the OS layer both agree that the file is closed.
2006-10-09 18:28:06 -04:00
istruewing@chilla.local
1daa6a710d Merge chilla.local:/home/mydev/mysql-4.1-bug8283
into  chilla.local:/home/mydev/mysql-4.1-bug8283-one
2006-10-09 19:40:16 +02:00
istruewing@chilla.local
5f08a83186 Bug#8283 - OPTIMIZE TABLE causes data loss
OPTIMIZE TABLE with myisam_repair_threads > 1 performs a non-quick 
parallel repair. This means that it does not only rebuild all 
indexes, but also the data file.

Non-quick parallel repair works so that there is one thread per 
index. The first of the threads rebuilds also the new data file.

The problem was that all threads shared the read io cache on the
old data file. If there were holes (deleted records) in the table,
the first thread skipped them, writing only contiguous, non-deleted
records to the new data file. Then it built the new index so that
its entries pointed to the correct record positions. But the other
threads didn't know the new record positions, but put the positions
from the old data file into the index.

The new design is so that there is a shared io cache which is filled
by the first thread (the data file writer) with the new contiguous
records and read by the other threads. Now they know the new record
positions.

Another problem was that for the parallel repair of compressed
tables a common bit_buff and rec_buff was used. I changed it so
that thread specific buffers are used for parallel repair.

A similar problem existed for checksum calculation. I made this
multi-thread safe too.
2006-10-09 19:26:55 +02:00
msvensson@shellback.(none)
bf762c2d9e Print names of testcases that failed check_testcase, this makes it easier
to run the whole testcase to find wich testcases need to be checked more carefully
and the just "copy and paste" the suspicious test case names to 
a new mysql-test-run.pl command.
2006-10-08 17:48:01 +02:00
msvensson@shellback.(none)
55e6f74525 Do the check of special mysqld exe for master or slave after command line args have been parsed 2006-10-08 17:08:24 +02:00
msvensson@shellback.(none)
ca611ed679 Move list of mysqls src dirs into lib/mtr_gcov.pl as it's only used from there 2006-10-08 17:05:17 +02:00
msvensson@shellback.(none)
b896bd0a6e When looking for client binary directories it necessary to look for the one s that are "deep down" first. 2006-10-08 16:11:55 +02:00
msvensson@shellback.(none)
5fa22794fd Reorder the order of feature checks a bit
Make the mysqld_variables hash global so it can be used throughout the program
2006-10-08 15:50:16 +02:00
svoj@may.pils.ru
b7f016dbd3 Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-4.1
into  may.pils.ru:/home/svoj/devel/bk/mysql-4.1-engines
2006-10-08 15:11:17 +05:00
msvensson@neptunus.(none)
6f3f15c7bb Fix spelling error 2006-10-07 20:16:57 +02:00
msvensson@neptunus.(none)
804d2effa2 Improve sort algorithm for reorder, all test with smae name except for ending digit should be run after each other.
Example of that is ndb_autodiscover[1-3]
2006-10-07 19:11:37 +02:00
msvensson@neptunus.(none)
7ba1880369 Add error handling of failure to start server to "run_testcase_start_servers" 2006-10-06 17:15:26 +02:00
msvensson@neptunus.(none)
738ba624d3 Fix problem with specifying vardir, mysql_version_id was not yet available when vardir arguments is checked
Move the code to look for exe_mysqld earlier => to initial_setup
Fix warnings detected by running with "diagnostics"
Remove unused option "opt_result_ext"
Init "path_ndb_examples_dir"
2006-10-06 16:26:17 +02:00
msvensson@neptunus.(none)
076526577a Merge neptunus.(none):/home/msvensson/mysql/same_tools/my41-same_tools
into  neptunus.(none):/home/msvensson/mysql/mysql-4.1-maint
2006-10-06 13:35:02 +02:00
msvensson@neptunus.(none)
d3bc5df837 Modify regex for parsing mysqld version as the mysqld is sometimes a libtool wrapper and
the "mysqld --version" command will print "/path/.libs/lt-mysqld  Ver x.x.x"
2006-10-06 13:33:12 +02:00
msvensson@neptunus.(none)
37be4fdff6 Merge neptunus.(none):/home/msvensson/mysql/same_tools/my41-same_tools
into  neptunus.(none):/home/msvensson/mysql/mysql-4.1-maint
2006-10-06 13:18:52 +02:00
msvensson@neptunus.(none)
9d5b871f16 Always need restart for im_* tests 2006-10-06 12:46:21 +02:00
msvensson@neptunus.(none)
a0fd2ad5d4 Only print thesort order debug printout if using script-debug 2006-10-06 11:49:31 +02:00
svoj@mysql.com/april.(none)
6a1a765b5d Per discussion with pekka removed non-deterministic test case for bug#21381. 2006-10-06 14:47:58 +05:00
kroki/tomash@moonlight.intranet
ee0cebf9a7 BUG#21726: Incorrect result with multiple invocations of LAST_INSERT_ID.
Note: bug#21726 does not directly apply to 4.1, as it doesn't have stored
procedures.  However, 4.1 had some bugs that were fixed in 5.0 by the
patch for bug#21726, and this patch is a backport of those fixes.
Namely, in 4.1 it fixes:

  - LAST_INSERT_ID(expr) didn't return value of expr (4.1 specific).

  - LAST_INSERT_ID() could return the value generated by current
    statement if the call happens after the generation, like in

      CREATE TABLE t1 (i INT AUTO_INCREMENT PRIMARY KEY, j INT);
      INSERT INTO t1 VALUES (NULL, 0), (NULL, LAST_INSERT_ID());

  - Redundant binary log LAST_INSERT_ID_EVENTs could be generated.
2006-10-06 13:34:07 +04:00
msvensson@neptunus.(none)
22f1cc58c2 Improve 'run_testcase_need_master_restart' to require restart if master is not already started
Improve 'run_testcase_need_slave_restart' to detect if a slave restart really is necessary. 
So far all rpl test requires a slave restart, but for all other tests it can be skipped
Improve the sort order used by --reorder
2006-10-06 11:23:19 +02:00
svoj@mysql.com/april.(none)
c67aa031d6 Addition to fix for bug#10974. Fixed spelling. 2006-10-06 10:54:47 +05:00
msvensson@neptunus.(none)
f638be87cb Rename "snapshot_setup" to "datadir_setup" as that is what is done by it.
Move call f dunction into "initialize_servers" so it's called also
in stress and bench mode
2006-10-06 01:22:33 +02:00
msvensson@neptunus.(none)
ae4df31df4 Add printout of file in which warning was detected
Cleanup .progress, .reject, .log and .warnings files produced by mysqltest
2006-10-06 00:57:10 +02:00
msvensson@neptunus.(none)
babde331a4 Print the newly found version number in human readable format 2006-10-05 22:29:16 +02:00
msvensson@neptunus.(none)
76c63e716f Open input file with "<" not ">>" 2006-10-05 22:06:29 +02:00
msvensson@neptunus.(none)
02693c37d9 Add policy directive about keeping mysqltest framework tools identical in all versions 2006-10-05 22:05:42 +02:00