1
0
mirror of https://github.com/MariaDB/server.git synced 2025-11-16 20:23:18 +03:00
Commit Graph

20420 Commits

Author SHA1 Message Date
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
ramil/ram@ramil.myoffice.izhnet.ru
2a3eed1bd6 Merge mysql.com:/home/ram/work/mysql-5.1-maint
into  mysql.com:/home/ram/work/b29353/b29353.5.1
2007-06-28 15:31:25 +05: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
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
msvensson@pilot.(none)
9ec96c47c7 Merge pilot.(none):/data/msvensson/mysql/bug29361/my50-bug29361
into  pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
2007-06-28 11:24:24 +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
msvensson@pilot.(none)
119f6cb000 WL#3933 Split main test suite to rpl, rpl_ndb and ndb
- Cleaup Makefile.am in mysql-test making it easier to add
   new test files and suite directories
2007-06-28 11:18:15 +02:00
svoj@mysql.com/june.mysql.com
6edc4dccdc BUG#29207 - archive table reported as corrupt by check table
After merge fix.
2007-06-28 14:04:20 +05:00
bar@mysql.com/bar.myoffice.izhnet.ru
d3f43c874e Bug#27345 Incorrect data returned when range-read from utf8_danish_ci indexes
Problem: like_range() returned wrong ranges for contractions (like 'ch' in Czech').
Fix: adding a special code to handle tricky cases:
- contraction head followed by a wild character
- full contraction
- contraction part followed by another contraction part,
  but they are not a contraction together.
2007-06-28 13:34:44 +05:00
holyfoot/hf@mysql.com/hfmain.(none)
be9257966d events_bugs.test didn't remove all the objects it created
what caused some consequitive tests failures
2007-06-28 13:34:39 +05:00
antony@ppcg5.local
b3e29fbd1d Bug#29019
"REPLACE/INSERT IGNORE/UPDATE IGNORE doesn't work"
  Federated does not record neccessary HA_EXTRA flags in order to
  support REPLACE/INSERT IGNORE/UPDATE IGNORE.
  Implement ::extra() to capture flags neccessary for functionality.
New function append_ident() to better escape identifiers consistantly.
2007-06-28 00:23:14 -07:00
svoj@june.mysql.com
0cb2099c2d Merge mysql.com:/home/svoj/devel/mysql/BUG29250/mysql-5.0-engines
into  mysql.com:/home/svoj/devel/mysql/BUG29250/mysql-5.1-engines
2007-06-28 12:13:57 +05:00
gkodinov/kgeorge@magare.gmz
49a52fe55a Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B26642-5.0-opt
2007-06-28 09:27:27 +03:00
tomas@poseidon.mysql.com
5d5b7ac244 Merge poseidon.mysql.com:/home/tomas/mysql-5.1-new-ndb
into  poseidon.mysql.com:/home/tomas/mysql-5.1-new-rpl
2007-06-28 07:08:37 +02:00
tomas@poseidon.mysql.com
644d360b2a check for blackhole 2007-06-28 07:06:25 +02:00
tomas@poseidon.mysql.com
a298b4c147 correct comment as bug is fixed 2007-06-28 00:52:05 +02:00
tomas@poseidon.mysql.com
b525ec4c96 WL#3303
- wrong results checked in
2007-06-28 00:49:54 +02:00
tomas@poseidon.mysql.com
30cf641ad8 Bug#29233 rpl_ndb_circular fails randomly
- enabling test, duplicate bug, other bug fixed
2007-06-27 23:58:18 +02:00
tomas@poseidon.mysql.com
efbe23a486 Bug #29222 Statement mode replicates both statement and rows when writing to an NDB table
- only log statements locally (changes will not be logged on other servers)
2007-06-27 22:33:03 +02:00
tomas@poseidon.mysql.com
934e946a0b WL#3303
- correct includes
2007-06-27 22:23:44 +02:00
baker@bk-internal.mysql.com
a781d531e0 Merge bk-internal.mysql.com:/data0/bk/mysql-5.1
into  bk-internal.mysql.com:/data0/bk/mysql-5.1-arch
2007-06-27 22:00:17 +02:00
dkatz@damien-katzs-computer.local
5231fce4e1 Merge dkatz@bk-internal.mysql.com:/home/bk/mysql-5.1-maint
into  damien-katzs-computer.local:/Users/dkatz/mysql51
2007-06-27 12:27:23 -04:00
msvensson@pilot.(none)
b9d2e744b0 Change "exec rm" to "remove_file" 2007-06-27 18:21:20 +02:00
dkatz@damien-katzs-computer.local
966049efd4 Merge damien-katzs-computer.local:/Users/dkatz/mysql51
into  damien-katzs-computer.local:/Users/dkatz/51
2007-06-27 12:11:23 -04:00
dkatz@damien-katzs-computer.local
b36295dd17 Merge dkatz@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  damien-katzs-computer.local:/Users/dkatz/mysql50
2007-06-27 12:03:49 -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)
483bc2031b Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.0-rt-merge
2007-06-27 09:13:01 -06:00
msvensson@pilot.(none)
6ac2194492 Merge bk-internal:/home/bk/mysql-5.1-maint
into  pilot.(none):/data/msvensson/mysql/mysql-5.1-new-maint
2007-06-27 17:11:35 +02:00
msvensson@pilot.(none)
e86225b908 Move disabling of rpl_invoked_features to suite/rpl/t/disabled.def
Move tests to their respective suite
2007-06-27 16:49:32 +02:00
holyfoot/hf@hfmain.(none)
960f8c02c8 Merge bk@192.168.21.1:mysql-5.1-opt
into  mysql.com:/home/hf/work/29156/my51-29156
2007-06-27 19:11:47 +05:00
svoj@mysql.com/june.mysql.com
ff9aeb560c BUG#29299 - repeatable myisam fulltext index corruption
Fulltext index may get corrupt by certain gbk characters.

