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
054da001
Commit
054da001
authored
May 31, 2007
by
kaa@polly.local
Browse files
Options
Browse Files
Download
Plain Diff
Merge polly.local:/home/kaa/src/maint/bug27643/my50-bug27643
into polly.local:/home/kaa/src/maint/mysql-5.0-maint
parents
b729e8e2
d435b3ed
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
100 additions
and
4 deletions
+100
-4
mysql-test/r/ctype_ucs2_def.result
mysql-test/r/ctype_ucs2_def.result
+8
-0
mysql-test/r/heap_hash.result
mysql-test/r/heap_hash.result
+16
-0
mysql-test/t/ctype_ucs2_def.test
mysql-test/t/ctype_ucs2_def.test
+16
-0
mysql-test/t/heap_hash.test
mysql-test/t/heap_hash.test
+24
-1
sql/sql_select.cc
sql/sql_select.cc
+1
-1
strings/ctype-bin.c
strings/ctype-bin.c
+24
-1
strings/ctype-mb.c
strings/ctype-mb.c
+7
-0
strings/ctype-ucs2.c
strings/ctype-ucs2.c
+4
-1
No files found.
mysql-test/r/ctype_ucs2_def.result
View file @
054da001
...
...
@@ -7,3 +7,11 @@ character_set_server ucs2
DROP TABLE IF EXISTS t1;
create table t1 (a int);
drop table t1;
CREATE TABLE t1(col1 VARCHAR(32) CHARACTER SET ucs2 COLLATE ucs2_bin NOT NULL,
col2 VARCHAR(32) CHARACTER SET ucs2 COLLATE ucs2_bin NOT NULL,
UNIQUE KEY key1 USING HASH (col1, col2)) ENGINE=MEMORY;
INSERT INTO t1 VALUES('A', 'A'), ('B', 'B'), ('C', 'C');
INSERT INTO t1 VALUES('A ', 'A ');
ERROR 23000: Duplicate entry '' for key 1
DROP TABLE t1;
End of 5.0 tests
mysql-test/r/heap_hash.result
View file @
054da001
...
...
@@ -366,3 +366,19 @@ explain select a from t1 where a in (1,3);
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range a a 5 NULL 4 Using where
drop table t1;
End of 4.1 tests
CREATE TABLE t1(col1 VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
col2 VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
UNIQUE KEY key1 USING HASH (col1, col2)) ENGINE=MEMORY;
INSERT INTO t1 VALUES('A', 'A');
INSERT INTO t1 VALUES('A ', 'A ');
ERROR 23000: Duplicate entry 'A -A ' for key 1
DROP TABLE t1;
CREATE TABLE t1(col1 VARCHAR(32) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
col2 VARCHAR(32) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
UNIQUE KEY key1 USING HASH (col1, col2)) ENGINE=MEMORY;
INSERT INTO t1 VALUES('A', 'A');
INSERT INTO t1 VALUES('A ', 'A ');
ERROR 23000: Duplicate entry 'A -A ' for key 1
DROP TABLE t1;
End of 5.0 tests
mysql-test/t/ctype_ucs2_def.test
View file @
054da001
...
...
@@ -14,3 +14,19 @@ DROP TABLE IF EXISTS t1;
--
enable_warnings
create
table
t1
(
a
int
);
drop
table
t1
;
#
# Bug #27643: query failed : 1114 (The table '' is full)
#
# Check that HASH indexes ignore trailing spaces when comparing
# strings with the ucs2_bin collation
CREATE
TABLE
t1
(
col1
VARCHAR
(
32
)
CHARACTER
SET
ucs2
COLLATE
ucs2_bin
NOT
NULL
,
col2
VARCHAR
(
32
)
CHARACTER
SET
ucs2
COLLATE
ucs2_bin
NOT
NULL
,
UNIQUE
KEY
key1
USING
HASH
(
col1
,
col2
))
ENGINE
=
MEMORY
;
INSERT
INTO
t1
VALUES
(
'A'
,
'A'
),
(
'B'
,
'B'
),
(
'C'
,
'C'
);
--
error
ER_DUP_ENTRY
INSERT
INTO
t1
VALUES
(
'A '
,
'A '
);
DROP
TABLE
t1
;
--
echo
End
of
5.0
tests
mysql-test/t/heap_hash.test
View file @
054da001
...
...
@@ -260,4 +260,27 @@ select a from t1 where a in (1,3);
explain
select
a
from
t1
where
a
in
(
1
,
3
);
drop
table
t1
;
# End of 4.1 tests
--
echo
End
of
4.1
tests
#
# Bug #27643: query failed : 1114 (The table '' is full)
#
# Check that HASH indexes disregard trailing spaces when comparing
# strings with binary collations
CREATE
TABLE
t1
(
col1
VARCHAR
(
32
)
CHARACTER
SET
utf8
COLLATE
utf8_bin
NOT
NULL
,
col2
VARCHAR
(
32
)
CHARACTER
SET
utf8
COLLATE
utf8_bin
NOT
NULL
,
UNIQUE
KEY
key1
USING
HASH
(
col1
,
col2
))
ENGINE
=
MEMORY
;
INSERT
INTO
t1
VALUES
(
'A'
,
'A'
);
--
error
ER_DUP_ENTRY
INSERT
INTO
t1
VALUES
(
'A '
,
'A '
);
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
col1
VARCHAR
(
32
)
CHARACTER
SET
latin1
COLLATE
latin1_bin
NOT
NULL
,
col2
VARCHAR
(
32
)
CHARACTER
SET
latin1
COLLATE
latin1_bin
NOT
NULL
,
UNIQUE
KEY
key1
USING
HASH
(
col1
,
col2
))
ENGINE
=
MEMORY
;
INSERT
INTO
t1
VALUES
(
'A'
,
'A'
);
--
error
ER_DUP_ENTRY
INSERT
INTO
t1
VALUES
(
'A '
,
'A '
);
DROP
TABLE
t1
;
--
echo
End
of
5.0
tests
sql/sql_select.cc
View file @
054da001
...
...
@@ -10141,7 +10141,7 @@ bool create_myisam_from_heap(THD *thd, TABLE *table, TMP_TABLE_PARAM *param,
err:
DBUG_PRINT
(
"error"
,(
"Got error: %d"
,
write_err
));
table
->
file
->
print_error
(
error
,
MYF
(
0
));
// Give table is full error
table
->
file
->
print_error
(
write_err
,
MYF
(
0
));
(
void
)
table
->
file
->
ha_rnd_end
();
(
void
)
new_table
.
file
->
close
();
err1:
...
...
strings/ctype-bin.c
View file @
054da001
...
...
@@ -271,6 +271,29 @@ static int my_wc_mb_bin(CHARSET_INFO *cs __attribute__((unused)),
}
void
my_hash_sort_8bit_bin
(
CHARSET_INFO
*
cs
__attribute__
((
unused
)),
const
uchar
*
key
,
uint
len
,
ulong
*
nr1
,
ulong
*
nr2
)
{
const
uchar
*
pos
=
key
;
key
+=
len
;
/*
Remove trailing spaces. We have to do this to be able to compare
'A ' and 'A' as identical
*/
while
(
key
>
pos
&&
key
[
-
1
]
==
' '
)
key
--
;
for
(;
pos
<
(
uchar
*
)
key
;
pos
++
)
{
nr1
[
0
]
^=
(
ulong
)
((((
uint
)
nr1
[
0
]
&
63
)
+
nr2
[
0
])
*
((
uint
)
*
pos
))
+
(
nr1
[
0
]
<<
8
);
nr2
[
0
]
+=
3
;
}
}
void
my_hash_sort_bin
(
CHARSET_INFO
*
cs
__attribute__
((
unused
)),
const
uchar
*
key
,
uint
len
,
ulong
*
nr1
,
ulong
*
nr2
)
{
...
...
@@ -471,7 +494,7 @@ MY_COLLATION_HANDLER my_collation_8bit_bin_handler =
my_wildcmp_bin
,
my_strcasecmp_bin
,
my_instr_bin
,
my_hash_sort_bin
,
my_hash_sort_
8bit_
bin
,
my_propagate_simple
};
...
...
strings/ctype-mb.c
View file @
054da001
...
...
@@ -467,6 +467,13 @@ static void my_hash_sort_mb_bin(CHARSET_INFO *cs __attribute__((unused)),
key
+=
len
;
/*
Remove trailing spaces. We have to do this to be able to compare
'A ' and 'A' as identical
*/
while
(
key
>
pos
&&
key
[
-
1
]
==
' '
)
key
--
;
for
(;
pos
<
(
uchar
*
)
key
;
pos
++
)
{
nr1
[
0
]
^=
(
ulong
)
((((
uint
)
nr1
[
0
]
&
63
)
+
nr2
[
0
])
*
...
...
strings/ctype-ucs2.c
View file @
054da001
...
...
@@ -1484,7 +1484,10 @@ void my_hash_sort_ucs2_bin(CHARSET_INFO *cs __attribute__((unused)),
const
uchar
*
pos
=
key
;
key
+=
len
;
while
(
key
>
pos
+
1
&&
key
[
-
1
]
==
' '
&&
key
[
-
2
]
==
'\0'
)
key
-=
2
;
for
(;
pos
<
(
uchar
*
)
key
;
pos
++
)
{
nr1
[
0
]
^=
(
ulong
)
((((
uint
)
nr1
[
0
]
&
63
)
+
nr2
[
0
])
*
...
...
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