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
0d47f003
Commit
0d47f003
authored
Mar 29, 2004
by
unknown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Checking Thai sort order and trailing spaces handling
parent
e43ad539
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
2863 additions
and
27 deletions
+2863
-27
mysql-test/r/ctype_tis620.result
mysql-test/r/ctype_tis620.result
+2763
-0
mysql-test/t/ctype_tis620.test
mysql-test/t/ctype_tis620.test
+30
-0
strings/ctype-tis620.c
strings/ctype-tis620.c
+70
-27
No files found.
mysql-test/r/ctype_tis620.result
View file @
0d47f003
This diff is collapsed.
Click to expand it.
mysql-test/t/ctype_tis620.test
View file @
0d47f003
This diff is collapsed.
Click to expand it.
strings/ctype-tis620.c
View file @
0d47f003
...
@@ -64,7 +64,7 @@
...
@@ -64,7 +64,7 @@
#define X L_MIDDLE
#define X L_MIDDLE
int
t_ctype
[][
TOT_LEVELS
]
=
{
static
int
t_ctype
[][
TOT_LEVELS
]
=
{
/*0x00*/
{
IGNORE
,
IGNORE
,
IGNORE
,
IGNORE
,
X
},
/*0x00*/
{
IGNORE
,
IGNORE
,
IGNORE
,
IGNORE
,
X
},
/*0x01*/
{
IGNORE
,
IGNORE
,
IGNORE
,
IGNORE
,
X
},
/*0x01*/
{
IGNORE
,
IGNORE
,
IGNORE
,
IGNORE
,
X
},
/*0x02*/
{
IGNORE
,
IGNORE
,
IGNORE
,
IGNORE
,
X
},
/*0x02*/
{
IGNORE
,
IGNORE
,
IGNORE
,
IGNORE
,
X
},
...
@@ -324,7 +324,7 @@ int t_ctype[][TOT_LEVELS] = {
...
@@ -324,7 +324,7 @@ int t_ctype[][TOT_LEVELS] = {
/*0xFF*/
{
255
/*IGNORE*/
,
IGNORE
,
IGNORE
,
IGNORE
,
X
},
/*0xFF*/
{
255
/*IGNORE*/
,
IGNORE
,
IGNORE
,
IGNORE
,
X
},
};
};
uchar
NEAR
ctype_tis620
[
257
]
=
static
uchar
NEAR
ctype_tis620
[
257
]
=
{
{
0
,
/* For standard library */
0
,
/* For standard library */
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
40
,
40
,
40
,
40
,
40
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
40
,
40
,
40
,
40
,
40
,
32
,
32
,
...
@@ -345,7 +345,7 @@ uchar NEAR ctype_tis620[257] =
...
@@ -345,7 +345,7 @@ uchar NEAR ctype_tis620[257] =
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
};
};
uchar
NEAR
to_lower_tis620
[]
=
static
uchar
NEAR
to_lower_tis620
[]
=
{
{
'\000'
,
'\001'
,
'\002'
,
'\003'
,
'\004'
,
'\005'
,
'\006'
,
'\007'
,
'\000'
,
'\001'
,
'\002'
,
'\003'
,
'\004'
,
'\005'
,
'\006'
,
'\007'
,
'\010'
,
'\011'
,
'\012'
,
'\013'
,
'\014'
,
'\015'
,
'\016'
,
'\017'
,
'\010'
,
'\011'
,
'\012'
,
'\013'
,
'\014'
,
'\015'
,
'\016'
,
'\017'
,
...
@@ -381,7 +381,7 @@ uchar NEAR to_lower_tis620[]=
...
@@ -381,7 +381,7 @@ uchar NEAR to_lower_tis620[]=
(
uchar
)
'\370'
,(
uchar
)
'\371'
,(
uchar
)
'\372'
,(
uchar
)
'\373'
,(
uchar
)
'\374'
,(
uchar
)
'\375'
,(
uchar
)
'\376'
,(
uchar
)
'\377'
,
(
uchar
)
'\370'
,(
uchar
)
'\371'
,(
uchar
)
'\372'
,(
uchar
)
'\373'
,(
uchar
)
'\374'
,(
uchar
)
'\375'
,(
uchar
)
'\376'
,(
uchar
)
'\377'
,
};
};
uchar
NEAR
to_upper_tis620
[]
=
static
uchar
NEAR
to_upper_tis620
[]
=
{
{
'\000'
,
'\001'
,
'\002'
,
'\003'
,
'\004'
,
'\005'
,
'\006'
,
'\007'
,
'\000'
,
'\001'
,
'\002'
,
'\003'
,
'\004'
,
'\005'
,
'\006'
,
'\007'
,
'\010'
,
'\011'
,
'\012'
,
'\013'
,
'\014'
,
'\015'
,
'\016'
,
'\017'
,
'\010'
,
'\011'
,
'\012'
,
'\013'
,
'\014'
,
'\015'
,
'\016'
,
'\017'
,
...
@@ -417,7 +417,7 @@ uchar NEAR to_upper_tis620[]=
...
@@ -417,7 +417,7 @@ uchar NEAR to_upper_tis620[]=
(
uchar
)
'\370'
,(
uchar
)
'\371'
,(
uchar
)
'\372'
,(
uchar
)
'\373'
,(
uchar
)
'\374'
,(
uchar
)
'\375'
,(
uchar
)
'\376'
,(
uchar
)
'\377'
,
(
uchar
)
'\370'
,(
uchar
)
'\371'
,(
uchar
)
'\372'
,(
uchar
)
'\373'
,(
uchar
)
'\374'
,(
uchar
)
'\375'
,(
uchar
)
'\376'
,(
uchar
)
'\377'
,
};
};
uchar
NEAR
sort_order_tis620
[]
=
static
uchar
NEAR
sort_order_tis620
[]
=
{
{
'\000'
,
'\001'
,
'\002'
,
'\003'
,
'\004'
,
'\005'
,
'\006'
,
'\007'
,
'\000'
,
'\001'
,
'\002'
,
'\003'
,
'\004'
,
'\005'
,
'\006'
,
'\007'
,
'\010'
,
'\011'
,
'\012'
,
'\013'
,
'\014'
,
'\015'
,
'\016'
,
'\017'
,
'\010'
,
'\011'
,
'\012'
,
'\013'
,
'\014'
,
'\015'
,
'\016'
,
'\017'
,
...
@@ -526,6 +526,7 @@ static uint thai2sortable(uchar *tstr, uint len)
...
@@ -526,6 +526,7 @@ static uint thai2sortable(uchar *tstr, uint len)
Ret: strcmp result
Ret: strcmp result
*/
*/
static
int
my_strnncoll_tis620
(
CHARSET_INFO
*
cs
__attribute__
((
unused
)),
int
my_strnncoll_tis620
(
CHARSET_INFO
*
cs
__attribute__
((
unused
)),
const
uchar
*
s1
,
uint
len1
,
const
uchar
*
s1
,
uint
len1
,
const
uchar
*
s2
,
uint
len2
)
const
uchar
*
s2
,
uint
len2
)
...
@@ -551,18 +552,70 @@ int my_strnncoll_tis620(CHARSET_INFO *cs __attribute__((unused)),
...
@@ -551,18 +552,70 @@ int my_strnncoll_tis620(CHARSET_INFO *cs __attribute__((unused)),
}
}
/*
TODO: Has to be fixed like strnncollsp in ctype-simple.c
*/
static
static
int
my_strnncollsp_tis620
(
CHARSET_INFO
*
cs
,
int
my_strnncollsp_tis620
(
CHARSET_INFO
*
cs
__attribute__
((
unused
)),
const
uchar
*
s
,
uint
slen
,
const
uchar
*
a0
,
uint
a_length
,
const
uchar
*
t
,
uint
tlen
)
const
uchar
*
b0
,
uint
b_length
)
{
{
for
(
;
slen
&&
s
[
slen
-
1
]
==
' '
;
slen
--
);
uchar
buf
[
80
]
;
for
(
;
tlen
&&
t
[
tlen
-
1
]
==
' '
;
tlen
--
);
uchar
*
end
,
*
a
,
*
b
;
return
my_strnncoll_tis620
(
cs
,
s
,
slen
,
t
,
tlen
);
uint
length
;
int
res
=
0
;
int
alloced
=
0
;
a
=
buf
;
if
((
a_length
+
b_length
+
2
)
>
(
int
)
sizeof
(
buf
))
{
a
=
(
uchar
*
)
malloc
(
a_length
+
b_length
);
alloced
=
1
;
}
b
=
a
+
a_length
+
1
;
memcpy
((
char
*
)
a
,
(
char
*
)
a0
,
a_length
);
a
[
a_length
]
=
0
;
/* if length(a0)> len1, need to put 'end of string' */
memcpy
((
char
*
)
b
,
(
char
*
)
b0
,
b_length
);
b
[
b_length
]
=
0
;
/* put end of string */
a_length
=
thai2sortable
(
a
,
a_length
);
b_length
=
thai2sortable
(
b
,
b_length
);
end
=
a
+
(
length
=
min
(
a_length
,
b_length
));
while
(
a
<
end
)
{
if
(
*
a
++
!=
*
b
++
)
{
res
=
((
int
)
a
[
-
1
]
-
(
int
)
b
[
-
1
]);
goto
ret
;
}
}
if
(
a_length
!=
b_length
)
{
int
swap
=
0
;
/*
Check the next not space character of the longer key. If it's < ' ',
then it's smaller than the other key.
*/
if
(
a_length
<
b_length
)
{
/* put shorter key in s */
a_length
=
b_length
;
a
=
b
;
swap
=
-
1
;
/* swap sign of result */
}
for
(
end
=
a
+
a_length
-
length
;
a
<
end
;
a
++
)
{
if
(
*
a
!=
' '
)
{
res
=
((
int
)
*
a
-
(
int
)
' '
)
^
swap
;
goto
ret
;
}
}
}
ret:
if
(
alloced
)
free
(
a
);
return
res
;
}
}
...
@@ -573,6 +626,7 @@ int my_strnncollsp_tis620(CHARSET_INFO * cs,
...
@@ -573,6 +626,7 @@ int my_strnncollsp_tis620(CHARSET_INFO * cs,
Ret: Conveted string size
Ret: Conveted string size
*/
*/
static
int
my_strnxfrm_tis620
(
CHARSET_INFO
*
cs
__attribute__
((
unused
)),
int
my_strnxfrm_tis620
(
CHARSET_INFO
*
cs
__attribute__
((
unused
)),
uchar
*
dest
,
uint
len
,
uchar
*
dest
,
uint
len
,
const
uchar
*
src
,
uint
srclen
)
const
uchar
*
src
,
uint
srclen
)
...
@@ -583,18 +637,6 @@ int my_strnxfrm_tis620(CHARSET_INFO *cs __attribute__((unused)),
...
@@ -583,18 +637,6 @@ int my_strnxfrm_tis620(CHARSET_INFO *cs __attribute__((unused)),
}
}
/*
strcoll replacment, compare 2 strings
Arg: 2 strings
Ret: strcmp result
*/
int
my_strcoll_tis620
(
const
uchar
*
s1
,
const
uchar
*
s2
)
{
return
my_strnncoll_tis620
((
CHARSET_INFO
*
)
0
,
s1
,
strlen
((
char
*
)
s1
),
s2
,
strlen
((
char
*
)
s1
));
}
/*
/*
Convert SQL LIKE string to C string
Convert SQL LIKE string to C string
...
@@ -614,6 +656,7 @@ int my_strcoll_tis620(const uchar * s1, const uchar * s2)
...
@@ -614,6 +656,7 @@ int my_strcoll_tis620(const uchar * s1, const uchar * s2)
#define max_sort_chr ((char) 255)
#define max_sort_chr ((char) 255)
static
my_bool
my_like_range_tis620
(
CHARSET_INFO
*
cs
__attribute__
((
unused
)),
my_bool
my_like_range_tis620
(
CHARSET_INFO
*
cs
__attribute__
((
unused
)),
const
char
*
ptr
,
uint
ptr_length
,
const
char
*
ptr
,
uint
ptr_length
,
pbool
escape
,
pbool
w_one
,
pbool
w_many
,
pbool
escape
,
pbool
w_one
,
pbool
w_many
,
...
...
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