From 25510e3d38e70f052d9f93474a358b9f7ca519d2 Mon Sep 17 00:00:00 2001 From: Nikolai Kochetov Date: Sat, 12 Oct 2019 13:06:07 +0300 Subject: [PATCH] Try to fix perftests. --- dbms/src/Interpreters/Join.cpp | 3 +++ dbms/src/Interpreters/Join.h | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/dbms/src/Interpreters/Join.cpp b/dbms/src/Interpreters/Join.cpp index d5381e1dc6d..bcebdaf0b36 100644 --- a/dbms/src/Interpreters/Join.cpp +++ b/dbms/src/Interpreters/Join.cpp @@ -466,6 +466,9 @@ bool Join::addJoinedBlock(const Block & block) size_t rows = block.rows(); + if (rows) + has_no_rows_in_maps = false; + blocks.push_back(block); Block * stored_block = &blocks.back(); diff --git a/dbms/src/Interpreters/Join.h b/dbms/src/Interpreters/Join.h index de6d66587ff..e7721bbf54e 100644 --- a/dbms/src/Interpreters/Join.h +++ b/dbms/src/Interpreters/Join.h @@ -163,7 +163,7 @@ public: /// Sum size in bytes of all buffers, used for JOIN maps and for all memory pools. size_t getTotalByteCount() const; - bool alwaysReturnsEmptySet() const final { return isInnerOrRight(getKind()) && getTotalRowCount() == 0; } + bool alwaysReturnsEmptySet() const final { return isInnerOrRight(getKind()) && has_no_rows_in_maps; } ASTTableJoin::Kind getKind() const { return kind; } ASTTableJoin::Strictness getStrictness() const { return strictness; } @@ -301,6 +301,7 @@ private: BlockNullmapList blocks_nullmaps; MapsVariant maps; + bool has_no_rows_in_maps = true; /// Additional data - strings for string keys and continuation elements of single-linked lists of references to rows. Arena pool;