BitOneZero,
@BitOneZero@beehaw.org avatar

Just because it’s written in Rust doesn’t make your app safe, or performant.

Lemmy 0.18.4 listing posts, frequently via ORM Diesel:


<span style="color:#323232;">            SELECT "post"."id", "post"."name", "post"."url", "post"."body", "post"."creator_id", "post"."community_id", "post"."removed",
</span><span style="color:#323232;">              "post"."locked", "post"."published", "post"."updated", "post"."deleted", "post"."nsfw", "post"."embed_title", "post"."embed_description",
</span><span style="color:#323232;">              "post"."thumbnail_url", "post"."ap_id", "post"."local", "post"."embed_video_url", "post"."language_id", "post"."featured_community",
</span><span style="color:#323232;">              "post"."featured_local",
</span><span style="color:#323232;">              "person"."id", "person"."name", "person"."display_name", "person"."avatar", "person"."banned", "person"."published", "person"."updated",
</span><span style="color:#323232;">              "person"."actor_id", "person"."bio", "person"."local", "person"."private_key", "person"."public_key", "person"."last_refreshed_at",
</span><span style="color:#323232;">              "person"."banner", "person"."deleted", "person"."inbox_url", "person"."shared_inbox_url", "person"."matrix_user_id",
</span><span style="color:#323232;">              "person"."admin",
</span><span style="color:#323232;">              "person"."bot_account", "person"."ban_expires", "person"."instance_id",
</span><span style="color:#323232;">              "community"."id", "community"."name", "community"."title", "community"."description", "community"."removed", "community"."published",
</span><span style="color:#323232;">              "community"."updated", "community"."deleted", "community"."nsfw", "community"."actor_id", "community"."local", "community"."private_key",
</span><span style="color:#323232;">              "community"."public_key", "community"."last_refreshed_at", "community"."icon", "community"."banner", "community"."followers_url",
</span><span style="color:#323232;">              "community"."inbox_url", "community"."shared_inbox_url", "community"."hidden", "community"."posting_restricted_to_mods",
</span><span style="color:#323232;">              "community"."instance_id", "community"."moderators_url", "community"."featured_url",
</span><span style="color:#323232;">              ("community_person_ban"."id" IS NOT NULL),
</span><span style="color:#323232;">              "post_aggregates"."id", "post_aggregates"."post_id", "post_aggregates"."comments", "post_aggregates"."score", "post_aggregates"."upvotes",
</span><span style="color:#323232;">              "post_aggregates"."downvotes", "post_aggregates"."published", "post_aggregates"."newest_comment_time_necro",
</span><span style="color:#323232;">              "post_aggregates"."newest_comment_time", "post_aggregates"."featured_community", "post_aggregates"."featured_local",
</span><span style="color:#323232;">              "post_aggregates"."hot_rank", "post_aggregates"."hot_rank_active", "post_aggregates"."community_id", "post_aggregates"."creator_id",
</span><span style="color:#323232;">              "post_aggregates"."controversy_rank", "community_follower"."pending",
</span><span style="color:#323232;">              ("post_saved"."id" IS NOT NULL),
</span><span style="color:#323232;">              ("post_read"."id" IS NOT NULL),
</span><span style="color:#323232;">              ("person_block"."id" IS NOT NULL),
</span><span style="color:#323232;">              "post_like"."score",
</span><span style="color:#323232;">              coalesce(("post_aggregates"."comments" - "person_post_aggregates"."read_comments"),
</span><span style="color:#323232;">              "post_aggregates"."comments")
</span><span style="color:#323232;">             
</span><span style="color:#323232;">              FROM ((((((((((((
</span><span style="color:#323232;">                ("post_aggregates"
</span><span style="color:#323232;">                   INNER JOIN "person" ON ("post_aggregates"."creator_id" = "person"."id"))
</span><span style="color:#323232;">                INNER JOIN "community" ON ("post_aggregates"."community_id" = "community"."id"))
</span><span style="color:#323232;">                LEFT OUTER JOIN "community_person_ban" ON (("post_aggregates"."community_id" = "community_person_ban"."community_id") AND ("community_person_ban"."person_id" = "post_aggregates"."creator_id"))
</span><span style="color:#323232;">                )
</span><span style="color:#323232;">                INNER JOIN "post" ON ("post_aggregates"."post_id" = "post"."id")
</span><span style="color:#323232;">                )
</span><span style="color:#323232;">                LEFT OUTER JOIN "community_follower" ON (("post_aggregates"."community_id" = "community_follower"."community_id") AND ("community_follower"."person_id" = $1))
</span><span style="color:#323232;">                )
</span><span style="color:#323232;">                LEFT OUTER JOIN "community_moderator" ON (("post"."community_id" = "community_moderator"."community_id") AND ("community_moderator"."person_id" = $1))
</span><span style="color:#323232;">                )
</span><span style="color:#323232;">                LEFT OUTER JOIN "post_saved" ON (("post_aggregates"."post_id" = "post_saved"."post_id") AND ("post_saved"."person_id" = $1))
</span><span style="color:#323232;">                )
</span><span style="color:#323232;">                LEFT OUTER JOIN "post_read" ON (("post_aggregates"."post_id" = "post_read"."post_id") AND ("post_read"."person_id" = $1))
</span><span style="color:#323232;">                )
</span><span style="color:#323232;">                LEFT OUTER JOIN "person_block" ON (("post_aggregates"."creator_id" = "person_block"."target_id") AND ("person_block"."person_id" = $1))
</span><span style="color:#323232;">                )
</span><span style="color:#323232;">                LEFT OUTER JOIN "post_like" ON (("post_aggregates"."post_id" = "post_like"."post_id") AND ("post_like"."person_id" = $1))
</span><span style="color:#323232;">                )
</span><span style="color:#323232;">                LEFT OUTER JOIN "person_post_aggregates" ON (("post_aggregates"."post_id" = "person_post_aggregates"."post_id") AND ("person_post_aggregates"."person_id" = $1))
</span><span style="color:#323232;">                )
</span><span style="color:#323232;">                LEFT OUTER JOIN "community_block" ON (("post_aggregates"."community_id" = "community_block"."community_id") AND ("community_block"."person_id" = $1))
</span><span style="color:#323232;">                )
</span><span style="color:#323232;">                LEFT OUTER JOIN "local_user_language" ON (("post"."language_id" = "local_user_language"."language_id") AND ("local_user_language"."local_user_id" = $2))
</span><span style="color:#323232;">                )
</span><span style="color:#323232;">                
</span><span style="color:#323232;">                WHERE
</span><span style="color:#323232;">                (((
</span><span style="color:#323232;">                    (((
</span><span style="color:#323232;">                    (
</span><span style="color:#323232;">                    ("community"."removed" = $3) AND ("post"."removed" = $4))
</span><span style="color:#323232;">                    AND ("community_follower"."pending" IS NOT NULL)
</span><span style="color:#323232;">                    )
</span><span style="color:#323232;">                    AND ("post"."nsfw" = $5)
</span><span style="color:#323232;">                    )
</span><span style="color:#323232;">                    AND ("community"."nsfw" = $6)
</span><span style="color:#323232;">                    )
</span><span style="color:#323232;">                    AND ("local_user_language"."language_id" IS NOT NULL)
</span><span style="color:#323232;">                    )
</span><span style="color:#323232;">                    AND ("community_block"."person_id" IS NULL)
</span><span style="color:#323232;">                    )
</span><span style="color:#323232;">                    AND ("person_block"."person_id" IS NULL)
</span><span style="color:#323232;">                    )
</span><span style="color:#323232;">                    
</span><span style="color:#323232;">                ORDER BY "post_aggregates"."featured_local" DESC , "post_aggregates"."hot_rank_active" DESC , "post_aggregates"."published" DESC
</span><span style="color:#323232;">                    
</span><span style="color:#323232;">                LIMIT $7
</span><span style="color:#323232;">                OFFSET $8
</span><span style="color:#323232;">			;`
</span><span style="color:#323232;">
</span>

That is with hand-optimized person_id = $1, which the Rust code does not do.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • uselessserver093
  • [email protected]
  • Food
  • aaaaaaacccccccce
  • test
  • CafeMeta
  • testmag
  • MUD
  • RhythmGameZone
  • RSS
  • dabs
  • SuperSentai
  • oklahoma
  • Socialism
  • KbinCafe
  • TheResearchGuardian
  • KamenRider
  • feritale
  • All magazines