diff --git a/catalog/src/publish/publish-adapter.hpp b/catalog/src/publish/publish-adapter.hpp
index a839645..6bd32fa 100644
--- a/catalog/src/publish/publish-adapter.hpp
+++ b/catalog/src/publish/publish-adapter.hpp
@@ -491,6 +491,7 @@
     for (size_t i = 0; i < m_nameFields.size(); i++) {
       ss << "`" << m_nameFields[i] << "` varchar(100) NOT NULL, ";
     }
+    ss << "`has_metadata` tinyint(1) DEFAULT NULL, ";
     ss << "PRIMARY KEY (`id`), UNIQUE KEY `sha256` (`sha256`)\
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;";
 
diff --git a/catalog/src/query/query-adapter.hpp b/catalog/src/query/query-adapter.hpp
index 2589e1f..5e61aff 100644
--- a/catalog/src/query/query-adapter.hpp
+++ b/catalog/src/query/query-adapter.hpp
@@ -1074,7 +1074,7 @@
   }
 
   // get name list statement
-  std::string getNameListSqlStr("SELECT name FROM ");
+  std::string getNameListSqlStr("SELECT name, has_metadata FROM ");
   getNameListSqlStr += m_databaseTable;
   getNameListSqlStr += " WHERE ";
   for (size_t i = 0; i < m_nameFields.size(); i++) {
@@ -1127,15 +1127,24 @@
                                                 bool lastComponent)
 {
   uint64_t segmentno = 0;
-  Json::Value tmp;
-  Json::Value resultjson;
+  Json::Value tmp, buf, resultjson;
   Json::FastWriter fastWriter;
 
+  bool twoColumns = false;
+  if (ResultSet_getColumnCount(res) > 1) {
+    twoColumns = true;
+  }
+
   uint64_t viewstart = 0, viewend = 0;
   while (ResultSet_next(res)) {
-    const char *name = ResultSet_getString(res, 1);
-    tmp.append(name);
-    const std::string tmpString = fastWriter.write(tmp);
+    tmp["name"] = ResultSet_getString(res, 1);
+    if (twoColumns) {
+      tmp["has_metadata"] = ResultSet_getInt(res, 2);
+    } else {
+      tmp["has_metadata"] = 0;
+    }
+    buf.append(tmp);
+    const std::string tmpString = fastWriter.write(buf);
     if (tmpString.length() > PAYLOAD_LIMIT) {
       std::shared_ptr<ndn::Data> data
         = makeReplyData(segmentPrefix, resultjson, segmentno, false,
@@ -1144,12 +1153,15 @@
       m_cache.insert(*data);
       m_face->put(*data);
       m_mutex.unlock();
-      tmp.clear();
+
+      buf.clear();
       resultjson.clear();
       segmentno++;
       viewstart = viewend + 1;
     }
-    resultjson.append(name);
+    resultjson.append(tmp);
+    buf = resultjson;
+    tmp.clear();
     viewend++;
   }
   std::shared_ptr<ndn::Data> data
