Commit graph

49 commits

Author SHA1 Message Date
Jon Olav Hauglid
43bf01e337 Bug #21099 MySQL 5.0.22 silently creates MyISAM tables even though
InnoDB specified.
            
NO_ENGINE_SUBSTITUTION added to TRADITIONAL sql mode to prevent
silent conversions from InnoDB to MyISAM in that sql mode.

A number of test case results files updated to reflect this change.
Test added to sql_mode.test that checks that TRADITIONAL really 
includes NO_ENGINE_SUBSTITUION.
2009-10-09 16:52:02 +02:00
Davi Arnaut
1ad8016974 Bug#45100: Incomplete DROP USER in case of SQL_MODE = 'PAD_CHAR_TO_FULL_LENGTH'
The SQL-mode PAD_CHAR_TO_FULL_LENGTH could prevent a DROP USER
statement from privileges associated with the user being dropped.
What ocurred was that reading from the User and Host fields of
the tables tables_priv or columns_priv would yield values padded
with spaces, causing a failure to match a specified user or host 
('user' != 'user     ');

The solution is to disregard the PAD_CHAR_TO_FULL_LENGTH mode
when iterating over and matching values in the privileges tables
for a DROP USER statement.
2009-06-12 18:11:19 -03:00
tnurnberg@mysql.com/white.intern.koehntopp.de
60fc91570b Bug#32753: PAD_CHAR_TO_FULL_LENGTH is not documented and interferes with grant tables
SQL-mode PAD_CHAR_TO_FULL_LENGTH affected mysqld's user-table too. If
enabled, user-name and host were space-padded and no longer matched
the login-data of incoming connexions.

