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

Function registerDatabaseHDFS

src/Databases/DatabaseHDFS.cpp:244–274  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

242
243void registerDatabaseHDFS(DatabaseFactory & factory);
244void registerDatabaseHDFS(DatabaseFactory & factory)
245{
246 auto create_fn = [](const DatabaseFactory::Arguments & args)
247 {
248 auto * engine_define = args.create_query.storage;
249 const ASTFunction * engine = engine_define->engine;
250 const String & engine_name = engine_define->engine->name;
251
252 /// If source_url is empty, then table name must contain full url
253 std::string source_url;
254
255 if (engine->arguments && !engine->arguments->children.empty())
256 {
257 if (engine->arguments->children.size() != 1)
258 throw Exception(ErrorCodes::BAD_ARGUMENTS, "HDFS database requires at most 1 argument: source_url");
259
260 const auto & arguments = engine->arguments->children;
261 source_url = safeGetLiteralValue<String>(arguments[0], engine_name);
262 }
263
264 return std::make_shared<DatabaseHDFS>(args.database_name, source_url, args.context);
265 };
266 factory.registerDatabase("HDFS", create_fn, {
267 .supports_arguments = true,
268 .is_external = true,
269 .source_access_type = AccessTypeObjects::Source::HDFS,
270 }, Documentation{
271 .description = "A read-only database that exposes files in HDFS as tables.",
272 .syntax = "ENGINE = HDFS([hdfs_host_and_root_path])",
273 .related = {"S3", "Filesystem"}});
274}
275} // DB
276
277#endif

Callers 1

registerDatabasesFunction · 0.85

Calls 4

registerDatabaseMethod · 0.80
ExceptionClass · 0.50
emptyMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected