Commit graph

2870 commits

Author SHA1 Message Date
gluh@mysql.com/eagle.(none)
27ab885525 WL#3732 Information schema optimization 2007-08-03 03:14:05 +05:00
joerg@trift2.
7ddc8c35b2 Merge jbruehe@bk-internal.mysql.com:/home/bk/mysql-5.1-build
into  trift2.:/MySQL/M51/push-5.1
2007-08-02 21:18:24 +02:00
joerg@trift2.
c9e9d735af Merge trift2.:/MySQL/M51/bug29982-5.1
into  trift2.:/MySQL/M51/push-5.1
2007-08-02 20:19:21 +02:00
kent@kent-amd64.(none)
b976f18c1b Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-5.0-build
into  mysql.com:/home/kent/bk/cmake-tls/mysql-5.0-build
2007-08-02 15:39:34 +02:00
kent@mysql.com/kent-amd64.(none)
10778d6fe2 Makefile.am:
Add CMakeLists.txt to source distribution
CMakeLists.txt:
  Added missing '${MYSQLD_EXE_SUFFIX}' to "mysqld" targets new in 5.1
  Manual merge from 5.0 (bug#30118)
CMakeLists.txt, mysqlbinlog.cc, lib_sql.cc:
  No need to test on USING_CMAKE, it is the only Windows build
2007-08-02 15:37:33 +02:00
kent@mysql.com/kent-amd64.(none)
74267ad9b8 CMakeLists.txt (several), make_win_bin_dist:
Aligned client library build and use with the Unix version when it
  comes to what source to include directly in the builds, and what
  libraries to link with (bug#30118).

  Also reviewed, corrected and made more clear when static or dynamic
  Thread Local Storage is to be used. Some code duplication was removed,
  and some redundant library usage were removed, reducing the risk of
  incorrect TLS usage.
2007-08-02 12:49:27 +02:00
monty@nosik.monty.fi
93f0771fca Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  mysql.com:/home/my/mysql-5.1
2007-08-02 07:55:33 +03:00
monty@mysql.com/nosik.monty.fi
4f33d95fa3 Set --debug-check if one uses DBUG_PUSH in all clients
Fixed bug in query cache that made it impossible to run mysqld with --debug
Fixed memory leaks in mysqldump and mysqltest
Memory leaks associated with wrong usage of mysqltest is not fixed. To find these, run
mysql-test-run --debug mysqltest
2007-08-02 07:49:29 +03:00
monty@mysql.com/nosik.monty.fi
96f90711a7 Fixes Bug#30127: --debug-info no longer prints memory usage in mysql
Fixed compiler warnings, errors and link errors
Fixed new bug on Solaris with gethrtime()
Added --debug-check option to all mysql clients to print errors and memory leaks
Added --debug-info to all clients. This now works as --debug-check but also prints memory and cpu usage
2007-08-01 22:59:05 +03:00
kostja@bodhi.(none)
6238763281 Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  bodhi.(none):/opt/local/work/mysql-5.1-runtime
2007-07-31 23:47:38 +04:00
joerg@trift2.
22d445ee70 Fix a bad BitKeeper dependency structure for the "CMakeLists.txt" files.
They had been introduced in 5.1 and were only later backported to 5.0;
as a consequence, the files in the 5.1 tree do not depend on the 5.0 ones,
and changes in 5.0 do not propagate into the 5.1 files.

To fix this, the (previous) files in 5.1 now are deleted ("bk rm"),
and the previously deleted files depending on 5.0 are now moved to the 
respective source directories ("bk mv").
The current 5.1 contents is restored in these files.

If you need the previous history of the 5.1 files ("bk revtool"),
access those in "BitKeeper/deleted".

Contrary to the original plan, I did not introduce the name
"CMakeLists.historic" - mostly in order not to clutter the source tree.

This fixes bug#29982.
2007-07-31 19:35:13 +02:00
kostja@bodhi.(none)
1bf318b895 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  bodhi.(none):/opt/local/work/mysql-5.0-runtime
2007-07-31 20:03:52 +04: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.
af9e57562d Merge ibm.:/home/alik/Documents/MySQL/devel/5.0-rt
into  ibm.:/home/alik/Documents/MySQL/devel/5.1-rt-merge
2007-07-27 21:30:43 +04:00
anozdrin/alik@ibm.
e73f004fe6 Fix for BUG#30027: mysqldump does not dump views properly.
mysqldump generates view defitions in two stages:

  - dump CREATE TABLE statements for the temporary tables.  For each view a
    temporary table, that has the same structure as the view is created.

  - dump DROP TABLE statements for the temporary tables and CREATE VIEW
    statements for the view.

This approach is required because views can have dependencies on each other
(a view can use other views). So, they should be created in the particular
order. mysqldump however is not smart enough, so in order to resolve
dependencies it creates temporary tables first of all.

The problem was that mysqldump might have generated incorrect dump for the
temporary table when a view has non-ASCII column name. That happened when
default-character-set is not utf8.

The fix is to:

  1. Switch character_set_client for the mysqldump's connection to binary
     before issuing SHOW FIELDS statement in order to avoid conversion.
    
  2. Dump switch character_set_client statements to UTF8 and back for
     CREATE TABLE statement that is issued to create temporary table.
2007-07-27 18:20:17 +04: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
gshchepa/uchum@gleb.loc
bb22e3667e Merge gleb.loc:/home/uchum/work/bk/5.0
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-07-26 03:33:43 +05: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
baker@bk-internal.mysql.com
9cac726a8e Merge bk-internal.mysql.com:/data0/bk/mysql-5.1
into  bk-internal.mysql.com:/data0/bk/mysql-5.1-arch
2007-07-23 00:45:27 +02:00
kent@kent-amd64.(none)
9d247f296a Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/kent/bk/tmp3/mysql-5.0-build
2007-07-21 01:53:19 +02:00
gshchepa/uchum@gleb.loc
c3e925eec3 Fixed bug #29788.
After dumping triggers mysqldump copied 
the value of the OLD_SQL_MODE variable to the SQL_MODE
variable. If the --compact option of the mysqldump was
not set the OLD_SQL_MODE variable had the value
of the uninitialized SQL_MODE variable. So
usually the NO_AUTO_VALUE_ON_ZERO option of the
SQL_MODE variable was discarded.

This fix is for non-"--compact" mode of the mysqldump,
because mysqldump --compact never set SQL_MODE to the
value of NO_AUTO_VALUE_ON_ZERO.

The dump_triggers_for_table function has been modified
to restore previous value of the SQL_MODE variable after
dumping triggers using the SAVE_SQL_MODE temporary
variable.
2007-07-21 04:50:11 +05:00
joerg@trift-lap.none
1a86cbd26f Merge trift-lap.none:/MySQL/M50/bug14151-5.0
into  trift-lap.none:/MySQL/M50/push-5.0
2007-07-20 13:35:23 +02:00
gshchepa/uchum@gleb.loc
95d43074cc Merge gleb.loc:/home/uchum/work/bk/5.1
into  gleb.loc:/home/uchum/work/bk/5.1-opt
2007-07-20 04:21:46 +05:00
gshchepa/uchum@gleb.loc
c06d233d4d Merge gleb.loc:/home/uchum/work/bk/5.0
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-07-20 04:15:50 +05:00
gshchepa/uchum@gleb.loc
35a2a20160 Merge gleb.loc:/home/uchum/work/bk/5.1
into  gleb.loc:/home/uchum/work/bk/5.1-opt
2007-07-19 20:01:13 +05:00
joerg@trift-lap.none
af3c675bc1 Avoid the name conflict between the system-provided "md5.h" and the MySQL one
by renaming "include/md5.h" to "include/my_md5.h".

Fixes bug#14151.
2007-07-19 14:14:03 +02:00
gshchepa/uchum@gleb.loc
7481113f1b Merge gleb.loc:/home/uchum/work/bk/5.0-opt
into  gleb.loc:/home/uchum/work/bk/5.1-opt
2007-07-19 14:23:53 +05:00
gshchepa/uchum@gleb.loc
3f91aedadb Fixed bug #28524.
For each view the mysqldump utility creates a temporary table
with the same name and the same columns as the view 
in order to satisfy views that depend on this view.
After the creation of all tables, mysqldump drops all
temporary tables and creates actual views.
However, --skip-add-drop-table and --compact flags disable
DROP TABLE statements for those temporary tables. Thus, it was
impossible to create the views because of existence of the
temporary tables with the same names.
2007-07-18 19:14:48 +05:00
baker@bk-internal.mysql.com
3fcc8a9c46 Merge bk-internal.mysql.com:/data0/bk/mysql-5.1
into  bk-internal.mysql.com:/data0/bk/mysql-5.1-arch
2007-07-17 21:08:17 +02:00
tsmith@ramayana.hindu.god
23695e4e1e Merge ramayana.hindu.god:/home/tsmith/m/bk/51
into  ramayana.hindu.god:/home/tsmith/m/bk/maint/51
2007-07-17 11:33:26 -06: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
gshchepa/uchum@gleb.loc
127c6ca608 Merge gleb.loc:/home/uchum/work/bk/5.1
into  gleb.loc:/home/uchum/work/bk/5.1-opt
2007-07-13 20:52:03 +05:00
gshchepa/uchum@gleb.loc
92b65b8a4b Merge gleb.loc:/home/uchum/work/bk/5.0
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-07-13 20:49:21 +05:00
dkatz@damien-katzs-computer.local
91f4cb1c8c Merge damien-katzs-computer.local:/Users/dkatz/50
into  damien-katzs-computer.local:/Users/dkatz/mysql51
2007-07-13 01:56:57 -04:00
dkatz@damien-katzs-computer.local
0a30874589 When opening a new connecgtion, changed mysqltest to prefer a brand new connection slot over an existing, closed slot. Fixes a problem with reused slots that can cause tests to fail. bug#29579 2007-07-13 01:55:04 -04:00
dkatz@damien-katzs-computer.local
230adda1e2 Merge damien-katzs-computer.local:/Users/dkatz/mysql50
into  damien-katzs-computer.local:/Users/dkatz/mysql51
2007-07-12 22:22:40 -04:00
dkatz@damien-katzs-computer.local
a55c8bef49 Merge damien-katzs-computer.local:/Users/dkatz/mysql50
into  damien-katzs-computer.local:/Users/dkatz/50
2007-07-12 22:19:07 -04:00
dkatz@damien-katzs-computer.local
899aaa6bb2 Bug #29579 Clients using SSL can hang the server
Added an option to yassl to allow "quiet shutdown" like openssl does. This option causes the SSL libs to NOT perform the close_notify handshake during shutdown. This fixes a hang we experience because we hold a lock during socket shutdown.
2007-07-12 22:06: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
gkodinov/kgeorge@magare.gmz
b4ad2eccd1 Merge magare.gmz:/home/kgeorge/mysql/autopush/B29325-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/work/B29325-merge-5.1-opt
2007-07-11 12:44:49 +03:00
baker@bk-internal.mysql.com
a25134ed76 Merge bk-internal.mysql.com:/data0/bk/mysql-5.1
into  bk-internal.mysql.com:/data0/bk/mysql-5.1-arch
2007-07-11 08:06:47 +02:00
gkodinov/kgeorge@magare.gmz
7735a2f2eb Bug #29469: Client dies if a query is issued after hitting Ctrl + C
The Ctrl-C handler in mysql closes the console while ReadConsole()
waits for console input.
But the main thread was detecting that ReadConsole() haven't read 
anything and was processing as if there're data in the buffer.
Fixed to handle correctly this error condition.
No test case added as the test relies on Ctrl-C sent to the client
from its console.
2007-07-10 10:43:12 +03:00
baker@bk-internal.mysql.com
87cb882f7f Merge bk-internal.mysql.com:/data0/bk/mysql-5.1
into  bk-internal.mysql.com:/data0/bk/mysql-5.1-arch
2007-07-05 18:41:33 +02:00
tsmith@maint1.mysql.com
54253a0763 Merge maint1.mysql.com:/data/localhome/tsmith/bk/51
into  maint1.mysql.com:/data/localhome/tsmith/bk/maint/51
2007-07-04 22:38:53 +02:00
anozdrin/alik@ibm.
bceff6f1d4 Folow up on the CS patch:
1. Fix ddl_i18n_koi8r, ddl_i18n_utf8: explicitly specify character-sets
directory for mysqldump;
2. Fix crash in mysqldump if collation is not found;
3. Use proper way to compare character set names.
2007-06-29 16:52:05 +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
msvensson@pilot.(none)
bf5ced4035 Merge pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
into  pilot.(none):/data/msvensson/mysql/mysql-5.1-new-maint
2007-06-28 11:31:09 +02:00
msvensson@pilot.(none)
a1a1dbc753 Bug#29361 mysqldump creates stray file when too long path name is passed
- Move the check of too long path to 'get_one_option'
2007-06-28 11:23:59 +02:00
baker@bk-internal.mysql.com
77b96c765c Merge bk-internal.mysql.com:/data0/bk/mysql-5.1
into  bk-internal.mysql.com:/data0/bk/mysql-5.1-arch
2007-06-16 08:10:02 +02:00
df@pippilotta.erinye.com
c8f14b1a0a Merge pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.1-build-work
into  pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.1-build
2007-06-16 06:17:19 +02:00