mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Merge joreland@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/jonas/src/mysql-4.1
This commit is contained in:
@@ -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;
|
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_spanish2_ci;
|
||||||
group_concat(c1 order by c1)
|
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_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_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_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_spanish2_ci;
|
||||||
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_roman_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().
|
to disk, if neccessary. This is handled in find_key_block().
|
||||||
With the new free list, the blocks can have three temperatures:
|
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
|
hot, warm and cold (which is free). This is remembered in the block header
|
||||||
by the enum BLOCK_TEMPERATURE temperature variable. Remembering the
|
by the enum BLOCK_TEMPERATURE temperature variable. Remembering the
|
||||||
temperature is neccessary to correctly count the number of warm blocks,
|
temperature is neccessary to correctly count the number of warm blocks,
|
||||||
which is required to decide when blocks are allowed to become hot. Whenever
|
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
|
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.
|
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
|
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
|
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)
|
if (!keycache->key_cache_inited)
|
||||||
DBUG_RETURN(keycache->disk_blocks);
|
DBUG_RETURN(keycache->disk_blocks);
|
||||||
|
|
||||||
if(key_cache_block_size == keycache->key_cache_block_size &&
|
if(key_cache_block_size == keycache->key_cache_block_size &&
|
||||||
use_mem == keycache->key_cache_mem_size)
|
use_mem == keycache->key_cache_mem_size)
|
||||||
{
|
{
|
||||||
change_key_cache_param(keycache, division_limit, age_threshold);
|
change_key_cache_param(keycache, division_limit, age_threshold);
|
||||||
DBUG_RETURN(keycache->disk_blocks);
|
DBUG_RETURN(keycache->disk_blocks);
|
||||||
}
|
}
|
||||||
|
|
||||||
keycache_pthread_mutex_lock(&keycache->cache_lock);
|
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;
|
goto finish;
|
||||||
}
|
}
|
||||||
keycache->resize_in_flush= 0;
|
keycache->resize_in_flush= 0;
|
||||||
keycache->can_be_used= 0;
|
keycache->can_be_used= 0;
|
||||||
while (keycache->cnt_for_resize_op)
|
while (keycache->cnt_for_resize_op)
|
||||||
{
|
{
|
||||||
keycache_pthread_cond_wait(&thread->suspend, &keycache->cache_lock);
|
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)
|
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 &&
|
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);
|
keycache_pthread_cond_signal(&last_thread->next->suspend);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -551,7 +551,7 @@ static inline void dec_counter_for_resize_op(KEY_CACHE *keycache)
|
|||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
change_key_cache_param()
|
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)
|
division_limit new division limit (if not zero)
|
||||||
age_threshold new age threshold (if not zero)
|
age_threshold new age threshold (if not zero)
|
||||||
|
|
||||||
@@ -625,7 +625,7 @@ writes: %ld r_requests: %ld reads: %ld",
|
|||||||
if (cleanup)
|
if (cleanup)
|
||||||
{
|
{
|
||||||
pthread_mutex_destroy(&keycache->cache_lock);
|
pthread_mutex_destroy(&keycache->cache_lock);
|
||||||
keycache->key_cache_inited= 0;
|
keycache->key_cache_inited= keycache->can_be_used= 0;
|
||||||
KEYCACHE_DEBUG_CLOSE;
|
KEYCACHE_DEBUG_CLOSE;
|
||||||
}
|
}
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
@@ -1315,7 +1315,7 @@ restart:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!(block->status & BLOCK_IN_FLUSH))
|
if (!(block->status & BLOCK_IN_FLUSH))
|
||||||
{
|
{
|
||||||
hash_link->requests--;
|
hash_link->requests--;
|
||||||
/*
|
/*
|
||||||
Remove block to invalidate the page in the block buffer
|
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
|
buffer. Still we are guaranteed not to have any readers
|
||||||
of the key part we are writing into until the block is
|
of the key part we are writing into until the block is
|
||||||
removed from the cache as we set the BLOCL_REASSIGNED
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
/* Wait intil the page is flushed on disk */
|
/* Wait intil the page is flushed on disk */
|
||||||
@@ -1348,7 +1348,7 @@ restart:
|
|||||||
free_block(keycache, block);
|
free_block(keycache, block);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (page_status == PAGE_READ &&
|
if (page_status == PAGE_READ &&
|
||||||
(block->status & (BLOCK_IN_SWITCH | BLOCK_REASSIGNED)))
|
(block->status & (BLOCK_IN_SWITCH | BLOCK_REASSIGNED)))
|
||||||
{
|
{
|
||||||
@@ -1693,7 +1693,7 @@ byte *key_cache_read(KEY_CACHE *keycache,
|
|||||||
do
|
do
|
||||||
{
|
{
|
||||||
keycache_pthread_mutex_lock(&keycache->cache_lock);
|
keycache_pthread_mutex_lock(&keycache->cache_lock);
|
||||||
if (!keycache->can_be_used)
|
if (!keycache->can_be_used)
|
||||||
{
|
{
|
||||||
keycache_pthread_mutex_unlock(&keycache->cache_lock);
|
keycache_pthread_mutex_unlock(&keycache->cache_lock);
|
||||||
goto no_key_cache;
|
goto no_key_cache;
|
||||||
@@ -1829,7 +1829,7 @@ int key_cache_insert(KEY_CACHE *keycache,
|
|||||||
{
|
{
|
||||||
uint offset;
|
uint offset;
|
||||||
keycache_pthread_mutex_lock(&keycache->cache_lock);
|
keycache_pthread_mutex_lock(&keycache->cache_lock);
|
||||||
if (!keycache->can_be_used)
|
if (!keycache->can_be_used)
|
||||||
{
|
{
|
||||||
keycache_pthread_mutex_unlock(&keycache->cache_lock);
|
keycache_pthread_mutex_unlock(&keycache->cache_lock);
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
@@ -1873,7 +1873,7 @@ int key_cache_insert(KEY_CACHE *keycache,
|
|||||||
|
|
||||||
error= (block->status & BLOCK_ERROR);
|
error= (block->status & BLOCK_ERROR);
|
||||||
|
|
||||||
dec_counter_for_resize_op(keycache);
|
dec_counter_for_resize_op(keycache);
|
||||||
|
|
||||||
keycache_pthread_mutex_unlock(&keycache->cache_lock);
|
keycache_pthread_mutex_unlock(&keycache->cache_lock);
|
||||||
|
|
||||||
@@ -1953,7 +1953,7 @@ int key_cache_write(KEY_CACHE *keycache,
|
|||||||
{
|
{
|
||||||
uint offset;
|
uint offset;
|
||||||
keycache_pthread_mutex_lock(&keycache->cache_lock);
|
keycache_pthread_mutex_lock(&keycache->cache_lock);
|
||||||
if (!keycache->can_be_used)
|
if (!keycache->can_be_used)
|
||||||
{
|
{
|
||||||
keycache_pthread_mutex_unlock(&keycache->cache_lock);
|
keycache_pthread_mutex_unlock(&keycache->cache_lock);
|
||||||
goto no_key_cache;
|
goto no_key_cache;
|
||||||
@@ -2028,7 +2028,7 @@ int key_cache_write(KEY_CACHE *keycache,
|
|||||||
dec_counter_for_resize_op(keycache);
|
dec_counter_for_resize_op(keycache);
|
||||||
|
|
||||||
keycache_pthread_mutex_unlock(&keycache->cache_lock);
|
keycache_pthread_mutex_unlock(&keycache->cache_lock);
|
||||||
|
|
||||||
next_block:
|
next_block:
|
||||||
buff+= read_length;
|
buff+= read_length;
|
||||||
filepos+= read_length;
|
filepos+= read_length;
|
||||||
@@ -2149,7 +2149,7 @@ static int flush_cached_blocks(KEY_CACHE *keycache,
|
|||||||
if (!last_errno)
|
if (!last_errno)
|
||||||
last_errno= errno ? errno : -1;
|
last_errno= errno ? errno : -1;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
Let to proceed for possible waiting requests to write to the block page.
|
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.
|
It might happen only during an operation to resize the key cache.
|
||||||
*/
|
*/
|
||||||
|
@@ -6645,7 +6645,7 @@ static const char slovak[]=
|
|||||||
"& H < ch <<< Ch <<< CH"
|
"& H < ch <<< Ch <<< CH"
|
||||||
"& O < \\u00F4 <<< \\u00D4"
|
"& O < \\u00F4 <<< \\u00D4"
|
||||||
"& S < \\u0161 <<< \\u0160"
|
"& S < \\u0161 <<< \\u0160"
|
||||||
"& Z < \\u017E <<< \\017D";
|
"& Z < \\u017E <<< \\u017D";
|
||||||
|
|
||||||
static const char spanish2[]= /* Also good for Asturian and Galician */
|
static const char spanish2[]= /* Also good for Asturian and Galician */
|
||||||
"&C < ch <<< Ch <<< CH"
|
"&C < ch <<< Ch <<< CH"
|
||||||
|
Reference in New Issue
Block a user