Commit graph

230 commits

Author SHA1 Message Date
gluh@mysql.com/eagle.(none)
27ab885525 WL#3732 Information schema optimization 2007-08-03 03:14:05 +05:00
kostja@bodhi.(none)
88fc7cab26 Merge bodhi.(none):/opt/local/work/mysql-5.0-runtime
into  bodhi.(none):/opt/local/work/mysql-5.1-runtime
2007-07-16 23:31:36 +04:00
kostja@bodhi.(none)
3364066e29 A fix and a test case for Bug#25859 ALTER DATABASE works w/o parameters.
Fix the parser to make the database options not optional.
2007-07-12 01:10:29 +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
evgen@moonbone.local
24ea0909c9 Merge moonbone.local:/mnt/gentoo64/work/test-5.0-opt-mysql
into  moonbone.local:/mnt/gentoo64/work/test-5.1-opt-mysql
2007-06-11 17:14:16 +04:00
gluh@mysql.com/eagle.(none)
47ecabe915 Bug#28266 IS_UPDATABLE field on VIEWS table in I_S database is wrong
IS_UPDATABLE flag is set to 'yes' when the view has at least one updatable column and
the algorithm is not 'temporary'.
2007-06-09 16:52:37 +05:00
gluh@mysql.com/eagle.(none)
70e7487db3 compilation error fix 2007-06-09 16:05:43 +05:00
gkodinov/kgeorge@macbook.gmz
fe03f6bbe0 Bug #27531: 5.1 part of the fix
- Renamed "Using join cache" to "Using join buffer".
- "Using join buffer" is now printed on the last
  table that "reads" from the join buffer cache.
