diff --git a/hive/db/sql_scripts/condenser_get_discussions_by_created.sql b/hive/db/sql_scripts/condenser_get_discussions_by_created.sql
index 16d4b648a46b36cc2cacf6c35ccc74aab65a4000..c3a1d6c543e6549962f24b39d8485c73fce83f86 100644
--- a/hive/db/sql_scripts/condenser_get_discussions_by_created.sql
+++ b/hive/db/sql_scripts/condenser_get_discussions_by_created.sql
@@ -62,3 +62,65 @@ BEGIN
 END
 $function$
 language plpgsql STABLE;
+
+DROP FUNCTION IF EXISTS condenser_get_discussions_by_created_with_empty_tag;
+
+CREATE FUNCTION condenser_get_discussions_by_created_with_empty_tag( in _tag VARCHAR, in _author VARCHAR, in _permlink VARCHAR, in _limit SMALLINT )
+RETURNS SETOF bridge_api_post
+AS
+$function$
+DECLARE
+  __post_id INT;
+  __community VARCHAR;
+  __category_id INT;
+BEGIN
+
+  __post_id     = find_comment_id( _author, _permlink, True );
+  __community   = ( SELECT substring(_tag from '^hive-') );
+
+  __category_id = ( SELECT id FROM hive_category_data WHERE category = _tag );
+
+  RETURN QUERY SELECT
+      hp.id,
+      hp.author,
+      hp.parent_author,
+      hp.author_rep,
+      hp.root_title,
+      hp.beneficiaries,
+      hp.max_accepted_payout,
+      hp.percent_hbd,
+      hp.url,
+      hp.permlink,
+      hp.parent_permlink_or_category,
+      hp.title,
+      hp.body,
+      hp.category,
+      hp.depth,
+      hp.promoted,
+      hp.payout,
+      hp.pending_payout,
+      hp.payout_at,
+      hp.is_paidout,
+      hp.children,
+      hp.votes,
+      hp.created_at,
+      hp.updated_at,
+      hp.rshares,
+      hp.abs_rshares,
+      hp.json,
+      hp.is_hidden,
+      hp.is_grayed,
+      hp.total_votes,
+      hp.sc_trend,
+      hp.role_title,
+      hp.community_title,
+      hp.role_id,
+      hp.is_pinned,
+      hp.curator_payout_value
+    FROM hive_posts_view hp
+    WHERE ( __post_id = 0 OR hp.id < __post_id )
+          AND ( ( __community IS NULL ) OR ( ( __community IS NOT NULL ) AND ( __category_id = 0 OR hp.category_id = __category_id ) ) )
+    ORDER BY hp.id DESC LIMIT _limit;
+END
+$function$
+language plpgsql STABLE;
diff --git a/hive/db/sql_scripts/condenser_get_discussions_by_hot.sql b/hive/db/sql_scripts/condenser_get_discussions_by_hot.sql
index 6e1dfb7dec41820d554c89dded55f1017a048f9e..981ff24fdb70f8bed492f210231f2340ccfc90dd 100644
--- a/hive/db/sql_scripts/condenser_get_discussions_by_hot.sql
+++ b/hive/db/sql_scripts/condenser_get_discussions_by_hot.sql
@@ -62,3 +62,65 @@ BEGIN
 END
 $function$
 language plpgsql STABLE;
+
+DROP FUNCTION IF EXISTS condenser_get_discussions_by_hot_with_empty_tag;
+
+CREATE FUNCTION condenser_get_discussions_by_hot_with_empty_tag( in _tag VARCHAR, in _author VARCHAR, in _permlink VARCHAR, in _limit SMALLINT )
+RETURNS SETOF bridge_api_post
+AS
+$function$
+DECLARE
+  __post_id INT;
+  __community VARCHAR;
+  __category_id INT;
+BEGIN
+
+  __post_id     = find_comment_id( _author, _permlink, True );
+  __community   = ( SELECT substring(_tag from '^hive-') );
+
+  __category_id = ( SELECT id FROM hive_category_data WHERE category = _tag );
+
+  RETURN QUERY SELECT
+      hp.id,
+      hp.author,
+      hp.parent_author,
+      hp.author_rep,
+      hp.root_title,
+      hp.beneficiaries,
+      hp.max_accepted_payout,
+      hp.percent_hbd,
+      hp.url,
+      hp.permlink,
+      hp.parent_permlink_or_category,
+      hp.title,
+      hp.body,
+      hp.category,
+      hp.depth,
+      hp.promoted,
+      hp.payout,
+      hp.pending_payout,
+      hp.payout_at,
+      hp.is_paidout,
+      hp.children,
+      hp.votes,
+      hp.created_at,
+      hp.updated_at,
+      hp.rshares,
+      hp.abs_rshares,
+      hp.json,
+      hp.is_hidden,
+      hp.is_grayed,
+      hp.total_votes,
+      hp.sc_trend,
+      hp.role_title,
+      hp.community_title,
+      hp.role_id,
+      hp.is_pinned,
+      hp.curator_payout_value
+    FROM hive_posts_view hp
+    WHERE hp.is_paidout = '0' AND ( __post_id = 0 OR hp.id < __post_id )
+          AND ( ( __community IS NULL ) OR ( ( __community IS NOT NULL ) AND ( ( __category_id = 0 OR hp.category_id = __category_id ) AND hp.depth = 0 ) ) )
+    ORDER BY hp.sc_hot DESC, hp.id DESC LIMIT _limit;
+END
+$function$
+language plpgsql STABLE;
diff --git a/hive/db/sql_scripts/condenser_get_discussions_by_promoted.sql b/hive/db/sql_scripts/condenser_get_discussions_by_promoted.sql
index 8a4f4086f2db014cfae7880cfef98418d9dbd7ef..d9afedb60212cfeab6ee78d59427bc2a2ae9db22 100644
--- a/hive/db/sql_scripts/condenser_get_discussions_by_promoted.sql
+++ b/hive/db/sql_scripts/condenser_get_discussions_by_promoted.sql
@@ -62,3 +62,66 @@ BEGIN
 END
 $function$
 language plpgsql STABLE;
