]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
use the default driver for sparse backend
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 1 Nov 2025 13:56:18 +0000 (09:56 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 1 Nov 2025 13:56:18 +0000 (09:56 -0400)
the memusage tests use sparse_backend but should use the
main driver in a set; they were using the pysqlite_numeric
dialect which is not a real dialect and apparently runs
dramatically slower for the memusage tests since it generates
more memory artifacts.

Change-Id: Icf19ac1a3cae862a48ddcec565079c960b8ac2b7

lib/sqlalchemy/testing/config.py
lib/sqlalchemy/testing/plugin/plugin_base.py

index f3598f0910588ca9e047c240054501072f5339d5..6bac66b4f4da5b7495ee53326bd6eb00a61c55ff 100644 (file)
@@ -328,11 +328,24 @@ class Config:
         self.test_schema = "test_schema"
         self.test_schema_2 = "test_schema_2"
 
+        self.is_default_dialect = (
+            db.url._get_entrypoint()
+            is db.url.set(
+                drivername=db.url.get_backend_name()
+            )._get_entrypoint()
+        )
         self.is_async = db.dialect.is_async
 
     _stack = collections.deque()
     _configs = set()
 
+    def __repr__(self):
+        return (
+            f"sqlalchemy.testing.config.Config"
+            f"({self.db.name}+{self.db.driver}, "
+            f"{self.db.dialect.server_version_info})"
+        )
+
     def _set_name(self, db):
         suffix = "_async" if db.dialect.is_async else ""
         if db.dialect.server_version_info:
index 96057e09422f2e0e9555d7d36e3ed18fce48f678..1b7a042d177f1fff14be6470dfb566083b18d89b 100644 (file)
@@ -683,16 +683,19 @@ def _possible_configs_for_cls(cls, reasons=None, sparse=False):
         # sorted so we get the same backend each time selecting the highest
         # server version info.
         per_dialect = {}
-        for cfg in reversed(
+
+        sorted_all_configs = reversed(
             sorted(
                 all_configs,
                 key=lambda cfg: (
+                    "z" if cfg.is_default_dialect else "a",
                     cfg.db.name,
                     cfg.db.driver,
                     cfg.db.dialect.server_version_info,
                 ),
             )
-        ):
+        )
+        for cfg in sorted_all_configs:
             db = cfg.db.name
             if db not in per_dialect:
                 per_dialect[db] = cfg