]> git.ipfire.org Git - pbs.git/commitdiff
database: Use as many inner joins as possible
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 5 Feb 2025 17:07:50 +0000 (17:07 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 5 Feb 2025 17:07:50 +0000 (17:07 +0000)
We also are very unlikely to fetch any deleted objects, so let's rather
pull in the users that have deleted something by "SELECT IN" so that the
queries will be smaller and we don't add any joins which almost never
will find anything.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/builders.py
src/buildservice/images.py
src/buildservice/jobs.py
src/buildservice/keys.py
src/buildservice/mirrors.py
src/buildservice/packages.py
src/buildservice/releases.py
src/buildservice/repos.py
src/buildservice/sessions.py
src/buildservice/sources.py
src/buildservice/users.py

index fa90504acb93add3dea32806a233ca7aaae64ab0..dd0ec8c39080646bca7a0a5aebc05fdeab3e80a6 100644 (file)
@@ -32,7 +32,7 @@ class BuilderStat(database.Base):
        # Builder
 
        builder = sqlalchemy.orm.relationship(
-               "Builder", foreign_keys=[builder_id], lazy="joined",
+               "Builder", foreign_keys=[builder_id], lazy="joined", innerjoin=True,
        )
 
        # Created At
@@ -477,7 +477,7 @@ class Builder(database.Base, database.BackendMixin, database.SoftDeleteMixin):
        # Created By
 
        created_by = sqlalchemy.orm.relationship(
-               "User", foreign_keys=[created_by_id], lazy="joined",
+               "User", foreign_keys=[created_by_id], lazy="joined", innerjoin=True,
        )
 
        # Deleted By ID
@@ -487,7 +487,7 @@ class Builder(database.Base, database.BackendMixin, database.SoftDeleteMixin):
        # Deleted By
 
        deleted_by = sqlalchemy.orm.relationship(
-               "User", foreign_keys=[deleted_by_id], lazy="joined",
+               "User", foreign_keys=[deleted_by_id], lazy="selectin",
        )
 
        def is_online(self):
index dafcbb0971e17a408addb5664fa68070ed8fad48..f261ab09e5ed0e741ad28a93db67ea7bed7578d2 100644 (file)
@@ -43,7 +43,7 @@ class Image(database.Base, database.BackendMixin, database.SoftDeleteMixin):
        # Release
 
        release = sqlalchemy.orm.relationship(
-               "Release", foreign_keys=[release_id], lazy="joined",
+               "Release", foreign_keys=[release_id], lazy="joined", innerjoin=True,
        )
 
        # Arch
index aaf411dc6080be161e8db47be78e5f616bb0e2d3..94f5e6540061f477aee1964f56294a7b3c5f05a0 100644 (file)
@@ -859,7 +859,7 @@ class Job(database.Base, database.BackendMixin, database.SoftDeleteMixin):
        # Aborted By
 
        aborted_by = sqlalchemy.orm.relationship(
-               "User", foreign_keys=[aborted_by_id], lazy="joined",
+               "User", foreign_keys=[aborted_by_id], lazy="selectin",
        )
 
        # Message
index 3daa8526c07ef266f60de33aa457daf5e9955e09..7d689694ac79ee34023b749fa635fa575c1fee93 100644 (file)
@@ -65,7 +65,7 @@ class Key(database.Base, database.BackendMixin, database.SoftDeleteMixin):
        # Created By
 
        created_by = sqlalchemy.orm.relationship(
-               "User", foreign_keys=[created_by_id], lazy="joined",
+               "User", foreign_keys=[created_by_id], lazy="selectin",
        )
 
        # Deleted By ID
@@ -75,7 +75,7 @@ class Key(database.Base, database.BackendMixin, database.SoftDeleteMixin):
        # Deleted By
 
        deleted_by = sqlalchemy.orm.relationship(
-               "User", foreign_keys=[deleted_by_id], lazy="joined",
+               "User", foreign_keys=[deleted_by_id], lazy="selectin",
        )
 
        # Public Key
index bfa1e1a29eac908f9ae77f40261cbbb81b4b7af1..c2aabcb57ff99bed505c33813573418ab753ed92 100644 (file)
@@ -195,7 +195,7 @@ class Mirror(database.Base, database.BackendMixin, database.SoftDeleteMixin):
        # Created By
 
        created_by = sqlalchemy.orm.relationship(
-               "User", foreign_keys=[created_by_id], lazy="joined",
+               "User", foreign_keys=[created_by_id], lazy="joined", innerjoin=True,
        )
 
        # Deleted By ID
@@ -205,7 +205,7 @@ class Mirror(database.Base, database.BackendMixin, database.SoftDeleteMixin):
        # Deleted By
 
        deleted_by = sqlalchemy.orm.relationship(
-               "User", foreign_keys=[deleted_by_id], lazy="joined",
+               "User", foreign_keys=[deleted_by_id], lazy="selectin",
        )
 
        def has_perm(self, user):
index 2ec579382ee91af8834aeb62c83f334964cf657f..637c544686591cfb5fdcd857adc7c0d297cb935a 100644 (file)
@@ -410,7 +410,7 @@ class Package(database.Base, database.BackendMixin, database.SoftDeleteMixin):
        # Distro
 
        distro = sqlalchemy.orm.relationship("Distro",
-               foreign_keys=[distro_id], lazy="joined")
+               foreign_keys=[distro_id], lazy="joined", innerjoin=True)
 
        # Build ID
 
@@ -620,7 +620,7 @@ class File(database.Base):
 
        # Package
 
