mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-10 09:32:06 +00:00
Merge
This commit is contained in:
parent
7b11fc4f6c
commit
5e0e9bbc00
@ -157,6 +157,8 @@ void StorageReplicatedMergeTree::createTableIfNotExists()
|
||||
|
||||
LOG_DEBUG(log, "Creating table " << zookeeper_path);
|
||||
|
||||
zookeeper->createAncestors(zookeeper_path);
|
||||
|
||||
/// Запишем метаданные таблицы, чтобы реплики могли сверять с ними параметры таблицы.
|
||||
std::stringstream metadata;
|
||||
metadata << "metadata format version: 1" << std::endl;
|
||||
|
@ -84,6 +84,10 @@ public:
|
||||
*/
|
||||
void createIfNotExists(const std::string & path, const std::string & data);
|
||||
|
||||
/** Создает всех еще не существующих предков ноды, с пустыми данными. Саму указанную ноду не создает.
|
||||
*/
|
||||
void createAncestors(const std::string & path);
|
||||
|
||||
/** Удалить ноду, если ее версия равна version (если -1, подойдет любая версия).
|
||||
*/
|
||||
void remove(const std::string & path, int32_t version = -1);
|
||||
|
@ -236,6 +236,19 @@ void ZooKeeper::createIfNotExists(const std::string & path, const std::string &
|
||||
throw KeeperException(code, path);
|
||||
}
|
||||
|
||||
void ZooKeeper::createAncestors(const std::string & path)
|
||||
{
|
||||
size_t pos = 1;
|
||||
while (true)
|
||||
{
|
||||
pos = path.find('/', pos);
|
||||
if (pos == std::string::npos)
|
||||
break;
|
||||
createIfNotExists(path.substr(0, pos), "");
|
||||
++pos;
|
||||
}
|
||||
}
|
||||
|
||||
int32_t ZooKeeper::removeImpl(const std::string & path, int32_t version)
|
||||
{
|
||||
int32_t code = zoo_delete(impl, path.c_str(), version);
|
||||
|
Loading…
Reference in New Issue
Block a user