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

Method parseArguments

src/TableFunctions/TableFunctionMySQL.cpp:69–97  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

67};
68
69void TableFunctionMySQL::parseArguments(const ASTPtr & ast_function, ContextPtr context)
70{
71 const auto & args_func = ast_function->as<ASTFunction &>();
72
73 if (!args_func.arguments)
74 throw Exception(ErrorCodes::LOGICAL_ERROR, "Table function 'mysql' must have arguments.");
75
76 auto & args = args_func.arguments->children;
77
78 MySQLSettings mysql_settings;
79
80 const auto & settings = context->getSettingsRef();
81 mysql_settings[MySQLSetting::connect_timeout] = settings[Setting::external_storage_connect_timeout_sec];
82 mysql_settings[MySQLSetting::read_write_timeout] = settings[Setting::external_storage_rw_timeout_sec];
83
84 for (auto it = args.begin(); it != args.end(); ++it)
85 {
86 const ASTSetQuery * settings_ast = (*it)->as<ASTSetQuery>();
87 if (settings_ast)
88 {
89 mysql_settings.loadFromQuery(*settings_ast);
90 args.erase(it);
91 break;
92 }
93 }
94
95 configuration = StorageMySQL::getConfiguration(args, context, mysql_settings);
96 pool.emplace(createMySQLPoolWithFailover(*configuration, mysql_settings));
97}
98
99ColumnsDescription TableFunctionMySQL::getActualTableStructure(ContextPtr context, bool /*is_insert_query*/) const
100{

Callers

nothing calls this directly

Calls 7

ExceptionClass · 0.50
beginMethod · 0.45
endMethod · 0.45
loadFromQueryMethod · 0.45
eraseMethod · 0.45
emplaceMethod · 0.45

Tested by

no test coverage detected