From d7e7848c9206b68ab86d2d566ec4247db87827c0 Mon Sep 17 00:00:00 2001
From: syuilo <Syuilotan@yahoo.co.jp>
Date: Sun, 21 Mar 2021 10:39:32 +0900
Subject: [PATCH] fix(server): Use inner join

https://github.com/syuilo/misskey/issues/6813#issuecomment-803400023
---
 src/server/api/common/inject-featured.ts             |  2 +-
 src/server/api/endpoints/antennas/notes.ts           | 10 +++++-----
 src/server/api/endpoints/channels/timeline.ts        | 10 +++++-----
 src/server/api/endpoints/clips/notes.ts              | 10 +++++-----
 src/server/api/endpoints/i/notifications.ts          | 10 +++++-----
 src/server/api/endpoints/notes.ts                    | 10 +++++-----
 src/server/api/endpoints/notes/children.ts           | 10 +++++-----
 src/server/api/endpoints/notes/featured.ts           | 10 +++++-----
 src/server/api/endpoints/notes/global-timeline.ts    | 10 +++++-----
 src/server/api/endpoints/notes/hybrid-timeline.ts    | 10 +++++-----
 src/server/api/endpoints/notes/local-timeline.ts     | 10 +++++-----
 src/server/api/endpoints/notes/mentions.ts           | 10 +++++-----
 src/server/api/endpoints/notes/renotes.ts            | 10 +++++-----
 src/server/api/endpoints/notes/replies.ts            | 10 +++++-----
 src/server/api/endpoints/notes/search-by-tag.ts      | 10 +++++-----
 src/server/api/endpoints/notes/search.ts             | 10 +++++-----
 src/server/api/endpoints/notes/timeline.ts           | 10 +++++-----
 src/server/api/endpoints/notes/user-list-timeline.ts | 10 +++++-----
 src/server/api/endpoints/users/notes.ts              | 10 +++++-----
 19 files changed, 91 insertions(+), 91 deletions(-)