+
+DROP FUNCTION IF EXISTS condenser_get_discussions_by_promoted_with_empty_tag;
+
+CREATE FUNCTION condenser_get_discussions_by_promoted_with_empty_tag( in _tag VARCHAR, in _author VARCHAR, in _permlink VARCHAR, in _limit SMALLINT )
+RETURNS SETOF bridge_api_post
+AS
+$function$
+DECLARE
+  __post_id INT;
+  __community VARCHAR;
+  __category_id INT;
+BEGIN
+
+  __post_id     = find_comment_id( _author, _permlink, True );
+  __community   = ( SELECT substring(_tag from '^hive-') );
+
+  __category_id = ( SELECT id FROM hive_category_data WHERE category = _tag );
+
+  RETURN QUERY SELECT
+      hp.id,
+      hp.author,
+      hp.parent_author,
+      hp.author_rep,
+      hp.root_title,
+      hp.beneficiaries,
+      hp.max_accepted_payout,
+      hp.percent_hbd,
+      hp.url,
+      hp.permlink,
+      hp.parent_permlink_or_category,
+      hp.title,
+      hp.body,
+      hp.category,
+      hp.depth,
+      hp.promoted,
+      hp.payout,
+      hp.pending_payout,
+      hp.payout_at,
+      hp.is_paidout,
+      hp.children,
+      hp.votes,
+      hp.created_at,
+      hp.updated_at,
+      hp.rshares,
+      hp.abs_rshares,
+      hp.json,
+      hp.is_hidden,
+      hp.is_grayed,
+      hp.total_votes,
+      hp.sc_trend,
+      hp.role_title,
+      hp.community_title,
+      hp.role_id,
+      hp.is_pinned,
+      hp.curator_payout_value
+    FROM hive_posts_view hp
+    INNER JOIN hive_post_tags hpt ON hpt.post_id = hp.id
+    WHERE hp.promoted > 0 AND ( __post_id = 0 OR hp.id < __post_id )
+          AND ( ( __community IS NULL ) OR ( ( __community IS NOT NULL ) AND ( __category_id = 0 OR hp.category_id = __category_id ) ) )
+    ORDER BY hp.promoted DESC, hp.id DESC LIMIT _limit;
+END
+$function$
+language plpgsql STABLE;
diff --git a/hive/db/sql_scripts/condenser_get_discussions_by_trending.sql b/hive/db/sql_scripts/condenser_get_discussions_by_trending.sql
index 400837597d8a0201f8b6d12797991959d7964793..277e845083349a2c11365d2937fba8880e10aa33 100644
--- a/hive/db/sql_scripts/condenser_get_discussions_by_trending.sql
+++ b/hive/db/sql_scripts/condenser_get_discussions_by_trending.sql
@@ -62,3 +62,65 @@ BEGIN
 END
 $function$
 language plpgsql STABLE;
