From b205d51215e04756a8b3164bae1a1d6d6f07a148 Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Mon, 29 Oct 2012 06:19:49 +0000 Subject: [PATCH] dbms: fixed error with 'SELECT count() FROM t' query [#CONV-2944]. --- dbms/src/Interpreters/Expression.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/dbms/src/Interpreters/Expression.cpp b/dbms/src/Interpreters/Expression.cpp index 7b752c847b9..d6690725f39 100644 --- a/dbms/src/Interpreters/Expression.cpp +++ b/dbms/src/Interpreters/Expression.cpp @@ -269,7 +269,13 @@ void Expression::clearTemporariesImpl(ASTPtr ast, Block & block) if (need_columns.end() != need_columns.find(block.getByPosition(i).name)) cleared_block.insert(block.getByPosition(i)); - block = cleared_block; + /** Список нужных столбцов может оказаться пустым, например, в случае запроса SELECT count() FROM t. + * Но, при выполнении такого запроса, из таблицы считывается первый попавшийся столбец, + * чтобы узнать количество строк, и он нужен, хотя не виден в запросе. + * То есть, в таких случаях, удалять "ненужные" столбцы не нужно. + */ + if (cleared_block) + block = cleared_block; }