From 5c5c926515a1e56928fe79f2ac96eb902958fdf9 Mon Sep 17 00:00:00 2001
From: Lovro Lugovic <lovro.lugovic@memgraph.io>
Date: Wed, 2 Oct 2019 10:54:08 +0200
Subject: [PATCH] An aggregate element's input expression can be NULL

Summary: For example, the aggregate element produced for `COUNT(*)` has its `value` set to `NULL`.

Reviewers: teon.banek

Reviewed By: teon.banek

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D2463
---
 src/query/plan/pretty_print.cpp  | 4 +++-
 tests/unit/plan_pretty_print.cpp | 7 ++++++-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/query/plan/pretty_print.cpp b/src/query/plan/pretty_print.cpp
index 1db9fae5c..44ecb6fc8 100644
--- a/src/query/plan/pretty_print.cpp
+++ b/src/query/plan/pretty_print.cpp
@@ -357,7 +357,9 @@ json ToJson(const EdgeCreationInfo &edge_info, const DbAccessor &dba) {
 
 json ToJson(const Aggregate::Element &elem) {
   json json;
-  json["value"] = ToJson(elem.value);
+  if (elem.value) {
+    json["value"] = ToJson(elem.value);
+  }
   if (elem.key) {
     json["key"] = ToJson(elem.key);
   }
diff --git a/tests/unit/plan_pretty_print.cpp b/tests/unit/plan_pretty_print.cpp
index ee0a8972b..96eb42665 100644
--- a/tests/unit/plan_pretty_print.cpp
+++ b/tests/unit/plan_pretty_print.cpp
@@ -672,7 +672,8 @@ TEST_F(PrintToJsonTest, Aggregate) {
           {PROPERTY_LOOKUP("node", value), nullptr, Aggregation::Op::SUM,
            GetSymbol("sum")},
           {PROPERTY_LOOKUP("node", value), PROPERTY_LOOKUP("node", color),
-           Aggregation::Op::COLLECT_MAP, GetSymbol("map")}},
+           Aggregation::Op::COLLECT_MAP, GetSymbol("map")},
+          {nullptr, nullptr, Aggregation::Op::COUNT, GetSymbol("count")}},
       std::vector<Expression *>{PROPERTY_LOOKUP("node", type)},
       std::vector<Symbol>{node_sym});
 
@@ -690,6 +691,10 @@ TEST_F(PrintToJsonTest, Aggregate) {
                 "key" : "(PropertyLookup (Identifier \"node\") \"color\")",
                 "op" : "collect",
                 "output_symbol" : "map"
+              },
+              {
+                "op": "count",
+                "output_symbol": "count"
               }
             ],
             "group_by" : [