Commit graph

47913 commits

Author SHA1 Message Date
anozdrin/alik@ibm.
e79410dad5 Fix typo. 2007-06-29 17:59:19 +04: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
malff/marcsql@weblab.(none)
64cac0d6ad Merge weblab.(none):/home/marcsql/TREE/mysql-5.1-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.1-rt-merge
2007-06-27 09:15:12 -06:00
malff/marcsql@weblab.(none)
083bd79bc6 Merge weblab.(none):/home/marcsql/TREE/mysql-5.1-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.1-rt-merge
2007-06-25 11:02:17 -06:00
gshchepa/uchum@gleb.loc
39e900e53e Merge gshchepa@bk-internal.mysql.com:/home/bk/mysql-5.1-opt
into  gleb.loc:/home/uchum/work/bk/5.1-opt
2007-06-25 18:59:09 +05:00
gshchepa/uchum@gleb.loc
5c7b01dc20 Merge gleb.loc:/home/uchum/work/bk/5.1
into  gleb.loc:/home/uchum/work/bk/5.1-opt
2007-06-25 18:55:06 +05:00
jbruehe/mysqldev@mysql.com/production.mysql.com
5651ce23d4 Raise version number after cloning 5.1.20-beta 2007-06-25 15:04:31 +02:00
holyfoot/hf@hfmain.(none)
0d7168602d Merge bk@192.168.21.1:mysql-5.1-opt
into  mysql.com:/home/hf/work/27084/my51-27084
2007-06-25 14:28:30 +05:00
gshchepa/uchum@gleb.loc
47d868c919 Merge gleb.loc:/home/uchum/work/bk/5.0-opt
into  gleb.loc:/home/uchum/work/bk/5.1-opt
2007-06-25 14:14:29 +05:00
gshchepa/uchum@gleb.loc
f8b7669ee9 Merge gleb.loc:/home/uchum/work/bk/4.1-opt
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-06-25 14:13:16 +05:00
gshchepa/uchum@gleb.loc
4e139ed375 Merge gleb.loc:/home/uchum/work/bk/5.0
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-06-25 14:12:01 +05:00
gshchepa/uchum@gleb.loc
9e521d1d04 Merge gleb.loc:/home/uchum/work/bk/5.1
into  gleb.loc:/home/uchum/work/bk/5.1-opt
2007-06-25 14:10:12 +05:00
gshchepa/uchum@gleb.loc
78e900dd92 Merge gleb.loc:/home/uchum/work/bk/4.1
into  gleb.loc:/home/uchum/work/bk/4.1-opt
2007-06-25 14:08:53 +05:00
igor@olga.mysql.com
31bd1715db Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/mysql-5.1-opt
2007-06-24 19:06:09 -07:00
gshchepa/uchum@gleb.loc
0278fa447c rpl_skip_error.result:
Merge with 5.1.
2007-06-25 05:35:45 +05:00
gshchepa/uchum@gleb.loc
a1ebc8590c Merge gleb.loc:/home/uchum/work/bk/5.1
into  gleb.loc:/home/uchum/work/bk/5.1-opt
2007-06-25 03:40:30 +05:00
igor@olga.mysql.com
da41606087 Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug25602
2007-06-24 10:50:24 -07:00
gshchepa/uchum@gleb.loc
684d0ced77 Merge gleb.loc:/home/uchum/work/bk/5.0
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-06-24 12:58:45 +05:00
igor@olga.mysql.com
59b9077ce4 Fixed bug #25602. A query with DISTINCT in the select list to which
the loose scan optimization for grouping queries was applied returned 
a wrong result set when the query was used with the SQL_BIG_RESULT
option.

