mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 19:11:46 +01:00
Merge marko@bk-internal.mysql.com:/home/bk/mysql-4.1
into hundin.mysql.fi:/home/marko/k/mysql-4.1
This commit is contained in:
commit
8dba38fe7a
33 changed files with 23378 additions and 80 deletions
|
@ -940,3 +940,6 @@ ndbcluster-1186/ndb_3_out.log
|
|||
ndbcluster-1186/ndbcluster.pid
|
||||
ndb/tools/ndb_restore
|
||||
ac_available_languages_fragment
|
||||
libmysqld/ha_archive.cc
|
||||
libmysqld/ha_example.cc
|
||||
libmysqld/ha_tina.cc
|
||||
|
|
|
@ -825,10 +825,17 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
|
|||
}
|
||||
if (argv[1][0])
|
||||
{
|
||||
char *pw= argv[1];
|
||||
#ifdef __WIN__
|
||||
uint pw_len= strlen(pw);
|
||||
if (pw_len > 1 && pw[0] == '\'' && pw[pw_len-1] == '\'')
|
||||
printf("Warning: single quotes were not trimmed from the password by"
|
||||
" your command\nline client, as you might have expected.\n");
|
||||
#endif
|
||||
if (find_type(argv[0], &command_typelib, 2) == ADMIN_OLD_PASSWORD)
|
||||
make_scrambled_password_323(crypted_pw, argv[1]);
|
||||
make_scrambled_password_323(crypted_pw, pw);
|
||||
else
|
||||
make_scrambled_password(crypted_pw, argv[1]);
|
||||
make_scrambled_password(crypted_pw, pw);
|
||||
}
|
||||
else
|
||||
crypted_pw[0]=0; /* No password */
|
||||
|
|
|
@ -41,6 +41,13 @@ int heap_create(const char *name, uint keys, HP_KEYDEF *keydef,
|
|||
{
|
||||
HP_KEYDEF *keyinfo;
|
||||
DBUG_PRINT("info",("Initializing new table"));
|
||||
|
||||
/*
|
||||
We have to store sometimes byte* del_link in records,
|
||||
so the record length should be at least sizeof(byte*)
|
||||
*/
|
||||
set_if_bigger(reclength, sizeof (byte*));
|
||||
|
||||
for (i= key_segs= max_length= 0, keyinfo= keydef; i < keys; i++, keyinfo++)
|
||||
{
|
||||
bzero((char*) &keyinfo->block,sizeof(keyinfo->block));
|
||||
|
|
|
@ -26,7 +26,7 @@ DEFS = -DEMBEDDED_LIBRARY -DMYSQL_SERVER \
|
|||
-DDATADIR="\"$(MYSQLDATAdir)\"" \
|
||||
-DSHAREDIR="\"$(MYSQLSHAREdir)\""
|
||||
INCLUDES= @MT_INCLUDES@ @bdb_includes@ -I$(top_srcdir)/include \
|
||||
-I$(top_srcdir)/sql -I$(top_srcdir)/regex \
|
||||
-I$(top_srcdir)/sql -I$(top_srcdir)/sql/examples -I$(top_srcdir)/regex \
|
||||
$(openssl_includes) @ZLIB_INCLUDES@
|
||||
|
||||
noinst_LIBRARIES = libmysqld_int.a
|
||||
|
@ -35,6 +35,7 @@ SUBDIRS = . examples
|
|||
libmysqld_sources= libmysqld.c lib_sql.cc emb_qcache.cc
|
||||
libmysqlsources = errmsg.c get_password.c libmysql.c client.c pack.c \
|
||||
my_time.c
|
||||
sqlexamplessources = ha_example.cc ha_archive.cc ha_tina.cc
|
||||
|
||||
noinst_HEADERS = embedded_priv.h emb_qcache.h
|
||||
|
||||
|
@ -59,7 +60,7 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \
|
|||
unireg.cc uniques.cc stacktrace.c sql_union.cc hash_filo.cc \
|
||||
spatial.cc gstream.cc sql_help.cc tztime.cc
|
||||
|
||||
libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources)
|
||||
libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources) $(sqlexamplessources)
|
||||
libmysqld_a_SOURCES=
|
||||
|
||||
# automake misses these
|
||||
|
@ -123,12 +124,16 @@ link_sources:
|
|||
rm -f $(srcdir)/$$f; \
|
||||
@LN_CP_F@ $(srcdir)/../libmysql/$$f $(srcdir)/$$f; \
|
||||
done; \
|
||||
for f in $(sqlexamplessources); do \
|
||||
rm -f $(srcdir)/$$f; \
|
||||
@LN_CP_F@ $(srcdir)/../sql/examples/$$f $(srcdir)/$$f; \
|
||||
done; \
|
||||
rm -f $(srcdir)/client_settings.h; \
|
||||
@LN_CP_F@ $(srcdir)/../libmysql/client_settings.h $(srcdir)/client_settings.h;
|
||||
|
||||
|
||||
clean-local:
|
||||
rm -f `echo $(sqlsources) $(libmysqlsources) | sed "s;\.lo;.c;g"` \
|
||||
rm -f `echo $(sqlsources) $(libmysqlsources) $(sqlexamplessources) | sed "s;\.lo;.c;g"` \
|
||||
$(top_srcdir)/linked_libmysqld_sources; \
|
||||
rm -f client_settings.h
|
||||
|
||||
|
|
|
@ -42,8 +42,9 @@
|
|||
{ bits-=(bit+1); break; } \
|
||||
pos+= *pos
|
||||
|
||||
#define OFFSET_TABLE_SIZE 512
|
||||
|
||||
static void read_huff_table(MI_BIT_BUFF *bit_buff,MI_DECODE_TREE *decode_tree,
|
||||
static uint read_huff_table(MI_BIT_BUFF *bit_buff,MI_DECODE_TREE *decode_tree,
|
||||
uint16 **decode_table,byte **intervall_buff,
|
||||
uint16 *tmp_buff);
|
||||
static void make_quick_table(uint16 *to_table,uint16 *decode_table,
|
||||
|
@ -53,7 +54,7 @@ static void fill_quick_table(uint16 *table,uint bits, uint max_bits,
|
|||
uint value);
|
||||
static uint copy_decode_table(uint16 *to_pos,uint offset,
|
||||
uint16 *decode_table);
|
||||
static uint find_longest_bitstream(uint16 *table);
|
||||
static uint find_longest_bitstream(uint16 *table, uint16 *end);
|
||||
static void (*get_unpack_function(MI_COLUMNDEF *rec))(MI_COLUMNDEF *field,
|
||||
MI_BIT_BUFF *buff,
|
||||
uchar *to,
|
||||
|
@ -146,12 +147,12 @@ my_bool _mi_read_pack_info(MI_INFO *info, pbool fix_keys)
|
|||
{
|
||||
if (!my_errno)
|
||||
my_errno=HA_ERR_END_OF_FILE;
|
||||
DBUG_RETURN(1);
|
||||
goto err0;
|
||||
}
|
||||
if (memcmp((byte*) header,(byte*) myisam_pack_file_magic,4))
|
||||
{
|
||||
my_errno=HA_ERR_WRONG_IN_RECORD;
|
||||
DBUG_RETURN(1);
|
||||
goto err0;
|
||||
}
|
||||
share->pack.header_length= uint4korr(header+4);
|
||||
share->min_pack_length=(uint) uint4korr(header+8);
|
||||
|
@ -173,20 +174,20 @@ my_bool _mi_read_pack_info(MI_INFO *info, pbool fix_keys)
|
|||
my_malloc((uint) (trees*sizeof(MI_DECODE_TREE)+
|
||||
intervall_length*sizeof(byte)),
|
||||
MYF(MY_WME))))
|
||||
DBUG_RETURN(1);
|
||||
goto err0;
|
||||
intervall_buff=(byte*) (share->decode_trees+trees);
|
||||
|
||||
length=(uint) (elements*2+trees*(1 << myisam_quick_table_bits));
|
||||
if (!(share->decode_tables=(uint16*)
|
||||
my_malloc((length+512)*sizeof(uint16)+
|
||||
my_malloc((length+OFFSET_TABLE_SIZE)*sizeof(uint16)+
|
||||
(uint) (share->pack.header_length+7),
|
||||
MYF(MY_WME | MY_ZEROFILL))))
|
||||
{
|
||||
my_free((gptr) share->decode_trees,MYF(0));
|
||||
DBUG_RETURN(1);
|
||||
goto err1;
|
||||
}
|
||||
tmp_buff=share->decode_tables+length;
|
||||
disk_cache=(byte*) (tmp_buff+512);
|
||||
disk_cache=(byte*) (tmp_buff+OFFSET_TABLE_SIZE);
|
||||
|
||||
if (my_read(file,disk_cache,
|
||||
(uint) (share->pack.header_length-sizeof(header)),
|
||||
|
@ -194,7 +195,7 @@ my_bool _mi_read_pack_info(MI_INFO *info, pbool fix_keys)
|
|||
{
|
||||
my_free((gptr) share->decode_trees,MYF(0));
|
||||
my_free((gptr) share->decode_tables,MYF(0));
|
||||
DBUG_RETURN(1);
|
||||
goto err2;
|
||||
}
|
||||
|
||||
huff_tree_bits=max_bit(trees ? trees-1 : 0);
|
||||
|
@ -213,8 +214,9 @@ my_bool _mi_read_pack_info(MI_INFO *info, pbool fix_keys)
|
|||
skip_to_next_byte(&bit_buff);
|
||||
decode_table=share->decode_tables;
|
||||
for (i=0 ; i < trees ; i++)
|
||||
read_huff_table(&bit_buff,share->decode_trees+i,&decode_table,
|
||||
&intervall_buff,tmp_buff);
|
||||
if (read_huff_table(&bit_buff,share->decode_trees+i,&decode_table,
|
||||
&intervall_buff,tmp_buff))
|
||||
goto err3;
|
||||
decode_table=(uint16*)
|
||||
my_realloc((gptr) share->decode_tables,
|
||||
(uint) ((byte*) decode_table - (byte*) share->decode_tables),
|
||||
|
@ -224,8 +226,7 @@ my_bool _mi_read_pack_info(MI_INFO *info, pbool fix_keys)
|
|||
share->decode_tables=decode_table;
|
||||
for (i=0 ; i < trees ; i++)
|
||||
share->decode_trees[i].table=ADD_TO_PTR(share->decode_trees[i].table,
|
||||
diff,
|
||||
uint16*);
|
||||
diff, uint16*);
|
||||
}
|
||||
|
||||
/* Fix record-ref-length for keys */
|
||||
|
@ -242,19 +243,24 @@ my_bool _mi_read_pack_info(MI_INFO *info, pbool fix_keys)
|
|||
}
|
||||
|
||||
if (bit_buff.error || bit_buff.pos < bit_buff.end)
|
||||
{ /* info_length was wrong */
|
||||
my_errno=HA_ERR_WRONG_IN_RECORD;
|
||||
my_free((gptr) share->decode_trees,MYF(0));
|
||||
my_free((gptr) share->decode_tables,MYF(0));
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
goto err3;
|
||||
|
||||
DBUG_RETURN(0);
|
||||
|
||||
err3:
|
||||
my_errno=HA_ERR_WRONG_IN_RECORD;
|
||||
err2:
|
||||
my_free((gptr) share->decode_tables,MYF(0));
|
||||
err1:
|
||||
my_free((gptr) share->decode_trees,MYF(0));
|
||||
err0:
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
|
||||
/* Read on huff-code-table from datafile */
|
||||
|
||||
static void read_huff_table(MI_BIT_BUFF *bit_buff, MI_DECODE_TREE *decode_tree,
|
||||
static uint read_huff_table(MI_BIT_BUFF *bit_buff, MI_DECODE_TREE *decode_tree,
|
||||
uint16 **decode_table, byte **intervall_buff,
|
||||
uint16 *tmp_buff)
|
||||
{
|
||||
|
@ -297,7 +303,9 @@ static void read_huff_table(MI_BIT_BUFF *bit_buff, MI_DECODE_TREE *decode_tree,
|
|||
decode_tree->intervalls= *intervall_buff;
|
||||
if (! intervall_length)
|
||||
{
|
||||
table_bits=find_longest_bitstream(tmp_buff);
|
||||
table_bits=find_longest_bitstream(tmp_buff, tmp_buff+OFFSET_TABLE_SIZE);
|
||||
if (table_bits == (uint) ~0)
|
||||
return 1;
|
||||
if (table_bits > myisam_quick_table_bits)
|
||||
table_bits=myisam_quick_table_bits;
|
||||
next_free_offset= (1 << table_bits);
|
||||
|
@ -315,7 +323,7 @@ static void read_huff_table(MI_BIT_BUFF *bit_buff, MI_DECODE_TREE *decode_tree,
|
|||
bit_buff->pos+=intervall_length;
|
||||
bit_buff->bits=0;
|
||||
}
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -390,15 +398,23 @@ static uint copy_decode_table(uint16 *to_pos, uint offset,
|
|||
}
|
||||
|
||||
|
||||
static uint find_longest_bitstream(uint16 *table)
|
||||
static uint find_longest_bitstream(uint16 *table, uint16 *end)
|
||||
{
|
||||
uint length=1,length2;
|
||||
if (!(*table & IS_CHAR))
|
||||
length=find_longest_bitstream(table+ *table)+1;
|
||||
{
|
||||
uint16 *next= table + *table;
|
||||
if (next > end || next == table)
|
||||
return ~0;
|
||||
length=find_longest_bitstream(next, end)+1;
|
||||
}
|
||||
table++;
|
||||
if (!(*table & IS_CHAR))
|
||||
{
|
||||
length2=find_longest_bitstream(table+ *table)+1;
|
||||
uint16 *next= table + *table;
|
||||
if (next > end || next == table)
|
||||
return ~0;
|
||||
length2=find_longest_bitstream(table+ *table, end)+1;
|
||||
length=max(length,length2);
|
||||
}
|
||||
return length;
|
||||
|
|
|
@ -1387,13 +1387,18 @@ run_testcase ()
|
|||
# script soon anyway so it is not worth it spending the time
|
||||
if [ "x$USE_EMBEDDED_SERVER" = "x1" -a -z "$DO_TEST" ] ; then
|
||||
for t in \
|
||||
"alter_table" \
|
||||
"bdb-deadlock" \
|
||||
"connect" \
|
||||
"ctype_latin1_de" \
|
||||
"ctype_ucs" \
|
||||
"flush_block_commit" \
|
||||
"grant2" \
|
||||
"grant_cache" \
|
||||
"grant" \
|
||||
"init_connect" \
|
||||
"init_file" \
|
||||
"innodb" \
|
||||
"innodb-deadlock" \
|
||||
"innodb-lock" \
|
||||
"mix_innodb_myisam_binlog" \
|
||||
|
@ -1401,10 +1406,12 @@ run_testcase ()
|
|||
"mysqlbinlog" \
|
||||
"mysqldump" \
|
||||
"mysql_protocols" \
|
||||
"packet" \
|
||||
"ps_1general" \
|
||||
"rename" \
|
||||
"show_check" \
|
||||
"system_mysql_db_fix" \
|
||||
"timezone2" \
|
||||
"user_var" \
|
||||
"variables"
|
||||
do
|
||||
|
|
58
mysql-test/r/ctype_big5.result.es
Normal file
58
mysql-test/r/ctype_big5.result.es
Normal file
|
@ -0,0 +1,58 @@
|
|||
drop table if exists t1;
|
||||
SET @test_character_set= 'big5';
|
||||
SET @test_collation= 'big5_chinese_ci';
|
||||
SET @safe_character_set_server= @@character_set_server;
|
||||
SET @safe_collation_server= @@collation_server;
|
||||
SET character_set_server= @test_character_set;
|
||||
SET collation_server= @test_collation;
|
||||
CREATE DATABASE d1;
|
||||
USE d1;
|
||||
CREATE TABLE t1 (c CHAR(10), KEY(c));
|
||||
SHOW FULL COLUMNS FROM t1;
|
||||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
c char(10) big5_chinese_ci YES MUL NULL
|
||||
INSERT INTO t1 VALUES ('aaa'),('aaaa'),('aaaaa');
|
||||
SELECT c as want3results FROM t1 WHERE c LIKE 'aaa%';
|
||||
want3results
|
||||
aaa
|
||||
aaaa
|
||||
aaaaa
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (c1 varchar(15), KEY c1 (c1(2)));
|
||||
SHOW FULL COLUMNS FROM t1;
|
||||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
c1 varchar(15) big5_chinese_ci YES MUL NULL
|
||||
INSERT INTO t1 VALUES ('location'),('loberge'),('lotre'),('boabab');
|
||||
SELECT c1 as want3results from t1 where c1 like 'l%';
|
||||
want3results
|
||||
location
|
||||
loberge
|
||||
lotre
|
||||
SELECT c1 as want3results from t1 where c1 like 'lo%';
|
||||
want3results
|
||||
location
|
||||
loberge
|
||||
lotre
|
||||
SELECT c1 as want1result from t1 where c1 like 'loc%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'loca%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locat%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locati%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locatio%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'location%';
|
||||
want1result
|
||||
location
|
||||
DROP TABLE t1;
|
||||
DROP DATABASE d1;
|
||||
USE test;
|
||||
SET character_set_server= @safe_character_set_server;
|
||||
SET collation_server= @safe_collation_server;
|
242
mysql-test/r/ctype_recoding.result.es
Normal file
242
mysql-test/r/ctype_recoding.result.es
Normal file
|
@ -0,0 +1,242 @@
|
|||
SET CHARACTER SET koi8r;
|
||||
DROP TABLE IF EXISTS ÔÁÂÌÉÃÁ, t1, t2;
|
||||
SET CHARACTER SET koi8r;
|
||||
CREATE TABLE t1 (a CHAR(10) CHARACTER SET cp1251) SELECT _koi8r'ÐÒÏÂÁ' AS a;
|
||||
CREATE TABLE t2 (a CHAR(10) CHARACTER SET utf8);
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` char(10) character set cp1251 default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
SELECT a FROM t1;
|
||||
a
|
||||
ÐÒÏÂÁ
|
||||
SELECT HEX(a) FROM t1;
|
||||
HEX(a)
|
||||
EFF0EEE1E0
|
||||
INSERT t2 SELECT * FROM t1;
|
||||
SELECT HEX(a) FROM t2;
|
||||
HEX(a)
|
||||
D0BFD180D0BED0B1D0B0
|
||||
DROP TABLE t1, t2;
|
||||
CREATE TABLE t1 (description text character set cp1250 NOT NULL);
|
||||
INSERT INTO t1 (description) VALUES (_latin2'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasssssssssssaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddde');
|
||||
SELECT description FROM t1;
|
||||
description
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasssssssssssaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddde
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a TEXT CHARACTER SET cp1251) SELECT _koi8r'ÐÒÏÂÁ' AS a;
|
||||
CREATE TABLE t2 (a TEXT CHARACTER SET utf8);
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` text character set cp1251
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
SELECT HEX(a) FROM t1;
|
||||
HEX(a)
|
||||
EFF0EEE1E0
|
||||
INSERT t2 SELECT * FROM t1;
|
||||
SELECT HEX(a) FROM t2;
|
||||
HEX(a)
|
||||
D0BFD180D0BED0B1D0B0
|
||||
DROP TABLE t1, t2;
|
||||
CREATE TABLE `ÔÁÂÌÉÃÁ`
|
||||
(
|
||||
ÐÏÌÅ CHAR(32) CHARACTER SET koi8r NOT NULL COMMENT "ËÏÍÍÅÎÔÁÒÉÊ ÐÏÌÑ"
|
||||
) COMMENT "ËÏÍÍÅÎÔÁÒÉÊ ÔÁÂÌÉÃÙ";
|
||||
SHOW TABLES;
|
||||
Tables_in_test
|
||||
ÔÁÂÌÉÃÁ
|
||||
SHOW CREATE TABLE ÔÁÂÌÉÃÁ;
|
||||
Table Create Table
|
||||
ÔÁÂÌÉÃÁ CREATE TABLE `ÔÁÂÌÉÃÁ` (
|
||||
`ÐÏÌÅ` char(32) character set koi8r NOT NULL default '' COMMENT 'ËÏÍÍÅÎÔÁÒÉÊ ÐÏÌÑ'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='ËÏÍÍÅÎÔÁÒÉÊ ÔÁÂÌÉÃÙ'
|
||||
SHOW FIELDS FROM ÔÁÂÌÉÃÁ;
|
||||
Field Type Null Key Default Extra
|
||||
ÐÏÌÅ char(32)
|
||||
SET CHARACTER SET cp1251;
|
||||
SHOW TABLES;
|
||||
Tables_in_test
|
||||
òàáëèöà
|
||||
SHOW CREATE TABLE òàáëèöà;
|
||||
Table Create Table
|
||||
òàáëèöà CREATE TABLE `òàáëèöà` (
|
||||
`ïîëå` char(32) character set koi8r NOT NULL default '' COMMENT 'êîììåíòàðèé ïîëÿ'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='êîììåíòàðèé òàáëèöû'
|
||||
SHOW FIELDS FROM òàáëèöà;
|
||||
Field Type Null Key Default Extra
|
||||
ïîëå char(32)
|
||||
SET CHARACTER SET utf8;
|
||||
SHOW TABLES;
|
||||
Tables_in_test
|
||||
таблица
|
||||
SHOW CREATE TABLE таблица;
|
||||
Table Create Table
|
||||
таблица CREATE TABLE `таблица` (
|
||||
`поле` char(32) character set koi8r NOT NULL default '' COMMENT 'комментарий полÑ<EFBFBD>'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='комментарий таблицы'
|
||||
SHOW FIELDS FROM таблица;
|
||||
Field Type Null Key Default Extra
|
||||
поле char(32)
|
||||
SET CHARACTER SET koi8r;
|
||||
DROP TABLE ÔÁÂÌÉÃÁ;
|
||||
SET CHARACTER SET default;
|
||||
SET NAMES UTF8;
|
||||
CREATE TABLE t1 (t text) DEFAULT CHARSET UTF8;
|
||||
INSERT INTO t1 (t) VALUES ('x');
|
||||
SELECT 1 FROM t1 WHERE CONCAT(_latin1'x') = t;
|
||||
1
|
||||
1
|
||||
DROP TABLE t1;
|
||||
SET CHARACTER SET koi8r;
|
||||
CREATE DATABASE ÔÅÓÔ;
|
||||
USE ÔÅÓÔ;
|
||||
SHOW TABLES;
|
||||
Tables_in_теÑ<EFBFBD>Ñ‚
|
||||
SHOW TABLES IN ÔÅÓÔ;
|
||||
Tables_in_теÑ<EFBFBD>Ñ‚
|
||||
SET CHARACTER SET cp1251;
|
||||
SHOW TABLES;
|
||||
Tables_in_теÑ<EFBFBD>Ñ‚
|
||||
SHOW TABLES IN òåñò;
|
||||
Tables_in_теÑ<EFBFBD>Ñ‚
|
||||
SET CHARACTER SET koi8r;
|
||||
DROP DATABASE ÔÅÓÔ;
|
||||
SET NAMES koi8r;
|
||||
SELECT hex('ÔÅÓÔ');
|
||||
hex('теÑ<C2B5>Ñ‚')
|
||||
D4C5D3D4
|
||||
SET character_set_connection=cp1251;
|
||||
SELECT hex('ÔÅÓÔ');
|
||||
hex('теÑ<C2B5>Ñ‚')
|
||||
F2E5F1F2
|
||||
USE test;
|
||||
SET NAMES binary;
|
||||
CREATE TABLE `теÑ<EFBFBD>Ñ‚` (`теÑ<EFBFBD>Ñ‚` int);
|
||||
SHOW CREATE TABLE `теÑ<EFBFBD>Ñ‚`;
|
||||
Table Create Table
|
||||
теÑ<EFBFBD>Ñ‚ CREATE TABLE `теÑ<EFBFBD>Ñ‚` (
|
||||
`теÑ<EFBFBD>Ñ‚` int(11) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
SET NAMES utf8;
|
||||
SHOW CREATE TABLE `теÑ<EFBFBD>Ñ‚`;
|
||||
Table Create Table
|
||||
теÑ<EFBFBD>Ñ‚ CREATE TABLE `теÑ<EFBFBD>Ñ‚` (
|
||||
`теÑ<EFBFBD>Ñ‚` int(11) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE `теÑ<EFBFBD>Ñ‚`;
|
||||
SET NAMES binary;
|
||||
SET character_set_connection=utf8;
|
||||
SELECT 'теÑ<C2B5>Ñ‚' as s;
|
||||
s
|
||||
теÑ<EFBFBD>Ñ‚
|
||||
SET NAMES utf8;
|
||||
SET character_set_connection=binary;
|
||||
SELECT 'теÑ<C2B5>Ñ‚' as s;
|
||||
s
|
||||
теÑ<EFBFBD>Ñ‚
|
||||
SET NAMES latin1;
|
||||
CREATE TABLE t1 (`ä` CHAR(128) DEFAULT 'ä', `ä1` ENUM('ä1','ä2') DEFAULT 'ä2');
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`ä` char(128) default 'ä',
|
||||
`ä1` enum('ä1','ä2') default 'ä2'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
SHOW COLUMNS FROM t1;
|
||||
Field Type Null Key Default Extra
|
||||
ä char(128) YES ä
|
||||
ä1 enum('ä1','ä2') YES ä2
|
||||
SET NAMES binary;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`ä` char(128) default 'ä',
|
||||
`ä1` enum('ä1','ä2') default 'ä2'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
SHOW COLUMNS FROM t1;
|
||||
Field Type Null Key Default Extra
|
||||
ä char(128) YES ä
|
||||
ä1 enum('ä1','ä2') YES ä2
|
||||
DROP TABLE t1;
|
||||
SET NAMES binary;
|
||||
CREATE TABLE `goodÐÌÏÈÏ` (a int);
|
||||
ERROR HY000: Invalid utf8 character string: 'ÐÌÏÈÏ'
|
||||
SET NAMES utf8;
|
||||
CREATE TABLE `goodÐÌÏÈÏ` (a int);
|
||||
ERROR HY000: Invalid utf8 character string: 'ÐÌÏÈÏ` (a int)'
|
||||
set names latin1;
|
||||
create table t1 (a char(10) character set koi8r, b text character set koi8r);
|
||||
insert into t1 values ('test','test');
|
||||
insert into t1 values ('ÊÃÕË','ÊÃÕË');
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'a' at row 1
|
||||
Warning 1265 Data truncated for column 'b' at row 1
|
||||
drop table t1;
|
||||
set names koi8r;
|
||||
create table t1 (a char(10) character set cp1251);
|
||||
insert into t1 values (_koi8r'×ÁÓÑ');
|
||||
select * from t1 where a=_koi8r'×ÁÓÑ';
|
||||
a
|
||||
×ÁÓÑ
|
||||
select * from t1 where a=concat(_koi8r'×ÁÓÑ');
|
||||
ERROR HY000: Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (koi8r_general_ci,COERCIBLE) for operation '='
|
||||
select * from t1 where a=_latin1'×ÁÓÑ';
|
||||
ERROR HY000: Illegal mix of collations (cp1251_general_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation '='
|
||||
drop table t1;
|
||||
set names latin1;
|
||||
set names koi8r;
|
||||
create table t1 (c1 char(10) character set cp1251);
|
||||
insert into t1 values ('ß');
|
||||
select c1 from t1 where c1 between 'ß' and 'ß';
|
||||
c1
|
||||
ß
|
||||
select ifnull(c1,'ß'), ifnull(null,c1) from t1;
|
||||
ifnull(c1,'ÑŠ') ifnull(null,c1)
|
||||
ß ß
|
||||
select if(1,c1,'ö'), if(0,c1,'ö') from t1;
|
||||
if(1,c1,'Ж') if(0,c1,'Ж')
|
||||
ß ö
|
||||
select coalesce('ö',c1), coalesce(null,c1) from t1;
|
||||
coalesce('Ж',c1) coalesce(null,c1)
|
||||
ö ß
|
||||
select least(c1,'ö'), greatest(c1,'ö') from t1;
|
||||
least(c1,'Ж') greatest(c1,'Ж')
|
||||
ö ß
|
||||
select locate(c1,'ß'), locate('ß',c1) from t1;
|
||||
locate(c1,'ÑŠ') locate('ÑŠ',c1)
|
||||
1 1
|
||||
select field(c1,'ß'),field('ß',c1) from t1;
|
||||
field(c1,'ÑŠ') field('ÑŠ',c1)
|
||||
1 1
|
||||
select concat(c1,'ö'), concat('ö',c1) from t1;
|
||||
concat(c1,'Ж') concat('Ж',c1)
|
||||
ßö öß
|
||||
select concat_ws(c1,'ö','ß'), concat_ws('ö',c1,'ß') from t1;
|
||||
concat_ws(c1,'Ж','ъ') concat_ws('Ж',c1,'ъ')
|
||||
ößß ßöß
|
||||
select replace(c1,'ß','ö'), replace('ß',c1,'ö') from t1;
|
||||
replace(c1,'ъ','Ж') replace('ъ',c1,'Ж')
|
||||
ö ö
|
||||
select substring_index(c1,'öößß',2) from t1;
|
||||
substring_index(c1,'ЖЖъъ',2)
|
||||
ß
|
||||
select elt(1,c1,'ö'),elt(1,'ö',c1) from t1;
|
||||
elt(1,c1,'Ж') elt(1,'Ж',c1)
|
||||
ß ö
|
||||
select make_set(3,c1,'ö'), make_set(3,'ö',c1) from t1;
|
||||
make_set(3,c1,'Ж') make_set(3,'Ж',c1)
|
||||
ß,ö ö,ß
|
||||
select insert(c1,1,2,'ö'),insert('ö',1,2,c1) from t1;
|
||||
insert(c1,1,2,'Ж') insert('Ж',1,2,c1)
|
||||
ö ß
|
||||
select trim(c1 from 'ß'),trim('ß' from c1) from t1;
|
||||
trim(c1 from 'ÑŠ') trim('ÑŠ' from c1)
|
||||
|
||||
select lpad(c1,3,'ö'), lpad('ö',3,c1) from t1;
|
||||
lpad(c1,3,'Ж') lpad('Ж',3,c1)
|
||||
ööß ßßö
|
||||
select rpad(c1,3,'ö'), rpad('ö',3,c1) from t1;
|
||||
rpad(c1,3,'Ж') rpad('Ж',3,c1)
|
||||
ßöö ößß
|
2377
mysql-test/r/ctype_uca.result.es
Normal file
2377
mysql-test/r/ctype_uca.result.es
Normal file
File diff suppressed because it is too large
Load diff
185
mysql-test/r/func_test.result.es
Normal file
185
mysql-test/r/func_test.result.es
Normal file
|
@ -0,0 +1,185 @@
|
|||
drop table if exists t1,t2;
|
||||
select 0=0,1>0,1>=1,1<0,1<=0,1!=0,strcmp("abc","abcd"),strcmp("b","a"),strcmp("a","a") ;
|
||||
0=0 1>0 1>=1 1<0 1<=0 1!=0 strcmp("abc","abcd") strcmp("b","a") strcmp("a","a")
|
||||
1 1 1 0 0 1 -1 1 0
|
||||
select "a"<"b","a"<="b","b">="a","b">"a","a"="A","a"<>"b";
|
||||
"a"<"b" "a"<="b" "b">="a" "b">"a" "a"="A" "a"<>"b"
|
||||
1 1 1 1 1 1
|
||||
select "a "="A", "A "="a", "a " <= "A b";
|
||||
"a "="A" "A "="a" "a " <= "A b"
|
||||
1 1 1
|
||||
select "abc" like "a%", "abc" not like "%d%", "a%" like "a\%","abc%" like "a%\%","abcd" like "a%b_%d", "a" like "%%a","abcde" like "a%_e","abc" like "abc%";
|
||||
"abc" like "a%" "abc" not like "%d%" "a%" like "a\%" "abc%" like "a%\%" "abcd" like "a%b_%d" "a" like "%%a" "abcde" like "a%_e" "abc" like "abc%"
|
||||
1 1 1 1 1 1 1 1
|
||||
select "a" like "%%b","a" like "%%ab","ab" like "a\%", "ab" like "_", "ab" like "ab_", "abc" like "%_d", "abc" like "abc%d";
|
||||
"a" like "%%b" "a" like "%%ab" "ab" like "a\%" "ab" like "_" "ab" like "ab_" "abc" like "%_d" "abc" like "abc%d"
|
||||
0 0 0 0 0 0 0
|
||||
select '?' like '|%', '?' like '|%' ESCAPE '|', '%' like '|%', '%' like '|%' ESCAPE '|', '%' like '%';
|
||||
'?' like '|%' '?' like '|%' ESCAPE '|' '%' like '|%' '%' like '|%' ESCAPE '|' '%' like '%'
|
||||
0 0 0 1 1
|
||||
select 'abc' like '%c','abcabc' like '%c', "ab" like "", "ab" like "a", "ab" like "ab";
|
||||
'abc' like '%c' 'abcabc' like '%c' "ab" like "" "ab" like "a" "ab" like "ab"
|
||||
1 1 0 0 1
|
||||
select "Det här är svenska" regexp "h[[:alpha:]]+r", "aba" regexp "^(a|b)*$";
|
||||
"Det här är svenska" regexp "h[[:alpha:]]+r" "aba" regexp "^(a|b)*$"
|
||||
1 1
|
||||
select "aba" regexp concat("^","a");
|
||||
"aba" regexp concat("^","a")
|
||||
1
|
||||
select !0,NOT 0=1,!(0=0),1 AND 1,1 && 0,0 OR 1,1 || NULL, 1=1 or 1=1 and 1=0;
|
||||
!0 NOT 0=1 !(0=0) 1 AND 1 1 && 0 0 OR 1 1 || NULL 1=1 or 1=1 and 1=0
|
||||
1 1 0 1 0 1 1 1
|
||||
select 2 between 1 and 3, "monty" between "max" and "my",2=2 and "monty" between "max" and "my" and 3=3;
|
||||
2 between 1 and 3 "monty" between "max" and "my" 2=2 and "monty" between "max" and "my" and 3=3
|
||||
1 1 1
|
||||
select 'b' between 'a' and 'c', 'B' between 'a' and 'c';
|
||||
'b' between 'a' and 'c' 'B' between 'a' and 'c'
|
||||
1 1
|
||||
select 2 in (3,2,5,9,5,1),"monty" in ("david","monty","allan"), 1.2 in (1.4,1.2,1.0);
|
||||
2 in (3,2,5,9,5,1) "monty" in ("david","monty","allan") 1.2 in (1.4,1.2,1.0)
|
||||
1 1 1
|
||||
select -1.49 or -1.49,0.6 or 0.6;
|
||||
-1.49 or -1.49 0.6 or 0.6
|
||||
1 1
|
||||
select 3 ^ 11, 1 ^ 1, 1 ^ 0, 1 ^ NULL, NULL ^ 1;
|
||||
3 ^ 11 1 ^ 1 1 ^ 0 1 ^ NULL NULL ^ 1
|
||||
8 0 1 NULL NULL
|
||||
explain extended select 3 ^ 11, 1 ^ 1, 1 ^ 0, 1 ^ NULL, NULL ^ 1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select (3 ^ 11) AS `3 ^ 11`,(1 ^ 1) AS `1 ^ 1`,(1 ^ 0) AS `1 ^ 0`,(1 ^ NULL) AS `1 ^ NULL`,(NULL ^ 1) AS `NULL ^ 1`
|
||||
select 1 XOR 1, 1 XOR 0, 0 XOR 1, 0 XOR 0, NULL XOR 1, 1 XOR NULL, 0 XOR NULL;
|
||||
1 XOR 1 1 XOR 0 0 XOR 1 0 XOR 0 NULL XOR 1 1 XOR NULL 0 XOR NULL
|
||||
0 1 1 0 NULL NULL NULL
|
||||
select 1 like 2 xor 2 like 1;
|
||||
1 like 2 xor 2 like 1
|
||||
0
|
||||
select 10 % 7, 10 mod 7, 10 div 3;
|
||||
10 % 7 10 mod 7 10 div 3
|
||||
3 3 3
|
||||
explain extended select 10 % 7, 10 mod 7, 10 div 3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select (10 % 7) AS `10 % 7`,(10 % 7) AS `10 mod 7`,(10 DIV 3) AS `10 div 3`
|
||||
select (1 << 64)-1, ((1 << 64)-1) DIV 1, ((1 << 64)-1) DIV 2;
|
||||
(1 << 64)-1 ((1 << 64)-1) DIV 1 ((1 << 64)-1) DIV 2
|
||||
18446744073709551615 18446744073709551615 9223372036854775807
|
||||
explain extended select (1 << 64)-1, ((1 << 64)-1) DIV 1, ((1 << 64)-1) DIV 2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select ((1 << 64) - 1) AS `(1 << 64)-1`,(((1 << 64) - 1) DIV 1) AS `((1 << 64)-1) DIV 1`,(((1 << 64) - 1) DIV 2) AS `((1 << 64)-1) DIV 2`
|
||||
create table t1 (a int);
|
||||
insert t1 values (1);
|
||||
select * from t1 where 1 xor 1;
|
||||
a
|
||||
explain extended select * from t1 where 1 xor 1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
Warnings:
|
||||
Note 1003 select test.t1.a AS `a` from test.t1 where (1 xor 1)
|
||||
select - a from t1;
|
||||
- a
|
||||
-1
|
||||
explain extended select - a from t1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 system NULL NULL NULL NULL 1
|
||||
Warnings:
|
||||
Note 1003 select -(test.t1.a) AS `- a` from test.t1
|
||||
drop table t1;
|
||||
select 5 between 0 and 10 between 0 and 1,(5 between 0 and 10) between 0 and 1;
|
||||
5 between 0 and 10 between 0 and 1 (5 between 0 and 10) between 0 and 1
|
||||
0 1
|
||||
select 1 and 2 between 2 and 10, 2 between 2 and 10 and 1;
|
||||
1 and 2 between 2 and 10 2 between 2 and 10 and 1
|
||||
1 1
|
||||
select 1 and 0 or 2, 2 or 1 and 0;
|
||||
1 and 0 or 2 2 or 1 and 0
|
||||
1 1
|
||||
select _koi8r'a' = _koi8r'A';
|
||||
_koi8r'a' = _koi8r'A'
|
||||
1
|
||||
select _koi8r'a' = _koi8r'A' COLLATE koi8r_general_ci;
|
||||
_koi8r'a' = _koi8r'A' COLLATE koi8r_general_ci
|
||||
1
|
||||
explain extended select _koi8r'a' = _koi8r'A' COLLATE koi8r_general_ci;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select (_koi8r'a' = (_koi8r'A' collate _latin1'koi8r_general_ci')) AS `_koi8r'a' = _koi8r'A' COLLATE koi8r_general_ci`
|
||||
select _koi8r'a' = _koi8r'A' COLLATE koi8r_bin;
|
||||
_koi8r'a' = _koi8r'A' COLLATE koi8r_bin
|
||||
0
|
||||
select _koi8r'a' COLLATE koi8r_general_ci = _koi8r'A';
|
||||
_koi8r'a' COLLATE koi8r_general_ci = _koi8r'A'
|
||||
1
|
||||
select _koi8r'a' COLLATE koi8r_bin = _koi8r'A';
|
||||
_koi8r'a' COLLATE koi8r_bin = _koi8r'A'
|
||||
0
|
||||
select _koi8r'a' COLLATE koi8r_bin = _koi8r'A' COLLATE koi8r_general_ci;
|
||||
ERROR HY000: Illegal mix of collations (koi8r_bin,EXPLICIT) and (koi8r_general_ci,EXPLICIT) for operation '='
|
||||
select _koi8r'a' = _latin1'A';
|
||||
ERROR HY000: Illegal mix of collations (koi8r_general_ci,COERCIBLE) and (latin1_swedish_ci,COERCIBLE) for operation '='
|
||||
select strcmp(_koi8r'a', _koi8r'A');
|
||||
strcmp(_koi8r'a', _koi8r'A')
|
||||
0
|
||||
select strcmp(_koi8r'a', _koi8r'A' COLLATE koi8r_general_ci);
|
||||
strcmp(_koi8r'a', _koi8r'A' COLLATE koi8r_general_ci)
|
||||
0
|
||||
select strcmp(_koi8r'a', _koi8r'A' COLLATE koi8r_bin);
|
||||
strcmp(_koi8r'a', _koi8r'A' COLLATE koi8r_bin)
|
||||
1
|
||||
select strcmp(_koi8r'a' COLLATE koi8r_general_ci, _koi8r'A');
|
||||
strcmp(_koi8r'a' COLLATE koi8r_general_ci, _koi8r'A')
|
||||
0
|
||||
select strcmp(_koi8r'a' COLLATE koi8r_bin, _koi8r'A');
|
||||
strcmp(_koi8r'a' COLLATE koi8r_bin, _koi8r'A')
|
||||
1
|
||||
select strcmp(_koi8r'a' COLLATE koi8r_general_ci, _koi8r'A' COLLATE koi8r_bin);
|
||||
ERROR HY000: Illegal mix of collations (koi8r_general_ci,EXPLICIT) and (koi8r_bin,EXPLICIT) for operation 'strcmp'
|
||||
select strcmp(_koi8r'a', _latin1'A');
|
||||
ERROR HY000: Illegal mix of collations (koi8r_general_ci,COERCIBLE) and (latin1_swedish_ci,COERCIBLE) for operation 'strcmp'
|
||||
select _koi8r'a' LIKE _koi8r'A';
|
||||
_koi8r'a' LIKE _koi8r'A'
|
||||
1
|
||||
select _koi8r'a' LIKE _koi8r'A' COLLATE koi8r_general_ci;
|
||||
_koi8r'a' LIKE _koi8r'A' COLLATE koi8r_general_ci
|
||||
1
|
||||
select _koi8r'a' LIKE _koi8r'A' COLLATE koi8r_bin;
|
||||
_koi8r'a' LIKE _koi8r'A' COLLATE koi8r_bin
|
||||
0
|
||||
select _koi8r'a' COLLATE koi8r_general_ci LIKE _koi8r'A';
|
||||
_koi8r'a' COLLATE koi8r_general_ci LIKE _koi8r'A'
|
||||
1
|
||||
select _koi8r'a' COLLATE koi8r_bin LIKE _koi8r'A';
|
||||
_koi8r'a' COLLATE koi8r_bin LIKE _koi8r'A'
|
||||
0
|
||||
select _koi8r'a' COLLATE koi8r_general_ci LIKE _koi8r'A' COLLATE koi8r_bin;
|
||||
ERROR HY000: Illegal mix of collations (koi8r_general_ci,EXPLICIT) and (koi8r_bin,EXPLICIT) for operation 'like'
|
||||
select _koi8r'a' LIKE _latin1'A';
|
||||
ERROR HY000: Illegal mix of collations (koi8r_general_ci,COERCIBLE) and (latin1_swedish_ci,COERCIBLE) for operation 'like'
|
||||
CREATE TABLE t1 ( faq_group_id int(11) NOT NULL default '0', faq_id int(11) NOT NULL default '0', title varchar(240) default NULL, keywords text, description longblob, solution longblob, status tinyint(4) NOT NULL default '0', access_id smallint(6) default NULL, lang_id smallint(6) NOT NULL default '0', created datetime NOT NULL default '0000-00-00 00:00:00', updated datetime default NULL, last_access datetime default NULL, last_notify datetime default NULL, solved_count int(11) NOT NULL default '0', static_solved int(11) default NULL, solved_1 int(11) default NULL, solved_2 int(11) default NULL, solved_3 int(11) default NULL, solved_4 int(11) default NULL, solved_5 int(11) default NULL, expires datetime default NULL, notes text, assigned_to smallint(6) default NULL, assigned_group smallint(6) default NULL, last_edited_by smallint(6) default NULL, orig_ref_no varchar(15) binary default NULL, c$fundstate smallint(6) default NULL, c$contributor smallint(6) default NULL, UNIQUE KEY t1$faq_id (faq_id), KEY t1$group_id$faq_id (faq_group_id,faq_id), KEY t1$c$fundstate (c$fundstate) ) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (82,82,'How to use the DynaVox Usage Counts Feature','usages count, number, corner, white, box, button','<as-html>\r\n<table width=\"100%\" border=\"0\">\r\n <tr>\r\n <td width=\"3%\"> </td>\r\n <td width=\"97%\">\r\n <h3><font face=\"Verdana, Arial, Helvetica, sans-serif\" color=\"#000000\">How \r\n To</font><!-- #BeginEditable \"CS_troubleshoot_question\" --><font face=\"Verdana, Arial, Helvetica, sans-serif\" color=\"#000099\"><font color=\"#000000\">: \r\n Display or Hide the Usage Counts to find out how many times each button is being selected. </font></font><!-- #EndEditable --></h3>\r\n </td>\r\n </tr>\r\n</table>','<as-html>\r\n <table width=\"100%\" border=\"0\">\r\n <tr>\r\n <td width=\"3%\"> </td>\r\n \r\n<td width=\"97%\"><!-- #BeginEditable \"CS_troubleshoot_answer\" --> \r\n \r\n<p><font color=\"#000000\" face=\"Verdana, Arial, Helvetica, sans-serif\">1. Select \r\n the <i>On/Setup</i> button to access the DynaVox Setup Menu.<br>\r\n 2. Select <b>Button Features.</b><br>\r\n 3. Below the <b>OK</b> button is the <b>Usage Counts</b> button.<br>\r\n a. If it says \"Hidden\" then the Usage Counts will not be displayed.<br>\r\n b. If it says \"Displayed\" then the Usage Counts will be shown.<br>\r\n c. Select the <b>Usage Counts</b> Option Ring once and it will toggle \r\n to the alternative option.<br>\r\n 4. Once the correct setting has been chosen, select <b>OK</b> to leave the <i>Button \r\n Features</i> menu.<br>\r\n 5. Select <b>OK</b> out of the <i>Setup</i> menu and return to the communication \r\n page.</font></p>\r\n <p><font color=\"#000000\" face=\"Verdana, Arial, Helvetica, sans-serif\">For \r\n further information on <i>Usage Counts,</i> see the <i>Button Features \r\n Menu Entry</i> in the DynaVox/DynaMyte Reference Manual.</font></p>\r\n<!-- #EndEditable --></td>\r\n </tr>\r\n</table>',4,1,1,'2001-11-16 16:43:34','2002-11-25 12:09:43','2003-07-24 01:04:48',NULL,11,NULL,0,0,0,0,0,NULL,NULL,NULL,NULL,11,NULL,NULL,NULL);
|
||||
CREATE TABLE t2 ( access_id smallint(6) NOT NULL default '0', name varchar(20) binary default NULL, rank smallint(6) NOT NULL default '0', KEY t2$access_id (access_id) ) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (1,'Everyone',2),(2,'Help',3),(3,'Customer Support',1);
|
||||
SELECT f_acc.rank, a1.rank, a2.rank FROM t1 LEFT JOIN t1 f1 ON (f1.access_id=1 AND f1.faq_group_id = t1.faq_group_id) LEFT JOIN t2 a1 ON (a1.access_id = f1.access_id) LEFT JOIN t1 f2 ON (f2.access_id=3 AND f2.faq_group_id = t1.faq_group_id) LEFT JOIN t2 a2 ON (a2.access_id = f2.access_id), t2 f_acc WHERE LEAST(a1.rank,a2.rank) = f_acc.rank;
|
||||
rank rank rank
|
||||
2 2 NULL
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (d varchar(6), k int);
|
||||
INSERT INTO t1 VALUES (NULL, 2);
|
||||
SELECT GREATEST(d,d) FROM t1 WHERE k=2;
|
||||
GREATEST(d,d)
|
||||
NULL
|
||||
DROP TABLE t1;
|
||||
select 1197.90 mod 50;
|
||||
1197.90 mod 50
|
||||
47.90
|
||||
select 5.1 mod 3, 5.1 mod -3, -5.1 mod 3, -5.1 mod -3;
|
||||
5.1 mod 3 5.1 mod -3 -5.1 mod 3 -5.1 mod -3
|
||||
2.1 2.1 -2.1 -2.1
|
||||
select 5 mod 3, 5 mod -3, -5 mod 3, -5 mod -3;
|
||||
5 mod 3 5 mod -3 -5 mod 3 -5 mod -3
|
||||
2 2 -2 -2
|
|
@ -240,3 +240,12 @@ SELECT * FROM t1;
|
|||
pseudo date
|
||||
ZoomZip 1101106546
|
||||
DROP TABLE t1;
|
||||
create table t1(a char(2)) engine=memory;
|
||||
insert into t1 values (NULL), (NULL);
|
||||
delete from t1 where a is null;
|
||||
insert into t1 values ('2'), ('3');
|
||||
select * from t1;
|
||||
a
|
||||
3
|
||||
2
|
||||
drop table t1;
|
||||
|
|
1653
mysql-test/r/innodb.result.es
Normal file
1653
mysql-test/r/innodb.result.es
Normal file
File diff suppressed because it is too large
Load diff
59
mysql-test/r/myisam-blob.result.es
Normal file
59
mysql-test/r/myisam-blob.result.es
Normal file
|
@ -0,0 +1,59 @@
|
|||
drop table if exists t1;
|
||||
CREATE TABLE t1 (data LONGBLOB) ENGINE=myisam;
|
||||
INSERT INTO t1 (data) VALUES (NULL);
|
||||
UPDATE t1 set data=repeat('a',18*1024*1024);
|
||||
Warnings:
|
||||
Warning 1301 Result of repeat() was larger than max_allowed_packet (24) - truncated
|
||||
select length(data) from t1;
|
||||
length(data)
|
||||
NULL
|
||||
delete from t1 where left(data,1)='a';
|
||||
check table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
truncate table t1;
|
||||
INSERT INTO t1 (data) VALUES (repeat('a',1*1024*1024));
|
||||
Warnings:
|
||||
Warning 1301 Result of repeat() was larger than max_allowed_packet (24) - truncated
|
||||
INSERT INTO t1 (data) VALUES (repeat('b',16*1024*1024-1024));
|
||||
Warnings:
|
||||
Warning 1301 Result of repeat() was larger than max_allowed_packet (24) - truncated
|
||||
delete from t1 where left(data,1)='b';
|
||||
check table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
UPDATE t1 set data=repeat('c',17*1024*1024);
|
||||
Warnings:
|
||||
Warning 1301 Result of repeat() was larger than max_allowed_packet (24) - truncated
|
||||
Warning 1301 Result of repeat() was larger than max_allowed_packet (24) - truncated
|
||||
check table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
delete from t1 where left(data,1)='c';
|
||||
check table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
INSERT INTO t1 set data=repeat('a',18*1024*1024);
|
||||
Warnings:
|
||||
Warning 1301 Result of repeat() was larger than max_allowed_packet (24) - truncated
|
||||
select length(data) from t1;
|
||||
length(data)
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
alter table t1 modify data blob;
|
||||
select length(data) from t1;
|
||||
length(data)
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (data BLOB) ENGINE=myisam;
|
||||
INSERT INTO t1 (data) VALUES (NULL);
|
||||
UPDATE t1 set data=repeat('a',18*1024*1024);
|
||||
Warnings:
|
||||
Warning 1301 Result of repeat() was larger than max_allowed_packet (24) - truncated
|
||||
select length(data) from t1;
|
||||
length(data)
|
||||
NULL
|
||||
drop table t1;
|
3130
mysql-test/r/ps_2myisam.result.es
Normal file
3130
mysql-test/r/ps_2myisam.result.es
Normal file
File diff suppressed because it is too large
Load diff
3113
mysql-test/r/ps_3innodb.result.es
Normal file
3113
mysql-test/r/ps_3innodb.result.es
Normal file
File diff suppressed because it is too large
Load diff
3114
mysql-test/r/ps_4heap.result.es
Normal file
3114
mysql-test/r/ps_4heap.result.es
Normal file
File diff suppressed because it is too large
Load diff
6064
mysql-test/r/ps_5merge.result.es
Normal file
6064
mysql-test/r/ps_5merge.result.es
Normal file
File diff suppressed because it is too large
Load diff
3113
mysql-test/r/ps_6bdb.result.es
Normal file
3113
mysql-test/r/ps_6bdb.result.es
Normal file
File diff suppressed because it is too large
Load diff
|
@ -791,6 +791,19 @@ Qcache_queries_in_cache 1
|
|||
unlock table;
|
||||
drop table t1,t2;
|
||||
set query_cache_wlock_invalidate=default;
|
||||
CREATE TABLE t1 (id INT PRIMARY KEY);
|
||||
insert into t1 values (1),(2),(3);
|
||||
select * from t1;
|
||||
id
|
||||
1
|
||||
2
|
||||
3
|
||||
create temporary table t1 (a int not null auto_increment
|
||||
primary key);
|
||||
select * from t1;
|
||||
a
|
||||
drop table t1;
|
||||
drop table t1;
|
||||
SET NAMES koi8r;
|
||||
CREATE TABLE t1 (a char(1) character set koi8r);
|
||||
INSERT INTO t1 VALUES (_koi8r'á'),(_koi8r'Á');
|
||||
|
@ -901,6 +914,8 @@ set group_concat_max_len=10;
|
|||
select group_concat(a) FROM t1 group by b;
|
||||
group_concat(a)
|
||||
1234567890
|
||||
Warnings:
|
||||
Warning 1260 1 line(s) were cut by GROUP_CONCAT()
|
||||
set group_concat_max_len=1024;
|
||||
select group_concat(a) FROM t1 group by b;
|
||||
group_concat(a)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
drop table if exists t1,t2,t3,t4;
|
||||
drop table if exists t1_1,t1_2,t9_1,t9_2;
|
||||
CREATE TABLE t1 (
|
||||
Period smallint(4) unsigned zerofill DEFAULT '0000' NOT NULL,
|
||||
Varor_period smallint(4) unsigned DEFAULT '0' NOT NULL
|
||||
|
@ -2056,6 +2057,10 @@ t2 1 fld3 1 fld3 A NULL NULL NULL BTREE
|
|||
drop table t4, t3, t2, t1;
|
||||
DO 1;
|
||||
DO benchmark(100,1+1),1,1;
|
||||
do default;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
|
||||
do foobar;
|
||||
ERROR 42S22: Unknown column 'foobar' in 'field list'
|
||||
CREATE TABLE t1 (
|
||||
id mediumint(8) unsigned NOT NULL auto_increment,
|
||||
pseudo varchar(35) NOT NULL default '',
|
||||
|
@ -2348,6 +2353,27 @@ select * from t2,t3 where t2.s = t3.s;
|
|||
s s
|
||||
two two
|
||||
drop table t1, t2, t3;
|
||||
create table t1 (a integer, b integer, index(a), index(b));
|
||||
create table t2 (c integer, d integer, index(c), index(d));
|
||||
insert into t1 values (1,2), (2,2), (3,2), (4,2);
|
||||
insert into t2 values (1,3), (2,3), (3,4), (4,4);
|
||||
explain select * from t1 left join t2 on a=c where d in (4);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ref c,d d 5 const 2 Using where
|
||||
1 SIMPLE t1 ALL a NULL NULL NULL 3 Using where
|
||||
select * from t1 left join t2 on a=c where d in (4);
|
||||
a b c d
|
||||
3 2 3 4
|
||||
4 2 4 4
|
||||
explain select * from t1 left join t2 on a=c where d = 4;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ref c,d d 5 const 2 Using where
|
||||
1 SIMPLE t1 ALL a NULL NULL NULL 3 Using where
|
||||
select * from t1 left join t2 on a=c where d = 4;
|
||||
a b c d
|
||||
3 2 3 4
|
||||
4 2 4 4
|
||||
drop table t1, t2;
|
||||
CREATE TABLE t1 (
|
||||
i int(11) NOT NULL default '0',
|
||||
c char(10) NOT NULL default '',
|
||||
|
@ -2360,7 +2386,4 @@ INSERT INTO t1 VALUES (3,'c');
|
|||
EXPLAIN SELECT i FROM t1 WHERE i=1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 Using index
|
||||
EXPLAIN SELECT i FROM t1 WHERE i=1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 Using index
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -684,8 +684,8 @@ id txt
|
|||
3 NULL
|
||||
1 Chevy
|
||||
drop table t1;
|
||||
CREATE TABLE t1 ( i int(11) NOT NULL default '0', c text NOT NULL, PRIMARY KEY (i), KEY (c(1),c(1)));
|
||||
INSERT t1 VALUES (1,''),(2,''),(3,'asdfh'),(4,'');
|
||||
CREATE TABLE t1 ( i int(11) NOT NULL default '0', c text NOT NULL, d varchar(1) NOT NULL DEFAULT ' ', PRIMARY KEY (i), KEY (c(1),d));
|
||||
INSERT t1 (i, c) VALUES (1,''),(2,''),(3,'asdfh'),(4,'');
|
||||
select max(i) from t1 where c = '';
|
||||
max(i)
|
||||
4
|
||||
|
|
|
@ -1725,3 +1725,15 @@ a
|
|||
ö
|
||||
ü
|
||||
drop table t1;
|
||||
create table t1 (a enum ('Y','N') CHARACTER SET utf8 COLLATE utf8_bin);
|
||||
insert into t1 values ('Y');
|
||||
alter table t1 add b set ('Y','N') CHARACTER SET utf8 COLLATE utf8_bin;
|
||||
alter table t1 add c enum ('Y','N') CHARACTER SET utf8 COLLATE utf8_bin;
|
||||
select * from t1;
|
||||
Catalog Database Table Table_alias Column Column_alias Name Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def test t1 t1 a a 254 3 1 Y 384 0 8
|
||||
def test t1 t1 b b 254 9 0 Y 2176 0 8
|
||||
def test t1 t1 c c 254 3 0 Y 384 0 8
|
||||
a b c
|
||||
Y NULL NULL
|
||||
drop table t1;
|
||||
|
|
|
@ -22,14 +22,14 @@ select * from t1;
|
|||
f1 f2
|
||||
10 10
|
||||
100000 100000
|
||||
1.23457e+09 1234567890
|
||||
1.23457e+9 1234567890
|
||||
1e+10 10000000000
|
||||
1e+15 1e+15
|
||||
1e+20 1e+20
|
||||
3.40282e+38 1e+50
|
||||
3.40282e+38 1e+150
|
||||
-10 -10
|
||||
1e-05 1e-05
|
||||
1e-5 1e-5
|
||||
1e-10 1e-10
|
||||
1e-15 1e-15
|
||||
1e-20 1e-20
|
||||
|
@ -137,6 +137,8 @@ t1 CREATE TABLE `t1` (
|
|||
drop table t1;
|
||||
create table t1 (c20 char);
|
||||
insert into t1 values (5000.0);
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'c20' at row 1
|
||||
drop table t1;
|
||||
create table t1 (f float(54));
|
||||
ERROR 42000: Incorrect column specifier for column 'f'
|
||||
|
|
57
mysql-test/t/bdb-deadlock.tminus
Normal file
57
mysql-test/t/bdb-deadlock.tminus
Normal file
|
@ -0,0 +1,57 @@
|
|||
# This test doesn't work with the embedded version as this code
|
||||
# assumes that one query is running while we are doing queries on
|
||||
# a second connection.
|
||||
# This would work if mysqltest run would be threaded and handle each
|
||||
# connection in a separate thread.
|
||||
#
|
||||
|
||||
#-- source include/not_embedded.inc
|
||||
-- source include/have_bdb.inc
|
||||
|
||||
connect (con1,localhost,root,,);
|
||||
connect (con2,localhost,root,,);
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2;
|
||||
--enable_warnings
|
||||
connection con1;
|
||||
create table t1 (id integer, x integer) engine=BDB;
|
||||
create table t2 (id integer, x integer) engine=BDB;
|
||||
insert into t1 values(0, 0);
|
||||
insert into t2 values(0, 0);
|
||||
set autocommit=0;
|
||||
update t1 set x = 1 where id = 0;
|
||||
|
||||
connection con2;
|
||||
set autocommit=0;
|
||||
update t2 set x = 1 where id = 0;
|
||||
|
||||
# The following query should hang because con1 is locking the page
|
||||
--send
|
||||
select x from t1 where id = 0;
|
||||
|
||||
connection con1;
|
||||
# This should generate a deadlock as we are trying to access a locked row
|
||||
--send
|
||||
select x from t2 where id = 0;
|
||||
|
||||
connection con2;
|
||||
--error 1213
|
||||
reap;
|
||||
commit;
|
||||
|
||||
connection con1;
|
||||
reap;
|
||||
commit;
|
||||
|
||||
connection con2;
|
||||
select * from t1;
|
||||
select * from t2;
|
||||
commit;
|
||||
|
||||
connection con1;
|
||||
select * from t1;
|
||||
select * from t2;
|
||||
commit;
|
||||
|
||||
drop table t1,t2;
|
|
@ -185,3 +185,13 @@ DELETE FROM t1 WHERE date<1101106546;
|
|||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #6878: a problem with small length records
|
||||
#
|
||||
|
||||
create table t1(a char(2)) engine=memory;
|
||||
insert into t1 values (NULL), (NULL);
|
||||
delete from t1 where a is null;
|
||||
insert into t1 values ('2'), ('3');
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
|
|
@ -471,4 +471,3 @@ execute stmt using @var, @var, @var;
|
|||
set @var=null;
|
||||
select @var is null, @var is not null, @var;
|
||||
execute stmt using @var, @var, @var;
|
||||
|
||||
|
|
|
@ -100,3 +100,16 @@ set names latin1;
|
|||
show create table t1;
|
||||
select a from t1 order by a;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test bug where enum fields where extended for each ALTER TABLE
|
||||
#
|
||||
|
||||
create table t1 (a enum ('Y','N') CHARACTER SET utf8 COLLATE utf8_bin);
|
||||
insert into t1 values ('Y');
|
||||
alter table t1 add b set ('Y','N') CHARACTER SET utf8 COLLATE utf8_bin;
|
||||
alter table t1 add c enum ('Y','N') CHARACTER SET utf8 COLLATE utf8_bin;
|
||||
--enable_metadata
|
||||
select * from t1;
|
||||
--disable metadata
|
||||
drop table t1;
|
||||
|
|
39
sql/field.cc
39
sql/field.cc
|
@ -5842,25 +5842,24 @@ bool Field_num::eq_def(Field *field)
|
|||
|
||||
void create_field::create_length_to_internal_length(void)
|
||||
{
|
||||
switch (sql_type)
|
||||
{
|
||||
case MYSQL_TYPE_TINY_BLOB:
|
||||
case MYSQL_TYPE_MEDIUM_BLOB:
|
||||
case MYSQL_TYPE_LONG_BLOB:
|
||||
case MYSQL_TYPE_BLOB:
|
||||
case MYSQL_TYPE_VAR_STRING:
|
||||
case MYSQL_TYPE_STRING:
|
||||
length*= charset->mbmaxlen;
|
||||
pack_length= calc_pack_length(sql_type == FIELD_TYPE_VAR_STRING ?
|
||||
FIELD_TYPE_STRING : sql_type, length);
|
||||
break;
|
||||
case MYSQL_TYPE_ENUM:
|
||||
case MYSQL_TYPE_SET:
|
||||
length*= charset->mbmaxlen;
|
||||
break;
|
||||
default:
|
||||
/* do nothing */
|
||||
break;
|
||||
switch (sql_type) {
|
||||
case MYSQL_TYPE_TINY_BLOB:
|
||||
case MYSQL_TYPE_MEDIUM_BLOB:
|
||||
case MYSQL_TYPE_LONG_BLOB:
|
||||
case MYSQL_TYPE_BLOB:
|
||||
case MYSQL_TYPE_VAR_STRING:
|
||||
case MYSQL_TYPE_STRING:
|
||||
length*= charset->mbmaxlen;
|
||||
pack_length= calc_pack_length(sql_type == FIELD_TYPE_VAR_STRING ?
|
||||
FIELD_TYPE_STRING : sql_type, length);
|
||||
break;
|
||||
case MYSQL_TYPE_ENUM:
|
||||
case MYSQL_TYPE_SET:
|
||||
length*= charset->mbmaxlen;
|
||||
break;
|
||||
default:
|
||||
/* do nothing */
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6085,6 +6084,8 @@ create_field::create_field(Field *old_field,Field *orig_field)
|
|||
}
|
||||
length=(length+charset->mbmaxlen-1)/charset->mbmaxlen; // QQ: Probably not needed
|
||||
break;
|
||||
case MYSQL_TYPE_ENUM:
|
||||
case MYSQL_TYPE_SET:
|
||||
case FIELD_TYPE_STRING:
|
||||
case FIELD_TYPE_VAR_STRING:
|
||||
length=(length+charset->mbmaxlen-1)/charset->mbmaxlen;
|
||||
|
|
|
@ -2365,10 +2365,10 @@ Item_func_regex::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref)
|
|||
}
|
||||
int error;
|
||||
if ((error= regcomp(&preg,res->c_ptr(),
|
||||
((cmp_collation.collation->state & MY_CS_BINSORT) ||
|
||||
(cmp_collation.collation->state & MY_CS_CSSORT)) ?
|
||||
((cmp_collation.collation->state &
|
||||
(MY_CS_BINSORT | MY_CS_CSSORT)) ?
|
||||
REG_EXTENDED | REG_NOSUB :
|
||||
REG_EXTENDED | REG_NOSUB | REG_ICASE,
|
||||
REG_EXTENDED | REG_NOSUB | REG_ICASE),
|
||||
cmp_collation.collation)))
|
||||
{
|
||||
(void) regerror(error,&preg,buff,sizeof(buff));
|
||||
|
@ -2417,10 +2417,10 @@ longlong Item_func_regex::val_int()
|
|||
regex_compiled=0;
|
||||
}
|
||||
if (regcomp(&preg,res2->c_ptr(),
|
||||
((cmp_collation.collation->state & MY_CS_BINSORT) ||
|
||||
(cmp_collation.collation->state & MY_CS_CSSORT)) ?
|
||||
((cmp_collation.collation->state &
|
||||
(MY_CS_BINSORT | MY_CS_CSSORT)) ?
|
||||
REG_EXTENDED | REG_NOSUB :
|
||||
REG_EXTENDED | REG_NOSUB | REG_ICASE,
|
||||
REG_EXTENDED | REG_NOSUB | REG_ICASE),
|
||||
cmp_collation.collation))
|
||||
{
|
||||
null_value=1;
|
||||
|
|
|
@ -2725,24 +2725,23 @@ sys_var *find_sys_var(const char *str, uint length)
|
|||
|
||||
int sql_set_variables(THD *thd, List<set_var_base> *var_list)
|
||||
{
|
||||
int error= 0;
|
||||
int error;
|
||||
List_iterator_fast<set_var_base> it(*var_list);
|
||||
DBUG_ENTER("sql_set_variables");
|
||||
|
||||
set_var_base *var;
|
||||
while ((var=it++))
|
||||
{
|
||||
if ((error=var->check(thd)))
|
||||
if ((error= var->check(thd)))
|
||||
goto err;
|
||||
}
|
||||
if (!thd->net.report_error)
|
||||
if (!(error= test(thd->net.report_error)))
|
||||
{
|
||||
it.rewind();
|
||||
while ((var= it++))
|
||||
error|= var->update(thd); // Returns 0, -1 or 1
|
||||
}
|
||||
else
|
||||
error= 1;
|
||||
|
||||
err:
|
||||
free_underlaid_joins(thd, &thd->lex->select_lex);
|
||||
DBUG_RETURN(error);
|
||||
|
|
|
@ -427,8 +427,17 @@ static void set_param_date(Item_param *param, uchar **pos, ulong len)
|
|||
#else/*!EMBEDDED_LIBRARY*/
|
||||
void set_param_time(Item_param *param, uchar **pos, ulong len)
|
||||
{
|
||||
MYSQL_TIME *to= (MYSQL_TIME*)*pos;
|
||||
param->set_time(to, MYSQL_TIMESTAMP_TIME,
|
||||
MYSQL_TIME tm= *((MYSQL_TIME*)*pos);
|
||||
tm.hour+= tm.day * 24;
|
||||
tm.day= tm.year= tm.month= 0;
|
||||
if (tm.hour > 838)
|
||||
{
|
||||
/* TODO: add warning 'Data truncated' here */
|
||||
tm.hour= 838;
|
||||
tm.minute= 59;
|
||||
tm.second= 59;
|
||||
}
|
||||
param->set_time(&tm, MYSQL_TIMESTAMP_TIME,
|
||||
MAX_TIME_WIDTH * MY_CHARSET_BIN_MB_MAXLEN);
|
||||
|
||||
}
|
||||
|
|
|
@ -934,8 +934,7 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
|
|||
DBUG_RETURN(-1);
|
||||
}
|
||||
}
|
||||
else
|
||||
if (key_info->algorithm == HA_KEY_ALG_RTREE)
|
||||
else if (key_info->algorithm == HA_KEY_ALG_RTREE)
|
||||
{
|
||||
#ifdef HAVE_RTREE_KEYS
|
||||
if ((key_info->key_parts & 1) == 1)
|
||||
|
@ -959,6 +958,8 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
|
|||
CHARSET_INFO *ft_key_charset=0; // for FULLTEXT
|
||||
for (uint column_nr=0 ; (column=cols++) ; column_nr++)
|
||||
{
|
||||
key_part_spec *dup_column;
|
||||
|
||||
it.rewind();
|
||||
field=0;
|
||||
while ((sql_field=it++) &&
|
||||
|
@ -973,9 +974,8 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
|
|||
column->field_name);
|
||||
DBUG_RETURN(-1);
|
||||
}
|
||||
for (uint dup_nr= 0; dup_nr < column_nr; dup_nr++)
|
||||
while ((dup_column= cols2++) != column)
|
||||
{
|
||||
key_part_spec *dup_column= cols2++;
|
||||
if (!my_strcasecmp(system_charset_info,
|
||||
column->field_name, dup_column->field_name))
|
||||
{
|
||||
|
@ -986,12 +986,6 @@ int mysql_prepare_table(THD *thd, HA_CREATE_INFO *create_info,
|
|||
}
|
||||
}
|
||||
cols2.rewind();
|
||||
/* for fulltext keys keyseg length is 1 for blobs (it's ignored in
|
||||
ft code anyway, and 0 (set to column width later) for char's.
|
||||
it has to be correct col width for char's, as char data are not
|
||||
prefixed with length (unlike blobs, where ft code takes data length
|
||||
from a data prefix, ignoring column->length).
|
||||
*/
|
||||
if (key->type == Key::FULLTEXT)
|
||||
{
|
||||
if ((sql_field->sql_type != FIELD_TYPE_STRING &&
|
||||
|
|
|
@ -683,7 +683,9 @@ static void verify_prepare_field(MYSQL_RES *result,
|
|||
as utf8. Field length is calculated as number of characters * maximum
|
||||
number of bytes a character can occupy.
|
||||
*/
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
DIE_UNLESS(field->length == length * cs->mbmaxlen);
|
||||
#endif
|
||||
if (def)
|
||||
DIE_UNLESS(strcmp(field->def, def) == 0);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue