| 310 | } |
| 311 | |
| 312 | bool createView( |
| 313 | ContextPtr global_context, |
| 314 | const String & database, |
| 315 | const String & table, |
| 316 | Poco::Logger * log) |
| 317 | { |
| 318 | bool ret = true; |
| 319 | |
| 320 | try |
| 321 | { |
| 322 | auto query_context = Context::createCopy(global_context); |
| 323 | query_context->makeSessionContext(); |
| 324 | query_context->makeQueryContext(); |
| 325 | |
| 326 | String create_view_query = "CREATE VIEW IF NOT EXISTS system." + table + " AS SELECT * from " + database + "." + table; |
| 327 | ParserCreateQuery create_parser; |
| 328 | ASTPtr create_view_ast = parseQuery(create_parser, create_view_query, 0, DBMS_DEFAULT_MAX_PARSER_DEPTH); |
| 329 | InterpreterCreateQuery create_interpreter(create_view_ast, query_context); |
| 330 | create_interpreter.execute(); |
| 331 | LOG_INFO(log, "Create view with query {} successful!", create_view_query); |
| 332 | } |
| 333 | catch (Exception & e) |
| 334 | { |
| 335 | LOG_DEBUG(log, "Failed to create view for {}.{}, met exception {}", database, table, e.message()); |
| 336 | ret = false; |
| 337 | } |
| 338 | return ret; |
| 339 | } |
| 340 | |
| 341 | }/// end namespace |
no test coverage detected