Commit graph

955 commits

Author SHA1 Message Date
unknown
91427f2434 Merge hundin.mysql.fi:/home/marko/k/mysql-4.0
into hundin.mysql.fi:/home/marko/mysql-4.1


innobase/row/row0mysql.c:
  Auto merged
2005-05-26 15:57:24 +03:00
unknown
9181c17c14 InnoDB: Check all referencing tables in DROP DATABASE (Bug #10335).
innobase/row/row0mysql.c:
  row_drop_table_for_mysql(): Check all referencing tables
  when drop_db==TRUE (Bug #10335)
2005-05-26 15:42:24 +03:00
unknown
c4a1210fd4 row0mysql.c:
InnoDB wrongly complained in the .err log that MySQL is trying to drop a non-existent table, if tablespace ran out (Bug #10607)


innobase/row/row0mysql.c:
  InnoDB wrongly complained in the .err log that MySQL is trying to drop a non-existent table, if tablespace ran out (Bug #10607)
2005-05-13 18:37:22 +03:00
unknown
98eb8d7c16 Merge marko@bk-internal.mysql.com:/home/bk/mysql-4.1
into hundin.mysql.fi:/home/marko/mysql-4.1


sql/ha_innodb.cc:
  Auto merged
2005-05-06 10:15:58 +03:00
unknown
705d163124 dict0dict.c, dict0dict.h, fil0fil.c:
Fix a problem in crash recovery of .ibd files on Windows if the user used lower_case_table_names=0 or 2; the directory scan in crash recovery forgot to put all paths to lower case, so that the tablespace name would be consistent with the internal data dictionary of InnoDB; remember that InnoDB puts internally all database names and table names to lower case on Windows, regardless of the value of lower_case_table_names


innobase/fil/fil0fil.c:
  Fix a problem in crash recovery of .ibd files on Windows if the user used lower_case_table_names=0 or 2; the directory scan in crash recovery forgot to put all paths to lower case, so that the tablespace name would be consistent with the internal data dictionary of InnoDB; remember that InnoDB puts internally all database names and table names to lower case on Windows, regardless of the value of lower_case_table_names
innobase/include/dict0dict.h:
  Fix a problem in crash recovery of .ibd files on Windows if the user used lower_case_table_names=0 or 2; the directory scan in crash recovery forgot to put all paths to lower case, so that the tablespace name would be consistent with the internal data dictionary of InnoDB; remember that InnoDB puts internally all database names and table names to lower case on Windows, regardless of the value of lower_case_table_names
innobase/dict/dict0dict.c:
  Fix a problem in crash recovery of .ibd files on Windows if the user used lower_case_table_names=0 or 2; the directory scan in crash recovery forgot to put all paths to lower case, so that the tablespace name would be consistent with the internal data dictionary of InnoDB; remember that InnoDB puts internally all database names and table names to lower case on Windows, regardless of the value of lower_case_table_names
2005-04-27 02:57:19 +03:00
unknown
eb72815b6f InnoDB: Truncate SHOW INNODB STATUS output at the start of the list
of active transactions, if necessary and possible.  (Bug #5436)


innobase/include/lock0lock.h:
  Split lock_print_info() into lock_print_info_summary()
  and lock_print_info_all_transactions().
innobase/lock/lock0lock.c:
  Split lock_print_info() into lock_print_info_summary()
  and lock_print_info_all_transactions().
innobase/include/srv0srv.h:
  srv_printf_innodb_monitor(): Add output parameters trx_start and trx_end.
innobase/srv/srv0srv.c:
  srv_printf_innodb_monitor(): Add output parameters trx_start and trx_end.
sql/ha_innodb.cc:
  innodb_show_status(): Truncate oversized output at the beginning
  of the list of active transactions, if possible.
2005-04-19 14:35:47 +03:00
unknown
56ea770272 Fixed a bug: deadlock without any locking, simple select and update (Bug #7975).
Backported from 5.0.3.


innobase/row/row0ins.c:
  If the SQL-query will update or replace duplicate records we take X-lock
  for duplicate records.
sql/ha_innodb.cc:
  INSERT ON DUPLICATE KEY UPDATE will also update duplicate records and we should
  take X-lock in this case for duplicate records.
2005-04-18 12:17:32 +03:00
unknown
ce22ebd02d fil0fil.c:
Add fault tolerance in the scan of .ibd files at a crash recovery; formerly a single failure of readdir_get_next caused the rest of the directory to be skipped


innobase/fil/fil0fil.c:
  Add fault tolerance in the scan of .ibd files at a crash recovery; formerly a single failure of readdir_get_next caused the rest of the directory to be skipped
2005-04-14 22:27:15 +03:00
unknown
3fbb9c39a7 fil0fil.c:
At the shutdown, write the latest lsn only to the first pages of the ibdata files of the system tablespace, NOT to the .ibd files; writing to tens of thousands .ibd files can take minutes


innobase/fil/fil0fil.c:
  At the shutdown, write the latest lsn only to the first pages of the ibdata files of the system tablespace, NOT to the .ibd files; writing to tens of thousands .ibd files can take minutes
2005-04-13 17:22:04 +03:00
unknown
880d0295d6 row0sel.c:
Do not test the value of err if the lock operation was skipped because innodb_logs_unsafe_for_binlog was TRUE; though this did not cause any bugs visible to the user, because err is inited to DB_SUCCESS at the start of the function row_search_for_mysql()


innobase/row/row0sel.c:
  Do not test the value of err if the lock operation was skipped because innodb_logs_unsafe_for_binlog was TRUE; though this did not cause any bugs visible to the user, because err is inited to DB_SUCCESS at the start of the function row_search_for_mysql()
2005-04-13 15:49:28 +03:00
unknown
dec90f5b36 InnoDB: Ignore character set mismatch in ALTER TABLE and RENAME TABLE
if foreign_key_checks=0. (Bug #9802)


innobase/dict/dict0dict.c:
  dict_foreign_add_to_cache(): Add flag check_types.
  If the flag is FALSE, ignore character set mismatch.
innobase/dict/dict0load.c:
  dict_load_foreign(), dict_load_foreigns(): Add flag check_types.
  If the flag is FALSE, differences in character sets will be ignored.
innobase/include/dict0dict.h:
  dict_foreign_add_to_cache(): Add flag check_types.
  If the flag is FALSE, differences in character sets will be ignored.
innobase/include/dict0load.h:
  dict_load_foreigns(): Add flag check_types.
  If the flag is FALSE, differences in character sets will be ignored.
innobase/row/row0mysql.c:
  row_table_add_foreign_constraints(), row_rename_table_for_mysql():
  Pass trx->check_foreigns to dict_load_foreigns()
sql/ha_innodb.cc:
  ha_innobase::rename_table(): Clear trx->check_foreign if necessary.
2005-04-12 16:12:34 +03:00
unknown
cde615c9cb InnoDB: Avoid test suite failures caused by a locking conflict
between two server instances at server shutdown/startup.
This conflict on advisory locks appears to be the result of a bug
in the operating system; these locks should be released when the
files are closed, but somehow that does not always happen
immediately in Linux.  (Bug #9381)


innobase/include/os0file.h:
  Add OS_FILE_OPEN_RETRY for os_file_create()ing ibdata1
innobase/os/os0file.c:
  os_file_lock(): Do not close the file on failure, but let the
  callers do that.
  os_file_create(): If create_mode==OS_FILE_OPEN_RETRY and
  os_file_lock() fails, keep retrying for 100 seconds.
innobase/srv/srv0start.c:
  open_or_create_data_files(): Open the first data file with
  OS_FILE_OPEN_RETRY, to resolve a conflict with a shutting-down
  instance of the MySQL server.
2005-04-06 15:09:15 +03:00
unknown
97b26d3b93 row0sel.c, btr0pcur.c, btr0pcur.ic, btr0pcur.h:
Add diagnostic code to track assertion failure in ut_a(cursor->old_stored == BTR_PCUR_OLD_STORED); the failure happened in OPTIMIZE TABLE, and in 4.0.24 in some other context


innobase/include/btr0pcur.h:
  Add diagnostic code to track assertion failure in ut_a(cursor->old_stored == BTR_PCUR_OLD_STORED); the failure happened in OPTIMIZE TABLE, and in 4.0.24 in some other context
innobase/include/btr0pcur.ic:
  Add diagnostic code to track assertion failure in ut_a(cursor->old_stored == BTR_PCUR_OLD_STORED); the failure happened in OPTIMIZE TABLE, and in 4.0.24 in some other context
innobase/btr/btr0pcur.c:
  Add diagnostic code to track assertion failure in ut_a(cursor->old_stored == BTR_PCUR_OLD_STORED); the failure happened in OPTIMIZE TABLE, and in 4.0.24 in some other context
innobase/row/row0sel.c:
  Add diagnostic code to track assertion failure in ut_a(cursor->old_stored == BTR_PCUR_OLD_STORED); the failure happened in OPTIMIZE TABLE, and in 4.0.24 in some other context
2005-04-06 10:27:40 +03:00
unknown
fee508a430 dict0dict.c:
Add a note that ENUM in new tables cannot reference ENUM in old tables, in FOREIGN KEY constraints


innobase/dict/dict0dict.c:
  Add a note that ENUM in new tables cannot reference ENUM in old tables, in FOREIGN KEY constraints
2005-04-05 11:35:03 +03:00
unknown
6d0d2c7e1d trx0trx.c:
If MySQL wrote to its binlog, but for some reason trx->update_undo and trx->insert_undo were NULL in InnoDB, then trx->commit_lsn was garbage, and InnoDB could assert in the log flush of trx_commit_complete_for_mysql() (Bug #9277)


innobase/trx/trx0trx.c:
  If MySQL wrote to its binlog, but for some reason trx->update_undo and trx->insert_undo were NULL in InnoDB, then trx->commit_lsn was garbage, and InnoDB could assert in the log flush of trx_commit_complete_for_mysql() (Bug #9277)
2005-03-21 22:21:55 +02:00
unknown
421907e932 Merge
BitKeeper/etc/logging_ok:
  auto-union
innobase/include/trx0trx.h:
  Auto merged
innobase/trx/trx0trx.c:
  SCCS merged
2005-03-21 22:14:00 +02:00
unknown
7656b6da71 trx0trx.c, trx0trx.h:
If MySQL wrote to its binlog, but for some reason trx->update_undo and trx->insert_undo were NULL in InnoDB, then trx->commit_lsn was garbage, and InnoDB could assert in the log flush of trx_commit_complete_for_mysql() (Bug #9277)


innobase/include/trx0trx.h:
  If MySQL wrote to its binlog, but for some reason trx->update_undo and trx->insert_undo were NULL in InnoDB, then trx->commit_lsn was garbage, and InnoDB could assert in the log flush of trx_commit_complete_for_mysql() (Bug #9277)
innobase/trx/trx0trx.c:
  If MySQL wrote to its binlog, but for some reason trx->update_undo and trx->insert_undo were NULL in InnoDB, then trx->commit_lsn was garbage, and InnoDB could assert in the log flush of trx_commit_complete_for_mysql() (Bug #9277)
2005-03-21 22:10:42 +02:00
unknown
bcabdc22bf Merge hundin.mysql.fi:/home/marko/k/mysql-4.0
into hundin.mysql.fi:/home/marko/mysql-4.1


innobase/dict/dict0load.c:
  SCCS merged
2005-03-15 11:14:57 +02:00
unknown
f56889321f buf0flu.c:
Add diagnostics to track why ut_a(block->state == BUF_BLOCK_FILE_PAGE) failed in buf_flush_ready_for_replace() for a user


innobase/buf/buf0flu.c:
  Add diagnostics to track why ut_a(block->state == BUF_BLOCK_FILE_PAGE) failed in buf_flush_ready_for_replace() for a user
2005-03-15 08:33:47 +02:00
unknown
10852be938 dict0load.c:
dict_load_table(): Refuse to open ROW_FORMAT=COMPACT tables
  of MySQL 5.0.3 and later.


innobase/dict/dict0load.c:
  dict_load_table(): Refuse to open ROW_FORMAT=COMPACT tables
  of MySQL 5.0.3 and later.
2005-03-14 12:43:22 +02:00
unknown
368731548e log0recv.c:
Better ibbackup message
  Add a message explaining why we do a 'crash recovery' after an ibbackup restore; suggested by Tim Smith


innobase/log/log0recv.c:
  Better ibbackup message
2005-03-09 20:32:01 +02:00
unknown
8ce2071248 dict0load.c:
dict_load_table(): Do not complain about mix_len != 0,
  because MySQL 3.23.4x left garbage in that column.


innobase/dict/dict0load.c:
  dict_load_table(): Do not complain about mix_len != 0,
  because MySQL 3.23.4x left garbage in that column.
2005-03-08 20:06:09 +02:00
unknown
ab0e331436 After merge fixes
innobase/dict/dict0load.c:
  dict_load_table():
  Display diagnostic output if mix_len differs from 0.
2005-03-08 17:18:27 +02:00
unknown
976543fe84 dict0load.c:
dict_load_table(): Remove the check for row_format=compact for now,
  because the flag bit we used (high-order bit of mix_len)
  has not been zero for at least two customers.


innobase/dict/dict0load.c:
  dict_load_table(): Remove the check for row_format=compact for now,
  because the flag bit we used (high-order bit of mix_len)
  has not been zero for at least two customers.
2005-03-08 17:08:17 +02:00
unknown
b80ec98e28 Merge hundin.mysql.fi:/home/marko/k/mysql-4.0
into hundin.mysql.fi:/home/marko/mysql-4.1


innobase/include/srv0srv.h:
  Auto merged
innobase/srv/srv0srv.c:
  Auto merged
2005-03-08 16:02:13 +02:00
unknown
c9b0cbf013 InnoDB: Win64 portability fix: add missing declaration and
correct the definition of srv_max_buf_pool_modified_pct.


innobase/include/srv0srv.h:
  Declare srv_max_buf_pool_modified_pct
innobase/srv/srv0srv.c:
  Define srv_max_buf_pool_modified_pct as ulong,
  as it is declared in ha_innodb.h.
2005-03-08 11:12:18 +02:00
unknown
9396ef5b2d Merge marko@bk-internal.mysql.com:/home/bk/mysql-4.1
into hundin.mysql.fi:/home/marko/mysql-4.1
2005-03-07 15:28:11 +02:00
unknown
309b4721d5 trx0trx.c:
Print a hex dump of the trx_t object if trx->n_mysql_tables_in_use != 0 at trx_free()


innobase/trx/trx0trx.c:
  Print a hex dump of the trx_t object if trx->n_mysql_tables_in_use != 0 at trx_free()
2005-03-07 15:28:10 +02:00
unknown
9c6cc47f74 InnoDB: Portability fixes for warnings reported on IA-64 Windows
innobase/buf/buf0lru.c:
  Portability fix: Use %p for printing pointers
innobase/dict/dict0dict.c:
  Properly cast the arguments of toupper()
innobase/eval/eval0proc.c:
  Declare loop_var_value with a matching data type.
innobase/include/mem0mem.ic:
  Remove implicit type conversion
innobase/include/page0page.ic:
  Portability fix: Use %p for printing pointers
innobase/include/pars0pars.h:
  Remove implicit type conversion
innobase/include/pars0sym.h:
  Remove implicit type conversion
innobase/mem/mem0dbg.c:
  Portability fix: Use %p for printing pointers
innobase/os/os0file.c:
  Add DWORD casts for Windows
innobase/os/os0sync.c:
  Add DWORD casts for Windows
innobase/os/os0thread.c:
  Add DWORD casts for Windows
innobase/rem/rem0cmp.c:
  Make implicit type conversions explicit
innobase/row/row0mysql.c:
  Make implicit type conversions explicit
innobase/row/row0sel.c:
  Portability fix: Use %p for printing pointers
innobase/trx/trx0sys.c:
  Declare trx_sys_mysql_bin_log_pos_high and
  trx_sys_mysql_bin_log_pos_low with a matching data type
innobase/ut/ut0ut.c:
  Make implicit type conversion explicit
2005-03-07 12:03:33 +02:00
unknown
58002dddc1 ut0mem.c:
If InnoDB cannot allocate memory, keep retrying for 60 seconds before we crash mysqld; maybe the memory shortage is just temporary


innobase/ut/ut0mem.c:
  If InnoDB cannot allocate memory, keep retrying for 60 seconds before we crash mysqld; maybe the memory shortage is just temporary
2005-03-04 18:17:29 +02:00
unknown
6736ce56fb trx0trx.c:
Do not assert, but print diagnostics if MySQL tries to free a trx where n_mysql_tables_in_use > 0


innobase/trx/trx0trx.c:
  Do not assert, but print diagnostics if MySQL tries to free a trx where n_mysql_tables_in_use > 0
2005-03-04 17:58:06 +02:00
unknown
56c517bda1 Merge marko@bk-internal.mysql.com:/home/bk/mysql-4.1
into hundin.mysql.fi:/home/marko/mysql-4.1
2005-03-04 15:27:07 +02:00
unknown
560968258f srv0start.c:
Work around the AIX 5.1 security patch ML7 problem in errno when it should be EEXIST


innobase/srv/srv0start.c:
  Work around the AIX 5.1 security patch ML7 problem in errno when it should be EEXIST
2005-03-03 18:00:34 +02:00
unknown
f3d52f8c8c Merge
innobase/os/os0file.c:
  Auto merged
innobase/srv/srv0start.c:
  SCCS merged
2005-03-03 17:50:04 +02:00
unknown
afc8527360 srv0start.c:
Work around the AIX 5.1 ML7 patch problem in errno at a higher level, in srv0start.c
os0file.c:
  Revert the AIX patch here


innobase/os/os0file.c:
  Revert the AIX patch here
innobase/srv/srv0start.c:
  Work around the AIX 5.1 ML7 patch problem in errno at a higher level, in srv0start.c
2005-03-03 17:46:56 +02:00
unknown
4e4fbf4839 Merge hundin.mysql.fi:/home/heikki/mysql-4.0
into hundin.mysql.fi:/home/heikki/mysql-4.1


innobase/os/os0file.c:
  Auto merged
2005-03-03 17:26:12 +02:00
unknown
969be90f71 os0file.c:
AIX 5.1 after security patch ML7 seems to contain a bug that instead of EEXIST it sets errno to 0 if a file creation fails because the file already exists. Work around that bug by interpreting errno 0 in AIX as EEXIST.


innobase/os/os0file.c:
  AIX 5.1 after security patch ML7 seems to contain a bug that instead of EEXIST it sets errno to 0 if a file creation fails because the file already exists. Work around that bug by interpreting errno 0 in AIX as EEXIST.
2005-03-03 17:20:05 +02:00
unknown
a10fb6971a row0sel.c:
row_sel_store_mysql_rec(): Do not try to space-pad BLOB fields. (Bug #8771)


innobase/row/row0sel.c:
  row_sel_store_mysql_rec(): Do not try to space-pad BLOB fields. (Bug #8771)
2005-03-01 20:46:23 +02:00
unknown
f2afed0d77 After merge fixes 2005-03-01 09:51:32 +02:00
unknown
61ffbc31ae InnoDB: Fix compilation errors on IA-64 Windows
innobase/include/srv0srv.h:
  Declare srv_auto_extend_increment and srv_max_purge_lag as ulong,
  because ulint and ulong are of different size on Win64.
innobase/srv/srv0srv.c:
  Declare srv_auto_extend_increment and srv_max_purge_lag as ulong,
  because ulint and ulong are of different size on Win64.
2005-03-01 09:27:09 +02:00
unknown
8e3addf928 Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/my/mysql-4.1


BitKeeper/etc/ignore:
  added support-files/ndb-config-2-node.ini
2005-02-28 12:00:18 +02:00
unknown
8b8c9452dd Fixed wrong memory references found by purify
(No really critical errors found, but a few possible wrong results)


innobase/dict/dict0dict.c:
  Replace memcmp with comparison of characters to avoid warnings from purify when 'sptr' points to a very short string
mysql-test/r/select_found.result:
  Add missing drop table
mysql-test/r/type_set.result:
  More tests
mysql-test/t/select_found.test:
  Add missing drop table
mysql-test/t/type_set.test:
  More tests
mysys/my_init.c:
  Avoid warning from purify (purify doesn't handle getrusage() properly)
sql/field.h:
  enum & set are sorted as numbers. This fixes an access to uninitialized memory when enum/set are multi-byte characters
sql/filesort.cc:
  enum & set are sorted as numbers. This fixes an access to uninitialized memory when enum/set are multi-byte characters
sql/item_cmpfunc.cc:
  Fixed warning from purify. (Not critical as the arguments are passed to a function but not used)
  Allocate Arg_comparator() with 'new' instead of sql_alloc() to ensure proper initialization
sql/mysqld.cc:
  Wait for signal handler to stop when running --bootstrap
  (Fixes warning from purify)
sql/sql_insert.cc:
  Initialize slot used by innodb.cc (not critical)
sql/sql_lex.h:
  Better comments
sql/sql_repl.cc:
  memcmp -> bcmp() to avoid warning from purify
sql/sql_select.cc:
  Fix for out-of-bound memory reference when doing DISTINCT on const expressions
strings/ctype-simple.c:
  Fixes to not access uninitialized memory
  (Not critical)
2005-02-28 11:59:46 +02:00
unknown
46a8c52217 fil0fil.c:
Check if node == NULL, which means we are outside tablespace bounds, and print a big fatal error message


innobase/fil/fil0fil.c:
  Check if node == NULL, which means we are outside tablespace bounds, and print a big fatal error message
2005-02-25 22:16:14 +02:00
unknown
d9f6581f25 row0sel.c:
Fix bug #8677: if one used LOCK TABLES, created an InnoDB temp table, and did a multi-table update where a MyISAM table was the update table and the temp table was a read table, then InnoDB aserted in row0sel.c because n_mysql_tables_in_use was 0. Also, we remove the assertion altogether and just print an error to the .err log if this important consistency check fails. Then it is up to the user to read the .err log and notice the problem if there still are errors in MySQL's table locking.


innobase/row/row0sel.c:
  Fix bug #8677: if one used LOCK TABLES, created an InnoDB temp table, and did a multi-table update where a MyISAM table was the update table and the temp table was a read table, then InnoDB aserted in row0sel.c because n_mysql_tables_in_use was 0. Also, we remove the assertion altogether and just print an error to the .err log if this important consistency check fails. Then it is up to the user to read the .err log and notice the problem if there still are errors in MySQL's table locking.
2005-02-22 21:05:17 +02:00
unknown
0d57871425 Merge hundin.mysql.fi:/home/heikki/mysql-4.0
into hundin.mysql.fi:/home/heikki/mysql-4.1


innobase/row/row0mysql.c:
  Auto merged
sql/sql_cache.cc:
  Auto merged
2005-02-13 21:05:18 +02:00
unknown
4c21a10f27 row0mysql.c:
Backport the column prefix memory corruption fix from 5.0


innobase/row/row0mysql.c:
  Backport the column prefix memory corruption fix from 5.0
2005-02-13 21:00:07 +02:00
unknown
613c2f68e2 Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/my/mysql-4.1
2005-02-02 16:50:35 +02:00
unknown
d5311abe2c eval0eval.ic:
Remove wrong assertion that fails on 64 bits


innobase/include/eval0eval.ic:
  Remove wrong assertion that fails on 64 bits
2005-02-02 01:43:25 +02:00
unknown
3c04bddb04 rem0rec.ic:
Fix a debug assertion in rem0rec.ic on AMD64; 4.1 was already fixed


innobase/include/rem0rec.ic:
  Fix a debug assertion in rem0rec.ic on AMD64; 4.1 was already fixed
2005-02-02 00:31:06 +02:00
unknown
c53184ebb7 Proper fix for comparision with ' '
(Bug #7788 "Table is full" occurs during a multitable update")


client/mysqldump.c:
  Style fixes
innobase/include/univ.i:
  UNIV_DEBUG should not depend on configure --debug but on --debug=full
mysql-test/r/compare.result:
  Added test to find bug in previous bugfix
mysql-test/t/compare.test:
  Added test to find bug in previous bugfix
mysys/my_handler.c:
  Proper fix for comparision with ' '
strings/ctype-big5.c:
  Proper fix for comparision with ' '
strings/ctype-bin.c:
  Proper fix for comparision with ' '
strings/ctype-gbk.c:
  Proper fix for comparision with ' '
strings/ctype-latin1.c:
  Proper fix for comparision with ' '
strings/ctype-mb.c:
  Proper fix for comparision with ' '
strings/ctype-simple.c:
  Proper fix for comparision with ' '
strings/ctype-sjis.c:
  Proper fix for comparision with ' '
strings/ctype-tis620.c:
  Proper fix for comparision with ' '
strings/ctype-ucs2.c:
  Proper fix for comparision with ' '
strings/ctype-utf8.c:
  Proper fix for comparision with ' '
2005-02-01 16:27:08 +02:00