| 848 | } |
| 849 | |
| 850 | ASTPtr DatabaseOnDisk::getCreateQueryFromStorage(const String & table_name, const StoragePtr & storage, bool throw_on_error) const |
| 851 | { |
| 852 | auto metadata_ptr = storage->getInMemoryMetadataPtr(getContext(), false); |
| 853 | if (metadata_ptr == nullptr) |
| 854 | { |
| 855 | if (throw_on_error) |
| 856 | throw Exception(ErrorCodes::CANNOT_GET_CREATE_TABLE_QUERY, "Cannot get metadata of {}.{}", |
| 857 | backQuote(getDatabaseName()), backQuote(table_name)); |
| 858 | return nullptr; |
| 859 | } |
| 860 | |
| 861 | /// setup create table query storage info. |
| 862 | auto ast_engine = make_intrusive<ASTFunction>(); |
| 863 | ast_engine->name = storage->getName(); |
| 864 | ast_engine->setNoEmptyArgs(true); |
| 865 | auto ast_storage = make_intrusive<ASTStorage>(); |
| 866 | ast_storage->set(ast_storage->engine, ast_engine); |
| 867 | |
| 868 | const Settings & settings = getContext()->getSettingsRef(); |
| 869 | auto create_table_query = DB::getCreateQueryFromStorage( |
| 870 | storage, |
| 871 | ast_storage, |
| 872 | false, |
| 873 | static_cast<unsigned>(settings[Setting::max_parser_depth]), |
| 874 | static_cast<unsigned>(settings[Setting::max_parser_backtracks]), |
| 875 | throw_on_error, |
| 876 | getContext()); |
| 877 | |
| 878 | create_table_query->set(create_table_query->as<ASTCreateQuery>()->comment, |
| 879 | make_intrusive<ASTLiteral>(metadata_ptr->comment)); |
| 880 | |
| 881 | return create_table_query; |
| 882 | } |
| 883 | |
| 884 | void DatabaseOnDisk::modifySettingsMetadata(const SettingsChanges & settings_changes, ContextPtr) |
| 885 | { |
nothing calls this directly
no test coverage detected