Novinky v mssql-django

Tento článek popisuje nové funkce, vylepšení a změny v každé verzi mssql-django back-endu databáze Django.

Verze 1.7.3

Datum vydání: červen 2026

Verze 1.7.3 je zpětně kompatibilní opravná verze se dvěma opravami připojení a běhového prostředí.

Opravy chyb

  • FA001 pro Authentication= režimy jiné než ActiveDirectoryMsi: Dříve backend přeskočil Trusted_Connection=yes pouze pro ActiveDirectoryMsi. Jiné režimy Entra, které neposkytují hodnotu USER (například ActiveDirectoryIntegrated, ActiveDirectoryDefault, ActiveDirectoryDeviceFlow), stále obdržely Trusted_Connection=yes, které ovladač ODBC odmítl s chybou FA001 (Cannot use Authentication option with Integrated Security option). Oprava detekuje libovolnou explicitní hodnotu Authentication= pomocí porovnání zohledňujícího hranice a nerozlišujícího velikost písmen a přeskočí jak Trusted_Connection, tak Integrated Security=SSPI. Zpracování hesla se nemění: SqlPassword, ActiveDirectoryPassword a ActiveDirectoryServicePrincipal nadále odesílají PWD, zatímco ActiveDirectoryInteractive jej nadále vynechává.
  • KeyError na podtříděném DatabaseWrapper: Vlastnosti sql_server_version a to_azure_sql_db uložené v mezipaměti se spoléhaly na introspekci type(self).__dict__ u cached_property, která při prvním přístupu podtřídy DatabaseWrapper k těmto vlastnostem vyvolala KeyError (regrese zavedená ve verzi 1.7.1). Oprava používá explicitní slovníky na úrovni třídy (_known_versions, _known_azures), ke kterým se přistupuje přes self., takže se vyhledávání vyhodnocuje podle MRO a obaly odvozených tříd fungují správně.

Verze 1.7.2

Datum vydání: květen 2026

Verze 1.7.2 je zpětně kompatibilní opravná verze obsahující opravy časových pásem a kompatibility.

Opravy chyb

  • .explain() Kompatibilita s Django 4.0 a novějšími verzemi: Opravili jsme zpracování metadat explain v Django kompilátorem, takže .explain() už na Django 4.0 a novějších verzích neselhává s AttributeError. Backend se nyní řídí poli explain odpovídajícími verzi a v případě potřeby správně vyvolá NotSupportedError.
  • zpracování časového pásma u datetimeoffset: Opraveno parsování datetimeoffset, takže posuny časových pásem se zachovají namísto jejich zahození. Vrácené hodnoty data a času nyní tam, kde se to očekává, obsahují informaci o časovém pásmu.
  • Now() s USE_TZ=True: Aktualizováno generování SQL pro Now(), aby při povolené podpoře časových pásem používalo chování zohledňující časové pásmo, což zabraňuje posunu časových razítek na hostitelích SQL Serveru, které nepoužívají UTC.

Verze 1.7.1

Datum vydání: duben 2026

Verze 1.7.1 je zpětně kompatibilní verze oprav s opravami chyb.

Opravy chyb

  • FieldDoesNotExist při změně polí v sestupném pořadí indexů: Opraveno _alter_field() v schema.py, aby se při určování názvů polí indexu používalo index.fields_orders místo index.fields. Předchozí kód předával nezpracované řetězce field-with-ordering (například "-pub_date") do model._meta.get_field(), což vyvolalo FieldDoesNotExist. Teď se extrahuje jenom název pole a přípona řazení se správně zahodí.
  • Podpora databáze SQL v Microsoft Fabric (EngineEdition 12): Databáze SQL v Microsoft Fabric (EngineEdition=12) byla rozpoznána jako edice Azure. Dříve nebyla edice enginu Fabric rozpoznána, což způsobovalo, že to_azure_sql_db vracelo False a kontroly feature-gate selhávaly. Oprava přidává EDITION_AZURE_SQL_FABRIC=12 do _AZURE_EDITIONS a mapuje Fabric na nejnovější podporovanou verzi serveru SQL Server. JSONField, hašovací funkce, introspekce kolace a rušení testovací databáze nyní ve Fabric fungují správně.

Verze 1.7

Datum vydání: březen 2026

Zvýraznění

  • Podpora Django 6.0: Úplná kompatibilita s Django 6.0, která vyžaduje Python 3.12 nebo novější. Back-end zpracovává všechny změny rozhraní API verze 6.0 transparentně.
  • Částečná CompositePrimaryKey podpora: Back-end přidává částečnou podporu pro Django 5.2 CompositePrimaryKey. Porovnávání n-tic se vnořenými dotazy vyžaduje Django 5.2.4 nebo novější verzi a některé okrajové případy týkající se složených klíčů a JSONField přetrvávají. Django 5.2 byl poprvé podporován v mssql-django 1.6.
  • podpora SQL Server 2025: Ověřeno v SQL Server 2025.
  • Výchozí ovladač ODBC 18: Back-end teď pro SQL Server ve výchozím nastavení používá ovladač ODBC 18 s automatickým náhradním ovladačem ODBC 17, pokud není nainstalovaná verze 18.

Poznámky ke konkrétní verzi

Verze Django Poznámky
Django 5.1 inspectdb může zkontrolovat tabulky pomocí složených primárních klíčů, ale nevygeneruje pro ně úplné definice modelu.
Django 5.2 CompositePrimaryKey podpora je částečná. Porovnávání n-tic se subvýběry vyžaduje Django ve verzi 5.2.4 nebo novější a stále zbývají některé okrajové případy týkající se migrací a JSONField.
Django 6.0 Vyžaduje Python 3.12 nebo novější. Platí všechna omezení 5.2.

Verze 1.6

Datum vydání: srpen 2025

  • Přidání podpory Django 5.1 a 5.2
  • Vylepšené funkce JSON a zpětná kompatibilita
  • Vylepšená infrastruktura kanálů.

Verze 1.5

Datum vydání: duben 2024

  • Byl přidán supports_comments přepínač funkce pro db_comments.
  • Opravy chyb týkající se AutoField, formátování parametrů a dotazů na schéma.

Verze 1.4

Datum vydání: leden 2024

  • Přidání podpory Django 5.0
  • Byla přidána podpora db_comment.
  • Opravy chyb pro převody data a času a prázdné agregace

Verze 1.3

Datum vydání: květen 2023

  • Byla přidána podpora Django 4.2.
  • Byla přidána podpora funkcí rozlišující malá a velká Replace písmena.
  • Opravy chyb ve zpracování OFFSET a v levém odsazení.

Verze 1.2

Datum vydání: prosinec 2022

  • Byla přidána podpora Django 4.1.
  • Přidání podpory časového pásma (datetimeoffset s USE_TZ=True).
  • Byla přidána možnost return_rows_bulk_insert pro získání ID při hromadném vložení.
  • Přidání podpory pro SQL Server 2022
  • Byla přidána podpora JSONField pro Azure SQL Managed Instance

Verze 1.1

Datum vydání: červenec 2022

  • Podpora django 3.2 a 4.0
  • SQL Server 2016 a novější a podporu Azure SQL Database.
  • konektivita založená na pyodbc.