The SQL_BIG_RESULT option forces to use sorting algorithm for grouping
queries instead of employing a suitable index. The current loose scan
optimization is applied only for one table queries when the suitable
index is covering. It does not make sense to use sort algorithm in this
case. However the create_sort_index function does not take into account
the possible choice of the loose scan to implement the DISTINCT operator
which makes sorting unnecessary. Moreover the current implementation of
the loose scan for queries with distinct assumes that sorting will
never happen. Thus in this case create_sort_index should not call
the function filesort.
2007-06-23 23:33:55 -07:00
gshchepa/uchum@gleb.loc
9866b45f3b Merge gleb.loc:/home/uchum/work/bk/5.0-opt
into  gleb.loc:/home/uchum/work/bk/5.1-opt
2007-06-24 03:44:50 +05:00
gshchepa/uchum@gleb.loc
7cdef518b2 Merge gleb.loc:/home/uchum/work/bk/4.1-opt
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-06-24 03:42:18 +05:00
gshchepa/uchum@gleb.loc
2cd4abebfb Merge gleb.loc:/home/uchum/work/bk/5.0-opt
into  gleb.loc:/home/uchum/work/bk/5.1-opt
2007-06-24 03:35:27 +05:00
gshchepa/uchum@gleb.loc
e5798d0466 Merge gleb.loc:/home/uchum/work/bk/5.0-opt-29095
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-06-24 01:22:25 +05:00
gshchepa/uchum@gleb.loc
fbbb30a622 Fixed bug #29095.
INSERT into table from SELECT from the same table
with ORDER BY and LIMIT was inserting other data
than sole SELECT ... ORDER BY ... LIMIT returns.

One part of the patch for bug #9676 improperly pushed
LIMIT to temporary table in the presence of the ORDER BY
clause.
That part has been removed.
2007-06-24 01:20:14 +05:00
guilhem@gbichot3.local
fa1276e4a1 Fix for BUG#29318 "Statements prepared with PREPARE and with one
parameter don't use query cache"
Thanks to the fix of BUG#26842, statements prepared with SQL PREPARE
and having parameters can now use the query cache.
2007-06-23 19:16:51 +02:00
joerg@trift2.
a8d5779448 Merge trift2.:/MySQL/M50/push-5.0
into  trift2.:/MySQL/M51/push-5.1
2007-06-22 23:02:41 +02:00
joerg@trift2.
ce04d39de9 Merge trift2.:/MySQL/M51/mysql-5.1
into  trift2.:/MySQL/M51/push-5.1
2007-06-22 22:54:02 +02:00
joerg@trift2.
41bc28aecd Merge trift2.:/MySQL/M50/mysql-5.0
into  trift2.:/MySQL/M50/push-5.0
2007-06-22 22:48:17 +02:00
joerg@trift2.
3d0064d6a5 Merge trift2.:/MySQL/M50/push-5.0
into  trift2.:/MySQL/M51/push-5.1
2007-06-22 22:32:50 +02:00
tsmith@maint1.mysql.com
65ce26a619 Merge maint1.mysql.com:/data/localhome/tsmith/bk/maint/50
into  maint1.mysql.com:/data/localhome/tsmith/bk/maint/51
2007-06-22 20:11:12 +02:00
joerg@trift2.
4e9d181fad Add the "nist" suite to the "test-bt" target,
to be run only if it is available on the machine.
2007-06-22 20:08:19 +02:00
kostja@bodhi.(none)
8b8b44151c Fix broken automatic dependency tracking of Automake in sql/:
The embedded library is still broken, but there the situation
with dependencies is even more broken.
2007-06-22 19:58:27 +04:00
thek@adventure.(none)
2da5b6268a Merge adventure.(none):/home/thek/Development/cpp/bug28846/my51-bug28846
into  adventure.(none):/home/thek/Development/cpp/mysql-5.1-runtime
2007-06-22 15:39:34 +02:00
thek@adventure.(none)
0edfc7394d Bug #28846 Use of undocumented Prepared Statements crashes server
- Manual merge patch.
2007-06-22 15:38:23 +02:00
thek@adventure.(none)
3d7bc219f1 Merge adventure.(none):/home/thek/Development/cpp/bug28846/my50-bug28846
into  adventure.(none):/home/thek/Development/cpp/bug28846/my51-bug28846
2007-06-22 15:23:51 +02:00
gkodinov/kgeorge@magare.gmz
6a6f723428 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B28400-5.0-opt
2007-06-22 15:35:59 +03:00
gkodinov/kgeorge@magare.gmz
f45601ce58 Bug #27383: Crash in test "mysql_client_test"
The C optimizer may decide that data access operations
through pointer of different type are not related to 
the original data (strict aliasing).
This is what happens in fetch_long_with_conversion(),
when called as part of mysql_stmt_fetch() : it tries 
to check for truncation errors by first storing float
(and other types of data) into a char * buffer and then 
accesses them through a float pointer.
This is done to prevent the effects of excess precision
when using FPU registers.
However the doublestore() macro converts a double pointer
to an union pointer. This violates the strict aliasing rule.
Fixed by making the intermediary variables volatile (
to not re-introduce the excess precision bug) and using
the intermediary value instead of the char * buffer.
Note that there can be loss of precision for both signed
and unsigned 64 bit integers converted to double and back,
so the check must stay there (even for compatibility 
reasons).
Based on the excellent analysis in bug 28400.
2007-06-22 15:34:28 +03:00
joerg@trift2.
1d18f3e4aa Merge trift2.:/MySQL/M50/push-5.0
into  trift2.:/MySQL/M51/push-5.1
2007-06-22 14:03:50 +02:00
joerg@trift2.
bdd95f681a Merge trift2.:/MySQL/M51/mysql-5.1
into  trift2.:/MySQL/M51/push-5.1
2007-06-22 13:19:14 +02:00
joerg@trift2.
7766c0d4d9 Merge trift2.:/MySQL/M50/mysql-5.0
into  trift2.:/MySQL/M50/push-5.0
2007-06-22 13:13:32 +02:00
thek@adventure.(none)
3e7c1b1cb1 Bug#28846 Use of undocumented Prepared Statements crashes server
ALTER VIEW is currently not supported as a prepared statement
and should be disabled as such as they otherwise could cause server crashes.

