Commit graph

193 commits

Author SHA1 Message Date
gluh@mysql.com/eagle.(none)
eef0772b89 result fix 2007-09-20 16:27:58 +05:00
gluh@eagle.(none)
88a4df4ec0 Merge mysql.com:/home/gluh/MySQL/Merge/5.0-opt
into  mysql.com:/home/gluh/MySQL/Merge/5.1-opt
2007-09-20 14:10:05 +05:00
gluh@mysql.com/eagle.(none)
6b81174cde Bug#27747 database metadata doesn't return sufficient column default info
added get_field_default_value() function which obtains default value from the field
(used in store_create_info() & get_schema_column_record() functions)
2007-09-20 13:54:46 +05:00
ramil/ram@ramil.myoffice.izhnet.ru
0d9301585b Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  mysql.com:/home/ram/work/b30088/b30088.5.0
2007-08-02 18:23:23 +05:00
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
e8eaca54a3 After-merge fix: result adjusted. 2007-08-02 17:14:48 +05:00
tsmith@ramayana.hindu.god
0f6f44424f Post-merge fix. Update some test results, and add an InnoDB-only
compatibility hook, thd_mark_transaction_to_rollback().
2007-08-02 02:22:31 -06:00
tsmith@ramayana.hindu.god
a52a078f75 Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.1-opt
into  ramayana.hindu.god:/home/tsmith/m/bk/maint/51
2007-08-01 18:40:02 -06:00
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
c62d7528c8 Fix for bug #30088: Can't disable myisam-recover by a value of "".
- test result.

Problem: we don't proper handle "" value of the --myisam-recover option.

Fix: turn off myisam recovering if --myisam-recover="" is set.
2007-08-01 11:41:13 +05:00
gkodinov/kgeorge@magare.gmz
51f8aa9615 show_check.result:
Addendum to thr fix for bug 30000:
  show procedure/function code defined only in debug builds
show_check.test:
  Addendum to thr fix for bug 30000: 
  show procedure/function code defined only in debug builds
2007-07-28 08:42:43 +03:00
malff/marcsql@weblab.(none)
32668a2e08 Merge malff@bk-internal.mysql.com:/home/bk/mysql-5.1-runtime
into  weblab.(none):/home/marcsql/TREE/mysql-5.1-25422-d
2007-07-27 12:22:00 -06:00
anozdrin/alik@ibm.
47345bd04f Fix merge. 2007-07-27 21:50:37 +04:00
gkodinov/kgeorge@magare.gmz
9e1dd00ff2 Bug #30000: SHOW commands once again ends up in the
slow query log
Disable the SHOW commands to appear in the show query
log.
Update the commands type array.
2007-07-27 17:55:39 +03:00
malff/marcsql@weblab.(none)
c7bbd8917c WL#3984 (Revise locking of mysql.general_log and mysql.slow_log)
Bug#25422 (Hang with log tables)
Bug 17876 (Truncating mysql.slow_log in a SP after using cursor locks the
          thread)
Bug 23044 (Warnings on flush of a log table)
Bug 29129 (Resetting general_log while the GLOBAL READ LOCK is set causes
           a deadlock)

Prior to this fix, the server would hang when performing concurrent
ALTER TABLE or TRUNCATE TABLE statements against the LOG TABLES,
which are mysql.general_log and mysql.slow_log.

The root cause traces to the following code:
in sql_base.cc, open_table()
  if (table->in_use != thd)
  {
    /* wait_for_condition will unlock LOCK_open for us */
    wait_for_condition(thd, &LOCK_open, &COND_refresh);
  }
The problem with this code is that the current implementation of the
LOGGER creates 'fake' THD objects, like
- Log_to_csv_event_handler::general_log_thd
- Log_to_csv_event_handler::slow_log_thd
which are not associated to a real thread running in the server,
so that waiting for these non-existing threads to release table locks
cause the dead lock.

In general, the design of Log_to_csv_event_handler does not fit into the
general architecture of the server, so that the concept of general_log_thd
and slow_log_thd has to be abandoned:
- this implementation does not work with table locking
- it will not work with commands like SHOW PROCESSLIST
- having the log tables always opened does not integrate well with DDL
operations / FLUSH TABLES / SET GLOBAL READ_ONLY

