mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Added bitfield support and a test for it.
Archive uses native row format, so honestly this is just the change in a flag. sql/ha_archive.h: Added bit field support (and dropped the ha_not_exact_count since we always have this). mysql-test/r/archive_bitfield.result: New BitKeeper file ``mysql-test/r/archive_bitfield.result'' mysql-test/t/archive_bitfield.test: New BitKeeper file ``mysql-test/t/archive_bitfield.test''
This commit is contained in:
191
mysql-test/r/archive_bitfield.result
Normal file
191
mysql-test/r/archive_bitfield.result
Normal file
@ -0,0 +1,191 @@
|
|||||||
|
drop table if exists t1;
|
||||||
|
create table t1 (
|
||||||
|
pk1 int not null auto_increment primary key,
|
||||||
|
b bit(64)
|
||||||
|
) engine=archive;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`pk1` int(11) NOT NULL auto_increment,
|
||||||
|
`b` bit(64) default NULL,
|
||||||
|
PRIMARY KEY (`pk1`)
|
||||||
|
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
|
||||||
|
insert into t1 values
|
||||||
|
(NULL,b'1111111111111111111111111111111111111111111111111111111111111111'),
|
||||||
|
(NULL,b'1000000000000000000000000000000000000000000000000000000000000000'),
|
||||||
|
(NULL,b'0000000000000000000000000000000000000000000000000000000000000001'),
|
||||||
|
(NULL,b'1010101010101010101010101010101010101010101010101010101010101010'),
|
||||||
|
(NULL,b'0101010101010101010101010101010101010101010101010101010101010101');
|
||||||
|
select hex(b) from t1 order by pk1;
|
||||||
|
hex(b)
|
||||||
|
FFFFFFFFFFFFFFFF
|
||||||
|
8000000000000000
|
||||||
|
1
|
||||||
|
AAAAAAAAAAAAAAAA
|
||||||
|
5555555555555555
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (
|
||||||
|
pk1 int not null auto_increment primary key,
|
||||||
|
b bit(9)
|
||||||
|
) engine=archive;
|
||||||
|
insert into t1 values
|
||||||
|
(NULL,b'000000000'),
|
||||||
|
(NULL,b'000000001'),
|
||||||
|
(NULL,b'000000010'),
|
||||||
|
(NULL,b'000000011'),
|
||||||
|
(NULL,b'000000100');
|
||||||
|
select hex(b) from t1 order by pk1;
|
||||||
|
hex(b)
|
||||||
|
0
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a bit(7), b bit(9)) engine = archive;
|
||||||
|
insert into t1 values
|
||||||
|
(94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),
|
||||||
|
(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),
|
||||||
|
(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),
|
||||||
|
(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),
|
||||||
|
(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),
|
||||||
|
(44, 307), (68, 454), (57, 135);
|
||||||
|
select a+0 from t1 order by a;
|
||||||
|
a+0
|
||||||
|
0
|
||||||
|
4
|
||||||
|
5
|
||||||
|
9
|
||||||
|
23
|
||||||
|
24
|
||||||
|
28
|
||||||
|
29
|
||||||
|
30
|
||||||
|
31
|
||||||
|
34
|
||||||
|
44
|
||||||
|
49
|
||||||
|
56
|
||||||
|
57
|
||||||
|
59
|
||||||
|
60
|
||||||
|
61
|
||||||
|
68
|
||||||
|
68
|
||||||
|
75
|
||||||
|
77
|
||||||
|
78
|
||||||
|
79
|
||||||
|
87
|
||||||
|
88
|
||||||
|
94
|
||||||
|
94
|
||||||
|
104
|
||||||
|
106
|
||||||
|
108
|
||||||
|
111
|
||||||
|
116
|
||||||
|
118
|
||||||
|
119
|
||||||
|
122
|
||||||
|
123
|
||||||
|
127
|
||||||
|
select b+0 from t1 order by b;
|
||||||
|
b+0
|
||||||
|
36
|
||||||
|
42
|
||||||
|
46
|
||||||
|
67
|
||||||
|
83
|
||||||
|
118
|
||||||
|
123
|
||||||
|
133
|
||||||
|
135
|
||||||
|
152
|
||||||
|
177
|
||||||
|
178
|
||||||
|
188
|
||||||
|
202
|
||||||
|
206
|
||||||
|
245
|
||||||
|
280
|
||||||
|
307
|
||||||
|
343
|
||||||
|
345
|
||||||
|
349
|
||||||
|
351
|
||||||
|
363
|
||||||
|
368
|
||||||
|
368
|
||||||
|
379
|
||||||
|
380
|
||||||
|
390
|
||||||
|
398
|
||||||
|
399
|
||||||
|
403
|
||||||
|
411
|
||||||
|
411
|
||||||
|
438
|
||||||
|
446
|
||||||
|
454
|
||||||
|
468
|
||||||
|
499
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (
|
||||||
|
dummyKey INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
a001 TINYINT,
|
||||||
|
a010 TINYINT,
|
||||||
|
a012 TINYINT,
|
||||||
|
a015 TINYINT,
|
||||||
|
a016 TINYINT,
|
||||||
|
a017 TINYINT,
|
||||||
|
a019 TINYINT,
|
||||||
|
a029 TINYINT,
|
||||||
|
a030 TINYINT,
|
||||||
|
a031 TINYINT,
|
||||||
|
a032 TINYINT,
|
||||||
|
a042 TINYINT,
|
||||||
|
a043 TINYINT,
|
||||||
|
a044 TINYINT,
|
||||||
|
a3001 TINYINT,
|
||||||
|
a3002 TINYINT,
|
||||||
|
a3003 TINYINT,
|
||||||
|
a3004 TINYINT,
|
||||||
|
a3005 TINYINT,
|
||||||
|
a3021 TINYINT,
|
||||||
|
a3022 TINYINT,
|
||||||
|
a BIT(6),
|
||||||
|
b BIT(6),
|
||||||
|
c BIT(6),
|
||||||
|
d TINYINT,
|
||||||
|
e TINYINT,
|
||||||
|
f TINYINT,
|
||||||
|
g TINYINT,
|
||||||
|
h TINYINT,
|
||||||
|
i TINYINT,
|
||||||
|
j TINYINT,
|
||||||
|
k TINYINT,
|
||||||
|
l TINYINT,
|
||||||
|
m TINYINT,
|
||||||
|
n TINYINT,
|
||||||
|
o TINYINT,
|
||||||
|
a034 TINYINT,
|
||||||
|
PRIMARY KEY USING HASH (dummyKey) ) engine=archive;
|
||||||
|
INSERT INTO `t1` VALUES
|
||||||
|
(NULL,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'000001',b'111111',b'111110',4,5,5,5,5,5,5,5,5,5,3,2,1),
|
||||||
|
(NULL,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'000010',b'000000',b'111101',4,5,5,5,5,5,5,5,5,5,3,2,1),
|
||||||
|
(NULL,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'000100',b'001111',b'111011',4,5,5,5,5,5,5,5,5,5,3,2,1),
|
||||||
|
(NULL,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'001000',b'110000',b'110111',4,5,5,5,5,5,5,5,5,5,3,2,1),
|
||||||
|
(NULL,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'010000',b'100001',b'101111',4,5,5,5,5,5,5,5,5,5,3,2,1),
|
||||||
|
(NULL,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'100000',b'010010',b'011111',4,5,5,5,5,5,5,5,5,5,3,2,1),
|
||||||
|
(NULL,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'000000',b'001100',b'111111',4,5,5,5,5,5,5,5,5,5,3,2,1),
|
||||||
|
(NULL,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'111111',b'000000',b'000000',4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||||
|
INSERT INTO `t1` VALUES (1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x01,0x3F,0x3E,4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||||
|
INSERT INTO `t1` VALUES (2,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x02,0x00,0x3D,4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||||
|
INSERT INTO `t1` VALUES (3,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x04,0x0F,0x3B,4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||||
|
INSERT INTO `t1` VALUES (4,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x08,0x30,0x37,4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||||
|
INSERT INTO `t1` VALUES (5,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x10,0x21,0x2F,4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||||
|
INSERT INTO `t1` VALUES (6,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x20,0x12,0x1F,4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||||
|
INSERT INTO `t1` VALUES (7,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x00,0x0C,0x3F,4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||||
|
INSERT INTO `t1` VALUES (8,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x3F,0x00,0x00,4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||||
|
drop table t1;
|
98
mysql-test/t/archive_bitfield.test
Normal file
98
mysql-test/t/archive_bitfield.test
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
-- source include/have_archive.inc
|
||||||
|
-- source include/not_embedded.inc
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
drop table if exists t1;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
create table t1 (
|
||||||
|
pk1 int not null auto_increment primary key,
|
||||||
|
b bit(64)
|
||||||
|
) engine=archive;
|
||||||
|
|
||||||
|
show create table t1;
|
||||||
|
insert into t1 values
|
||||||
|
(NULL,b'1111111111111111111111111111111111111111111111111111111111111111'),
|
||||||
|
(NULL,b'1000000000000000000000000000000000000000000000000000000000000000'),
|
||||||
|
(NULL,b'0000000000000000000000000000000000000000000000000000000000000001'),
|
||||||
|
(NULL,b'1010101010101010101010101010101010101010101010101010101010101010'),
|
||||||
|
(NULL,b'0101010101010101010101010101010101010101010101010101010101010101');
|
||||||
|
select hex(b) from t1 order by pk1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
create table t1 (
|
||||||
|
pk1 int not null auto_increment primary key,
|
||||||
|
b bit(9)
|
||||||
|
) engine=archive;
|
||||||
|
insert into t1 values
|
||||||
|
(NULL,b'000000000'),
|
||||||
|
(NULL,b'000000001'),
|
||||||
|
(NULL,b'000000010'),
|
||||||
|
(NULL,b'000000011'),
|
||||||
|
(NULL,b'000000100');
|
||||||
|
select hex(b) from t1 order by pk1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
create table t1 (a bit(7), b bit(9)) engine = archive;
|
||||||
|
insert into t1 values
|
||||||
|
(94, 46), (31, 438), (61, 152), (78, 123), (88, 411), (122, 118), (0, 177),
|
||||||
|
(75, 42), (108, 67), (79, 349), (59, 188), (68, 206), (49, 345), (118, 380),
|
||||||
|
(111, 368), (94, 468), (56, 379), (77, 133), (29, 399), (9, 363), (23, 36),
|
||||||
|
(116, 390), (119, 368), (87, 351), (123, 411), (24, 398), (34, 202), (28, 499),
|
||||||
|
(30, 83), (5, 178), (60, 343), (4, 245), (104, 280), (106, 446), (127, 403),
|
||||||
|
(44, 307), (68, 454), (57, 135);
|
||||||
|
select a+0 from t1 order by a;
|
||||||
|
select b+0 from t1 order by b;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
create table t1 (
|
||||||
|
dummyKey INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
a001 TINYINT,
|
||||||
|
a010 TINYINT,
|
||||||
|
a012 TINYINT,
|
||||||
|
a015 TINYINT,
|
||||||
|
a016 TINYINT,
|
||||||
|
a017 TINYINT,
|
||||||
|
a019 TINYINT,
|
||||||
|
a029 TINYINT,
|
||||||
|
a030 TINYINT,
|
||||||
|
a031 TINYINT,
|
||||||
|
a032 TINYINT,
|
||||||
|
a042 TINYINT,
|
||||||
|
a043 TINYINT,
|
||||||
|
a044 TINYINT,
|
||||||
|
a3001 TINYINT,
|
||||||
|
a3002 TINYINT,
|
||||||
|
a3003 TINYINT,
|
||||||
|
a3004 TINYINT,
|
||||||
|
a3005 TINYINT,
|
||||||
|
a3021 TINYINT,
|
||||||
|
a3022 TINYINT,
|
||||||
|
a BIT(6),
|
||||||
|
b BIT(6),
|
||||||
|
c BIT(6),
|
||||||
|
d TINYINT,
|
||||||
|
e TINYINT,
|
||||||
|
f TINYINT,
|
||||||
|
g TINYINT,
|
||||||
|
h TINYINT,
|
||||||
|
i TINYINT,
|
||||||
|
j TINYINT,
|
||||||
|
k TINYINT,
|
||||||
|
l TINYINT,
|
||||||
|
m TINYINT,
|
||||||
|
n TINYINT,
|
||||||
|
o TINYINT,
|
||||||
|
a034 TINYINT,
|
||||||
|
PRIMARY KEY USING HASH (dummyKey) ) engine=archive;
|
||||||
|
INSERT INTO `t1` VALUES
|
||||||
|
(NULL,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'000001',b'111111',b'111110',4,5,5,5,5,5,5,5,5,5,3,2,1),
|
||||||
|
(NULL,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'000010',b'000000',b'111101',4,5,5,5,5,5,5,5,5,5,3,2,1),
|
||||||
|
(NULL,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'000100',b'001111',b'111011',4,5,5,5,5,5,5,5,5,5,3,2,1),
|
||||||
|
(NULL,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'001000',b'110000',b'110111',4,5,5,5,5,5,5,5,5,5,3,2,1),
|
||||||
|
(NULL,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'010000',b'100001',b'101111',4,5,5,5,5,5,5,5,5,5,3,2,1),
|
||||||
|
(NULL,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'100000',b'010010',b'011111',4,5,5,5,5,5,5,5,5,5,3,2,1),
|
||||||
|
(NULL,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'000000',b'001100',b'111111',4,5,5,5,5,5,5,5,5,5,3,2,1),
|
||||||
|
(NULL,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,b'111111',b'000000',b'000000',4,5,5,5,5,5,5,5,5,5,3,2,1);
|
||||||
|
--exec $MYSQL_DUMP --hex-blob --compact --order-by-primary --skip-extended-insert --no-create-info test t1
|
||||||
|
drop table t1;
|
@ -72,7 +72,7 @@ public:
|
|||||||
const char **bas_ext() const;
|
const char **bas_ext() const;
|
||||||
ulong table_flags() const
|
ulong table_flags() const
|
||||||
{
|
{
|
||||||
return (HA_REC_NOT_IN_SEQ | HA_NOT_EXACT_COUNT |
|
return (HA_REC_NOT_IN_SEQ | HA_CAN_BIT_FIELD
|
||||||
HA_FILE_BASED | HA_CAN_INSERT_DELAYED | HA_CAN_GEOMETRY);
|
HA_FILE_BASED | HA_CAN_INSERT_DELAYED | HA_CAN_GEOMETRY);
|
||||||
}
|
}
|
||||||
ulong index_flags(uint idx, uint part, bool all_parts) const
|
ulong index_flags(uint idx, uint part, bool all_parts) const
|
||||||
|
Reference in New Issue
Block a user