mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
ndb - bug#16796
storage/ndb/src/ndbapi/NdbBlob.cpp: set part id from main table op (may not be complete fix) storage/ndb/src/ndbapi/NdbOperationSearch.cpp: log partition id set/get
This commit is contained in:
104
mysql-test/r/ndb_blob_partition.result
Normal file
104
mysql-test/r/ndb_blob_partition.result
Normal file
@ -0,0 +1,104 @@
|
||||
drop table if exists t1;
|
||||
create table t1 (
|
||||
a mediumint not null,
|
||||
b text not null,
|
||||
c int not null,
|
||||
d longblob,
|
||||
primary key using hash (a,c),
|
||||
unique key (c)
|
||||
)
|
||||
engine=ndb
|
||||
partition by range (c)
|
||||
partitions 3
|
||||
( partition p1 values less than (200),
|
||||
partition p2 values less than (300),
|
||||
partition p3 values less than (400));
|
||||
insert into t1 values (1, @v1, 101, @v2);
|
||||
insert into t1 values (1, @v2, 102, @v3);
|
||||
insert into t1 values (1, @v3, 103, @v4);
|
||||
insert into t1 values (2, @v4, 201, @v5);
|
||||
insert into t1 values (2, @v5, 202, @v6);
|
||||
insert into t1 values (2, @v6, 203, @v7);
|
||||
insert into t1 values (3, @v7, 301, @v8);
|
||||
insert into t1 values (3, @v8, 302, @v9);
|
||||
insert into t1 values (3, @v9, 303, @v1);
|
||||
select a, sha1(b), c, sha1(d) from t1 order by a;
|
||||
a sha1(b) c sha1(d)
|
||||
1 1d42dd9090cf78314a06665d4ea938c35cc760f4 101 10d3c783026b310218d10b7188da96a2401648c6
|
||||
1 10d3c783026b310218d10b7188da96a2401648c6 102 a33549d9844092289a58ac348dd59f09fc28406a
|
||||
1 a33549d9844092289a58ac348dd59f09fc28406a 103 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c
|
||||
2 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c 201 70fc9a7d08beebc522258bfb02000a30c77a8f1d
|
||||
2 70fc9a7d08beebc522258bfb02000a30c77a8f1d 202 090565c580809efed3d369481a4bbb168b20713e
|
||||
2 090565c580809efed3d369481a4bbb168b20713e 203 1e0070bec426871a46291de27b9bd6e4255ab4e5
|
||||
3 1e0070bec426871a46291de27b9bd6e4255ab4e5 301 acbaba01bc2e682f015f40e79d9cbe475db3002e
|
||||
3 acbaba01bc2e682f015f40e79d9cbe475db3002e 302 9ee30d99162574f79c66ae95cdf132dcf9cbc259
|
||||
3 9ee30d99162574f79c66ae95cdf132dcf9cbc259 303 1d42dd9090cf78314a06665d4ea938c35cc760f4
|
||||
select a, sha1(b), c, sha1(d) from t1 where a = 1 and c = 101;
|
||||
a sha1(b) c sha1(d)
|
||||
1 1d42dd9090cf78314a06665d4ea938c35cc760f4 101 10d3c783026b310218d10b7188da96a2401648c6
|
||||
select a, sha1(b), c, sha1(d) from t1 where a = 2 and c = 201;
|
||||
a sha1(b) c sha1(d)
|
||||
2 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c 201 70fc9a7d08beebc522258bfb02000a30c77a8f1d
|
||||
select a, sha1(b), c, sha1(d) from t1 where a = 3 and c = 301;
|
||||
a sha1(b) c sha1(d)
|
||||
3 1e0070bec426871a46291de27b9bd6e4255ab4e5 301 acbaba01bc2e682f015f40e79d9cbe475db3002e
|
||||
update t1 set b = @v3, d = @v4 where a = 1 and c = 102;
|
||||
update t1 set b = @v6, d = @v7 where a = 2 and c = 202;
|
||||
update t1 set b = @v9, d = @v1 where a = 3 and c = 302;
|
||||
select a, sha1(b), c, sha1(d) from t1 order by a;
|
||||
a sha1(b) c sha1(d)
|
||||
1 1d42dd9090cf78314a06665d4ea938c35cc760f4 101 10d3c783026b310218d10b7188da96a2401648c6
|
||||
1 a33549d9844092289a58ac348dd59f09fc28406a 102 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c
|
||||
1 a33549d9844092289a58ac348dd59f09fc28406a 103 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c
|
||||
2 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c 201 70fc9a7d08beebc522258bfb02000a30c77a8f1d
|
||||
2 090565c580809efed3d369481a4bbb168b20713e 202 1e0070bec426871a46291de27b9bd6e4255ab4e5
|
||||
2 090565c580809efed3d369481a4bbb168b20713e 203 1e0070bec426871a46291de27b9bd6e4255ab4e5
|
||||
3 1e0070bec426871a46291de27b9bd6e4255ab4e5 301 acbaba01bc2e682f015f40e79d9cbe475db3002e
|
||||
3 9ee30d99162574f79c66ae95cdf132dcf9cbc259 302 1d42dd9090cf78314a06665d4ea938c35cc760f4
|
||||
3 9ee30d99162574f79c66ae95cdf132dcf9cbc259 303 1d42dd9090cf78314a06665d4ea938c35cc760f4
|
||||
update t1 set b = @v4, d = @v5 where c = 103;
|
||||
update t1 set b = @v7, d = @v8 where c = 203;
|
||||
update t1 set b = @v1, d = @v2 where c = 303;
|
||||
select a, sha1(b), c, sha1(d) from t1 order by a;
|
||||
a sha1(b) c sha1(d)
|
||||
1 1d42dd9090cf78314a06665d4ea938c35cc760f4 101 10d3c783026b310218d10b7188da96a2401648c6
|
||||
1 a33549d9844092289a58ac348dd59f09fc28406a 102 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c
|
||||
1 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c 103 70fc9a7d08beebc522258bfb02000a30c77a8f1d
|
||||
2 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c 201 70fc9a7d08beebc522258bfb02000a30c77a8f1d
|
||||
2 090565c580809efed3d369481a4bbb168b20713e 202 1e0070bec426871a46291de27b9bd6e4255ab4e5
|
||||
2 1e0070bec426871a46291de27b9bd6e4255ab4e5 203 acbaba01bc2e682f015f40e79d9cbe475db3002e
|
||||
3 1e0070bec426871a46291de27b9bd6e4255ab4e5 301 acbaba01bc2e682f015f40e79d9cbe475db3002e
|
||||
3 9ee30d99162574f79c66ae95cdf132dcf9cbc259 302 1d42dd9090cf78314a06665d4ea938c35cc760f4
|
||||
3 1d42dd9090cf78314a06665d4ea938c35cc760f4 303 10d3c783026b310218d10b7188da96a2401648c6
|
||||
update t1 set b = @v5, d = @v6;
|
||||
select a, sha1(b), c, sha1(d) from t1 order by a;
|
||||
a sha1(b) c sha1(d)
|
||||
1 70fc9a7d08beebc522258bfb02000a30c77a8f1d 101 090565c580809efed3d369481a4bbb168b20713e
|
||||
1 70fc9a7d08beebc522258bfb02000a30c77a8f1d 102 090565c580809efed3d369481a4bbb168b20713e
|
||||
1 70fc9a7d08beebc522258bfb02000a30c77a8f1d 103 090565c580809efed3d369481a4bbb168b20713e
|
||||
2 70fc9a7d08beebc522258bfb02000a30c77a8f1d 201 090565c580809efed3d369481a4bbb168b20713e
|
||||
2 70fc9a7d08beebc522258bfb02000a30c77a8f1d 202 090565c580809efed3d369481a4bbb168b20713e
|
||||
2 70fc9a7d08beebc522258bfb02000a30c77a8f1d 203 090565c580809efed3d369481a4bbb168b20713e
|
||||
3 70fc9a7d08beebc522258bfb02000a30c77a8f1d 301 090565c580809efed3d369481a4bbb168b20713e
|
||||
3 70fc9a7d08beebc522258bfb02000a30c77a8f1d 302 090565c580809efed3d369481a4bbb168b20713e
|
||||
3 70fc9a7d08beebc522258bfb02000a30c77a8f1d 303 090565c580809efed3d369481a4bbb168b20713e
|
||||
update t1 set b = @v1, d = @v2 where 100 < c and c < 200;
|
||||
update t1 set b = @v4, d = @v5 where 200 < c and c < 300;
|
||||
update t1 set b = @v7, d = @v8 where 300 < c and c < 400;
|
||||
select a, sha1(b), c, sha1(d) from t1 order by a;
|
||||
a sha1(b) c sha1(d)
|
||||
1 1d42dd9090cf78314a06665d4ea938c35cc760f4 101 10d3c783026b310218d10b7188da96a2401648c6
|
||||
1 1d42dd9090cf78314a06665d4ea938c35cc760f4 102 10d3c783026b310218d10b7188da96a2401648c6
|
||||
1 1d42dd9090cf78314a06665d4ea938c35cc760f4 103 10d3c783026b310218d10b7188da96a2401648c6
|
||||
2 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c 201 70fc9a7d08beebc522258bfb02000a30c77a8f1d
|
||||
2 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c 202 70fc9a7d08beebc522258bfb02000a30c77a8f1d
|
||||
2 daa61c6de36a0526f0d47dc29d6b9de7e6d2630c 203 70fc9a7d08beebc522258bfb02000a30c77a8f1d
|
||||
3 1e0070bec426871a46291de27b9bd6e4255ab4e5 301 acbaba01bc2e682f015f40e79d9cbe475db3002e
|
||||
3 1e0070bec426871a46291de27b9bd6e4255ab4e5 302 acbaba01bc2e682f015f40e79d9cbe475db3002e
|
||||
3 1e0070bec426871a46291de27b9bd6e4255ab4e5 303 acbaba01bc2e682f015f40e79d9cbe475db3002e
|
||||
delete from t1 where a = 1 and c = 101;
|
||||
delete from t1 where c = 102;
|
||||
delete from t1;
|
||||
select a, sha1(b), c, sha1(d) from t1 order by a;
|
||||
a sha1(b) c sha1(d)
|
||||
drop table t1;
|
93
mysql-test/t/ndb_blob_partition.test
Normal file
93
mysql-test/t/ndb_blob_partition.test
Normal file
@ -0,0 +1,93 @@
|
||||
--source include/have_ndb.inc
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Minimal NDB blobs test with range partitions.
|
||||
#
|
||||
|
||||
create table t1 (
|
||||
a mediumint not null,
|
||||
b text not null,
|
||||
c int not null,
|
||||
d longblob,
|
||||
primary key using hash (a,c),
|
||||
unique key (c)
|
||||
)
|
||||
engine=ndb
|
||||
partition by range (c)
|
||||
partitions 3
|
||||
( partition p1 values less than (200),
|
||||
partition p2 values less than (300),
|
||||
partition p3 values less than (400));
|
||||
|
||||
--disable_query_log
|
||||
sleep 1;
|
||||
|
||||
# length 61
|
||||
set @s0 = 'rggurloniukyehuxdbfkkyzlceixzrehqhvxvxbpwizzvjzpucqmzrhzxzfau';
|
||||
set @s1 = 'ykyymbzqgqlcjhlhmyqelfoaaohvtbekvifukdtnvcrrjveevfakxarxexomz';
|
||||
set @s2 = 'dbnfqyzgtqxalcrwtfsqabknvtfcbpoonxsjiqvmhnfikxxhcgoexlkoezvah';
|
||||
|
||||
set @v1 = repeat(@s0, 100); -- 1d42dd9090cf78314a06665d4ea938c35cc760f4
|
||||
set @v2 = repeat(@s1, 200); -- 10d3c783026b310218d10b7188da96a2401648c6
|
||||
set @v3 = repeat(@s2, 300); -- a33549d9844092289a58ac348dd59f09fc28406a
|
||||
set @v4 = repeat(@s0, 400); -- daa61c6de36a0526f0d47dc29d6b9de7e6d2630c
|
||||
set @v5 = repeat(@s1, 500); -- 70fc9a7d08beebc522258bfb02000a30c77a8f1d
|
||||
set @v6 = repeat(@s2, 600); -- 090565c580809efed3d369481a4bbb168b20713e
|
||||
set @v7 = repeat(@s0, 700); -- 1e0070bec426871a46291de27b9bd6e4255ab4e5
|
||||
set @v8 = repeat(@s1, 800); -- acbaba01bc2e682f015f40e79d9cbe475db3002e
|
||||
set @v9 = repeat(@s2, 900); -- 9ee30d99162574f79c66ae95cdf132dcf9cbc259
|
||||
--enable_query_log
|
||||
|
||||
# -- insert --
|
||||
insert into t1 values (1, @v1, 101, @v2);
|
||||
insert into t1 values (1, @v2, 102, @v3);
|
||||
insert into t1 values (1, @v3, 103, @v4);
|
||||
insert into t1 values (2, @v4, 201, @v5);
|
||||
insert into t1 values (2, @v5, 202, @v6);
|
||||
insert into t1 values (2, @v6, 203, @v7);
|
||||
insert into t1 values (3, @v7, 301, @v8);
|
||||
insert into t1 values (3, @v8, 302, @v9);
|
||||
insert into t1 values (3, @v9, 303, @v1);
|
||||
select a, sha1(b), c, sha1(d) from t1 order by a;
|
||||
|
||||
# -- pk read --
|
||||
select a, sha1(b), c, sha1(d) from t1 where a = 1 and c = 101;
|
||||
select a, sha1(b), c, sha1(d) from t1 where a = 2 and c = 201;
|
||||
select a, sha1(b), c, sha1(d) from t1 where a = 3 and c = 301;
|
||||
|
||||
# -- pk update --
|
||||
update t1 set b = @v3, d = @v4 where a = 1 and c = 102;
|
||||
update t1 set b = @v6, d = @v7 where a = 2 and c = 202;
|
||||
update t1 set b = @v9, d = @v1 where a = 3 and c = 302;
|
||||
select a, sha1(b), c, sha1(d) from t1 order by a;
|
||||
|
||||
# -- hash index update --
|
||||
update t1 set b = @v4, d = @v5 where c = 103;
|
||||
update t1 set b = @v7, d = @v8 where c = 203;
|
||||
update t1 set b = @v1, d = @v2 where c = 303;
|
||||
select a, sha1(b), c, sha1(d) from t1 order by a;
|
||||
|
||||
# -- full scan update --
|
||||
update t1 set b = @v5, d = @v6;
|
||||
select a, sha1(b), c, sha1(d) from t1 order by a;
|
||||
|
||||
# -- range scan update
|
||||
update t1 set b = @v1, d = @v2 where 100 < c and c < 200;
|
||||
update t1 set b = @v4, d = @v5 where 200 < c and c < 300;
|
||||
update t1 set b = @v7, d = @v8 where 300 < c and c < 400;
|
||||
select a, sha1(b), c, sha1(d) from t1 order by a;
|
||||
|
||||
# -- delete --
|
||||
delete from t1 where a = 1 and c = 101;
|
||||
delete from t1 where c = 102;
|
||||
# delete from t1 where c < 300; # XXX coredump
|
||||
delete from t1;
|
||||
select a, sha1(b), c, sha1(d) from t1 order by a;
|
||||
|
||||
# -- clean up --
|
||||
drop table t1;
|
@ -535,6 +535,8 @@ NdbBlob::setTableKeyValue(NdbOperation* anOp)
|
||||
pos += (len + 3) / 4;
|
||||
}
|
||||
}
|
||||
if (theNdbOp->theDistrKeyIndicator_)
|
||||
anOp->setPartitionId(theNdbOp->getPartitionId());
|
||||
assert(pos == theKeyBuf.size / 4);
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
@ -640,10 +640,14 @@ NdbOperation::setPartitionId(Uint32 value)
|
||||
{
|
||||
theDistributionKey = value;
|
||||
theDistrKeyIndicator_ = 1;
|
||||
DBUG_PRINT("info", ("NdbOperation::setPartitionId: %u",
|
||||
theDistributionKey));
|
||||
}
|
||||
|
||||
Uint32
|
||||
NdbOperation::getPartitionId() const
|
||||
{
|
||||
DBUG_PRINT("info", ("NdbOperation::getPartitionId: %u ind=%d",
|
||||
theDistributionKey, theDistrKeyIndicator_));
|
||||
return theDistributionKey;
|
||||
}
|
||||
|
Reference in New Issue
Block a user