The problem was that when skipping leading non-true-word-characters,
we assumed that these characters are always 1 byte long. This is not
the case with gbk character set, since non-true-word-characters may
be 2 bytes long.

Affects 5.0 only.
2007-06-27 18:10:19 +05:00
msvensson@pilot.(none)
2238ef2b62 Merge pilot.(none):/data/msvensson/mysql/wl3933/my51-wl3933-new2
into  pilot.(none):/data/msvensson/mysql/mysql-5.1-new-maint
2007-06-27 14:29:10 +02:00
msvensson@pilot.(none)
8661497e9b WL#3933 Split main test suite to rpl, rpl_ndb and ndb
- Update mysql-test-run.pl to collect tests from several suites
 - Group test into suites
 - Add suite.opt file
2007-06-27 14:28:02 +02:00
tnurnberg@sin.intern.azundris.com
1b235fae9c Merge sin.intern.azundris.com:/home/tnurnberg/24924/50-24924
into  sin.intern.azundris.com:/home/tnurnberg/24924/51-24924
2007-06-27 14:05:15 +02:00
tnurnberg@sin.intern.azundris.com
ba63d79e14 Bug#24924: shared-memory-base-name that is too long causes buffer overflow
show that shm communication still works on windows,
and that we can't overflow the base-name.
2007-06-27 14:04:29 +02:00
mhansson@dl145s.mysql.com
a90ff73738 Merge mhansson@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  dl145s.mysql.com:/dev/shm/mhansson/my50-bug28677
2007-06-27 14:02:32 +02:00
gkodinov/kgeorge@magare.gmz
0b421fad4a Bug #26642: create index corrupts table definition in .frm
Thanks to Martin Friebe for finding and submitting a fix for this bug!
  
  A table with maximum number of key segments and maximum length key name
  would have a corrupted .frm file, due to an incorrect calculation of the
  complete key length.  Now the key length is computed correctly (I hope) :-)
  
  MyISAM would reject a table with the maximum number of keys and the maximum
  number of key segments in all keys.  It would allow one less than this total
  maximum.  Now MyISAM accepts a table defined with the maximum.  (This is a
  very minor issue.)
