This commit is contained in:
kssenii 2021-05-22 16:19:56 +00:00
parent b72f6ea78e
commit 5606e248a7
3 changed files with 26 additions and 12 deletions

View File

@ -129,27 +129,18 @@ void MergeTreePartition::load(const MergeTreeData & storage, const DiskPtr & dis
if (!metadata_snapshot->hasPartitionKey()) if (!metadata_snapshot->hasPartitionKey())
return; return;
const auto & partition_key_sample = metadata_snapshot->getPartitionKey().sample_block; const auto & partition_key_sample = adjustPartitionKey(metadata_snapshot, storage.getContext()).sample_block;
auto partition_file_path = part_path + "partition.dat"; auto partition_file_path = part_path + "partition.dat";
auto file = openForReading(disk, partition_file_path); auto file = openForReading(disk, partition_file_path);
value.resize(partition_key_sample.columns()); value.resize(partition_key_sample.columns());
for (size_t i = 0; i < partition_key_sample.columns(); ++i) for (size_t i = 0; i < partition_key_sample.columns(); ++i)
{ partition_key_sample.getByPosition(i).type->getDefaultSerialization()->deserializeBinary(value[i], *file);
if (partition_key_sample.getByPosition(i).name.starts_with("modulo"))
{
SerializationNumber<UInt8>().deserializeBinary(value[i], *file);
}
else
{
partition_key_sample.getByPosition(i).type->getDefaultSerialization()->deserializeBinary(value[i], *file);
}
}
} }
void MergeTreePartition::store(const MergeTreeData & storage, const DiskPtr & disk, const String & part_path, MergeTreeDataPartChecksums & checksums) const void MergeTreePartition::store(const MergeTreeData & storage, const DiskPtr & disk, const String & part_path, MergeTreeDataPartChecksums & checksums) const
{ {
auto metadata_snapshot = storage.getInMemoryMetadataPtr(); auto metadata_snapshot = storage.getInMemoryMetadataPtr();
const auto & partition_key_sample = metadata_snapshot->getPartitionKey().sample_block; const auto & partition_key_sample = adjustPartitionKey(metadata_snapshot, storage.getContext()).sample_block;
store(partition_key_sample, disk, part_path, checksums); store(partition_key_sample, disk, part_path, checksums);
} }

View File

@ -84,6 +84,27 @@ recursive modulo partition key:
(58,8,29) (58,8,29)
(59,9,30) (59,9,30)
(60,0,30) (60,0,30)
After detach:
(-1,-1,0)
(-2,-2,-1)
(-3,-3,-2)
(-4,-4,-2)
(-5,-5,-2)
(-57,-7,-28)
(-58,-8,-29)
(-59,-9,-30)
(-60,0,-30)
(-61,-1,-30)
(0,0,0)
(0,0,0)
(1,1,0)
(2,2,1)
(3,3,2)
(4,4,2)
(57,7,28)
(58,8,29)
(59,9,30)
(60,0,30)
comparison: comparison:
0 -205 -5 -5 0 -205 -5 -5
1 -204 -4 -4 1 -204 -4 -4

View File

@ -32,6 +32,8 @@ INSERT INTO table3 SELECT number-205, number FROM numbers(400, 10);
SELECT partition as p FROM system.parts WHERE table='table3' ORDER BY p; SELECT partition as p FROM system.parts WHERE table='table3' ORDER BY p;
DETACH TABLE table3; DETACH TABLE table3;
ATTACH TABLE table3; ATTACH TABLE table3;
SELECT 'After detach:';
SELECT partition as p FROM system.parts WHERE table='table3' ORDER BY p;
SELECT 'comparison:'; SELECT 'comparison:';
SELECT v, v-205 as vv, modulo(vv, 200), moduloLegacy(vv, 200) FROM table1 ORDER BY v; SELECT v, v-205 as vv, modulo(vv, 200), moduloLegacy(vv, 200) FROM table1 ORDER BY v;