| 140 | } |
| 141 | |
| 142 | void 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 | |
| 186 | String DatabaseOrdinary::getConvertToReplicatedFlagPath(const String & name, bool tableStarted) |
| 187 | { |
nothing calls this directly
no test coverage detected