With this patch, the fundamental design of the LOGGER has been changed to:
- always open and close a log table when writing a log
- remove totally the usage of fake THD objects
- clarify how locking of log tables is implemented in general.

See WL#3984 for details related to the new locking design.

Additional changes (misc bugs exposed and fixed):

1)

mysqldump which would ignore some tables in dump_all_tables_in_db(),
 but forget to ignore the same in dump_all_views_in_db().

2)

mysqldump would also issue an empty "LOCK TABLE" command when all the tables
to lock are to be ignored (numrows == 0), instead of not issuing the query.

3)

Internal errors handlers could intercept errors but not warnings
(see sql_error.cc).

4)

Implementing a nested call to open tables, for the performance schema tables,
exposed an existing bug in remove_table_from_cache(), which would perform:
  in_use->some_tables_deleted=1;
against another thread, without any consideration about thread locking.
This call inside remove_table_from_cache() was not required anyway,
since calling mysql_lock_abort() takes care of aborting -- cleanly -- threads
that might hold a lock on a table.
This line (in_use->some_tables_deleted=1) has been removed.
2007-07-27 00:31:06 -06:00
gkodinov/kgeorge@magare.gmz
5324d45a10 Bug #30036: SHOW TABLE TYPES causes the debug client to crash
SHOW TABLE TYPES is a (to be deprecated) synonym for 
SHOW STORAGE ENGINES.
Fixed to use the right schema table in addition to 
issuing a warning.
2007-07-26 18:33:05 +03:00
anozdrin/alik@ibm.
9f8593e81c Patch inspired by BUG#10491: Server returns data as charset
binary SHOW CREATE TABLE or SELECT FROM I_S.

The problem is that mysqldump generates incorrect dump for a table
with non-ASCII column name if the mysqldump's character set is
ASCII.

The fix is to:
  1. Switch character_set_client for the mysqldump's connection
  to binary before issuing SHOW CREATE TABLE statement in order
  to avoid conversion.
  
  2. Dump switch character_set_client statements to UTF8 and back
  for CREATE TABLE statement.
2007-07-25 19:46:50 +04:00
kostja@bodhi.(none)
be4f73c44f Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  bodhi.(none):/opt/local/work/mysql-5.1-runtime
2007-07-16 17:22:33 +04:00
anozdrin/alik@ibm.
3f2e94c401 Fix for 5.1 for BUG#10491: Server returns data as charset binary
SHOW CREATE TABLE or SELECT FROM I_S.

This is the last patch for this bug, which depends on the big
CS patch and was pending.

The problem was that SHOW CREATE statements returned original
queries in the binary character set. That could cause the query
to be unreadable.

The fix is to use original character_set_client when sending
the original query to the client. In order to preserve the query
in mysqldump, 'binary' character set results should be set when
issuing SHOW CREATE statement. If either source or destination
character set is 'binary' , no conversion is performed.
The idea is that since the source character set is no longer
'binary', we fix the destination character set to still produce
valid dumps.
2007-07-12 12:49:39 +04:00
tsmith@sita.local
5f12f35c34 Merge sita.local:/Users/tsmith/m/bk/51
into  sita.local:/Users/tsmith/m/bk/maint/51

This merge requires a post-merge fix to remove rpl_udf from
suite/rpl/t/disabled.def.
2007-07-09 03:27:03 -06:00
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
b37c24c439 after-merge fix. 2007-07-09 10:39:49 +05:00
antony@ppcg5.local
6402e4324a Merge anubis.xiphis.org:/usr/home/antony/work/mysql-5.1-engines
into  anubis.xiphis.org:/usr/home/antony/work/mysql-5.1-engines.merge
2007-07-06 09:03:50 -07:00
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
fca06fbc68 Fix for bug #28808: log_queries_not_using_indexes variable dynamic change is ignored
Problem: logging queries not using indexes we check a special flag which 
is set only at the server startup and is not changing with a corresponding
server variable together.