2007-06-27 14:35:49 +03:00
tomas@host-72.homerun.telia.com
5de2bf9fe7 WL#3303
- undoing disable of ndb tests
2007-06-27 13:32:25 +02:00
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
2ca3289e3e Fix for bug #29353: inserting a negative value to a csv table leads to the table corruption
Problem: we believe a number cannot start with '-' ['+'] sign reading rows.

Fix: let field->store() check given values.
2007-06-27 16:20:00 +05:00
tomas@host-72.homerun.telia.com
ba5b1f9cd6 correct include file 2007-06-27 11:31:07 +02:00
svoj@mysql.com/june.mysql.com
6d4033e624 BUG#29207 - archive table reported as corrupt by check table (P1)
CHECK TABLE against ARCHIVE table may falsely report table corruption,
or cause server crash.

Fixed by using proper buffer for CHECK TABLE.

Affects both 5.0 and 5.1.
2007-06-27 13:19:34 +05:00
msvensson@pilot.(none)
76a2a818db Merge pilot.(none):/data/msvensson/mysql/bug18415/my51-bug18415
into  pilot.(none):/data/msvensson/mysql/mysql-5.1-new-maint
2007-06-27 09:22:01 +02:00
msvensson@pilot.(none)
b44ccd77bf Merge pilot.(none):/data/msvensson/mysql/bug18415/my50-bug18415
into  pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
2007-06-27 09:21:05 +02:00
msvensson@pilot.(none)
b2b4f13b7b Merge pilot.(none):/data/msvensson/mysql/bug18415/my50-bug18415
into  pilot.(none):/data/msvensson/mysql/bug18415/my51-bug18415
2007-06-27 09:20:25 +02:00
msvensson@pilot.(none)
2b748a0de5 Merge bk-internal:/home/bk/mysql-5.0-maint
into  pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
2007-06-27 08:27:54 +02:00
msvensson@pilot.(none)
cc8cccc71d Merge bk-internal:/home/bk/mysql-5.1-maint
into  pilot.(none):/data/msvensson/mysql/mysql-5.1-new-maint
2007-06-27 08:24:35 +02:00
tnurnberg@sin.intern.azundris.com
31e98955a5 Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  mysql.com:/home/ram/work/b29079/b29079.5.0
---
Bug #22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB

fix binlog-writing so that end_log_pos is given correctly even
within transactions for both SHOW BINLOG and SHOW MASTER STATUS,
that is as absolute values (from log start) rather than relative
values (from transaction's start).
---
Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  sin.intern.azundris.com:/home/tnurnberg/22540/50-22540
---
Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB

end_log_pos data within a transaction are relative to
the start of the transaction rather than absolute.
we fix those groups in situ before writing the log out.

additional comments and handling for groups with very
large single events, as suggested by Guilhem.
---
Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  amd64.(none):/src/bug24732/my50-bug24732
---
Merge maint1.mysql.com:/data/localhome/tsmith/bk/50
into  maint1.mysql.com:/data/localhome/tsmith/bk/maint/50
---
Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB
 
end_log_pos data within a transaction are relative to
the start of the transaction rather than absolute.
we fix those groups in situ before writing the log out.
 
additional comments and handling for groups with very
large single events, as suggested by Guilhem.
---
Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  sin.intern.azundris.com:/home/tnurnberg/22540/50-22540
---
Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.1-maint
into  sin.intern.azundris.com:/home/tnurnberg/22540/51-22540
---
Merge sin.intern.azundris.com:/home/tnurnberg/22540/50-22540
into  sin.intern.azundris.com:/home/tnurnberg/22540/51-22540
2007-06-27 08:18:24 +02:00
holyfoot/hf@mysql.com/hfmain.(none)
8f7cc6997a Bug #29156 events crash server in test suite
don't free thd->lex->sphead if we didn't do lex_start(),
as we can have garbage there
2007-06-27 11:06:37 +05:00
holyfoot/hf@mysql.com/hfmain.(none)
fd93b7b605 rpl_partition.test fixed 2007-06-27 09:58:58 +05:00
dkatz@damien-katzs-computer.local
1ce7a24766 Bug #29307 status.test fails with different Table_locks_immediate
Instead of sleeping for a fixed period of time, we wait until the other query is executing.
2007-06-26 21:10:51 -04:00