MCPcopy Create free account
hub / github.com/ClickHouse/ClickHouse / setMergeTreeEngine

Method setMergeTreeEngine

src/Databases/DatabaseOrdinary.cpp:142–184  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

140}
141
142void DatabaseOrdinary::setMergeTreeEngine(ASTCreateQuery & create_query, ContextPtr local_context, bool replicated)
143{
144 auto * storage = create_query.storage;
145 auto args = make_intrusive<ASTExpressionList>();
146 auto engine = make_intrusive<ASTFunction>();
147 String engine_name;
148
149 if (replicated)
150 {
151 const auto & server_settings = local_context->getServerSettings();
152 String replica_path = server_settings[ServerSetting::default_replica_path];
153 String replica_name = server_settings[ServerSetting::default_replica_name];
154
155 args->children.push_back(make_intrusive<ASTLiteral>(replica_path));
156 args->children.push_back(make_intrusive<ASTLiteral>(replica_name));
157
158 /// Add old engine's arguments
159 if (storage->engine->arguments)
160 {
161 for (size_t i = 0; i < storage->engine->arguments->children.size(); ++i)
162 args->children.push_back(storage->engine->arguments->children[i]->clone());
163 }
164
165 engine_name = "Replicated" + storage->engine->name;
166 }
167 else
168 {
169 /// Add old engine's arguments without first two
170 if (storage->engine->arguments)
171 {
172 for (size_t i = 2; i < storage->engine->arguments->children.size(); ++i)
173 args->children.push_back(storage->engine->arguments->children[i]->clone());
174 }
175
176 engine_name = storage->engine->name.substr(strlen("Replicated"));
177 }
178
179 /// Set new engine for the old query
180 engine->name = engine_name;
181 engine->arguments = args;
182 engine->setNoEmptyArgs(true);
183 create_query.storage->set(create_query.storage->engine, engine->clone());
184}
185
186String DatabaseOrdinary::getConvertToReplicatedFlagPath(const String & name, bool tableStarted)
187{

Callers

nothing calls this directly

Calls 5

setNoEmptyArgsMethod · 0.80
push_backMethod · 0.45
sizeMethod · 0.45
cloneMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected