Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
c8cf1e4e
Commit
c8cf1e4e
authored
Sep 22, 2003
by
unknown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug 1350 fix
parent
d2989680
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
57 additions
and
46 deletions
+57
-46
extra/comp_err.c
extra/comp_err.c
+0
-2
include/m_ctype.h
include/m_ctype.h
+1
-0
mysys/charset.c
mysys/charset.c
+34
-34
sql/derror.cc
sql/derror.cc
+12
-6
sql/sql_show.cc
sql/sql_show.cc
+10
-4
No files found.
extra/comp_err.c
View file @
c8cf1e4e
...
@@ -71,14 +71,12 @@ int main(int argc,char *argv[])
...
@@ -71,14 +71,12 @@ int main(int argc,char *argv[])
goto
end
;
goto
end
;
}
}
#ifdef NEEDS_FIXES
if
(
!
(
csnum
=
get_charset_number
(
charset_name
,
MY_CS_PRIMARY
)))
if
(
!
(
csnum
=
get_charset_number
(
charset_name
,
MY_CS_PRIMARY
)))
{
{
fprintf
(
stderr
,
"Unknown character '%s' in '%s'
\n
"
,
charset_name
,
*
argv
);
fprintf
(
stderr
,
"Unknown character '%s' in '%s'
\n
"
,
charset_name
,
*
argv
);
fclose
(
from
);
fclose
(
from
);
goto
end
;
goto
end
;
}
}
#endif
if
(
remember_rows
(
from
,
'}'
)
<
0
)
/* Remember rows */
if
(
remember_rows
(
from
,
'}'
)
<
0
)
/* Remember rows */
{
{
...
...
include/m_ctype.h
View file @
c8cf1e4e
...
@@ -63,6 +63,7 @@ typedef struct unicase_info_st
...
@@ -63,6 +63,7 @@ typedef struct unicase_info_st
#define MY_CS_STRNXFRM 64
/* if strnxfrm is used for sort */
#define MY_CS_STRNXFRM 64
/* if strnxfrm is used for sort */
#define MY_CS_UNICODE 128
/* is a charset is full unicode */
#define MY_CS_UNICODE 128
/* is a charset is full unicode */
#define MY_CS_NONTEXT 256
/* if a charset is not sprintf() compatible */
#define MY_CS_NONTEXT 256
/* if a charset is not sprintf() compatible */
#define MY_CS_AVAILABLE 512
/* If either compiled-in or loaded*/
#define MY_CHARSET_UNDEFINED 0
#define MY_CHARSET_UNDEFINED 0
...
...
mysys/charset.c
View file @
c8cf1e4e
...
@@ -226,7 +226,6 @@ static my_bool create_fromuni(CHARSET_INFO *cs)
...
@@ -226,7 +226,6 @@ static my_bool create_fromuni(CHARSET_INFO *cs)
static
void
simple_cs_copy_data
(
CHARSET_INFO
*
to
,
CHARSET_INFO
*
from
)
static
void
simple_cs_copy_data
(
CHARSET_INFO
*
to
,
CHARSET_INFO
*
from
)
{
{
to
->
number
=
from
->
number
?
from
->
number
:
to
->
number
;
to
->
number
=
from
->
number
?
from
->
number
:
to
->
number
;
to
->
state
|=
from
->
state
;
if
(
from
->
csname
)
if
(
from
->
csname
)
to
->
csname
=
my_once_strdup
(
from
->
csname
,
MYF
(
MY_WME
));
to
->
csname
=
my_once_strdup
(
from
->
csname
,
MYF
(
MY_WME
));
...
@@ -282,8 +281,6 @@ static int add_collation(CHARSET_INFO *cs)
...
@@ -282,8 +281,6 @@ static int add_collation(CHARSET_INFO *cs)
{
{
if
(
!
all_charsets
[
cs
->
number
])
if
(
!
all_charsets
[
cs
->
number
])
{
{
if
(
cs
->
state
&
MY_CS_COMPILED
)
goto
clear
;
if
(
!
(
all_charsets
[
cs
->
number
]
=
if
(
!
(
all_charsets
[
cs
->
number
]
=
(
CHARSET_INFO
*
)
my_once_alloc
(
sizeof
(
CHARSET_INFO
),
MYF
(
0
))))
(
CHARSET_INFO
*
)
my_once_alloc
(
sizeof
(
CHARSET_INFO
),
MYF
(
0
))))
return
MY_XML_ERROR
;
return
MY_XML_ERROR
;
...
@@ -296,6 +293,8 @@ static int add_collation(CHARSET_INFO *cs)
...
@@ -296,6 +293,8 @@ static int add_collation(CHARSET_INFO *cs)
if
(
cs
->
binary_number
==
cs
->
number
)
if
(
cs
->
binary_number
==
cs
->
number
)
cs
->
state
|=
MY_CS_BINSORT
;
cs
->
state
|=
MY_CS_BINSORT
;
all_charsets
[
cs
->
number
]
->
state
|=
cs
->
state
;
if
(
!
(
all_charsets
[
cs
->
number
]
->
state
&
MY_CS_COMPILED
))
if
(
!
(
all_charsets
[
cs
->
number
]
->
state
&
MY_CS_COMPILED
))
{
{
simple_cs_init_functions
(
all_charsets
[
cs
->
number
]);
simple_cs_init_functions
(
all_charsets
[
cs
->
number
]);
...
@@ -304,15 +303,14 @@ static int add_collation(CHARSET_INFO *cs)
...
@@ -304,15 +303,14 @@ static int add_collation(CHARSET_INFO *cs)
{
{
all_charsets
[
cs
->
number
]
->
state
|=
MY_CS_LOADED
;
all_charsets
[
cs
->
number
]
->
state
|=
MY_CS_LOADED
;
}
}
all_charsets
[
cs
->
number
]
->
state
|=
MY_CS_AVAILABLE
;
}
}
else
else
{
{
CHARSET_INFO
*
dst
=
all_charsets
[
cs
->
number
];
CHARSET_INFO
*
dst
=
all_charsets
[
cs
->
number
];
dst
->
state
|=
cs
->
state
;
if
(
cs
->
comment
)
if
(
cs
->
comment
)
dst
->
comment
=
my_once_strdup
(
cs
->
comment
,
MYF
(
MY_WME
));
dst
->
comment
=
my_once_strdup
(
cs
->
comment
,
MYF
(
MY_WME
));
}
}
clear:
cs
->
number
=
0
;
cs
->
number
=
0
;
cs
->
primary_number
=
0
;
cs
->
primary_number
=
0
;
cs
->
binary_number
=
0
;
cs
->
binary_number
=
0
;
...
@@ -389,77 +387,79 @@ char *get_charsets_dir(char *buf)
...
@@ -389,77 +387,79 @@ char *get_charsets_dir(char *buf)
CHARSET_INFO
*
all_charsets
[
256
];
CHARSET_INFO
*
all_charsets
[
256
];
CHARSET_INFO
*
default_charset_info
=
&
my_charset_latin1
;
CHARSET_INFO
*
default_charset_info
=
&
my_charset_latin1
;
#define MY_ADD_CHARSET(x) all_charsets[(x)->number]=(x)
static
void
add_compiled_collation
(
CHARSET_INFO
*
cs
)
{
all_charsets
[
cs
->
number
]
=
cs
;
cs
->
state
|=
MY_CS_AVAILABLE
;
}
static
my_bool
init_compiled_charsets
(
myf
flags
__attribute__
((
unused
)))
static
my_bool
init_compiled_charsets
(
myf
flags
__attribute__
((
unused
)))
{
{
CHARSET_INFO
*
cs
;
CHARSET_INFO
*
cs
;
MY_ADD_CHARSET
(
&
my_charset_bin
);
add_compiled_collation
(
&
my_charset_bin
);
MY_ADD_CHARSET
(
&
my_charset_latin1
);
add_compiled_collation
(
&
my_charset_latin1
);
MY_ADD_CHARSET
(
&
my_charset_latin1_bin
);
add_compiled_collation
(
&
my_charset_latin1_bin
);
MY_ADD_CHARSET
(
&
my_charset_latin1_german2_ci
);
add_compiled_collation
(
&
my_charset_latin1_german2_ci
);
#ifdef HAVE_CHARSET_big5
#ifdef HAVE_CHARSET_big5
MY_ADD_CHARSET
(
&
my_charset_big5_chinese_ci
);
add_compiled_collation
(
&
my_charset_big5_chinese_ci
);
MY_ADD_CHARSET
(
&
my_charset_big5_bin
);
add_compiled_collation
(
&
my_charset_big5_bin
);
#endif
#endif
#ifdef HAVE_CHARSET_cp1250
#ifdef HAVE_CHARSET_cp1250
MY_ADD_CHARSET
(
&
my_charset_cp1250_czech_ci
);
add_compiled_collation
(
&
my_charset_cp1250_czech_ci
);
#endif
#endif
#ifdef HAVE_CHARSET_latin2
#ifdef HAVE_CHARSET_latin2
MY_ADD_CHARSET
(
&
my_charset_latin2_czech_ci
);
add_compiled_collation
(
&
my_charset_latin2_czech_ci
);
#endif
#endif
#ifdef HAVE_CHARSET_euckr
#ifdef HAVE_CHARSET_euckr
MY_ADD_CHARSET
(
&
my_charset_euckr_korean_ci
);
add_compiled_collation
(
&
my_charset_euckr_korean_ci
);
MY_ADD_CHARSET
(
&
my_charset_euckr_bin
);
add_compiled_collation
(
&
my_charset_euckr_bin
);
#endif
#endif
#ifdef HAVE_CHARSET_gb2312
#ifdef HAVE_CHARSET_gb2312
MY_ADD_CHARSET
(
&
my_charset_gb2312_chinese_ci
);
add_compiled_collation
(
&
my_charset_gb2312_chinese_ci
);
MY_ADD_CHARSET
(
&
my_charset_gb2312_bin
);
add_compiled_collation
(
&
my_charset_gb2312_bin
);
#endif
#endif
#ifdef HAVE_CHARSET_gbk
#ifdef HAVE_CHARSET_gbk
MY_ADD_CHARSET
(
&
my_charset_gbk_chinese_ci
);
add_compiled_collation
(
&
my_charset_gbk_chinese_ci
);
MY_ADD_CHARSET
(
&
my_charset_gbk_bin
);
add_compiled_collation
(
&
my_charset_gbk_bin
);
#endif
#endif
#ifdef HAVE_CHARSET_sjis
#ifdef HAVE_CHARSET_sjis
MY_ADD_CHARSET
(
&
my_charset_sjis_japanese_ci
);
add_compiled_collation
(
&
my_charset_sjis_japanese_ci
);
MY_ADD_CHARSET
(
&
my_charset_sjis_bin
);
add_compiled_collation
(
&
my_charset_sjis_bin
);
#endif
#endif
#ifdef HAVE_CHARSET_tis620
#ifdef HAVE_CHARSET_tis620
MY_ADD_CHARSET
(
&
my_charset_tis620_thai_ci
);
add_compiled_collation
(
&
my_charset_tis620_thai_ci
);
MY_ADD_CHARSET
(
&
my_charset_tis620_bin
);
add_compiled_collation
(
&
my_charset_tis620_bin
);
#endif
#endif
#ifdef HAVE_CHARSET_ucs2
#ifdef HAVE_CHARSET_ucs2
MY_ADD_CHARSET
(
&
my_charset_ucs2_general_ci
);
add_compiled_collation
(
&
my_charset_ucs2_general_ci
);
MY_ADD_CHARSET
(
&
my_charset_ucs2_bin
);
add_compiled_collation
(
&
my_charset_ucs2_bin
);
#endif
#endif
#ifdef HAVE_CHARSET_ujis
#ifdef HAVE_CHARSET_ujis
MY_ADD_CHARSET
(
&
my_charset_ujis_japanese_ci
);
add_compiled_collation
(
&
my_charset_ujis_japanese_ci
);
MY_ADD_CHARSET
(
&
my_charset_ujis_bin
);
add_compiled_collation
(
&
my_charset_ujis_bin
);
#endif
#endif
#ifdef HAVE_CHARSET_utf8
#ifdef HAVE_CHARSET_utf8
MY_ADD_CHARSET
(
&
my_charset_utf8_general_ci
);
add_compiled_collation
(
&
my_charset_utf8_general_ci
);
MY_ADD_CHARSET
(
&
my_charset_utf8_bin
);
add_compiled_collation
(
&
my_charset_utf8_bin
);
#endif
#endif
/* Copy compiled charsets */
/* Copy compiled charsets */
for
(
cs
=
compiled_charsets
;
cs
->
name
;
cs
++
)
for
(
cs
=
compiled_charsets
;
cs
->
name
;
cs
++
)
{
add_compiled_collation
(
cs
);
all_charsets
[
cs
->
number
]
=
cs
;
}
return
FALSE
;
return
FALSE
;
}
}
...
@@ -570,7 +570,7 @@ static CHARSET_INFO *get_internal_charset(uint cs_number, myf flags)
...
@@ -570,7 +570,7 @@ static CHARSET_INFO *get_internal_charset(uint cs_number, myf flags)
cs
=
all_charsets
[
cs_number
];
cs
=
all_charsets
[
cs_number
];
if
(
cs
&&
!
(
cs
->
state
&
(
MY_CS_COMPILED
|
MY_CS_LOADED
)
))
if
(
cs
&&
!
(
cs
->
state
&
MY_CS_COMPILED
)
&&
!
(
cs
->
state
&
MY_CS_LOADED
))
{
{
strxmov
(
get_charsets_dir
(
buf
),
cs
->
csname
,
".xml"
,
NullS
);
strxmov
(
get_charsets_dir
(
buf
),
cs
->
csname
,
".xml"
,
NullS
);
my_read_charset_file
(
buf
,
flags
);
my_read_charset_file
(
buf
,
flags
);
...
...
sql/derror.cc
View file @
c8cf1e4e
...
@@ -67,10 +67,18 @@ static void read_texts(const char *file_name,const char ***point,
...
@@ -67,10 +67,18 @@ static void read_texts(const char *file_name,const char ***point,
goto
err
;
/* purecov: inspected */
goto
err
;
/* purecov: inspected */
textcount
=
head
[
4
];
textcount
=
head
[
4
];
if
(
!
head
[
30
])
{
sql_print_error
(
"No character set information in '%s'. \
You probably haven't reinstalled the latest file version."
,
name
);
goto
err1
;
}
if
(
!
(
cset
=
get_charset
(
head
[
30
],
MYF
(
MY_WME
))))
if
(
!
(
cset
=
get_charset
(
head
[
30
],
MYF
(
MY_WME
))))
{
{
funktpos
=
3
;
sql_print_error
(
"Character set #%d is not supported for messagefile '%s'"
,
goto
err
;
(
int
)
head
[
30
],
name
);
goto
err1
;
}
}
length
=
uint2korr
(
head
+
6
);
count
=
uint2korr
(
head
+
8
);
length
=
uint2korr
(
head
+
6
);
count
=
uint2korr
(
head
+
8
);
...
@@ -112,9 +120,6 @@ Check that the above file is the right version for this program!",
...
@@ -112,9 +120,6 @@ Check that the above file is the right version for this program!",
err:
err:
switch
(
funktpos
)
{
switch
(
funktpos
)
{
case
3
:
buff
=
"Character set is not supported for messagefile '%s'"
;
break
;
case
2
:
case
2
:
buff
=
"Not enough memory for messagefile '%s'"
;
buff
=
"Not enough memory for messagefile '%s'"
;
break
;
break
;
...
@@ -125,9 +130,10 @@ Check that the above file is the right version for this program!",
...
@@ -125,9 +130,10 @@ Check that the above file is the right version for this program!",
buff
=
"Can't find messagefile '%s'"
;
buff
=
"Can't find messagefile '%s'"
;
break
;
break
;
}
}
sql_print_error
(
buff
,
name
);
err1:
if
(
file
!=
FERR
)
if
(
file
!=
FERR
)
VOID
(
my_close
(
file
,
MYF
(
MY_WME
)));
VOID
(
my_close
(
file
,
MYF
(
MY_WME
)));
sql_print_error
(
buff
,
name
);
unireg_abort
(
1
);
unireg_abort
(
1
);
}
/* read_texts */
}
/* read_texts */
...
...
sql/sql_show.cc
View file @
c8cf1e4e
...
@@ -1497,11 +1497,15 @@ int mysqld_show_collations(THD *thd, const char *wild)
...
@@ -1497,11 +1497,15 @@ int mysqld_show_collations(THD *thd, const char *wild)
for
(
cs
=
all_charsets
;
cs
<
all_charsets
+
255
;
cs
++
)
for
(
cs
=
all_charsets
;
cs
<
all_charsets
+
255
;
cs
++
)
{
{
CHARSET_INFO
**
cl
;
CHARSET_INFO
**
cl
;
if
(
!
cs
[
0
]
||
!
(
cs
[
0
]
->
state
&
MY_CS_AVAILABLE
)
||
!
(
cs
[
0
]
->
state
&
MY_CS_PRIMARY
))
continue
;
for
(
cl
=
all_charsets
;
cl
<
all_charsets
+
255
;
cl
++
)
for
(
cl
=
all_charsets
;
cl
<
all_charsets
+
255
;
cl
++
)
{
{
if
(
!
cs
[
0
]
||
!
cl
[
0
]
||
!
my_charset_same
(
cs
[
0
],
cl
[
0
])
||
!
(
cs
[
0
]
->
state
&
MY_CS_PRIMARY
))
if
(
!
cl
[
0
]
||
!
(
cl
[
0
]
->
state
&
MY_CS_AVAILABLE
)
||
!
my_charset_same
(
cs
[
0
],
cl
[
0
]))
continue
;
continue
;
if
(
cs
[
0
]
&&
!
(
wild
&&
wild
[
0
]
&&
if
(
!
(
wild
&&
wild
[
0
]
&&
wild_case_compare
(
system_charset_info
,
cl
[
0
]
->
name
,
wild
)))
wild_case_compare
(
system_charset_info
,
cl
[
0
]
->
name
,
wild
)))
{
{
if
(
write_collation
(
protocol
,
cl
[
0
]))
if
(
write_collation
(
protocol
,
cl
[
0
]))
...
@@ -1545,8 +1549,10 @@ int mysqld_show_charsets(THD *thd, const char *wild)
...
@@ -1545,8 +1549,10 @@ int mysqld_show_charsets(THD *thd, const char *wild)
for
(
cs
=
all_charsets
;
cs
<
all_charsets
+
255
;
cs
++
)
for
(
cs
=
all_charsets
;
cs
<
all_charsets
+
255
;
cs
++
)
{
{
if
(
cs
[
0
]
&&
(
cs
[
0
]
->
state
&
MY_CS_PRIMARY
)
&&
!
(
wild
&&
wild
[
0
]
&&
if
(
cs
[
0
]
&&
(
cs
[
0
]
->
state
&
MY_CS_PRIMARY
)
&&
wild_case_compare
(
system_charset_info
,
cs
[
0
]
->
name
,
wild
)))
(
cs
[
0
]
->
state
&
MY_CS_AVAILABLE
)
&&
!
(
wild
&&
wild
[
0
]
&&
wild_case_compare
(
system_charset_info
,
cs
[
0
]
->
csname
,
wild
)))
{
{
if
(
write_charset
(
protocol
,
cs
[
0
]))
if
(
write_charset
(
protocol
,
cs
[
0
]))
goto
err
;
goto
err
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment