diff --git a/dbms/include/DB/Functions/IFunction.h b/dbms/include/DB/Functions/IFunction.h index b7e7ac278f5..24231264823 100644 --- a/dbms/include/DB/Functions/IFunction.h +++ b/dbms/include/DB/Functions/IFunction.h @@ -51,9 +51,10 @@ public: * Для неконстантных столбцов arguments[i].column=NULL. * Осмысленные типы элементов в out_prerequisites: APPLY_FUNCTION, ADD_COLUMN. */ - virtual void getReturnTypeAndPrerequisites(const ColumnsWithNameAndType & arguments, - DataTypePtr & out_return_type, - ExpressionActions::Actions & out_prerequisites) + virtual void getReturnTypeAndPrerequisites( + const ColumnsWithNameAndType & arguments, + DataTypePtr & out_return_type, + ExpressionActions::Actions & out_prerequisites) { DataTypes types(arguments.size()); for (size_t i = 0; i < arguments.size(); ++i) @@ -81,6 +82,8 @@ public: { execute(block, arguments, result); } + + virtual ~IFunction() {} }; diff --git a/dbms/include/DB/TableFunctions/ITableFunction.h b/dbms/include/DB/TableFunctions/ITableFunction.h index 03b86af0e88..0fb376676be 100644 --- a/dbms/include/DB/TableFunctions/ITableFunction.h +++ b/dbms/include/DB/TableFunctions/ITableFunction.h @@ -28,6 +28,8 @@ public: /// Создать storage в соответствии с запросом virtual StoragePtr execute(ASTPtr ast_function, Context & context) = 0; + + virtual ~ITableFunction() {}; }; typedef SharedPtr TableFunctionPtr; diff --git a/dbms/include/DB/TableFunctions/TableFunctionRemote.h b/dbms/include/DB/TableFunctions/TableFunctionRemote.h index 8bcdca35d9b..5572cd7b65a 100644 --- a/dbms/include/DB/TableFunctions/TableFunctionRemote.h +++ b/dbms/include/DB/TableFunctions/TableFunctionRemote.h @@ -13,11 +13,11 @@ namespace DB * remote('address', db, table) - создаёт временный StorageDistributed. * Чтобы получить структуру таблицы, делается запрос DESC TABLE на удалённый сервер. * Например: - * SELECT count() FROM remote('example01-01-1', merge, hits) - пойти на example01-01-1, в БД merge, таблицу hits. * + * SELECT count() FROM remote('example01-01-1', merge, hits) - пойти на example01-01-1, в БД merge, таблицу hits. + * В качестве имени хоста может быть указано также выражение, генерирующее множество шардов и реплик - см. ниже. */ -/// Пока не реализована. -class TableFunctionRemote: public ITableFunction +class TableFunctionRemote : public ITableFunction { public: /// Максимальное количество различных шардов и максимальное количество реплик одного шарда diff --git a/dbms/src/Storages/StorageFactory.cpp b/dbms/src/Storages/StorageFactory.cpp index 67115c1d1b6..42077e75b9c 100644 --- a/dbms/src/Storages/StorageFactory.cpp +++ b/dbms/src/Storages/StorageFactory.cpp @@ -143,7 +143,7 @@ StoragePtr StorageFactory::get( " - name of configuration section with list of remote servers, name of remote database, name of remote table[, sign column name].", ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH); - String cluster_name = dynamic_cast(*args[0]).name; + String cluster_name = dynamic_cast(*args[0]).name; String remote_database = dynamic_cast(*args[1]).name; String remote_table = dynamic_cast(*args[2]).name; String sign_column_name = args.size() == 4 ? dynamic_cast(*args[3]).name : "";