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
e106b09a
Commit
e106b09a
authored
Aug 05, 2007
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug30219
parents
983cda8d
4e6e1220
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
66 additions
and
3 deletions
+66
-3
mysql-test/r/type_bit.result
mysql-test/r/type_bit.result
+32
-0
mysql-test/t/type_bit.test
mysql-test/t/type_bit.test
+24
-0
sql/field.h
sql/field.h
+10
-3
No files found.
mysql-test/r/type_bit.result
View file @
e106b09a
...
...
@@ -618,4 +618,36 @@ bit_field int_field
2
handler t1 close;
drop table t1;
CREATE TABLE t1 (b BIT(2));
INSERT INTO t1 (b) VALUES (1), (3), (0), (3);
SELECT b+0, COUNT(DISTINCT b) FROM t1 GROUP BY b;
b+0 COUNT(DISTINCT b)
0 1
1 1
3 1
DROP TABLE t1;
CREATE TABLE t1 (b BIT(2), a VARCHAR(5));
INSERT INTO t1 (b, a) VALUES (1, "x"), (3, "zz"), (0, "y"), (3, "z");
SELECT b+0, COUNT(DISTINCT a) FROM t1 GROUP BY b;
b+0 COUNT(DISTINCT a)
0 1
1 1
3 2
DROP TABLE t1;
CREATE TABLE t1 (a CHAR(5), b BIT(2));
INSERT INTO t1 (b, a) VALUES (1, "x"), (3, "zz"), (0, "y"), (3, "z");
SELECT b+0, COUNT(DISTINCT a) FROM t1 GROUP BY b;
b+0 COUNT(DISTINCT a)
0 1
1 1
3 2
DROP TABLE t1;
CREATE TABLE t1 (a INT, b BIT(2));
INSERT INTO t1 (b, a) VALUES (1, 1), (3, 2), (0, 3), (3, 4);
SELECT b+0, COUNT(DISTINCT a) FROM t1 GROUP BY b;
b+0 COUNT(DISTINCT a)
0 1
1 1
3 2
DROP TABLE t1;
End of 5.0 tests
mysql-test/t/type_bit.test
View file @
e106b09a
...
...
@@ -272,4 +272,28 @@ handler t1 read a=(1);
handler
t1
close
;
drop
table
t1
;
#
# Bug #30219: GROUP BY a column of the BIT type
#
CREATE
TABLE
t1
(
b
BIT
(
2
));
INSERT
INTO
t1
(
b
)
VALUES
(
1
),
(
3
),
(
0
),
(
3
);
SELECT
b
+
0
,
COUNT
(
DISTINCT
b
)
FROM
t1
GROUP
BY
b
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
b
BIT
(
2
),
a
VARCHAR
(
5
));
INSERT
INTO
t1
(
b
,
a
)
VALUES
(
1
,
"x"
),
(
3
,
"zz"
),
(
0
,
"y"
),
(
3
,
"z"
);
SELECT
b
+
0
,
COUNT
(
DISTINCT
a
)
FROM
t1
GROUP
BY
b
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
CHAR
(
5
),
b
BIT
(
2
));
INSERT
INTO
t1
(
b
,
a
)
VALUES
(
1
,
"x"
),
(
3
,
"zz"
),
(
0
,
"y"
),
(
3
,
"z"
);
SELECT
b
+
0
,
COUNT
(
DISTINCT
a
)
FROM
t1
GROUP
BY
b
;
DROP
TABLE
t1
;
CREATE
TABLE
t1
(
a
INT
,
b
BIT
(
2
));
INSERT
INTO
t1
(
b
,
a
)
VALUES
(
1
,
1
),
(
3
,
2
),
(
0
,
3
),
(
3
,
4
);
SELECT
b
+
0
,
COUNT
(
DISTINCT
a
)
FROM
t1
GROUP
BY
b
;
DROP
TABLE
t1
;
--
echo
End
of
5.0
tests
sql/field.h
View file @
e106b09a
...
...
@@ -231,9 +231,9 @@ class Field
if
(
null_ptr
)
null_ptr
=
ADD_TO_PTR
(
null_ptr
,
ptr_diff
,
uchar
*
);
}
inline
void
get_image
(
char
*
buff
,
uint
length
,
CHARSET_INFO
*
cs
)
virtual
void
get_image
(
char
*
buff
,
uint
length
,
CHARSET_INFO
*
cs
)
{
memcpy
(
buff
,
ptr
,
length
);
}
inline
void
set_image
(
char
*
buff
,
uint
length
,
CHARSET_INFO
*
cs
)
virtual
void
set_image
(
char
*
buff
,
uint
length
,
CHARSET_INFO
*
cs
)
{
memcpy
(
ptr
,
buff
,
length
);
}
...
...
@@ -1430,13 +1430,20 @@ class Field_bit :public Field {
String
*
val_str
(
String
*
,
String
*
);
my_decimal
*
val_decimal
(
my_decimal
*
);
int
cmp
(
const
char
*
a
,
const
char
*
b
)
{
return
cmp_binary
(
a
,
b
);
}
{
DBUG_ASSERT
(
ptr
==
a
);
return
Field_bit
::
key_cmp
(
b
,
bytes_in_rec
+
test
(
bit_len
));
}
int
key_cmp
(
const
byte
*
a
,
const
byte
*
b
)
{
return
cmp_binary
((
char
*
)
a
,
(
char
*
)
b
);
}
int
key_cmp
(
const
byte
*
str
,
uint
length
);
int
cmp_offset
(
uint
row_offset
);
int
cmp_binary_offset
(
uint
row_offset
)
{
return
cmp_offset
(
row_offset
);
}
void
get_image
(
char
*
buff
,
uint
length
,
CHARSET_INFO
*
cs
)
{
get_key_image
(
buff
,
length
,
itRAW
);
}
void
set_image
(
char
*
buff
,
uint
length
,
CHARSET_INFO
*
cs
)
{
Field_bit
::
store
(
buff
,
length
,
cs
);
}
uint
get_key_image
(
char
*
buff
,
uint
length
,
imagetype
type
);
void
set_key_image
(
char
*
buff
,
uint
length
)
{
Field_bit
::
store
(
buff
,
length
,
&
my_charset_bin
);
}
...
...
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