2007-05-29 15:58:18 +03:00
gluh@mysql.com/eagle.(none)
579cce54ab WL#3823 Modify VARIABLE_VALUE columns to VARCHAR within INFORMATION_SCHEMA STATUS tables 2007-05-15 12:45:50 +05:00
gkodinov/kgeorge@magare.gmz
306371a850 bug #27531: 5.1 part of the fix:
- added join cache indication in EXPLAIN (Extra column).
 - prefer filesort over full scan over 
   index for ORDER BY (because it's faster).
 - when switching from REF to RANGE because
   RANGE uses longer key turn off sort on
   the head table only as the resulting 
   RANGE access is a candidate for join cache
   and we don't want to disable it by sorting
   on the first table only.
2007-05-04 18:06:06 +03:00
kostja@vajra.(none)
14de569dc3 Merge bk-internal.mysql.com:/home/bk/mysql-5.1
into  vajra.(none):/opt/local/work/mysql-5.1-runtime
2007-04-06 14:15:29 +04:00
kostja@vajra.(none)
3ef7bdd9b9 3d attempt to fix information_schema.test failure on HP-UX.
Apparently it's the only platform in pushbuild where we 
compile without openssl.
2007-04-06 00:38:57 +04:00
tsmith@siva.hindu.god
5c95c63193 Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.1-runtime
into  siva.hindu.god:/home/tsmith/m/bk/maint/51
2007-04-05 10:17:32 -06:00
kostja@vajra.(none)
fe6835c2b9 Fix a failure of this test case on HP-UX. 2007-04-05 00:04:44 +04:00
tsmith@quadxeon.mysql.com
2117193783 Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.1
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/mrg04/51
2007-04-04 11:05:22 +02:00
kostja@bodhi.local
49d0b0caee Fix a race that breaks the valgrind build. 2007-04-03 21:33:56 +04:00
Kristofer.Pettersson@naruto.
f85f0950a0 Bug#26174 Server Crash:INSERT ... SELECT ... FROM I_S.GLOBAL_STATUS in Event
- Some variables in I_S.GLOBAL_STATUS were depending on a network
  connection in order to evaluate. Since no network connection is 
  present during the execution of an event, this caused the server
  to crash.
- The variable function hooks does now verify that the vio-
  object is valid before attempting to use it.
2007-04-02 09:51:14 +02:00
iggy@recycle.(none)
4f498dec3a Merge recycle.(none):/src/bug23491/my50-bug23491
into  recycle.(none):/src/bug23491/my51-bug23491
2007-03-29 10:42:03 -04:00
iggy@recycle.(none)
bbc38df090 Bug#23491 MySQLDump prefix function call in a view by database name
- mysqldump executes a SHOW CREATE VIEW statement to generate the text
that it outputs.  When the function name is retrieved it's database 
name is unconditionally prepended.  This change causes the function's 
database name to be prepended only when it was used to define the 
function.
2007-03-27 12:31:44 -04:00
igor@olga.mysql.com
273d016aad Post-merge fix. 2007-02-13 13:15:23 -08:00
igor@olga.mysql.com
fb9e0ad3be Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/mysql-5.1-opt
2007-02-13 01:34:36 -08:00
gluh@mysql.com/eagle.(none)
47e537b47c Bug#24630 Subselect query crashes mysqld
The crash happens because second filling of the same I_S table happens in
case of subselect with order by. table->sort.io_cache previously allocated
in create_sort_index() is deleted during second filling
(function get_schema_tables_result). There are two places where
I_S table can be filled: JOIN::exec and create_sort_index().
To fix the bug we should check if the table was already filled
in one of these places and skip processing of the table in second.
2007-02-12 16:06:14 +04:00
evgen@moonbone.local
ffdf7b159b sql_view.cc:
Post fix for bug#12122.
information_schema.result:
  Corrected test case after fixing bug#12122.
2007-02-11 22:52:12 +03:00
gluh@eagle.(none)
7849d31923 Merge mysql.com:/home/gluh/MySQL/Merge/5.0-opt
into  mysql.com:/home/gluh/MySQL/Merge/5.1-opt
2007-02-02 10:25:45 +04:00
gluh@mysql.com/eagle.(none)
d1185aaeaf Bug#23299 Some queries against INFORMATION_SCHEMA with subqueries fail
additional call of file->extra() method with HA_EXTRA_NO_CACHE parameter
2007-02-01 19:12:45 +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
msvensson@neptunus.(none)
971c783f7d Merge neptunus.(none):/home/msvensson/mysql/mysql-5.1
into  neptunus.(none):/home/msvensson/mysql/mysql-5.1-maint
2006-12-04 19:11:55 +01:00
thek@kpdesk.mysql.com
f74e1d2696 Merge kpdesk.mysql.com:/home/thek/dev/bug22043/my51-bug22043
into  kpdesk.mysql.com:/home/thek/dev/mysql-5.1-maint
2006-12-01 18:08:47 +01:00
thek@kpdesk.mysql.com
94b48caf2e Merge kpdesk.mysql.com:/home/thek/dev/bug22043/my50-bug22043
into  kpdesk.mysql.com:/home/thek/dev/mysql-5.0-maint
2006-12-01 18:00:45 +01:00
thek@kpdesk.mysql.com
46de7157bd Merge kpdesk.mysql.com:/home/thek/dev/bug22043/my50-bug22043
into  kpdesk.mysql.com:/home/thek/dev/bug22043/my51-bug22043
2006-12-01 17:23:12 +01:00
mskold/marty@mysql.com/linux.site
cde79e4f79 Changed mysql.apply_status, mysql.binlog_index, and mysql.schema to mysql.ndb_apply_status, mysql.ndb_binlog_index, and mysql.ndb_schema 2006-12-01 15:49:07 +01:00
thek@kpdesk.mysql.com
b201d4ef93 Bug#22043 MySQL don't add "USE <DATABASE>" before "DROP PROCEDURE IF EXISTS"
- Refactoring of duplicate code
- Modified bad test cases
- Changed expected error when operating on information_schema.
2006-12-01 12:50:57 +01:00
gkodinov@dl145s.mysql.com
32c9e11df9 Merge bk-internal:/home/bk/mysql-5.1
into  dl145s.mysql.com:/data0/bk/team_tree_merge/MERGE/mysql-5.1-opt
2006-11-28 17:14:16 +01: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
gluh@mysql.com/gluh.(none)
e37d08155b after merge fix 2006-11-21 16:45:05 +04:00
gluh@gluh.(none)
a128f60337 Merge mysql.com:/home/gluh/MySQL/Merge/5.0-opt
into  mysql.com:/home/gluh/MySQL/Merge/5.1-opt
2006-11-21 14:04:43 +04:00
gluh@mysql.com/gluh.(none)
ff38409128 Bug#22413 EXPLAIN SELECT FROM view with ORDER BY yield server crash
disable filling of I_S tables for EXPLAIN
2006-11-21 13:45:01 +04:00
andrey@example.com
4e3ac17f01 after merge fix 2006-10-23 15:11:24 +02:00
andrey@example.com
d18cb100be Merge example.com:/work/bug23037/my50
into  example.com:/work/bug23037/my51
2006-10-23 14:29:11 +02:00
andrey@example.com
389c6a019e Fix for bug#23037 Bug in field "Default" of query "SHOW COLUMNS FROM table"
To the documentor: The DEFAULT value in SHOW COLUMNS/SELECT FROM I_S.COLUMNS
was truncated to NAME_LEN (which effectively is 64) characters.
2006-10-23 13:12:30 +02:00
lars/lthalmann@dl145j.mysql.com
57a74ea4af Merge mysql.com:/users/lthalmann/bkroot/mysql-5.1-new-rpl
into  mysql.com:/users/lthalmann/bk/MERGE/mysql-5.1-merge
2006-09-21 00:23:20 +02:00
gkodinov@dl145s.mysql.com
ce8ed889d7 Merge dl145s.mysql.com:/data/bk/team_tree_merge/MERGE/mysql-5.0-opt
into  dl145s.mysql.com:/data/bk/team_tree_merge/MERGE/mysql-5.1
2006-09-18 12:57:20 +02:00
aivanov/alexi@mysql.com/mysqld.localdomain
9a87889482 WL#3247,#3248: Adding [GLOBAL|SESSION]_STATUS and [GLOBAL|SESSION]_VARIABLES
tables to INFORMATION_SCHEMA.
2006-09-14 03:37:40 +04:00
igor@rurik.mysql.com
b7ded1e34f Fixed bug #5500: EXPLAIN returned a wrong select_type for queries using views.
Select_type in the EXPLAIN output for the query SELECT * FROM t1 was
'SIMPLE', while for the query SELECT * FROM v1, where the view v1
was defined as SELECT * FROM t1, the EXPLAIN output contained 'PRIMARY'
for the select_type column.
2006-09-06 08:21:43 -07:00
stewart@willster.(none)
c306b4578e BUG#21648 information_schema test fails --with-ndbcluster
make test work both with and without ndbcluster
2006-08-15 15:16:21 +08:00
evgen@sunlight.local
799ecc9f2a After merge fix 2006-08-01 08:49:43 +04:00
evgen@sunlight.local
ef4f149536 Merge sunlight.local:/local_work/tmp_merge-5.0-opt-mysql
into  sunlight.local:/local_work/tmp_merge-5.1-opt-mysql
2006-07-30 00:33:24 +04:00
igor@olga.mysql.com
69856b29b2 Fixed bug #21231: wrong results for a simple query with a
a non-correlated single-row subquery over information schema.

The function get_all_tables filling all information schema
tables reset lex->sql_command to SQLCOM_SHOW_FIELDS. After
this the function could evaluate partial conditions related to
some columns. If these conditions contained a subquery over
information schema it led to a wrong evaluation and a wrong 
result set.
This bug was already fixed in 5.1.
This patch follows the way how it was done in 5.1 where
the value of lex->sql_command is set to SQLCOM_SHOW_FIELDS
in get_all_tables only for the calls of the function 
open_normal_and_derived_tables and is restored after these
calls.
2006-07-24 19:05:46 -07:00