| 160 | } |
| 161 | |
| 162 | StorageID ExternalLoaderCnchCatalogRepository::parseStorageID(const std::string & loadable_definition_name, const Context* context) |
| 163 | { |
| 164 | constexpr size_t max_size = 10000; |
| 165 | constexpr unsigned long max_parser_depth = 10; |
| 166 | |
| 167 | Tokens tokens(loadable_definition_name.data(), loadable_definition_name.data() + loadable_definition_name.size(), max_size); |
| 168 | IParser::Pos pos(tokens, max_parser_depth); |
| 169 | Expected expected; |
| 170 | |
| 171 | ParserIdentifier name_p; |
| 172 | ParserToken s_dot(TokenType::Dot); |
| 173 | ASTPtr database; |
| 174 | ASTPtr table; |
| 175 | |
| 176 | if (!name_p.parse(pos, table, expected)) |
| 177 | throw Exception("Failed to parse table id: " + loadable_definition_name, ErrorCodes::LOGICAL_ERROR); |
| 178 | |
| 179 | if (!s_dot.ignore(pos, expected)) |
| 180 | throw Exception("Failed to parse table id: " + loadable_definition_name, ErrorCodes::LOGICAL_ERROR); |
| 181 | |
| 182 | database = table; |
| 183 | if (context) |
| 184 | tryRewriteCnchDatabaseName(database, context); |
| 185 | if (!name_p.parse(pos, table, expected)) |
| 186 | throw Exception("Failed to parse table id: " + loadable_definition_name, ErrorCodes::LOGICAL_ERROR); |
| 187 | |
| 188 | return StorageID{getIdentifierName(database), getIdentifierName(table)}; |
| 189 | } |
| 190 | |
| 191 | std::optional<UUID> ExternalLoaderCnchCatalogRepository::resolveDictionaryName(const std::string & name, const std::string & current_database_name, ContextPtr context) |
| 192 | { |
nothing calls this directly
no test coverage detected