Fix: check the variable value instead of the flag.
2007-07-05 15:34:12 +05:00
kostja@bodhi.(none)
1550a5ddee A post-merge fix. 2007-07-02 11:29:07 +04:00
kostja@bodhi.(none)
7ce3cada45 Merge bodhi.(none):/opt/local/work/mysql-5.0-runtime
into  bodhi.(none):/opt/local/work/mysql-5.1-runtime
2007-07-02 01:55:01 +04:00
anozdrin/alik@ibm.
9fae9ef66f Patch for the following bugs:
- BUG#11986: Stored routines and triggers can fail if the code
    has a non-ascii symbol
  - BUG#16291: mysqldump corrupts string-constants with non-ascii-chars
  - BUG#19443: INFORMATION_SCHEMA does not support charsets properly
  - BUG#21249: Character set of SP-var can be ignored
  - BUG#25212: Character set of string constant is ignored (stored routines)
  - BUG#25221: Character set of string constant is ignored (triggers)

There were a few general problems that caused these bugs:
1. Character set information of the original (definition) query for views,
   triggers, stored routines and events was lost.
2. mysqldump output query in client character set, which can be
   inappropriate to encode definition-query.
3. INFORMATION_SCHEMA used strings with mixed encodings to display object
   definition;

1. No query-definition-character set.

In order to compile query into execution code, some extra data (such as
environment variables or the database character set) is used. The problem
here was that this context was not preserved. So, on the next load it can
differ from the original one, thus the result will be different.

The context contains the following data:
  - client character set;
  - connection collation (character set and collation);
  - collation of the owner database;

The fix is to store this context and use it each time we parse (compile)
and execute the object (stored routine, trigger, ...).

2. Wrong mysqldump-output.

The original query can contain several encodings (by means of character set
introducers). The problem here was that we tried to convert original query
to the mysqldump-client character set.

Moreover, we stored queries in different character sets for different
objects (views, for one, used UTF8, triggers used original character set).

The solution is
  - to store definition queries in the original character set;
  - to change SHOW CREATE statement to output definition query in the
    binary character set (i.e. without any conversion);
  - introduce SHOW CREATE TRIGGER statement;
  - to dump special statements to switch the context to the original one
    before dumping and restore it afterwards.

Note, in order to preserve the database collation at the creation time,
additional ALTER DATABASE might be used (to temporary switch the database
collation back to the original value). In this case, ALTER DATABASE
privilege will be required. This is a backward-incompatible change.

3. INFORMATION_SCHEMA showed non-UTF8 strings

The fix is to generate UTF8-query during the parsing, store it in the object
and show it in the INFORMATION_SCHEMA.

Basically, the idea is to create a copy of the original query convert it to
UTF8. Character set introducers are removed and all text literals are
converted to UTF8.

This UTF8 query is intended to provide user-readable output. It must not be
used to recreate the object.  Specialized SHOW CREATE statements should be
used for this.

The reason for this limitation is the following: the original query can
contain symbols from several character sets (by means of character set
introducers).

Example:

  - original query:
    CREATE VIEW v1 AS SELECT _cp1251 'Hello' AS c1;

  - UTF8 query (for INFORMATION_SCHEMA):
    CREATE VIEW v1 AS SELECT 'Hello' AS c1;
2007-06-28 21:34:54 +04:00
anozdrin/alik@ibm.
6794da1159 Fix for BUG#10491: Server returns data as charset binary
SHOW CREATE TABLE or SELECT FROM I_S.

Actually, the bug discovers two problems:
  - the original query is not preserved properly. This is the problem
    of BUG#16291;
  - the resultset of SHOW CREATE TABLE statement is binary.

This patch fixes the second problem for the 5.0.

Both problems will be fixed in 5.1.
2007-06-28 13:24:52 +04:00
tsmith@maint1.mysql.com
2639886711 Bug #29245: Bad Merge Caused Error Codes Conflict between 5.0/5.1
Fix some error messages so that all error codes are equivalent in 5.0 and 5.1
2007-06-26 13:15:43 +02:00
bar@mysql.com/bar.myoffice.izhnet.ru
f28a584287 Additional fix for bug N26402:
An attempt to open file with name '????????.frm'
can produce different errors:
- ER_NO_SUCH_TABLE on Unix
- ER_FILE_NOT_FOUND on Windows
because QUESTION MARK has special meaning on Windows.
Make sure that any of these two errors happens.
2007-06-15 11:53:46 +05:00
bar@mysql.com/bar.myoffice.izhnet.ru
6d2ffe7b8e Bug#26402 Server crashes with old-style named table
Problem: crash on attempt to open a table
  having "#mysql50#" prefix in db or table name.
  Fix: This prefix is reserved for "mysql_upgrade"
  to access 5.0 tables  whose file names are not encoded
  according to "5.1 tablename to filename encoded".
  Don't try open tables whose db name or table name
  has this prefix.
