**Use case**

If FixedString is used with more than 256 bytes in size, it is suspicious and most likely indicates misusage.
Forbid this by default and add a setting to override it; ATTACH queries should allow creating tables nevertheless.

See also: `allow_suspicious_low_cardinality_types`.

{
    if (local_context->getSettingsRef().default_table_engine.value == DefaultTableEngine::None)
        throw Exception(ErrorCodes::ENGINE_REQUIRED, "Table engine is not specified in CREATE query");
    auto engine_ast = std::make_shared<ASTFunction>();
    auto default_table_engine = local_context->getSettingsRef().default_table_engine.value;
    engine_ast->name = getTableEngineName(default_table_engine);
    engine_ast->no_empty_args = true;
    storage.set(storage.engine, engine_ast);
}
void InterpreterCreateQuery::setEngine(ASTCreateQuery & create) const
{
    if (create.as_table_function)
        return;
    if (create.is_dictionary || create.is_ordinary_view || create.is_live_view || create.is_window_view)
        return;
    if (create.is_materialized_view && create.to_table_id)
        return;
    if (create.temporary)
    {
        if (create.storage && create.storage->engine && create.storage->engine->name != "Memory")
            throw Exception(ErrorCodes::INCORRECT_QUERY, "Temporary tables can only be created with ENGINE = Memory, not {}",
                create.storage->engine->name);