ALTER VIEW is currently not supported when called from stored
procedures or functions for related reasons and should also be disabled.

This patch disables these DDL statements and adjusts the appropriate test
cases accordingly.

Additional tests has been added to reflect on the fact that we do support
CREATE/ALTER/DROP TABLE for Prepared Statements (PS), Stored Procedures (SP)
and PS within SP.
2007-06-22 11:55:48 +02:00
tsmith@maint1.mysql.com
764a7a911c Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.1-maint
into  maint1.mysql.com:/data/localhome/tsmith/bk/maint/51
2007-06-22 11:30:17 +02:00
tsmith@maint1.mysql.com
9f23427499 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  maint1.mysql.com:/data/localhome/tsmith/bk/maint/50
2007-06-22 11:23:12 +02:00
tsmith@maint1.mysql.com
5b13cc5a30 binlog_innodb.result:
post-merge fix
2007-06-22 11:22:29 +02:00
holyfoot/hf@hfmain.(none)
287f3485af Merge bk@192.168.21.1:mysql-5.0-opt
into  mysql.com:/home/hf/work/28839/my50-28839
2007-06-22 10:12:15 +05:00
holyfoot/hf@mysql.com/hfmain.(none)
38991f3e80 merging fix 2007-06-22 09:59:23 +05:00
holyfoot/hf@hfmain.(none)
faa251305c Merge mysql.com:/home/hf/work/28839/my50-28839
into  mysql.com:/home/hf/work/28839/my51-28839
2007-06-22 09:33:03 +05:00
holyfoot/hf@mysql.com/hfmain.(none)
78c53ea32e rpl_skip_error.test fixed 2007-06-22 09:28:38 +05:00
dkatz@damien-katzs-computer.local
0d84133a4c Merge damien-katzs-computer.local:/Users/dkatz/50_kill
into  damien-katzs-computer.local:/Users/dkatz/mysql51
2007-06-21 22:08:14 -04:00