Patch disregards pad-flag while loading privileges so ability to log
in does not depend on SQL-mode.
2008-02-24 13:58:07 +01: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
monty@mysql.com/nosik.monty.fi
eeaa3adb03 Added sql_mode PAD_CHAR_TO_FULL_LENGTH (WL#921)
This pads the value of CHAR columns with spaces up to full column length (according to ANSI)
It's not makde part of oracle or ansi mode yet, as this would cause a notable behaviour change.
Added uuid_short(), a generator for increasing 'unique' longlong integers (8 bytes)
2007-04-27 01:12:09 +03:00
lars@mysql.com
6b8c196584 Merge mysql.com:/users/lthalmann/bk/MERGE/mysql-5.0-merge
into  mysql.com:/users/lthalmann/bk/MERGE/mysql-5.1-merge
2006-06-21 14:14:37 +02:00
serg@sergbook.mysql.com
c4f3410449 results fixed 2006-05-09 11:14:31 -04:00
grog@mysql.com
545f05020b sql_mode.test:
BUG#14765: Modified test file.
sql_mode.result:
  BUG#14765: Modified result file.
2006-04-27 21:59:04 +09:30
anozdrin@mysql.com
c1ef46fcc7 Merge mysql.com:/home/alik/Documents/AllProgs/MySQL/devel/5.0-tree
into  mysql.com:/home/alik/Documents/AllProgs/MySQL/devel/5.1-merged
2006-03-09 20:41:21 +03:00
anozdrin@mysql.com
fbb5920399 Implementation of WL#2897: Complete definer support in the stored routines.
The idea is to add DEFINER-clause in CREATE PROCEDURE and CREATE FUNCTION
statements. Almost all support of definer in stored routines had been already
done before this patch.

NOTE: this patch changes behaviour of dumping stored routines in mysqldump.
Before this patch, mysqldump did not dump DEFINER-clause for stored routines
and this was documented behaviour. In order to get full information about stored
routines, one should have dumped mysql.proc table. This patch changes this
behaviour, so that DEFINER-clause is dumped.

Since DEFINER-clause is not supported in CREATE PROCEDURE | FUNCTION statements
before this patch, the clause is covered by additional version-specific comments.
2006-03-02 15:18:49 +03:00
msvensson@neptunus.(none)
c4b1fb68b4 Bug#10460 SHOW CREATE TABLE uses inconsistent upper/lower case 2006-02-22 10:09:59 +01:00
guilhem@mysql.com
473cfdfcb2 Merge mysql.com:/home/mysql_src/mysql-5.0
into  mysql.com:/home/mysql_src/mysql-5.1-new; will fix manually sp_head.cc and mysqld.cc later soon.
2006-02-18 19:07:32 +01:00
guilhem@mysql.com
37c1744a03 Fix for BUG#13897 "failure to do SET SQL_MODE=N where N is a number > 31" (the original bug's title isn't the simplest
symptom). sys_var::check_set() was wrong. mysqlbinlog makes use of such SET SQL_MODE=N
(where N is interpreted like if SQL_MODE was a field of type SET), so
this bug affected recovery from binlogs if the server was running with certain SQL_MODE values,
for example the default values on Windows (STRICT_TRANS_TABLES); to work around this bug people
had to edit mysqlbinlog's output.
2006-02-18 17:32:15 +01:00
jimw@mysql.com
95f1b04929 Remove extra space in SHOW CREATE TABLE output. (Bug #13883) 2006-02-02 11:39:28 -08:00
acurtis@poseidon.ndb.mysql.com
c01a3b5e5f Make storage engines "pluggable", handlerton work 2005-11-07 16:25:06 +01:00
bell@sanja.is.com.ua
1b164c7b83 support of view underlying tables and SP functions security check added (BUG#9505) (WL#2787) 2005-10-28 00:18:23 +03:00
gluh@eagle.intranet.mysql.r18.ru
cac5b085cd after merge fix 2005-09-29 17:21:32 +05:00
gluh@mysql.com
b36f63e3ab 4.1 -> 5.0 merge 2005-09-29 16:35:50 +05:00
gluh@eagle.intranet.mysql.r18.ru
f9762c47d0 Fix for bug #7977 in sql_mode=ANSI, show create table ignores auto_increment
"CHARACTER SET", "COLLATE", and "DEFAULT" are always
  printed(excepting MODE_MYSQL323 and MODE_MYSQL40)
  "AUTO_INCREMENT", "ON UPDATE CURRENT_TIMESTAMP" are printed only 
  if NO_FIELD_OPTIONS is not set.
2005-09-29 16:17:45 +05:00
bell@sanja.is.com.ua
3f160eed87 postmerge fix 2005-09-14 12:24:14 +03:00
bell@sanja.is.com.ua
71ffbbf81b part 1 (ver 2, postreview fix) of WL#2787
view definer information syntax/storage/replication
fixed SOURCE field of .frm
2005-09-14 10:53:09 +03:00
andrey@lmy004.
950a277988 retest the fix for bug #10362 (SHOW PROCEDURE always qualifies name with database)
(already approved)
2005-08-27 12:29:36 +02:00
hf@deer.(none)
c7940aeb86 Fix for bug #8449(Silent column changes) 2005-07-07 21:47:18 +05:00
msvensson@neptunus.(none)
50133499b5 BUG#11635 mysqldump exports TYPE instead of USING for HASH Cluster indexes
- Change output from SHOW CREATE TABLE to use USING instead of TYPE
2005-07-07 14:44:28 +02:00
jimw@mysql.com
af5f5ab3ed Merge mysql.com:/home/jimw/my/mysql-5.0-6903
into  mysql.com:/home/jimw/my/mysql-5.0-clean
2005-07-05 17:05:31 -07:00
acurtis@xiphis.org
51dd521dfc Bug#6877 MySQL should give an error if the requested table type is not available
Implement new SQL mode - NO_ENGINE_SUBSTITUTION
2005-06-17 22:14:44 +01:00
jimw@mysql.com
9b166de236 Fix SHOW CREATE VIEW to handle ANSI_QUOTES mode. (Bug #6903) 2005-06-15 16:27:41 -07:00
acurtis@xiphis.org
3b8c3bd7e1 Merge 2005-06-09 17:15:06 +01:00
gluh@eagle.intranet.mysql.r18.ru
8574ed6fc6 Fix for bug#10732: Set SQL_MODE to NULL gives garbled error message
generate proper error message if we use SET ... = NULL for 'set'
  variables
2005-06-09 14:39:29 +05:00
jimw@mysql.com
f32c61fbaf Handle backslashes correctly in strings that also have doubled quotes when
we are using the NO_BACKSLASH_ESCAPES SQL mode. (Bug #6368)
2005-02-03 16:14:02 -08:00
jimw@mysql.com
3998da80e9 Output 'MEMORY' as table type for tables using the memory (nee heap) storage
engine, except when running with sql_mode & MYSQL323. (Bug #6659)
2005-01-13 17:38:13 -08:00
jimw@mysql.com
e959e0b8fc Merge mysql.com:/home/jwinstead2/mysql-4.1-7233
into mysql.com:/home/jwinstead2/mysql-5.0-clean
2005-01-08 22:22:41 +01:00
jimw@mysql.com
5c497ef3a8 Use 'USING <indextype>' in results of SHOW CREATE TABLE, it's the preferred
syntax. (Bug #7233)
2005-01-08 07:31:13 +01:00
antony@ltantony.rdg.cyberkinetica.homeunix.net
f595216869 Change sql_mode BROKEN_NOT to HIGH_NOT_PRECEDENCE 2004-11-27 19:26:46 +00:00
antony@ltantony.rdg.cyberkinetica.homeunix.net
8c0d21d186 WL#638 - Fix precedence for parsing NOT ... LIKE expression s
Rework parser expression rules
  Rework handling for "||" concat/or
  Eliminate some shift/reduce conflicts
  Add support for "xxx IS [ NOT ] truth_value"
2004-11-17 15:49:10 +00:00
monty@mysql.com
071001950e Merge with 4.1 to get in latest bug fixes 2004-11-04 15:06:24 +02:00
bar@mysql.com
f979603cf2 field.cc, sql_mode.result, sql_mode.test:
"SHOW CREATE TABLE" mysql-4.0 and mysql-3.23 
  compatibiliry mode change:
  Check that a binary collation adds 'binary'
  suffix into a char() column definition in
  mysql40 and mysql2323 modes. This allows
  not to lose the column's case sensitivity
  when loading the dump in pre-4.1 servers.
2004-11-04 08:50:07 +04:00
monty@mysql.com
7d3be517a4 Merge on pull 2004-11-03 13:01:38 +02:00
gluh@gluh.mysql.r18.ru
4c65a9447e WL#1437 :don't create new users with GRANT 2004-11-02 17:45:26 +03:00
monty@mysql.com
afbe601302 merge with 4.1 2004-10-29 19:26:52 +03:00
ingo@mysql.com
ce8db2bfb7 BUG#5318 - failure: 'IGNORE_SPACE' affects numeric values after DEFAULT.
Added a check to recover from IGNORE_SPACE in this situation: 
<ident-character(s)><space><dot><ident-character(s)>
The ignored space led to the false identification of the dot
as an ident separator (like "db.table").
2004-09-14 13:49:08 +02:00
vva@eagle.mysql.r18.ru
e9e5b3547e patch for task WL 1941 "NO_C_ESCAPE sql_mode" 2004-07-07 17:26:43 +05:00
monty@mysql.com
06432eac36 Added --compact to mysqlbinlog
Fixed output from mysqlbinlog when using --skip-comments
Fixed warnings from valgrind
Fixed ref_length when used with HEAP tables
More efficent need_conversion()
Fixed error handling in UPDATE with not updateable tables
Fixed bug in null handling in CAST to signed/unsigned
2004-02-09 12:31:03 +01:00
antony@ltantony.rdg.cyberkinetica.homeunix.net
fcf96dbb18 WorkLog#1323
Deprecate the use of TYPE=... Preferred syntax is ENGINE=
2003-12-10 04:31:42 +00:00
monty@mashka.mysql.fi
cab1dc628c CLIENT_MULTI_QUERIES -> CLIENT_MULTI_STATEMENTS
New multi-key-cache handling. This was needed becasue the old one didn't work reliable with MERGE tables.
ALTER TABLE table_name ... CHARACTER SET  ... now changes all char/varchar/text columns to the given character set
(One must use ALTER TABLE ... DEFAULT CHARACTER SET ... to change the default character set)
Fixed that have_compress is detected properly (fixes problems with func_compress.test on platforms without zlib)
New syntax for CACHE INDEX ('keys' is optional if no index name is given and one mentions the key cache name only ones)
Removed compiler warnings
Added mysql_set_server_option() to allow clients like PHP to easaily set/reset the multi-statement flag.
2003-11-18 13:47:27 +02:00
gluh@gluh.mysql.r18.ru
9e401712a0 WL#1106: Switch = --maxdb rather than --sapdb 2003-10-15 14:50:36 +05:00
monty@narttu.mysql.fi
23145cfed7 Added SQLSTATE to client/server protocol
bmove_allign -> bmove_align
Added OLAP function ROLLUP
Split mysql_fix_privilege_tables to a script and a .sql data file
Added new (MEMROOT*) functions to avoid calling current_thd() when creating some common objects.
Added table_alias_charset, for easier --lower-case-table-name handling
Better SQL_MODE handling (Setting complex options also sets sub options)
New (faster) assembler string functions for x86
2003-06-04 18:28:51 +03:00
jani@rhols221.adsl.netsonic.fi
e79ed81d11 Added --compatible mode to mysqldump. 2003-01-16 05:35:59 +02:00
jani@rhols221.adsl.netsonic.fi
94cc7d751e Added support sql_mode, which can be used to produce various outputs
of SHOW CREATE TABLE 'name'. Depending on the mode, the output can
be compatible with various databases, including earlier versions of
MySQL
.
2003-01-16 02:04:50 +02:00