2007-06-14 16:28:33 +05:00
kostja@bodhi.local
3d488d496d Merge bk-internal.mysql.com:/home/bk/mysql-5.1-new-rpl
into  bodhi.local:/opt/local/work/mysql-5.1-runtime-merge
2007-03-06 16:44:14 +03:00
malff/marcsql@weblab.(none)
2bd3c8fdcc Bug#24392 (SHOW ENGINE MUTEX STATUS is a synonym for SHOW INNODB STATUS)
Before this fix, the command SHOW ENGINE <name> STATUS would:
- print a warning if the engine name is unknown,
- proceed and implement the same behavior as SHOW ENGINE ALL STATUS,
and list the status of all the storage engines registered.

In particular, this behavior caused confusion about the command :
SHOW ENGINE MUTEX STATUS, which as a side effect would print the status
of the innodb engine when that engine is registered.

Also, before this fix, every time an unknown engine name was substituted by
the default engine (which happen unless SQL_MODE NO_ENGINE_SUBSTITUTION is
set), a malformed warning was raised.
For example, the command ALTER TABLE T1 ENGINE = X would print :
Warnings:
Error 1286 Unknown table engine 'X'

With this fix:
SHOW ENGINE <name> STATUS|LOGS|MUTEX
always fails with an error when the engine <name> is unknown.

For other commands, warnings about unknown engines are raised as:
Warnings:
Warning 1286 Unknown table engine 'X'

In other words, engine substitution never affect the SHOW ENGINE command,
since this would lead to very confusing results.
2007-01-23 15:14:08 -07:00
bar@bar.myoffice.izhnet.ru
b3ade670a6 Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.1-rpl
into  mysql.com:/home/bar/mysql-5.1.b25081
2007-01-23 14:37:12 +04:00
bar@mysql.com
f3156a1840 Bug#25081 SHOW FULL TABLES on table with latin chars in name fails
Problem: The Table_type column of "SHOW FULL TABLES" displayed
"ERROR" instead of "BASE TABLE" for tables having non-ascii
characters in their names.
Reason: tablename to filename encoding was missing, so
mysql_frm_type() tried to open a wrong file name.

Fix: adding tablename to filename encoding
2007-01-23 14:32:10 +04:00
patg@govinda.patg.net
f9097b86af Merge pgalbraith@bk-internal.mysql.com:/home/bk/mysql-5.1-arch
into  govinda.patg.net:/home/patg/mysql-build/mysql-5.1-arch-wl3031-merge
2006-12-08 22:30:18 -05:00
patg@govinda.patg.net
98062f567d WL# 3031
Post-commit issues fixed
* Test results for other tests fixed due to added error #s
* Memory allocation/free issues found with running with valgrind
* Fix to mysql-test-run shell script to run federated_server test (installs
mysql.servers table properly)
2006-12-08 22:19:51 -05:00
monty@narttu.mysql.fi
717284b85c Merge mysql.com:/home/my/mysql-5.0
into  mysql.com:/home/my/mysql-5.1
2006-11-29 23:07:15 +02:00
monty@mysql.com/nosik.monty.fi
9c3a2a0d8e Increased heap max length to > 4G for 64 bit machines
Initialize key_part->type on open. This caused key_copy() to fail for bit_fields. (key_copy is used in HANDLER and opt_range)
2006-11-28 00:47:21 +02:00
monty@nosik.monty.fi
38a92caeb7 Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  mysql.com:/home/my/mysql-5.1
2006-11-21 23:12:45 +02:00
monty@mysql.com/nosik.monty.fi
f6682e2743 Added --debug-info to most clients to detect memory leaks in mysql-test-run
Moved .progress files into the log directory
Moved 'cluster' database tables into the MySQL database, to not have 'cluster' beeing a reserved database name
Fixed bug where mysqld got a core dump when trying to use a table created by MySQL 3.23
Fixed some compiler warnings
Fixed small memory leak in libmysql
Note that this doesn't changeset doesn't include the new mysqldump.c code required to run some tests. This will be added when I merge 5.0 to 5.1
2006-11-21 22:32:58 +02:00
msvensson@neptunus.(none)
722aec24d3 Remove extra whitespace in result file 2006-10-18 22:47:30 +02:00
tsmith/tim@siva.hindu.god
a42a06cff5 Update ps and show_check results to account for new -master.opt settings. 2006-10-17 12:15:14 -06:00
tsmith/tim@siva.hindu.god
9711333914 Merge siva.hindu.god:/usr/home/tim/m/bk/b19764/50
into  siva.hindu.god:/usr/home/tim/m/bk/b19764/51
2006-10-16 18:42:22 -06:00
tsmith/tim@siva.hindu.god
0e3cfe02ec Bug #19764: SHOW commands end up in the slow log as table scans
Do not consider SHOW commands slow queries, just because they don't use proper indexes.