diff --git a/src/server/api/common/inject-featured.ts b/src/server/api/common/inject-featured.ts
index 3f47c13385..bbed7f69cb 100644
--- a/src/server/api/common/inject-featured.ts
+++ b/src/server/api/common/inject-featured.ts
@@ -23,7 +23,7 @@ export async function injectFeatured(timeline: Note[], user?: User | null) {
 		.andWhere(`note.score > 0`)
 		.andWhere(`note.createdAt > :date`, { date: new Date(Date.now() - day) })
 		.andWhere(`note.visibility = 'public'`)
-		.leftJoinAndSelect('note.user', 'user');
+		.innerJoinAndSelect('note.user', 'user');
 
 	if (user) {
 		query.andWhere('note.userId != :userId', { userId: user.id });
diff --git a/src/server/api/endpoints/antennas/notes.ts b/src/server/api/endpoints/antennas/notes.ts
index 2ea3e43745..8025ecc66b 100644
--- a/src/server/api/endpoints/antennas/notes.ts
+++ b/src/server/api/endpoints/antennas/notes.ts
@@ -73,11 +73,11 @@ export default define(meta, async (ps, user) => {
 
 	const query = makePaginationQuery(Notes.createQueryBuilder('note'), ps.sinceId, ps.untilId)
 		.andWhere(`note.id IN (${ antennaQuery.getQuery() })`)
-		.leftJoinAndSelect('note.user', 'user')
-		.leftJoinAndSelect('note.reply', 'reply')
-		.leftJoinAndSelect('note.renote', 'renote')
-		.leftJoinAndSelect('reply.user', 'replyUser')
-		.leftJoinAndSelect('renote.user', 'renoteUser')
+		.innerJoinAndSelect('note.user', 'user')
+		.innerJoinAndSelect('note.reply', 'reply')
+		.innerJoinAndSelect('note.renote', 'renote')
+		.innerJoinAndSelect('reply.user', 'replyUser')
+		.innerJoinAndSelect('renote.user', 'renoteUser')
 		.setParameters(antennaQuery.getParameters());
 
 	generateVisibilityQuery(query, user);
diff --git a/src/server/api/endpoints/channels/timeline.ts b/src/server/api/endpoints/channels/timeline.ts
index 292f21b63d..33dcb24144 100644
--- a/src/server/api/endpoints/channels/timeline.ts
+++ b/src/server/api/endpoints/channels/timeline.ts
@@ -87,11 +87,11 @@ export default define(meta, async (ps, user) => {
 	//#region Construct query
 	const query = makePaginationQuery(Notes.createQueryBuilder('note'), ps.sinceId, ps.untilId, ps.sinceDate, ps.untilDate)
 		.andWhere('note.channelId = :channelId', { channelId: channel.id })
-		.leftJoinAndSelect('note.user', 'user')
-		.leftJoinAndSelect('note.reply', 'reply')
-		.leftJoinAndSelect('note.renote', 'renote')
-		.leftJoinAndSelect('reply.user', 'replyUser')
-		.leftJoinAndSelect('renote.user', 'renoteUser')
+		.innerJoinAndSelect('note.user', 'user')
+		.innerJoinAndSelect('note.reply', 'reply')
+		.innerJoinAndSelect('note.renote', 'renote')
+		.innerJoinAndSelect('reply.user', 'replyUser')
+		.innerJoinAndSelect('renote.user', 'renoteUser')
 		.leftJoinAndSelect('note.channel', 'channel');
 	//#endregion
 
diff --git a/src/server/api/endpoints/clips/notes.ts b/src/server/api/endpoints/clips/notes.ts
index 86d1e507f4..12baa2e344 100644
--- a/src/server/api/endpoints/clips/notes.ts
+++ b/src/server/api/endpoints/clips/notes.ts
@@ -71,11 +71,11 @@ export default define(meta, async (ps, user) => {
 
 	const query = makePaginationQuery(Notes.createQueryBuilder('note'), ps.sinceId, ps.untilId)
 		.andWhere(`note.id IN (${ clipQuery.getQuery() })`)
-		.leftJoinAndSelect('note.user', 'user')
-		.leftJoinAndSelect('note.reply', 'reply')
-		.leftJoinAndSelect('note.renote', 'renote')
-		.leftJoinAndSelect('reply.user', 'replyUser')
-		.leftJoinAndSelect('renote.user', 'renoteUser')
+		.innerJoinAndSelect('note.user', 'user')
+		.innerJoinAndSelect('note.reply', 'reply')
+		.innerJoinAndSelect('note.renote', 'renote')
+		.innerJoinAndSelect('reply.user', 'replyUser')
+		.innerJoinAndSelect('renote.user', 'renoteUser')
 		.setParameters(clipQuery.getParameters());
 
 	if (user) {
diff --git a/src/server/api/endpoints/i/notifications.ts b/src/server/api/endpoints/i/notifications.ts
index 812a4bd1dd..e3091ebb0a 100644
--- a/src/server/api/endpoints/i/notifications.ts
+++ b/src/server/api/endpoints/i/notifications.ts
@@ -87,11 +87,11 @@ export default define(meta, async (ps, user) => {
 		.andWhere(`notification.notifieeId = :meId`, { meId: user.id })
 		.leftJoinAndSelect('notification.notifier', 'notifier')
 		.leftJoinAndSelect('notification.note', 'note')
-		.leftJoinAndSelect('note.user', 'user')
-		.leftJoinAndSelect('note.reply', 'reply')
-		.leftJoinAndSelect('note.renote', 'renote')
-		.leftJoinAndSelect('reply.user', 'replyUser')
-		.leftJoinAndSelect('renote.user', 'renoteUser');
+		.innerJoinAndSelect('note.user', 'user')
+		.innerJoinAndSelect('note.reply', 'reply')
+		.innerJoinAndSelect('note.renote', 'renote')
+		.innerJoinAndSelect('reply.user', 'replyUser')
+		.innerJoinAndSelect('renote.user', 'renoteUser');
 
 	query.andWhere(`notification.notifierId NOT IN (${ mutingQuery.getQuery() })`);
 	query.setParameters(mutingQuery.getParameters());
diff --git a/src/server/api/endpoints/notes.ts b/src/server/api/endpoints/notes.ts
index 708ce38c0e..9fd644dcab 100644
--- a/src/server/api/endpoints/notes.ts
+++ b/src/server/api/endpoints/notes.ts
@@ -76,11 +76,11 @@ export default define(meta, async (ps) => {
 	const query = makePaginationQuery(Notes.createQueryBuilder('note'), ps.sinceId, ps.untilId)
 		.andWhere(`note.visibility = 'public'`)
 		.andWhere(`note.localOnly = FALSE`)
-		.leftJoinAndSelect('note.user', 'user')
-		.leftJoinAndSelect('note.reply', 'reply')
-		.leftJoinAndSelect('note.renote', 'renote')
-		.leftJoinAndSelect('reply.user', 'replyUser')
-		.leftJoinAndSelect('renote.user', 'renoteUser');
+		.innerJoinAndSelect('note.user', 'user')
+		.innerJoinAndSelect('note.reply', 'reply')
+		.innerJoinAndSelect('note.renote', 'renote')
+		.innerJoinAndSelect('reply.user', 'replyUser')
+		.innerJoinAndSelect('renote.user', 'renoteUser');
 
 	if (ps.local) {
 		query.andWhere('note.userHost IS NULL');
diff --git a/src/server/api/endpoints/notes/children.ts b/src/server/api/endpoints/notes/children.ts
index a8b239e445..4a03ae2d39 100644
--- a/src/server/api/endpoints/notes/children.ts
+++ b/src/server/api/endpoints/notes/children.ts
@@ -64,11 +64,11 @@ export default define(meta, async (ps, user) => {
 				}));
 			}));
 		}))
-		.leftJoinAndSelect('note.user', 'user')
-		.leftJoinAndSelect('note.reply', 'reply')
-		.leftJoinAndSelect('note.renote', 'renote')
-		.leftJoinAndSelect('reply.user', 'replyUser')
-		.leftJoinAndSelect('renote.user', 'renoteUser');
+		.innerJoinAndSelect('note.user', 'user')
+		.innerJoinAndSelect('note.reply', 'reply')
+		.innerJoinAndSelect('note.renote', 'renote')
+		.innerJoinAndSelect('reply.user', 'replyUser')
+		.innerJoinAndSelect('renote.user', 'renoteUser');
 
 	generateVisibilityQuery(query, user);
 	if (user) generateMutedUserQuery(query, user);
diff --git a/src/server/api/endpoints/notes/featured.ts b/src/server/api/endpoints/notes/featured.ts
index 6c416b1c04..74a28f25a4 100644
--- a/src/server/api/endpoints/notes/featured.ts
+++ b/src/server/api/endpoints/notes/featured.ts
@@ -49,11 +49,11 @@ export default define(meta, async (ps, user) => {
 		.andWhere(`note.score > 0`)
 		.andWhere(`note.createdAt > :date`, { date: new Date(Date.now() - day) })
 		.andWhere(`note.visibility = 'public'`)
-		.leftJoinAndSelect('note.user', 'user')
-		.leftJoinAndSelect('note.reply', 'reply')
-		.leftJoinAndSelect('note.renote', 'renote')
-		.leftJoinAndSelect('reply.user', 'replyUser')
-		.leftJoinAndSelect('renote.user', 'renoteUser');
+		.innerJoinAndSelect('note.user', 'user')
+		.innerJoinAndSelect('note.reply', 'reply')
+		.innerJoinAndSelect('note.renote', 'renote')
+		.innerJoinAndSelect('reply.user', 'replyUser')
+		.innerJoinAndSelect('renote.user', 'renoteUser');
 
 	if (user) generateMutedUserQuery(query, user);
 
diff --git a/src/server/api/endpoints/notes/global-timeline.ts b/src/server/api/endpoints/notes/global-timeline.ts
index 985760bd9d..e6ad9eeba8 100644
--- a/src/server/api/endpoints/notes/global-timeline.ts
+++ b/src/server/api/endpoints/notes/global-timeline.ts
@@ -79,11 +79,11 @@ export default define(meta, async (ps, user) => {
 			ps.sinceId, ps.untilId, ps.sinceDate, ps.untilDate)
 		.andWhere('note.visibility = \'public\'')
 		.andWhere('note.channelId IS NULL')
-		.leftJoinAndSelect('note.user', 'user')
-		.leftJoinAndSelect('note.reply', 'reply')
-		.leftJoinAndSelect('note.renote', 'renote')
-		.leftJoinAndSelect('reply.user', 'replyUser')
-		.leftJoinAndSelect('renote.user', 'renoteUser');
+		.innerJoinAndSelect('note.user', 'user')
+		.innerJoinAndSelect('note.reply', 'reply')
+		.innerJoinAndSelect('note.renote', 'renote')
+		.innerJoinAndSelect('reply.user', 'replyUser')
+		.innerJoinAndSelect('renote.user', 'renoteUser');
 
 	generateRepliesQuery(query, user);
 	if (user) generateMutedUserQuery(query, user);
diff --git a/src/server/api/endpoints/notes/hybrid-timeline.ts b/src/server/api/endpoints/notes/hybrid-timeline.ts
index 69f2a7c107..aa09be23d2 100644
--- a/src/server/api/endpoints/notes/hybrid-timeline.ts
+++ b/src/server/api/endpoints/notes/hybrid-timeline.ts
@@ -127,11 +127,11 @@ export default define(meta, async (ps, user) => {
 			qb.where(`((note.userId IN (${ followingQuery.getQuery() })) OR (note.userId = :meId))`, { meId: user.id })
 				.orWhere('(note.visibility = \'public\') AND (note.userHost IS NULL)');
 		}))
-		.leftJoinAndSelect('note.user', 'user')
-		.leftJoinAndSelect('note.reply', 'reply')
-		.leftJoinAndSelect('note.renote', 'renote')
-		.leftJoinAndSelect('reply.user', 'replyUser')
-		.leftJoinAndSelect('renote.user', 'renoteUser')
+		.innerJoinAndSelect('note.user', 'user')
+		.innerJoinAndSelect('note.reply', 'reply')
+		.innerJoinAndSelect('note.renote', 'renote')
+		.innerJoinAndSelect('reply.user', 'replyUser')
+		.innerJoinAndSelect('renote.user', 'renoteUser')
 		.setParameters(followingQuery.getParameters());
 
 	generateChannelQuery(query, user);
diff --git a/src/server/api/endpoints/notes/local-timeline.ts b/src/server/api/endpoints/notes/local-timeline.ts
index 9e1c081966..cb6f854b05 100644
--- a/src/server/api/endpoints/notes/local-timeline.ts
+++ b/src/server/api/endpoints/notes/local-timeline.ts
@@ -96,11 +96,11 @@ export default define(meta, async (ps, user) => {
 	const query = makePaginationQuery(Notes.createQueryBuilder('note'),
 			ps.sinceId, ps.untilId, ps.sinceDate, ps.untilDate)
 		.andWhere('(note.visibility = \'public\') AND (note.userHost IS NULL)')
-		.leftJoinAndSelect('note.user', 'user')
-		.leftJoinAndSelect('note.reply', 'reply')
-		.leftJoinAndSelect('note.renote', 'renote')
-		.leftJoinAndSelect('reply.user', 'replyUser')
-		.leftJoinAndSelect('renote.user', 'renoteUser');
+		.innerJoinAndSelect('note.user', 'user')
+		.innerJoinAndSelect('note.reply', 'reply')
+		.innerJoinAndSelect('note.renote', 'renote')
+		.innerJoinAndSelect('reply.user', 'replyUser')
+		.innerJoinAndSelect('renote.user', 'renoteUser');
 
 	generateChannelQuery(query, user);
 	generateRepliesQuery(query, user);
diff --git a/src/server/api/endpoints/notes/mentions.ts b/src/server/api/endpoints/notes/mentions.ts
index 83e890d9ad..447a689664 100644
--- a/src/server/api/endpoints/notes/mentions.ts
+++ b/src/server/api/endpoints/notes/mentions.ts
@@ -63,11 +63,11 @@ export default define(meta, async (ps, user) => {
 			.where(`:meId = ANY(note.mentions)`, { meId: user.id })
 			.orWhere(`:meId = ANY(note.visibleUserIds)`, { meId: user.id });
 		}))
-		.leftJoinAndSelect('note.user', 'user')
-		.leftJoinAndSelect('note.reply', 'reply')
-		.leftJoinAndSelect('note.renote', 'renote')
-		.leftJoinAndSelect('reply.user', 'replyUser')
-		.leftJoinAndSelect('renote.user', 'renoteUser');
+		.innerJoinAndSelect('note.user', 'user')
+		.innerJoinAndSelect('note.reply', 'reply')
+		.innerJoinAndSelect('note.renote', 'renote')
+		.innerJoinAndSelect('reply.user', 'replyUser')
+		.innerJoinAndSelect('renote.user', 'renoteUser');
 
 	generateVisibilityQuery(query, user);
 	generateMutedUserQuery(query, user);
diff --git a/src/server/api/endpoints/notes/renotes.ts b/src/server/api/endpoints/notes/renotes.ts
index f528197220..5be8f42a16 100644
--- a/src/server/api/endpoints/notes/renotes.ts
+++ b/src/server/api/endpoints/notes/renotes.ts
@@ -68,11 +68,11 @@ export default define(meta, async (ps, user) => {
 
 	const query = makePaginationQuery(Notes.createQueryBuilder('note'), ps.sinceId, ps.untilId)
 		.andWhere(`note.renoteId = :renoteId`, { renoteId: note.id })
-		.leftJoinAndSelect('note.user', 'user')
-		.leftJoinAndSelect('note.reply', 'reply')
-		.leftJoinAndSelect('note.renote', 'renote')
-		.leftJoinAndSelect('reply.user', 'replyUser')
-		.leftJoinAndSelect('renote.user', 'renoteUser');
+		.innerJoinAndSelect('note.user', 'user')
+		.innerJoinAndSelect('note.reply', 'reply')
+		.innerJoinAndSelect('note.renote', 'renote')
+		.innerJoinAndSelect('reply.user', 'replyUser')
+		.innerJoinAndSelect('renote.user', 'renoteUser');
 
 	generateVisibilityQuery(query, user);
 	if (user) generateMutedUserQuery(query, user);
diff --git a/src/server/api/endpoints/notes/replies.ts b/src/server/api/endpoints/notes/replies.ts
index 5ac663d77a..0979d2e7e9 100644
--- a/src/server/api/endpoints/notes/replies.ts
+++ b/src/server/api/endpoints/notes/replies.ts
@@ -59,11 +59,11 @@ export const meta = {
 export default define(meta, async (ps, user) => {
 	const query = makePaginationQuery(Notes.createQueryBuilder('note'), ps.sinceId, ps.untilId)
 		.andWhere('note.replyId = :replyId', { replyId: ps.noteId })
-		.leftJoinAndSelect('note.user', 'user')
-		.leftJoinAndSelect('note.reply', 'reply')
-		.leftJoinAndSelect('note.renote', 'renote')
-		.leftJoinAndSelect('reply.user', 'replyUser')
-		.leftJoinAndSelect('renote.user', 'renoteUser');
+		.innerJoinAndSelect('note.user', 'user')
+		.innerJoinAndSelect('note.reply', 'reply')
+		.innerJoinAndSelect('note.renote', 'renote')
+		.innerJoinAndSelect('reply.user', 'replyUser')
+		.innerJoinAndSelect('renote.user', 'renoteUser');
 
 	generateVisibilityQuery(query, user);
 	if (user) generateMutedUserQuery(query, user);
diff --git a/src/server/api/endpoints/notes/search-by-tag.ts b/src/server/api/endpoints/notes/search-by-tag.ts
index d878f379c3..af84db1745 100644
--- a/src/server/api/endpoints/notes/search-by-tag.ts
+++ b/src/server/api/endpoints/notes/search-by-tag.ts
@@ -95,11 +95,11 @@ export const meta = {
 
 export default define(meta, async (ps, me) => {
 	const query = makePaginationQuery(Notes.createQueryBuilder('note'), ps.sinceId, ps.untilId)
-		.leftJoinAndSelect('note.user', 'user')
-		.leftJoinAndSelect('note.reply', 'reply')
-		.leftJoinAndSelect('note.renote', 'renote')
-		.leftJoinAndSelect('reply.user', 'replyUser')
-		.leftJoinAndSelect('renote.user', 'renoteUser');
+		.innerJoinAndSelect('note.user', 'user')
+		.innerJoinAndSelect('note.reply', 'reply')
+		.innerJoinAndSelect('note.renote', 'renote')
+		.innerJoinAndSelect('reply.user', 'replyUser')
+		.innerJoinAndSelect('renote.user', 'renoteUser');
 
 	generateVisibilityQuery(query, me);
 	if (me) generateMutedUserQuery(query, me);
diff --git a/src/server/api/endpoints/notes/search.ts b/src/server/api/endpoints/notes/search.ts
index ae0e9242a6..58aabcc22c 100644
--- a/src/server/api/endpoints/notes/search.ts
+++ b/src/server/api/endpoints/notes/search.ts
@@ -79,11 +79,11 @@ export default define(meta, async (ps, me) => {
 
 		query
 			.andWhere('note.text ILIKE :q', { q: `%${ps.query}%` })
-			.leftJoinAndSelect('note.user', 'user')
-			.leftJoinAndSelect('note.reply', 'reply')
-			.leftJoinAndSelect('note.renote', 'renote')
-			.leftJoinAndSelect('reply.user', 'replyUser')
-			.leftJoinAndSelect('renote.user', 'renoteUser');
+			.innerJoinAndSelect('note.user', 'user')
+			.innerJoinAndSelect('note.reply', 'reply')
+			.innerJoinAndSelect('note.renote', 'renote')
+			.innerJoinAndSelect('reply.user', 'replyUser')
+			.innerJoinAndSelect('renote.user', 'renoteUser');
 
 		generateVisibilityQuery(query, me);
 		if (me) generateMutedUserQuery(query, me);
diff --git a/src/server/api/endpoints/notes/timeline.ts b/src/server/api/endpoints/notes/timeline.ts
index a158bcd3f0..e8cda654c1 100644
--- a/src/server/api/endpoints/notes/timeline.ts
+++ b/src/server/api/endpoints/notes/timeline.ts
@@ -120,11 +120,11 @@ export default define(meta, async (ps, user) => {
 			.where('note.userId = :meId', { meId: user.id });
 			if (hasFollowing) qb.orWhere(`note.userId IN (${ followingQuery.getQuery() })`);
 		}))
-		.leftJoinAndSelect('note.user', 'user')
-		.leftJoinAndSelect('note.reply', 'reply')
-		.leftJoinAndSelect('note.renote', 'renote')
-		.leftJoinAndSelect('reply.user', 'replyUser')
-		.leftJoinAndSelect('renote.user', 'renoteUser')
+		.innerJoinAndSelect('note.user', 'user')
+		.innerJoinAndSelect('note.reply', 'reply')
+		.innerJoinAndSelect('note.renote', 'renote')
+		.innerJoinAndSelect('reply.user', 'replyUser')
+		.innerJoinAndSelect('renote.user', 'renoteUser')
 		.setParameters(followingQuery.getParameters());
 
 	generateChannelQuery(query, user);
diff --git a/src/server/api/endpoints/notes/user-list-timeline.ts b/src/server/api/endpoints/notes/user-list-timeline.ts
index 040f017fd5..1e9af55f1d 100644
--- a/src/server/api/endpoints/notes/user-list-timeline.ts
+++ b/src/server/api/endpoints/notes/user-list-timeline.ts
@@ -130,11 +130,11 @@ export default define(meta, async (ps, user) => {
 
 	const query = makePaginationQuery(Notes.createQueryBuilder('note'), ps.sinceId, ps.untilId)
 		.andWhere(`note.userId IN (${ listQuery.getQuery() })`)
-		.leftJoinAndSelect('note.user', 'user')
-		.leftJoinAndSelect('note.reply', 'reply')
-		.leftJoinAndSelect('note.renote', 'renote')
-		.leftJoinAndSelect('reply.user', 'replyUser')
-		.leftJoinAndSelect('renote.user', 'renoteUser')
+		.innerJoinAndSelect('note.user', 'user')
+		.innerJoinAndSelect('note.reply', 'reply')
+		.innerJoinAndSelect('note.renote', 'renote')
+		.innerJoinAndSelect('reply.user', 'replyUser')
+		.innerJoinAndSelect('renote.user', 'renoteUser')
 		.setParameters(listQuery.getParameters());
 
 	generateVisibilityQuery(query, user);
diff --git a/src/server/api/endpoints/users/notes.ts b/src/server/api/endpoints/users/notes.ts
index 91d1d7f4dd..98c9f10308 100644
--- a/src/server/api/endpoints/users/notes.ts
+++ b/src/server/api/endpoints/users/notes.ts
@@ -131,11 +131,11 @@ export default define(meta, async (ps, me) => {
 	//#region Construct query
 	const query = makePaginationQuery(Notes.createQueryBuilder('note'), ps.sinceId, ps.untilId, ps.sinceDate, ps.untilDate)
 		.andWhere('note.userId = :userId', { userId: user.id })
-		.leftJoinAndSelect('note.user', 'user')
-		.leftJoinAndSelect('note.reply', 'reply')
-		.leftJoinAndSelect('note.renote', 'renote')
-		.leftJoinAndSelect('reply.user', 'replyUser')
-		.leftJoinAndSelect('renote.user', 'renoteUser');
+		.innerJoinAndSelect('note.user', 'user')
+		.innerJoinAndSelect('note.reply', 'reply')
+		.innerJoinAndSelect('note.renote', 'renote')
+		.innerJoinAndSelect('reply.user', 'replyUser')
+		.innerJoinAndSelect('renote.user', 'renoteUser');
 
 	generateVisibilityQuery(query, me);
 	if (me) generateMutedUserQuery(query, me, user);
-- 
GitLab