mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 05:22:25 +01:00
Merge mysql.com:/home/wax/mysql/mysql-4.1
into mysql.com:/home/wax/mysql/mysql-4.1group_concat
This commit is contained in:
commit
37b46ed217
8 changed files with 158 additions and 24 deletions
13
.bzrignore
13
.bzrignore
|
@ -792,3 +792,16 @@ libmysql/my_time.c
|
|||
libmysqld/my_time.c
|
||||
sql/mysql_tzinfo_to_sql
|
||||
sql/mysql_tzinfo_to_sql.cc
|
||||
ndb/src/cw/cpcd/ndb_cpcd
|
||||
ndb/src/kernel/ndbd
|
||||
ndb/src/kernel/blocks/backup/restore/ndb_restore
|
||||
ndb/src/mgmclient/ndb_mgm
|
||||
ndb/src/mgmsrv/ndb_mgmd
|
||||
ndb/tools/ndb_delete_all
|
||||
ndb/tools/ndb_desc
|
||||
ndb/tools/ndb_drop_index
|
||||
ndb/tools/ndb_drop_table
|
||||
ndb/tools/ndb_select_all
|
||||
ndb/tools/ndb_select_count
|
||||
ndb/tools/ndb_show_tables
|
||||
ndb/tools/ndb_waiter
|
||||
|
|
|
@ -1449,7 +1449,7 @@ then
|
|||
if [ -z "$USE_RUNNING_NDBCLUSTER" ]
|
||||
then
|
||||
echo "Starting ndbcluster"
|
||||
./ndb/ndbcluster --port-base=$NDBCLUSTER_PORT --small --diskless --initial --data-dir=$MYSQL_TEST_DIR/var || exit 1
|
||||
./ndb/ndbcluster --port-base=$NDBCLUSTER_PORT --small --initial --data-dir=$MYSQL_TEST_DIR/var || exit 1
|
||||
NDB_CONNECTSTRING="host=localhost:$NDBCLUSTER_PORT"
|
||||
export NDB_CONNECTSTRING
|
||||
else
|
||||
|
|
|
@ -1548,6 +1548,116 @@ Z,z,Ź,ź,Ż,ż
|
|||
ǁ
|
||||
ǂ
|
||||
ǃ
|
||||
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_slovak_ci;
|
||||
group_concat(c1 order by c1)
|
||||
÷
|
||||
×
|
||||
A,a,À,Á,Â,Ã,Å,à,á,â,ã,å,Ā,ā,Ă,ă,Ą,ą,Ǎ,ǎ,Ǟ,ǟ,Ǡ,ǡ,Ǻ,ǻ
|
||||
AA,Aa,aA,aa
|
||||
Ä,ä
|
||||
Æ,æ,Ǣ,ǣ,Ǽ,ǽ
|
||||
B,b
|
||||
ƀ
|
||||
Ɓ
|
||||
Ƃ,ƃ
|
||||
C,c,Ç,ç,Ć,ć,Ĉ,ĉ,Ċ,ċ
|
||||
cH
|
||||
Č,č
|
||||
Ƈ,ƈ
|
||||
D,d,Ď,ď
|
||||
DZ,Dz,dZ,dz,DŽ,Dž,dž,DZ,Dz,dz
|
||||
Đ,đ
|
||||
Ɖ
|
||||
Ɗ
|
||||
Ƌ,ƌ
|
||||
Ð,ð
|
||||
E,e,È,É,Ê,Ë,è,é,ê,ë,Ē,ē,Ĕ,ĕ,Ė,ė,Ę,ę,Ě,ě
|
||||
Ǝ,ǝ
|
||||
Ə
|
||||
Ɛ
|
||||
F,f
|
||||
Ƒ,ƒ
|
||||
G,g,Ĝ,ĝ,Ğ,ğ,Ġ,ġ,Ģ,ģ,Ǧ,ǧ,Ǵ,ǵ
|
||||
Ǥ,ǥ
|
||||
Ɠ
|
||||
Ɣ
|
||||
Ƣ,ƣ
|
||||
H,h,Ĥ,ĥ
|
||||
CH,Ch,ch
|
||||
ƕ,Ƕ
|
||||
Ħ,ħ
|
||||
I,i,Ì,Í,Î,Ï,ì,í,î,ï,Ĩ,ĩ,Ī,ī,Ĭ,ĭ,Į,į,İ,Ǐ,ǐ
|
||||
IJ,Ij,iJ,ij,IJ,ij
|
||||
ı
|
||||
Ɨ
|
||||
Ɩ
|
||||
J,j,Ĵ,ĵ,ǰ
|
||||
K,k,Ķ,ķ,Ǩ,ǩ
|
||||
Ƙ,ƙ
|
||||
L,l,Ĺ,ĺ,Ļ,ļ,Ľ,ľ
|
||||
Ŀ,ŀ
|
||||
LJ,Lj,lJ,lj,LJ,Lj,lj
|
||||
LL,Ll,lL,ll
|
||||
Ł,ł
|
||||
ƚ
|
||||
ƛ
|
||||
M,m
|
||||
N,n,Ñ,ñ,Ń,ń,Ņ,ņ,Ň,ň,Ǹ,ǹ
|
||||
NJ,Nj,nJ,nj,NJ,Nj,nj
|
||||
Ɲ
|
||||
ƞ
|
||||
Ŋ,ŋ
|
||||
O,o,Ò,Ó,Õ,Ö,ò,ó,õ,ö,Ō,ō,Ŏ,ŏ,Ő,ő,Ơ,ơ,Ǒ,ǒ,Ǫ,ǫ,Ǭ,ǭ
|
||||
OE,Oe,oE,oe,Œ,œ
|
||||
Ô,ô
|
||||
Ø,ø,Ǿ,ǿ
|
||||
Ɔ
|
||||
Ɵ
|
||||
P,p
|
||||
Ƥ,ƥ
|
||||
Q,q
|
||||
ĸ
|
||||
R,r,Ŕ,ŕ,Ŗ,ŗ,Ř,ř
|
||||
RR,Rr,rR,rr
|
||||
Ʀ
|
||||
S,s,Ś,ś,Ŝ,ŝ,Ş,ş,ſ
|
||||
SS,Ss,sS,ss,ß
|
||||
Š,š
|
||||
Ʃ
|
||||
ƪ
|
||||
T,t,Ţ,ţ,Ť,ť
|
||||
ƾ
|
||||
Ŧ,ŧ
|
||||
ƫ
|
||||
Ƭ,ƭ
|
||||
Ʈ
|
||||
U,u,Ù,Ú,Û,Ü,ù,ú,û,ü,Ũ,ũ,Ū,ū,Ŭ,ŭ,Ů,ů,Ű,ű,Ų,ų,Ư,ư,Ǔ,ǔ,Ǖ,ǖ,Ǘ,ǘ,Ǚ,ǚ,Ǜ,ǜ
|
||||
Ɯ
|
||||
Ʊ
|
||||
V,v
|
||||
Ʋ
|
||||
W,w,Ŵ,ŵ
|
||||
X,x
|
||||
Y,y,Ý,ý,ÿ,Ŷ,ŷ,Ÿ
|
||||
Ƴ,ƴ
|
||||
Z,z,Ź,ź,Ż,ż
|
||||
ƍ
|
||||
Ž,ž
|
||||
Ƶ,ƶ
|
||||
Ʒ,Ǯ,ǯ
|
||||
Ƹ,ƹ
|
||||
ƺ
|
||||
Þ,þ
|
||||
ƿ,Ƿ
|
||||
ƻ
|
||||
Ƨ,ƨ
|
||||
Ƽ,ƽ
|
||||
Ƅ,ƅ
|
||||
ʼn
|
||||
ǀ
|
||||
ǁ
|
||||
ǂ
|
||||
ǃ
|
||||
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_spanish2_ci;
|
||||
group_concat(c1 order by c1)
|
||||
÷
|
||||
|
|
|
@ -176,7 +176,7 @@ select group_concat(c1 order by c1) from t1 group by c1 collate utf8_turkish_ci;
|
|||
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_czech_ci;
|
||||
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_danish_ci;
|
||||
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_lithuanian_ci;
|
||||
--select group_concat(c1 order by c1) from t1 group by c1 collate utf8_slovak_ci;
|
||||
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_slovak_ci;
|
||||
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_spanish2_ci;
|
||||
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_roman_ci;
|
||||
|
||||
|
|
|
@ -29,10 +29,10 @@
|
|||
to disk, if neccessary. This is handled in find_key_block().
|
||||
With the new free list, the blocks can have three temperatures:
|
||||
hot, warm and cold (which is free). This is remembered in the block header
|
||||
by the enum BLOCK_TEMPERATURE temperature variable. Remembering the
|
||||
temperature is neccessary to correctly count the number of warm blocks,
|
||||
which is required to decide when blocks are allowed to become hot. Whenever
|
||||
a block is inserted to another (sub-)chain, we take the old and new
|
||||
by the enum BLOCK_TEMPERATURE temperature variable. Remembering the
|
||||
temperature is neccessary to correctly count the number of warm blocks,
|
||||
which is required to decide when blocks are allowed to become hot. Whenever
|
||||
a block is inserted to another (sub-)chain, we take the old and new
|
||||
temperature into account to decide if we got one more or less warm block.
|
||||
blocks_unused is the sum of never used blocks in the pool and of currently
|
||||
free blocks. blocks_used is the number of blocks fetched from the pool and
|
||||
|
@ -475,13 +475,13 @@ int resize_key_cache(KEY_CACHE *keycache, uint key_cache_block_size,
|
|||
|
||||
if (!keycache->key_cache_inited)
|
||||
DBUG_RETURN(keycache->disk_blocks);
|
||||
|
||||
|
||||
if(key_cache_block_size == keycache->key_cache_block_size &&
|
||||
use_mem == keycache->key_cache_mem_size)
|
||||
{
|
||||
change_key_cache_param(keycache, division_limit, age_threshold);
|
||||
DBUG_RETURN(keycache->disk_blocks);
|
||||
}
|
||||
}
|
||||
|
||||
keycache_pthread_mutex_lock(&keycache->cache_lock);
|
||||
|
||||
|
@ -504,7 +504,7 @@ int resize_key_cache(KEY_CACHE *keycache, uint key_cache_block_size,
|
|||
goto finish;
|
||||
}
|
||||
keycache->resize_in_flush= 0;
|
||||
keycache->can_be_used= 0;
|
||||
keycache->can_be_used= 0;
|
||||
while (keycache->cnt_for_resize_op)
|
||||
{
|
||||
keycache_pthread_cond_wait(&thread->suspend, &keycache->cache_lock);
|
||||
|
@ -540,9 +540,9 @@ static inline void inc_counter_for_resize_op(KEY_CACHE *keycache)
|
|||
*/
|
||||
static inline void dec_counter_for_resize_op(KEY_CACHE *keycache)
|
||||
{
|
||||
struct st_my_thread_var *last_thread;
|
||||
struct st_my_thread_var *last_thread;
|
||||
if (!--keycache->cnt_for_resize_op &&
|
||||
(last_thread= keycache->resize_queue.last_thread))
|
||||
(last_thread= keycache->resize_queue.last_thread))
|
||||
keycache_pthread_cond_signal(&last_thread->next->suspend);
|
||||
}
|
||||
|
||||
|
@ -551,7 +551,7 @@ static inline void dec_counter_for_resize_op(KEY_CACHE *keycache)
|
|||
|
||||
SYNOPSIS
|
||||
change_key_cache_param()
|
||||
keycache pointer to a key cache data structure
|
||||
keycache pointer to a key cache data structure
|
||||
division_limit new division limit (if not zero)
|
||||
age_threshold new age threshold (if not zero)
|
||||
|
||||
|
@ -625,7 +625,7 @@ writes: %ld r_requests: %ld reads: %ld",
|
|||
if (cleanup)
|
||||
{
|
||||
pthread_mutex_destroy(&keycache->cache_lock);
|
||||
keycache->key_cache_inited= 0;
|
||||
keycache->key_cache_inited= keycache->can_be_used= 0;
|
||||
KEYCACHE_DEBUG_CLOSE;
|
||||
}
|
||||
DBUG_VOID_RETURN;
|
||||
|
@ -1315,7 +1315,7 @@ restart:
|
|||
return 0;
|
||||
}
|
||||
if (!(block->status & BLOCK_IN_FLUSH))
|
||||
{
|
||||
{
|
||||
hash_link->requests--;
|
||||
/*
|
||||
Remove block to invalidate the page in the block buffer
|
||||
|
@ -1326,9 +1326,9 @@ restart:
|
|||
buffer. Still we are guaranteed not to have any readers
|
||||
of the key part we are writing into until the block is
|
||||
removed from the cache as we set the BLOCL_REASSIGNED
|
||||
flag (see the code below that handles reading requests).
|
||||
flag (see the code below that handles reading requests).
|
||||
*/
|
||||
free_block(keycache, block);
|
||||
free_block(keycache, block);
|
||||
return 0;
|
||||
}
|
||||
/* Wait intil the page is flushed on disk */
|
||||
|
@ -1348,7 +1348,7 @@ restart:
|
|||
free_block(keycache, block);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
if (page_status == PAGE_READ &&
|
||||
(block->status & (BLOCK_IN_SWITCH | BLOCK_REASSIGNED)))
|
||||
{
|
||||
|
@ -1693,7 +1693,7 @@ byte *key_cache_read(KEY_CACHE *keycache,
|
|||
do
|
||||
{
|
||||
keycache_pthread_mutex_lock(&keycache->cache_lock);
|
||||
if (!keycache->can_be_used)
|
||||
if (!keycache->can_be_used)
|
||||
{
|
||||
keycache_pthread_mutex_unlock(&keycache->cache_lock);
|
||||
goto no_key_cache;
|
||||
|
@ -1829,7 +1829,7 @@ int key_cache_insert(KEY_CACHE *keycache,
|
|||
{
|
||||
uint offset;
|
||||
keycache_pthread_mutex_lock(&keycache->cache_lock);
|
||||
if (!keycache->can_be_used)
|
||||
if (!keycache->can_be_used)
|
||||
{
|
||||
keycache_pthread_mutex_unlock(&keycache->cache_lock);
|
||||
DBUG_RETURN(0);
|
||||
|
@ -1873,7 +1873,7 @@ int key_cache_insert(KEY_CACHE *keycache,
|
|||
|
||||
error= (block->status & BLOCK_ERROR);
|
||||
|
||||
dec_counter_for_resize_op(keycache);
|
||||
dec_counter_for_resize_op(keycache);
|
||||
|
||||
keycache_pthread_mutex_unlock(&keycache->cache_lock);
|
||||
|
||||
|
@ -1953,7 +1953,7 @@ int key_cache_write(KEY_CACHE *keycache,
|
|||
{
|
||||
uint offset;
|
||||
keycache_pthread_mutex_lock(&keycache->cache_lock);
|
||||
if (!keycache->can_be_used)
|
||||
if (!keycache->can_be_used)
|
||||
{
|
||||
keycache_pthread_mutex_unlock(&keycache->cache_lock);
|
||||
goto no_key_cache;
|
||||
|
@ -2028,7 +2028,7 @@ int key_cache_write(KEY_CACHE *keycache,
|
|||
dec_counter_for_resize_op(keycache);
|
||||
|
||||
keycache_pthread_mutex_unlock(&keycache->cache_lock);
|
||||
|
||||
|
||||
next_block:
|
||||
buff+= read_length;
|
||||
filepos+= read_length;
|
||||
|
@ -2149,7 +2149,7 @@ static int flush_cached_blocks(KEY_CACHE *keycache,
|
|||
if (!last_errno)
|
||||
last_errno= errno ? errno : -1;
|
||||
}
|
||||
/*
|
||||
/*
|
||||
Let to proceed for possible waiting requests to write to the block page.
|
||||
It might happen only during an operation to resize the key cache.
|
||||
*/
|
||||
|
|
|
@ -114,6 +114,8 @@
|
|||
</map>
|
||||
</collation>
|
||||
|
||||
<collation name="cp852_bin" flag="binary"/>
|
||||
|
||||
</charset>
|
||||
|
||||
</charsets>
|
||||
|
|
|
@ -1171,6 +1171,15 @@ static my_bool create_fromuni(CHARSET_INFO *cs, void *(*alloc)(uint))
|
|||
uni_idx idx[PLANE_NUM];
|
||||
int i,n;
|
||||
|
||||
/*
|
||||
Check that Unicode map is loaded.
|
||||
It can be not loaded when the collation is
|
||||
listed in Index.xml but not specified
|
||||
in the character set specific XML file.
|
||||
*/
|
||||
if (!cs->tab_to_uni)
|
||||
return TRUE;
|
||||
|
||||
/* Clear plane statistics */
|
||||
bzero(idx,sizeof(idx));
|
||||
|
||||
|
|
|
@ -6645,7 +6645,7 @@ static const char slovak[]=
|
|||
"& H < ch <<< Ch <<< CH"
|
||||
"& O < \\u00F4 <<< \\u00D4"
|
||||
"& S < \\u0161 <<< \\u0160"
|
||||
"& Z < \\u017E <<< \\017D";
|
||||
"& Z < \\u017E <<< \\u017D";
|
||||
|
||||
static const char spanish2[]= /* Also good for Asturian and Galician */
|
||||
"&C < ch <<< Ch <<< CH"
|
||||
|
|
Loading…
Reference in a new issue