+
+DROP FUNCTION IF EXISTS condenser_get_discussions_by_trending_with_empty_tag;
+
+CREATE FUNCTION condenser_get_discussions_by_trending_with_empty_tag( in _tag VARCHAR, in _author VARCHAR, in _permlink VARCHAR, in _limit SMALLINT )
+RETURNS SETOF bridge_api_post
+AS
+$function$
+DECLARE
+  __post_id INT;
+  __community VARCHAR;
+  __category_id INT;
+BEGIN
+
+  __post_id     = find_comment_id( _author, _permlink, True );
+  __community   = ( SELECT substring(_tag from '^hive-') );
+
+  __category_id = ( SELECT id FROM hive_category_data WHERE category = _tag );
+
+  RETURN QUERY SELECT
+      hp.id,
+      hp.author,
+      hp.parent_author,
+      hp.author_rep,
+      hp.root_title,
+      hp.beneficiaries,
+      hp.max_accepted_payout,
+      hp.percent_hbd,
+      hp.url,
+      hp.permlink,
+      hp.parent_permlink_or_category,
+      hp.title,
+      hp.body,
+      hp.category,
+      hp.depth,
+      hp.promoted,
+      hp.payout,
+      hp.pending_payout,
+      hp.payout_at,
+      hp.is_paidout,
+      hp.children,
+      hp.votes,
+      hp.created_at,
+      hp.updated_at,
+      hp.rshares,
+      hp.abs_rshares,
+      hp.json,
+      hp.is_hidden,
+      hp.is_grayed,
+      hp.total_votes,
+      hp.sc_trend,
+      hp.role_title,
+      hp.community_title,
+      hp.role_id,
+      hp.is_pinned,
+      hp.curator_payout_value
+    FROM hive_posts_view hp
+    WHERE hp.is_paidout = '0' AND ( __post_id = 0 OR hp.id < __post_id )
+          AND ( ( __community IS NULL ) OR ( ( __community IS NOT NULL ) AND ( ( __category_id = 0 OR hp.category_id = __category_id ) AND hp.depth = 0 ) ) )
+    ORDER BY hp.sc_trend DESC, hp.id DESC LIMIT _limit;
+END
+$function$
+language plpgsql STABLE;
diff --git a/hive/server/condenser_api/get_state.py b/hive/server/condenser_api/get_state.py
index c4454d50d65410a16c3c214b4fe7dd046f7de15c..269b5945536bf4dadca04b948c092aecaa4c1049 100644
--- a/hive/server/condenser_api/get_state.py
+++ b/hive/server/condenser_api/get_state.py
@@ -138,7 +138,7 @@ async def get_state(context, path: str):
         sort = valid_sort(part[0])
         tag = valid_tag(part[1].lower(), allow_empty=True)
         pids = await get_posts_by_given_sort(context, sort, '', '', 20, tag)
-        state['content'] = _keyed_posts(await load_posts(db, pids))
+        state['content'] = _keyed_posts(pids)
         state['discussion_idx'] = {tag: {sort: list(state['content'].keys())}}
         state['tag_idx'] = {'trending': await get_top_trending_tags_summary(context)}
 
diff --git a/hive/server/condenser_api/methods.py b/hive/server/condenser_api/methods.py
index 10b6b053ef479076eeb28bb982b4e742327d87eb..f2e717d86ff4859dbfa6c24d3d8a7cc8cc3e8a80 100644
--- a/hive/server/condenser_api/methods.py
+++ b/hive/server/condenser_api/methods.py
@@ -247,13 +247,25 @@ async def get_posts_by_given_sort(context, sort: str, start_author: str = '', st
     posts = []
    
     if sort == 'created':
-      sql = "SELECT * FROM condenser_get_discussions_by_created( (:tag)::VARCHAR, (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT )"
+      if tag == '':
+        sql = "SELECT * FROM condenser_get_discussions_by_created_with_empty_tag( (:tag)::VARCHAR, (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT )"
+      else:
+        sql = "SELECT * FROM condenser_get_discussions_by_created( (:tag)::VARCHAR, (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT )"
     elif sort == 'trending':
-      sql = "SELECT * FROM condenser_get_discussions_by_trending( (:tag)::VARCHAR, (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT )"
+      if tag == '':
+        sql = "SELECT * FROM condenser_get_discussions_by_trending_with_empty_tag( (:tag)::VARCHAR, (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT )"
+      else:
+        sql = "SELECT * FROM condenser_get_discussions_by_trending( (:tag)::VARCHAR, (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT )"
     elif sort == 'hot':
-      sql = "SELECT * FROM condenser_get_discussions_by_hot( (:tag)::VARCHAR, (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT )"
+      if tag == '':
+        sql = "SELECT * FROM condenser_get_discussions_by_hot_with_empty_tag( (:tag)::VARCHAR, (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT )"
+      else:
+        sql = "SELECT * FROM condenser_get_discussions_by_hot( (:tag)::VARCHAR, (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT )"
     elif sort == 'promoted':
-      sql = "SELECT * FROM condenser_get_discussions_by_promoted( (:tag)::VARCHAR, (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT )"
+      if tag == '':
+        sql = "SELECT * FROM condenser_get_discussions_by_promoted_with_empty_tag( (:tag)::VARCHAR, (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT )"
+      else:
+        sql = "SELECT * FROM condenser_get_discussions_by_promoted( (:tag)::VARCHAR, (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT )"
     elif sort == 'post_by_payout':
       sql = "SELECT * FROM condenser_get_post_discussions_by_payout( (:tag)::VARCHAR, (:author)::VARCHAR, (:permlink)::VARCHAR, (:limit)::SMALLINT )"
     elif sort == 'comment_by_payout':