-       package = sqlalchemy.orm.relationship("Package", foreign_keys=[pkg_id], lazy="joined")
+       package = sqlalchemy.orm.relationship("Package", foreign_keys=[pkg_id], lazy="selectin")
 
        # Path
 
index 110fbf5927797d7dc45b422070f4ee76480feae2..ae19b0595783dde61de536b4005f3221102e2421 100644 (file)
@@ -50,7 +50,7 @@ class Release(database.Base, database.BackendMixin, database.SoftDeleteMixin):
 
        # Distro
 
-       distro = sqlalchemy.orm.relationship("Distro", lazy="joined")
+       distro = sqlalchemy.orm.relationship("Distro", lazy="joined", innerjoin=True)
 
        # Name
 
@@ -72,7 +72,7 @@ class Release(database.Base, database.BackendMixin, database.SoftDeleteMixin):
        # Created By
 
        created_by = sqlalchemy.orm.relationship(
-               "User", foreign_keys=[created_by_id], lazy="joined",
+               "User", foreign_keys=[created_by_id], lazy="joined", innerjoin=True,
        )
 
        # Deleted By ID
@@ -82,7 +82,7 @@ class Release(database.Base, database.BackendMixin, database.SoftDeleteMixin):
        # Deleted By
 
        deleted_by = sqlalchemy.orm.relationship(
-               "User", foreign_keys=[deleted_by_id], lazy="joined",
+               "User", foreign_keys=[deleted_by_id], lazy="selectin",
        )
 
        # Stable?
index 959b270092b901b2bd4ec2fbd7757b323fb4ae5d..7a58537c38d64997a69135f9b9879fa7aabff28a 100644 (file)
@@ -41,7 +41,8 @@ class RepoBuild(database.Base):
 
        # Repo
 
-       repo = sqlalchemy.orm.relationship("Repo", foreign_keys=[repo_id], lazy="joined")
+       repo = sqlalchemy.orm.relationship("Repo", foreign_keys=[repo_id],
+               lazy="joined", innerjoin=True)
 
        # Build ID
 
@@ -49,7 +50,8 @@ class RepoBuild(database.Base):
 
        # Build
 
-       build = sqlalchemy.orm.relationship("Build", foreign_keys=[build_id], lazy="joined")
+       build = sqlalchemy.orm.relationship("Build", foreign_keys=[build_id],
+               lazy="joined", innerjoin=True)
 
        # Added At
 
@@ -63,7 +65,7 @@ class RepoBuild(database.Base):
        # Added By
 
        added_by = sqlalchemy.orm.relationship(
-               "User", foreign_keys=[added_by_id], lazy="joined",
+               "User", foreign_keys=[added_by_id], lazy="selectin",
        )
 
        # Removed At
@@ -77,7 +79,7 @@ class RepoBuild(database.Base):
        # Removed By
 
        removed_by = sqlalchemy.orm.relationship(
-               "User", foreign_keys=[removed_by_id], lazy="joined",
+               "User", foreign_keys=[removed_by_id], lazy="selectin",
        )
 
 
@@ -215,7 +217,7 @@ class Repo(database.Base, database.BackendMixin, database.SoftDeleteMixin):
 
        distro_id = Column(Integer, ForeignKey("distributions.id"), nullable=False)
 
-       distro = sqlalchemy.orm.relationship("Distro", lazy="joined")
+       distro = sqlalchemy.orm.relationship("Distro", lazy="joined", innerjoin=True)
 
        # Created At
 
@@ -250,7 +252,7 @@ class Repo(database.Base, database.BackendMixin, database.SoftDeleteMixin):
 
        # Owner
 
-       owner = sqlalchemy.orm.relationship("User", lazy="joined")
+       owner = sqlalchemy.orm.relationship("User", lazy="selectin")
 
        def has_perm(self, user):
                """
index c0c71665b8075aeaf0fa011d08b681779a4f13cb..66a91c98d6566adb16b8ba7de604394d8f6aefd0 100644 (file)
@@ -94,7 +94,8 @@ class Session(database.Base):
 
        user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
 
-       user = sqlalchemy.orm.relationship("User", back_populates="sessions", lazy="joined")
+       user = sqlalchemy.orm.relationship("User", back_populates="sessions",
+               lazy="joined", innerjoin=True)
 
        # Created At
 
index 4ffabbe9b074c86eb60adfc1c5fa28ba578fd953..5cf329328db028382d1d79d4fbe89bc1b2568ea4 100644 (file)
@@ -187,7 +187,7 @@ class Source(database.Base, database.BackendMixin, database.SoftDeleteMixin):
        # Repo
 
        repo = sqlalchemy.orm.relationship(
-               "Repo", foreign_keys=[repo_id], lazy="joined",
+               "Repo", foreign_keys=[repo_id], lazy="joined", innerjoin=True,
        )
 
        # Distro
@@ -208,7 +208,7 @@ class Source(database.Base, database.BackendMixin, database.SoftDeleteMixin):
        # Created By
 
        created_by = sqlalchemy.orm.relationship(
-               "User", foreign_keys=[created_by_id], lazy="joined",
+               "User", foreign_keys=[created_by_id], lazy="joined", innerjoin=True,
        )
 
        # Deleted By ID
index 5abc1b67594eaf0851b3447dea9591f4317f47c9..49a22a64b409e4f60263053cf700ec195ed3f6fe 100644 (file)
@@ -1009,7 +1009,7 @@ class UserPushSubscription(database.Base, database.BackendMixin):
 
        # User
 
-       user = sqlalchemy.orm.relationship("User", lazy="joined")
+       user = sqlalchemy.orm.relationship("User", lazy="joined", innerjoin=True)
 
        # UUID