dbms: Fixed leak [#METR-9750]. Enabled warning, fixed potential errors.

This commit is contained in:
Alexey Milovidov 2014-02-23 04:37:25 +04:00
parent 7ff4b92ee8
commit 05615da00a
4 changed files with 12 additions and 7 deletions

View File

@ -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() {}
};

View File

@ -28,6 +28,8 @@ public:
/// Создать storage в соответствии с запросом
virtual StoragePtr execute(ASTPtr ast_function, Context & context) = 0;
virtual ~ITableFunction() {};
};
typedef SharedPtr<ITableFunction> TableFunctionPtr;

View File

@ -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:
/// Максимальное количество различных шардов и максимальное количество реплик одного шарда

View File

@ -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<ASTIdentifier &>(*args[0]).name;
String cluster_name = dynamic_cast<ASTIdentifier &>(*args[0]).name;
String remote_database = dynamic_cast<ASTIdentifier &>(*args[1]).name;
String remote_table = dynamic_cast<ASTIdentifier &>(*args[2]).name;
String sign_column_name = args.size() == 4 ? dynamic_cast<ASTIdentifier &>(*args[3]).name : "";