This bug fix is not needed in 5.1, and the code changes will be null merged.  However, the test cases will be propogated up to 5.1.
2006-10-12 17:10:34 -06:00
tsmith/tim@siva.hindu.god
360540e891 Revert patch for bug #19764, which did not work with prepared statements. 2006-10-11 23:35:52 -06:00
tsmith/tim@siva.hindu.god
f5c4d75e8f Bug #19764: SHOW commands end up in the slow log as table scans
Set a flag when a SHOW command is parsed, and check it in log_slow_statement().  SHOW commands are not counted as slow queries, even if they use table scans.
2006-10-03 21:26:55 -06:00
jimw@rama.(none)
bfb06f15fd Bug #19874: SHOW COLUMNS and SHOW KEYS handle identifiers containing \ incorrectly
Identifiers with embedded escape characters were not handled correctly by
  some SHOW statements due to some old code that was doing some extra unescaping.
2006-09-01 10:39:48 -07:00
brian@zim.(none)
41f920b013 Merge zim.(none):/home/brian/mysql/dep-5.1
into  zim.(none):/home/brian/mysql/remove-bdb-5.1
2006-08-14 21:26:33 -07:00
kostja@bodhi.local
5dfdc8bfce Manual merge 5.0->5.1. Post-merge fixes. 2006-08-14 13:27:11 +04:00
brian@zim.(none)
af443c2dd8 Fixed warning message breakage.
Fixed install breakage (my own fault)
Edited exampled cnf to remove bdb references.
2006-08-13 22:28:41 -07:00
kostja@bodhi.local
04c97488f9 Merge bodhi.local:/opt/local/work/tmp_merge
into  bodhi.local:/opt/local/work/mysql-5.1-runtime-merge
2006-08-12 21:06:51 +04:00
kroki/tomash@moonlight.intranet
d06001b1a2 Bug#16581: deadlock: server and client both read from connection in
'conc_sys' test

Concurrent execution of SELECT involing at least two INFORMATION_SCHEMA
tables, DROP DATABASE statement and DROP TABLE statement could have
resulted in stalled connection for this SELECT statement.

The problem was that for the first query of a join there was a race
between select from I_S.TABLES and DROP DATABASE, and the error (no
such database) was prepared to be send to the client, but the join
processing was continued.  On second query to I_S.COLUMNS there was a
race with DROP TABLE, but this error (no such table) was downgraded to
warning, and thd->net.report_error was reset.  And so neither result
nor error was sent to the client.

The solution is to stop join processing once it is clear we are going
to report a error, and also to downgrade to warnings file system errors
like 'no such database' (unless we are in the 'SHOW' command), because
I_S is designed not to use locks and the query to I_S should not abort
if something is dropped in the middle.

No test case is provided since this bug is a result of a race, and is
timing dependant.  But we test that plain SHOW TABLES and SHOW COLUMNS
give a error if there is no such database or a table respectively.
2006-07-28 15:06:23 +04:00