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
0469dd49
Commit
0469dd49
authored
Jan 30, 2003
by
bell@sanja.is.com.ua
Browse files
Options
Browse Files
Download
Plain Diff
Merge sanja.is.com.ua:/home/bell/mysql/mysql-4.1
into sanja.is.com.ua:/home/bell/mysql/work-select-4.1
parents
a662f7e1
9a837a87
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
63 additions
and
65 deletions
+63
-65
acconfig.h
acconfig.h
+0
-3
client/sql_string.cc
client/sql_string.cc
+0
-4
configure.in
configure.in
+0
-3
isam/_key.c
isam/_key.c
+0
-6
isam/_search.c
isam/_search.c
+0
-4
sql/filesort.cc
sql/filesort.cc
+0
-15
sql/share/charsets/cp1256.xml
sql/share/charsets/cp1256.xml
+1
-1
sql/sql_cache.cc
sql/sql_cache.cc
+3
-1
sql/sql_sort.h
sql/sql_sort.h
+0
-2
sql/sql_string.cc
sql/sql_string.cc
+0
-4
strings/conf_to_src.c
strings/conf_to_src.c
+29
-11
strings/ctype-latin1.c
strings/ctype-latin1.c
+30
-11
No files found.
acconfig.h
View file @
0469dd49
...
...
@@ -309,9 +309,6 @@
/* Use MySQL RAID */
#undef USE_RAID
/* Use strcoll() functions when comparing and sorting. */
#undef USE_STRCOLL
/* Program version */
#undef VERSION
...
...
client/sql_string.cc
View file @
0469dd49
...
...
@@ -576,7 +576,6 @@ int sortcmp(const String *x,const String *y)
const
char
*
t
=
y
->
ptr
();
uint32
x_len
=
x
->
length
(),
y_len
=
y
->
length
(),
len
=
min
(
x_len
,
y_len
);
#ifdef USE_STRCOLL
if
(
use_strnxfrm
(
x
->
str_charset
))
{
#ifndef CMP_ENDSPACE
...
...
@@ -590,7 +589,6 @@ int sortcmp(const String *x,const String *y)
}
else
{
#endif
/* USE_STRCOLL */
x_len
-=
len
;
// For easy end space test
y_len
-=
len
;
if
(
x
->
str_charset
->
sort_order
)
...
...
@@ -633,9 +631,7 @@ int sortcmp(const String *x,const String *y)
#else
return
(
int
)
(
x_len
-
y_len
);
#endif
/* CMP_ENDSPACE */
#ifdef USE_STRCOLL
}
#endif
}
...
...
configure.in
View file @
0469dd49
...
...
@@ -2256,9 +2256,6 @@ then
AC_DEFINE
(
USE_MB_IDENT
)
fi
# Temporary hack for USE_STRCOLL
AC_DEFINE
(
USE_STRCOLL
)
AC_SUBST
(
default_charset
)
AC_DEFINE_UNQUOTED
(
DEFAULT_CHARSET_NAME,
"
$default_charset
"
)
...
...
isam/_key.c
View file @
0469dd49
...
...
@@ -53,9 +53,7 @@ uint _nisam_make_key(register N_INFO *info, uint keynr, uchar *key, const char *
}
*
key
++=
(
uchar
)
(
length
=
(
uint
)
(
end
-
pos
));
memcpy
((
byte
*
)
key
,(
byte
*
)
pos
,(
size_t
)
length
);
#ifdef USE_STRCOLL
if
(
!
use_strnxfrm
(
default_charset_info
))
#endif
{
if
(
type
==
HA_KEYTYPE_TEXT
)
my_tosort
(
default_charset_info
,(
byte
*
)
key
,
length
);
...
...
@@ -66,9 +64,7 @@ uint _nisam_make_key(register N_INFO *info, uint keynr, uchar *key, const char *
{
memcpy
((
byte
*
)
key
,(
byte
*
)
record
+
keyseg
->
base
.
start
,
(
size_t
)
keyseg
->
base
.
length
);
#ifdef USE_STRCOLL
if
(
!
use_strnxfrm
(
default_charset_info
))
#endif
{
if
(
type
==
HA_KEYTYPE_TEXT
)
my_tosort
(
default_charset_info
,(
byte
*
)
key
,(
uint
)
keyseg
->
base
.
length
);
...
...
@@ -149,9 +145,7 @@ uint _nisam_pack_key(register N_INFO *info, uint keynr, uchar *key, uchar *old,
}
else
memcpy
((
byte
*
)
key
,
old
,(
size_t
)
length
);
#ifdef USE_STRCOLL
if
(
!
use_strnxfrm
(
default_charset_info
))
#endif
{
if
(
type
==
HA_KEYTYPE_TEXT
)
my_tosort
(
default_charset_info
,(
byte
*
)
key
,
length
);
...
...
isam/_search.c
View file @
0469dd49
...
...
@@ -331,7 +331,6 @@ int _nisam_key_cmp(register N_KEYSEG *keyseg, register uchar *a, register uchar
(
int
)
*
as
:
b_length
;
end
=
a
+
min
(
key_length
,(
uint
)
length
);
#ifdef USE_STRCOLL
if
(
use_strnxfrm
(
default_charset_info
))
{
if
(((
enum
ha_base_keytype
)
keyseg
->
base
.
type
)
==
HA_KEYTYPE_BINARY
)
{
...
...
@@ -349,7 +348,6 @@ int _nisam_key_cmp(register N_KEYSEG *keyseg, register uchar *a, register uchar
}
}
else
#endif
{
while
(
a
<
end
)
if
((
flag
=
(
int
)
*
a
++
-
(
int
)
*
b
++
))
...
...
@@ -382,7 +380,6 @@ int _nisam_key_cmp(register N_KEYSEG *keyseg, register uchar *a, register uchar
}
else
{
#ifdef USE_STRCOLL
if
(
use_strnxfrm
(
default_charset_info
))
{
if
(((
enum
ha_base_keytype
)
keyseg
->
base
.
type
)
==
HA_KEYTYPE_BINARY
)
{
...
...
@@ -400,7 +397,6 @@ int _nisam_key_cmp(register N_KEYSEG *keyseg, register uchar *a, register uchar
}
}
else
#endif
{
while
(
a
<
end
)
if
((
flag
=
(
int
)
*
a
++
-
(
int
)
*
b
++
))
...
...
sql/filesort.cc
View file @
0469dd49
...
...
@@ -123,11 +123,9 @@ ha_rows filesort(THD *thd, TABLE *table, SORT_FIELD *sortorder, uint s_length,
if
(
param
.
sort_length
==
param
.
ref_length
&&
records
>
param
.
max_rows
)
records
=
param
.
max_rows
;
/* purecov: inspected */
#ifdef USE_STRCOLL
if
(
use_strnxfrm
(
charset
)
&&
!
(
param
.
tmp_buffer
=
my_malloc
(
param
.
sort_length
,
MYF
(
MY_WME
))))
goto
err
;
#endif
memavl
=
thd
->
variables
.
sortbuff_size
;
while
(
memavl
>=
MIN_SORT_MEMORY
)
...
...
@@ -200,10 +198,8 @@ ha_rows filesort(THD *thd, TABLE *table, SORT_FIELD *sortorder, uint s_length,
error
=
0
;
err:
#ifdef USE_STRCOLL
if
(
param
.
tmp_buffer
)
x_free
(
param
.
tmp_buffer
);
#endif
x_free
((
gptr
)
sort_keys
);
x_free
((
gptr
)
buffpek
);
close_cached_file
(
&
tempfile
);
...
...
@@ -494,7 +490,6 @@ static void make_sortkey(register SORTPARAM *param,
diff
=
0
;
/* purecov: inspected */
length
=
sort_field
->
length
;
}
#ifdef USE_STRCOLL
if
(
use_strnxfrm
(
cs
))
{
if
(
item
->
binary
())
...
...
@@ -520,15 +515,12 @@ static void make_sortkey(register SORTPARAM *param,
}
else
{
#endif
if
(
res
->
ptr
()
!=
(
char
*
)
to
)
memcpy
(
to
,
res
->
ptr
(),
length
);
bzero
((
char
*
)
to
+
length
,
diff
);
if
(
!
item
->
binary
())
my_tosort
(
cs
,
(
char
*
)
to
,
length
);
#ifdef USE_STRCOLL
}
#endif
break
;
}
case
INT_RESULT
:
...
...
@@ -930,34 +922,27 @@ sortlength(SORT_FIELD *sortorder, uint s_length)
else
{
sortorder
->
length
=
sortorder
->
field
->
pack_length
();
#ifdef USE_STRCOLL
if
(
!
sortorder
->
field
->
binary
())
{
CHARSET_INFO
*
cs
=
sortorder
->
field
->
charset
();
if
(
use_strnxfrm
(
cs
))
sortorder
->
length
=
sortorder
->
length
*
cs
->
strxfrm_multiply
;
}
#endif
}
if
(
sortorder
->
field
->
maybe_null
())
length
++
;
// Place for NULL marker
}
else
{
#ifdef USE_STRCOLL
#endif
switch
((
sortorder
->
result_type
=
sortorder
->
item
->
result_type
()))
{
case
STRING_RESULT
:
sortorder
->
length
=
sortorder
->
item
->
max_length
;
#ifdef USE_STRCOLL
if
(
!
sortorder
->
item
->
binary
())
{
CHARSET_INFO
*
cs
=
sortorder
->
item
->
charset
();
if
(
use_strnxfrm
(
cs
))
sortorder
->
length
=
sortorder
->
length
*
cs
->
strxfrm_multiply
;
}
#endif
break
;
case
INT_RESULT
:
#if SIZEOF_LONG_LONG > 4
...
...
sql/share/charsets/cp1256.xml
View file @
0469dd49
...
...
@@ -4,7 +4,7 @@
<charsets>
<charset
name=
""
>
<charset
name=
"
cp1256
"
>
<ctype>
<map>
...
...
sql/sql_cache.cc
View file @
0469dd49
...
...
@@ -2476,7 +2476,9 @@ TABLE_COUNTER_TYPE Query_cache::is_cacheable(THD *thd, uint32 query_len,
(
tables_used
->
db_length
==
5
&&
#ifdef FN_NO_CASE_SENCE
// TODO: latin1 charset should be replaced with system charset
my_strncasecmp
(
my_charset_latin1
,
tables_used
->
db
,
"mysql"
,
5
)
==
0
my_strncasecmp
(
&
my_charset_latin1
,
tables_used
->
db
,
"mysql"
,
5
)
==
0
#else
tables_used
->
db
[
0
]
==
'm'
&&
tables_used
->
db
[
1
]
==
'y'
&&
...
...
sql/sql_sort.h
View file @
0469dd49
...
...
@@ -38,9 +38,7 @@ typedef struct st_sort_param {
SORT_FIELD
*
end
;
uchar
*
unique_buff
;
bool
not_killable
;
#ifdef USE_STRCOLL
char
*
tmp_buffer
;
#endif
}
SORTPARAM
;
...
...
sql/sql_string.cc
View file @
0469dd49
...
...
@@ -577,7 +577,6 @@ int sortcmp(const String *x,const String *y)
const
char
*
t
=
y
->
ptr
();
uint32
x_len
=
x
->
length
(),
y_len
=
y
->
length
(),
len
=
min
(
x_len
,
y_len
);
#ifdef USE_STRCOLL
if
(
use_strnxfrm
(
x
->
str_charset
))
{
#ifndef CMP_ENDSPACE
...
...
@@ -591,7 +590,6 @@ int sortcmp(const String *x,const String *y)
}
else
{
#endif
/* USE_STRCOLL */
x_len
-=
len
;
// For easy end space test
y_len
-=
len
;
if
(
x
->
str_charset
->
sort_order
)
...
...
@@ -634,9 +632,7 @@ int sortcmp(const String *x,const String *y)
#else
return
(
int
)
(
x_len
-
y_len
);
#endif
/* CMP_ENDSPACE */
#ifdef USE_STRCOLL
}
#endif
}
...
...
strings/conf_to_src.c
View file @
0469dd49
...
...
@@ -25,13 +25,10 @@
#include <m_ctype.h>
#include <my_xml.h>
#define CHARSETS_SUBDIR "sql/share/charsets"
#define CTYPE_TABLE_SIZE 257
#define TO_LOWER_TABLE_SIZE 256
#define TO_UPPER_TABLE_SIZE 256
#define SORT_ORDER_TABLE_SIZE 256
#define MAX_BUF 16*1024
#define ROW_LEN 16
#define ROW16_LEN 8
#define MAX_BUF 16*1024
static
CHARSET_INFO
all_charsets
[
256
];
...
...
@@ -45,12 +42,30 @@ print_array(FILE *f, const char *set, const char *name, uchar *a, int n)
for
(
i
=
0
;
i
<
n
;
i
++
)
{
fprintf
(
f
,
"0x%02X%s%s"
,
a
[
i
],
(
i
+
1
<
n
)
?
","
:
""
,
i
%
16
?
""
:
"
\n
"
);
fprintf
(
f
,
"0x%02X"
,
a
[
i
]);
fprintf
(
f
,
(
i
+
1
<
n
)
?
","
:
""
);
fprintf
(
f
,
((
i
+
1
)
%
ROW_LEN
==
n
%
ROW_LEN
)
?
"
\n
"
:
""
);
}
fprintf
(
f
,
"};
\n\n
"
);
}
void
print_array16
(
FILE
*
f
,
const
char
*
set
,
const
char
*
name
,
uint16
*
a
,
int
n
)
{
int
i
;
fprintf
(
f
,
"uchar %s_%s[] = {
\n
"
,
name
,
set
);
for
(
i
=
0
;
i
<
n
;
i
++
)
{
fprintf
(
f
,
"0x%04X"
,
a
[
i
]);
fprintf
(
f
,
(
i
+
1
<
n
)
?
","
:
""
);
fprintf
(
f
,
((
i
+
1
)
%
ROW16_LEN
==
n
%
ROW16_LEN
)
?
"
\n
"
:
""
);
}
fprintf
(
f
,
"};
\n\n
"
);
}
static
int
get_charset_number
(
const
char
*
charset_name
)
{
...
...
@@ -261,10 +276,13 @@ main(int argc, char **argv __attribute__((unused)))
{
if
(
simple_cs_is_full
(
cs
))
{
print_array
(
f
,
cs
->
name
,
"ctype"
,
cs
->
ctype
,
CTYPE_TABLE_SIZE
);
print_array
(
f
,
cs
->
name
,
"to_lower"
,
cs
->
to_lower
,
TO_LOWER_TABLE_SIZE
);
print_array
(
f
,
cs
->
name
,
"to_upper"
,
cs
->
to_upper
,
TO_UPPER_TABLE_SIZE
);
print_array
(
f
,
cs
->
name
,
"sort_order"
,
cs
->
sort_order
,
SORT_ORDER_TABLE_SIZE
);
fprintf
(
f
,
"#ifdef HAVE_CHARSET_%s
\n
"
,
cs
->
csname
);
print_array
(
f
,
cs
->
name
,
"ctype"
,
cs
->
ctype
,
MY_CS_CTYPE_TABLE_SIZE
);
print_array
(
f
,
cs
->
name
,
"to_lower"
,
cs
->
to_lower
,
MY_CS_TO_LOWER_TABLE_SIZE
);
print_array
(
f
,
cs
->
name
,
"to_upper"
,
cs
->
to_upper
,
MY_CS_TO_UPPER_TABLE_SIZE
);
print_array
(
f
,
cs
->
name
,
"sort_order"
,
cs
->
sort_order
,
MY_CS_SORT_ORDER_TABLE_SIZE
);
print_array16
(
f
,
cs
->
name
,
"to_uni"
,
cs
->
tab_to_uni
,
MY_CS_TO_UNI_TABLE_SIZE
);
fprintf
(
f
,
"#endif
\n
"
);
fprintf
(
f
,
"
\n
"
);
}
}
...
...
strings/ctype-latin1.c
View file @
0469dd49
...
...
@@ -19,7 +19,7 @@
#include "m_ctype.h"
static
uint16
latin1_uni
[
256
]
=
{
static
my_wc_t
latin1_uni
[
256
]
=
{
0
,
0x0001
,
0x0002
,
0x0003
,
0x0004
,
0x0005
,
0x0006
,
0x0007
,
0x0008
,
0x0009
,
0x000A
,
0x000B
,
0x000C
,
0x000D
,
0x000E
,
0x000F
,
0x0010
,
0x0011
,
0x0012
,
0x0013
,
0x0014
,
0x0015
,
0x0016
,
0x0017
,
...
...
@@ -72,12 +72,6 @@ static uchar uni_latin1[]={
0xE0
,
0xE1
,
0xE2
,
0xE3
,
0xE4
,
0xE5
,
0xE6
,
0xE7
,
0xE8
,
0xE9
,
0xEA
,
0xEB
,
0xEC
,
0xED
,
0xEE
,
0xEF
,
0xF0
,
0xF1
,
0xF2
,
0xF3
,
0xF4
,
0xF5
,
0xF6
,
0xF7
,
0xF8
,
0xF9
,
0xFA
,
0xFB
,
0xFC
,
0xFD
,
0xFE
,
0xFF
};
static
MY_UNI_IDX
idx_uni_latin1
[]
=
{
{
0x0000
,
0x00FF
,
uni_latin1
},
{
0
,
0
,
NULL
}
};
static
uchar
ctype_latin1
[]
=
{
0
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
32
,
40
,
40
,
40
,
40
,
40
,
32
,
32
,
...
...
@@ -156,6 +150,31 @@ static uchar sort_order_latin1[] = {
};
static
int
my_mb_wc_latin1
(
CHARSET_INFO
*
cs
__attribute__
((
unused
)),
my_wc_t
*
wc
,
const
unsigned
char
*
str
,
const
unsigned
char
*
end
)
{
if
(
str
>=
end
)
return
MY_CS_TOOFEW
(
0
);
return
((
wc
[
0
]
=
latin1_uni
[
*
str
])
||
(
!
str
[
0
]))
?
1
:
MY_CS_ILSEQ
;
}
static
int
my_wc_mb_latin1
(
CHARSET_INFO
*
cs
__attribute__
((
unused
)),
my_wc_t
wc
,
unsigned
char
*
str
,
unsigned
char
*
end
)
{
if
(
str
>=
end
)
return
MY_CS_TOOSMALL
;
return
((
wc
<
256
)
&&
((
str
[
0
]
=
uni_latin1
[
wc
])
||
(
!
wc
)))
?
1
:
MY_CS_ILUNI
;
}
CHARSET_INFO
my_charset_latin1
=
{
8
,
/* number */
...
...
@@ -167,8 +186,8 @@ CHARSET_INFO my_charset_latin1 =
to_lower_latin1
,
to_upper_latin1
,
sort_order_latin1
,
latin1_uni
,
/* tab_to_uni */
idx_uni_latin1
,
/* tab_from_uni */
NULL
,
/* tab_to_uni */
NULL
,
/* tab_from_uni */
2
,
/* strxfrm_multiply */
my_strnncoll_simple
,
my_strnxfrm_simple
,
...
...
@@ -178,8 +197,8 @@ CHARSET_INFO my_charset_latin1 =
NULL
,
/* ismbchar */
NULL
,
/* ismbhead */
NULL
,
/* mbcharlen */
my_mb_wc_
8bit
,
/* mb_wc */
my_wc_mb_
8bit
,
/* wc_mb */
my_mb_wc_
latin1
,
/* mb_wc */
my_wc_mb_
latin1
,
/* wc_mb */
my_caseup_str_8bit
,
my_casedn_str_8bit
,
my_caseup_8bit
,
...
...
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