mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-21 15:12:02 +00:00
dbms: fixed error with DROP COLUMN in replicated tables [#METR-14848].
This commit is contained in:
parent
bd51359819
commit
22b9ecfdea
@ -594,6 +594,10 @@ public:
|
||||
/// Если не был вызван commit(), удаляет временные файлы, отменяя ALTER куска.
|
||||
~AlterDataPartTransaction();
|
||||
|
||||
/// Посмотреть изменения перед коммитом.
|
||||
const NamesAndTypesList & getNewColumns() const { return new_columns; }
|
||||
const DataPart::Checksums & getNewChecksums() const { return new_checksums; }
|
||||
|
||||
private:
|
||||
friend class MergeTreeData;
|
||||
|
||||
|
@ -1571,8 +1571,10 @@ void StorageReplicatedMergeTree::alterThread()
|
||||
|
||||
/// Обновим метаданные куска в ZooKeeper.
|
||||
zkutil::Ops ops;
|
||||
ops.push_back(new zkutil::Op::SetData(replica_path + "/parts/" + part->name + "/columns", part->columns.toString(), -1));
|
||||
ops.push_back(new zkutil::Op::SetData(replica_path + "/parts/" + part->name + "/checksums", part->checksums.toString(), -1));
|
||||
ops.push_back(new zkutil::Op::SetData(
|
||||
replica_path + "/parts/" + part->name + "/columns", transaction->getNewColumns().toString(), -1));
|
||||
ops.push_back(new zkutil::Op::SetData(
|
||||
replica_path + "/parts/" + part->name + "/checksums", transaction->getNewChecksums().toString(), -1));
|
||||
zookeeper->multi(ops);
|
||||
|
||||
/// Применим изменения файлов.
|
||||
|
@ -0,0 +1,13 @@
|
||||
columns format version: 1
|
||||
1 columns:
|
||||
`d` Date
|
||||
|
||||
2014-01-01
|
||||
2014-01-01 0
|
||||
2014-02-01 1
|
||||
2014-01-01
|
||||
2014-02-01
|
||||
columns format version: 1
|
||||
1 columns:
|
||||
`d` Date
|
||||
|
@ -0,0 +1,27 @@
|
||||
DROP TABLE IF EXISTS test.alter;
|
||||
CREATE TABLE test.alter (d Date, x UInt8) ENGINE = ReplicatedMergeTree('/clickhouse/tables/test/alter', 'r1', d, (d), 8192);
|
||||
|
||||
INSERT INTO test.alter VALUES ('2014-01-01', 1);
|
||||
ALTER TABLE test.alter DROP COLUMN x;
|
||||
|
||||
SELECT value FROM system.zookeeper WHERE path = '/clickhouse/tables/test/alter/replicas/r1/parts/20140101_20140101_200_200_0' AND name = 'columns' FORMAT TabSeparatedRaw;
|
||||
|
||||
DROP TABLE test.alter;
|
||||
|
||||
|
||||
CREATE TABLE test.alter (d Date) ENGINE = ReplicatedMergeTree('/clickhouse/tables/test/alter', 'r1', d, (d), 8192);
|
||||
|
||||
INSERT INTO test.alter VALUES ('2014-01-01');
|
||||
SELECT * FROM test.alter ORDER BY d;
|
||||
|
||||
ALTER TABLE test.alter ADD COLUMN x UInt8;
|
||||
|
||||
INSERT INTO test.alter VALUES ('2014-02-01', 1);
|
||||
SELECT * FROM test.alter ORDER BY d;
|
||||
|
||||
ALTER TABLE test.alter DROP COLUMN x;
|
||||
SELECT * FROM test.alter ORDER BY d;
|
||||
|
||||
SELECT value FROM system.zookeeper WHERE path = '/clickhouse/tables/test/alter/replicas/r1/parts/20140201_20140201_200_200_0' AND name = 'columns' FORMAT TabSeparatedRaw;
|
||||
|
||||
DROP TABLE test.alter;
|
Loading…
Reference in New Issue
Block a user