Zum Hauptinhalt springen
Inoffizielle Beta-Übersetzung

Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →

Versionshinweise 1.0

TypeORM 1.0 ist ein großes Release, das lange als veraltet markierte APIs entfernt, Plattformanforderungen modernisiert und Dutzende Fehlerbehebungen sowie neue Funktionen aus dem 0.3.x-Zyklus enthält.

Breaking Changes

Siehe den Upgrade-Leitfaden für detaillierte Upgrade-Anweisungen.

Plattformanforderungen

  • Node.js 20+ erforderlich — Unterstützung für Node.js 16 und 18 wurde eingestellt, das JavaScript-Mindestziel ist nun ES2023 (#11382 von @alumni)

  • Buffer-Polyfill entfernt — Für Binärdaten auf Nicht-Node-Plattformen wird nun Uint8Array verwendet; Node.js Buffer (das Uint8Array erweitert) funktioniert wie zuvor (#11935 von @pujux)

  • Glob-Bibliothek ersetztglob wurde durch tinyglobby ersetzt und rimraf entfernt, was weniger Abhängigkeiten bedeutet (#11699 von @alumni)

  • Hashing in natives crypto verschoben — Die Pakete sha.js und uuid wurden durch das native crypto-Modul und crypto.randomUUID() ersetzt (#11864 von @G0maa, #11769 von @mag123c)

Treiberänderungen

  • MySQL / MariaDB: mysql-Paket entfernt — Nur mysql2 wird unterstützt; Die Option connectorPackage wurde entfernt (#11766 von @pkuczynski)

  • MySQL: legacySpatialSupport standardmäßig false — Standardfunktionen ST_GeomFromText/ST_AsText werden nun verwendet (#12083 von @pkuczynski)

  • MySQL: width- und zerofill-Spaltenoptionen entfernt — Diese wurden in MySQL 8.0.17 als veraltet markiert und in MySQL 8.4 entfernt (#12084 von @pkuczynski)

  • SQLite: sqlite3 entfernt, better-sqlite3 ist Standard — Das sqlite3-Paket wird nicht mehr unterstützt; Die Optionen flags und busyTimeout wurden entfernt (#11836 von @pkuczynski)

  • MongoDB: Treiber v7+ erforderlich — Unterstützung für MongoDB Node.js-Treiber v5/v6 wurde eingestellt; stats()-Methode entfernt; Veraltete Verbindungsoptionen entfernt; Interne Typen werden nicht mehr exportiert (#12208 von @naorpeled, #12179 von @pkuczynski, #12120 von @pkuczynski, #12037 von @alumni)

  • MS SQL Server: domain-Verbindungsoption entfernt — verwende stattdessen authentication mit NTLM-Typ (#12135 von @pkuczynski)

  • MS SQL Server: options.isolation in options.isolationLevel umbenannt — Das Wertformat wurde von READ_COMMITTED zu READ COMMITTED geändert, um dem IsolationLevel-Typ zu entsprechen; Isolationsstufe SNAPSHOT hinzugefügt (#12231 von @Cprakhar)

  • SAP HANA: Veraltete Verbindungsaliase entfernthanaClientDriver, pool.max, pool.requestTimeout, pool.idleTimeout und andere wurden zugunsten ihrer modernen Entsprechungen entfernt (#12080 von @gioboa)

  • Expo: Legacy-Treiber entfernt — Der veraltete Expo SQLite-Treiber wurde entfernt; verwende Expo SDK v52+ mit der modernen Async-API (#11860 von @G0maa)

  • Redis: Legacy-Client-Support entfernt — Nur der moderne Redis-Client (v4+) wird für das Caching von Abfrageergebnissen unterstützt (#12057 von @G0maa)

Entfernte APIs

  • Connection und ConnectionOptions entfernt — verwende stattdessen DataSource und DataSourceOptions (#12022 von @alumni)

  • Eigenschaft .connection in .dataSource umbenannt — Die Eigenschaft connection in Driver, QueryRunner, EntityManager, QueryBuilder, EntityMetadata und allen *Event-Subscriber-Schnittellen wurde in dataSource umbenannt; Eine veraltete Getter-Methode dient als Brücke (#12244, #12245, #12246, #12249 von @pkuczynski)

  • ConnectionManager und globale Hilfsfunktionen entferntcreateConnection, getConnection, getManager, getRepository, createQueryBuilder und andere globale Funktionen wurden entfernt (#12098 von @michaelbromley)

  • Globale Funktionen getMongoRepository und getMongoManager entfernt — verwende stattdessen dataSource.getMongoRepository() und dataSource.mongoManager (#12099 von @pkuczynski)

  • DataSource.name entfernt — Benannte Verbindungen waren seit v0.3 veraltet; ConnectionOptionsReader.all() wurde in get() umbenannt (#12136 von @pkuczynski)

  • Unterstützung für TYPEORM_*-Umgebungsvariablen entferntConnectionOptionsEnvReader, ormconfig.env und automatisches dotenv-Laden wurden entfernt (#12134 von @pkuczynski)

  • findByIds entfernt — verwende stattdessen findBy mit dem In-Operator (#12114 von @pkuczynski)

  • findOneById entfernt — verwende stattdessen findOneBy (#12198 von @pkuczynski)

  • Repository.exist() entfernt — verwende stattdessen Repository.exists() (#12131 von @pkuczynski)

  • AbstractRepository, @EntityRepository und getCustomRepository entfernt — verwende stattdessen Repository.extend() (#12096 von @pkuczynski)

  • @RelationCount-Dekorator entfernt — verwende stattdessen @VirtualColumn mit einer Subquery (#12181 von @pkuczynski)

  • IoC-Containersystem entferntuseContainer(), getFromContainer() und zugehörige Typen wurden entfernt (#12180 von @pkuczynski)

  • readonly-Spaltenoption entfernt — verwende stattdessen update: false (#12132 von @pkuczynski)

  • unsigned bei ColumnNumericOptions entfernt — betrifft nur Decimal-/Float-Typen; unsigned für Integer bleibt unverändert (#12133 von @pkuczynski)

  • QueryBuilder: onConflict(), veraltete orUpdate()-Überladung und setNativeParameters() entfernt — verwende stattdessen orIgnore()/orUpdate() mit Array-Signatur und setParameters() (#12090 von @pkuczynski)

  • QueryBuilder: printSql() entfernt — Es war redundant, da alle ausgeführten Abfragen bereits über den konfigurierten Logger protokolliert werden; Verwende stattdessen getSql() oder getQueryAndParameters(), um die SQL-Abfrage zu prüfen (#12151 von @naorpeled, #12220 von @pkuczynski)

  • QueryBuilder: WhereExpression-Typalias entfernt — verwende stattdessen WhereExpressionBuilder (#12097 von @pkuczynski)

  • QueryBuilder: replacePropertyNames() entfernt — es war eine No-Op-Funktion (#12178 von @pkuczynski)

  • join-Find-Option entfernt — Verwende relations für LEFT JOINs oder QueryBuilder für andere Join-Typen (#12188 von @pkuczynski)

  • String-basiertes select entfernt — Verwende die Objekt-Syntax select: { id: true } anstelle von select: ["id"] (#12214 von @pkuczynski)

  • String-basiertes relations entfernt — Verwende die Objekt-Syntax relations: { profile: true } anstelle von relations: ["profile"] (#12215 von @pkuczynski)

  • Veraltete Sperrmodi entferntpessimistic_partial_write und pessimistic_write_or_fail wurden durch pessimistic_write mit onLocked-Option ersetzt (#12093 von @pkuczynski)

  • QueryRunner.loadedTables und loadedViews entfernt — verwende stattdessen getTables() und getViews() (#12183 von @pkuczynski)

  • MigrationExecutor.getAllMigrations() entfernt — verwende stattdessen getPendingMigrations(), getExecutedMigrations() oder dataSource.migrations (#12142 von @pkuczynski)

  • Statische Methode EntityMetadata.createPropertyPath() entfernt — interne Hilfsfunktion ohne öffentlichen Ersatz (#12141 von @pkuczynski)

  • Interne nativeParameters-Verbindung entfernt aus Treibern und Query Buildern (#12104 von @pkuczynski)

  • Interne Funktion broadcastLoadEventsForAll() entfernt aus Broadcaster (#12137 von @pkuczynski)

  • Interne Funktion DriverUtils.buildColumnAlias() entfernt — verwende stattdessen buildAlias() (#12138 von @pkuczynski)

  • RdbmsSchemaBuilder.renameTables() entfernt — Leere No-Op-Methode, die nie aufgerufen wurde (#12284 von @naorpeled)

  • EntityMetadata.getValueMap() options-Parameter entfernt — Die Option skipNulls war nie funktionsfähig; entferne das dritte Argument (#12303 von @naorpeled)

Verhaltensänderungen

  • Nicht-nullable Beziehungen verwenden jetzt INNER JOINManyToOne und besitzende OneToOne-Beziehungen, die mit nullable: false markiert sind, verwenden nun INNER JOIN statt LEFT JOIN, was Zeilen mit verwaisten Fremdschlüsseln ausschließen kann (#12064 von @pkuczynski)

  • invalidWhereValuesBehavior standardmäßig auf throw — Übergabe von null oder undefined in WHERE-Bedingungen löst jetzt einen Fehler aus statt die Eigenschaft stillschweigend zu ignorieren; verwende IsNull() für Null-Matching (#11710 von @naorpeled)

  • invalidWhereValuesBehavior nur für High-Level-APIs — QueryBuilders .where(), .andWhere() und .orWhere() sind nicht mehr von dieser Einstellung betroffen (#11878 von @naorpeled)

  • ConnectionOptionsReader- und FileLogger-Pfade relativ zu process.cwd()ConnectionOptionsReader verwendet nicht mehr app-root-path zum Auffinden von ormconfig-Dateien; stattdessen wird process.cwd() durchsucht. Übergib { root: "/custom/path" } an den Konstruktor zur Anpassung. FileLogger.logPath wird ebenfalls relativ zu process.cwd() aufgelöst — verwende einen absoluten Pfad, wenn die App nicht aus ihrem Root-Verzeichnis gestartet wird (#12257 von @alumni)

Neue Funktionen

Query Builder

  • INSERT INTO ... SELECT FROM ... — Neue valuesFromSelect()-Methode für InsertQueryBuilder zur Datenmigration und Transformationsabfragen (#11896 von @Cprakhar)

  • returning-Option für Update/Upsert — Repository- und Entity-Manager-update()- und upsert()-Methoden unterstützen jetzt returning auf Datenbanken mit RETURNING-Klauseln (#11782 von @naorpeled)

  • ifExists-Parameter für alle Drop-MethodendropColumn, dropIndex, dropPrimaryKey, dropForeignKey, dropUniqueConstraint, dropCheckConstraint, dropExclusionConstraint und ihre Pluralvarianten akzeptieren jetzt ein ifExists-Flag (#12121 von @pkuczynski)

  • Explizites Ressourcenmanagement für QueryRunner — Unterstützt await using-Syntax (TypeScript 5.2+) zur automatischen Bereinigung (#11701 von @alumni)

Transaktionen

  • Datenquellen-weite Standard-Isolationsstufe für alle TreiberDataSourceOptions.isolationLevel wird nun von jedem Transaktionen unterstützenden Treiber beachtet, nicht nur von SQL Server. Transaktionen, die über die DataSource gestartet werden (explizit oder implizit für DML), verwenden standardmäßig diese Stufe (#12269 von @pkuczynski)

  • Aurora Postgres: Unterstützung von Transaktions-Isolationsstufen — Aurora Postgres beachtet nun die isolationLevel-Option auf DataSource-Ebene und bei expliziten startTransaction()-Aufrufen (#12334 von @pkuczynski)

  • Spanner: Unterstützung von Transaktions-Isolationsstufen — Google Spanner beachtet nun die isolationLevel-Option. Die supportedIsolationLevels von Spanner beschränken sich auf REPEATABLE READ (aktuell in Preview) und SERIALIZABLE (#12335 von @pkuczynski)

Treiber

  • PostgreSQL: ADD VALUE für Enum-Änderungen — Beim Hinzufügen neuer Enum-Werte verwendet TypeORM jetzt die einfachere ALTER TYPE ... ADD VALUE-Syntax statt des 4-stufigen Umbenennen-Erstellen-Migrieren-Löschen-Ansatzes, wo möglich (#10956 von @janzipek)

  • PostgreSQL: Zusätzliche Erweiterungen — Neue installExtensions-Option zur Installation zusätzlicher PostgreSQL-Erweiterungen während der Verbindungseinrichtung (#11888 von @Cprakhar)

  • PostgreSQL: Unterstützung für partielle Indizes — fügt Unterstützung für partielle Indizes in PostgreSQL hinzu (#11318 von @freePixel)

  • SAP HANA: Sperren in SELECTFOR UPDATE und andere Sperrmodi werden jetzt in SAP HANA-Abfragen unterstützt (#11996 von @alumni)

  • SAP HANA: Tabellenkommentare@Entity({ comment: "..." }) funktioniert jetzt mit SAP HANA (#11939 von @Cprakhar)

  • SAP HANA: Pool-Timeout — Neue maxWaitTimeoutIfPoolExhausted-Option für Connection-Pools (#11868 von @alumni)

  • SQLite: jsonb-Spaltentyp — SQLite unterstützt jetzt den jsonb-Spaltentyp (#11933 von @Cprakhar)

  • MongoDB: objektbasierte select-Projektionfind*()-Methoden akzeptieren nun zusätzlich zur bestehenden Array-Form dieselbe objektbasierte select-Syntax wie andere Treiber (select: { id: true, name: true }) (#12237 von @pkuczynski)

  • React Native: Verschlüsselungsschlüssel — Neue Option zum Übergeben eines Verschlüsselungsschlüssels für React Native SQLite-Datenbanken (#11736 von @HtSpChakradharCholleti)

Persistenz & Upsert

  • Kaskadierendes Trunkieren in clear()Repository.clear() und EntityManager.clear() akzeptieren jetzt { cascade: true }, um TRUNCATE ... CASCADE auf PostgreSQL, CockroachDB und Oracle auszuführen (#11866 von @Cprakhar)

  • Verbesserte Typisierung für increment/decrement — Der Bedingungsparameter verwendet jetzt typsichere Entity-Typen statt any (#11294 von @OSA413)

Spaltentypen & Dekoratoren

  • Deferrierbare Unterstützung für @Exclusion — Ergänzt die bestehende deferrierbare Unterstützung von @Unique und @Index (#11802 von @oGAD31)

Andere Änderungen

  • Automatisierter Codemod für v1-Migration — Das neue Paket @typeorm/codemod automatisiert die meisten Breaking Changes: Führe npx @typeorm/codemod v1 src/ aus, um Imports, API-Umbenennungen, Find-Optionen-Syntax und mehr zu aktualisieren (#12233 von @pkuczynski)

  • Verbesserte Fehlerbehandlung für ormconfig — Fehler beim Laden protokollieren jetzt Warnungen statt stillschweigend zu scheitern (#11871 von @Cprakhar)

Fehlerbehebungen

Abfragegenerierung

  • Spaltenalias in orderBy korrekt maskiert — Verhindert SQL-Fehler bei Namenskonflikten mit reservierten Wörtern (#12027 von @Cprakhar)

  • addOrderBy löst Datenbankspaltennamen auf — Die Verwendung des Datenbank-Spaltennamens (z.B. created_at) statt des Eigenschaftsnamens funktioniert jetzt korrekt (#11904 von @smith-xyz)

  • Sortierung von Subquery-Spalten — Behobener Fehler "Cannot get metadata for given alias" bei Sortierung nach Subquery-Spalten (#11343 von @trannhan0810)

  • Reihenfolge von select-Spalten erhaltengetQuery()/getSql() gibt Spalten jetzt in der durch select() und addSelect() festgelegten Reihenfolge zurück (#11902 von @Cprakhar)

  • .update()-Abfragegenerierung korrigiert — Behobene fehlerhafte SQL-Generierung bei Verwendung von QueryBuilder .update() (#11993 von @gioboa)

  • Upsert-SQL-Generierung mit Tabellenalias — Behobene fehlerhafte Spaltenreferenzen in Upsert-Abfragen mit Tabellenvererbung und benutzerdefinierten Schemata (#11915 von @Cprakhar)

  • Limit mit Joins — Behobene falsche Ergebnisse bei Verwendung von skip/take-Paginierung mit Joins (#11987 von @gioboa)

  • Join-Attribute in Klammern — behoben das Parsen von Joins bei Bedingungen mit Klammern (#11218 von @balkrushna)

  • Globale ORDER BY für Aggregatfunktionen deaktiviertrepo.max(), repo.min() etc. erzeugen kein ungültiges SQL mehr mit ORDER BY-Klauseln (#11925 von @Cprakhar)

  • Subqueries für Paginierung enthalten PKs verknüpfter EntitätenleftJoin mit skip/take lädt verknüpfte Entitäten nun korrekt (#11669 von @mag123c)

  • Aliaskürzung mit camelCase — die shorten-Methode verarbeitet camelCase_aliases nun korrekt (#11283 von @OSA413)

  • Entity-Typisierung für QueryBuilder.update() — Die Signatur update(partialEntity) verwendet nun einen typsicheren Entity-Typ statt eines losen Objekts (#11296 von @OSA413)

  • Whitespace in Query-Logs — Führende und abschließende Leerzeichen werden nicht mehr in geloggten Query-Strings enthalten sein (#12047 von @Cprakhar)

Beziehungen & Eager Loading

  • Verwaiste One-to-Many-Kinder mit nicht-nullable FK werden jetzt gelöscht — Beim Speichern einer One-to-Many-Beziehung mit Cascade und Ersetzen der Kinder werden verwaiste Zeilen mit nicht-nullable Fremdschlüssel (FK) nun gelöscht, anstatt mit einer Constraint-Verletzung zu scheitern; nullable FK-Zeilen werden wie zuvor auf null gesetzt (#11982 von @naorpeled)

  • Eager-Relations berücksichtigen jetzt relationLoadStrategy: "query" — Eager-Relations werden über separate Queries geladen, wenn die "query"-Strategie gesetzt ist, anstatt immer JOINs zu verwenden (#11326 von @SharkSharp, #12256 von @pkuczynski)

  • Aliaskollision bei selbstreferenziellen Beziehungen — selbstreferenzielle Beziehungen mit relationLoadStrategy: "query" erzeugen durch Aliaskollision kein fehlerhaftes SQL mehr (#11066 von @campmarc)

  • Eager-Beziehungen nicht doppelt gejoined — explizites Angeben von Eager-Beziehungen in relations verursacht keine doppelten JOINs mehr (#11991 von @veeceey)

  • Speichern mit eager-geladenen Beziehungen — behoben Fehler beim Speichern von Entitäten mit eager-geladenen Beziehungen (#11975 von @gioboa)

  • Spalten mit select: false nicht mehr zurückgegeben — als select: false markierte Spalten werden korrekt aus Abfrageergebnissen ausgeschlossen (#11944 von @gioboa)

  • Subqueries mit joinMapOne-Methoden — behoben fehlerhaftes Verhalten bei Verwendung von Join-Map-Methoden (#11943 von @gioboa)

  • Beziehungs-IDs in verschachtelten eingebetteten Entitäten — behoben TypeError: Cannot set properties of undefined beim Mapping von Beziehungs-IDs in eingebetteten Entitäten (#11942 von @Cprakhar)

  • Aliasbehandlung in RelationIdLoader — nutzt DriverUtils.getAlias, um Alias-Kürzungen durch Datenbanken mit kurzen Bezeichnerlimits zu verhindern (#11228 von @te1)

  • *-to-many in createPropertyPath — entfernte fehlerhafte Fehlerbehandlung, die bestimmte Beziehungskonfigurationen blockierte (#11119 von @ThbltLmr)

  • Kaskadierendes Löschen bei OneToMany mit zusammengesetzten Primärschlüsselncascade: ["remove"] propagiert Löschvorgänge nun korrekt an Kind-Entities, wenn das Ziel einen zusammengesetzten PK hat; zuvor markierte CascadesSubjectBuilder diese Kinder nie als mustBeRemoved, was zu FK-Verletzungen führte (#12286 von @pkuczynski)

  • withDeleted an Relation-ID-Loader für Many-to-Many-Recovery propagiert — Das Wiederherstellen einer soft-gelöschten Entity mit Many-to-Many-Relationen versucht nicht mehr, existierende Junction-Rows erneut einzufügen; RelationIdLoader berücksichtigt nun soft-gelöschte Entities, wenn die übergeordnete Query withDeleted gesetzt hat (#12287 von @pkuczynski)

Persistenz

  • Upsert mit update: false oder generatedType — Upsert verarbeitet Spalten, die nicht aktualisiert werden sollen, nun korrekt (#12030 von @gioboa)

  • Werttransformatoren für FindOperator-InstanzenApplyValueTransformers transformiert Werte in FindOperator-Instanzen wie In, Between etc. nun korrekt (#11172 von @ZimGil)

  • Soft-Deletion aktualisiert nicht mehr bereits gelöschte ZeilensoftDelete und softRemove überspringen jetzt Zeilen, die bereits soft-gelöscht wurden (#10705 von @hassanmehdi98)

  • Entity-Merge berücksichtigt null-Werte — Beim Zusammenführen in eine Entity werden null-Eigenschaftswerte nicht mehr stillschweigend ignoriert (#11154 von @knoid)

  • Map/Objekt-Vergleich — Fehlerhafte Änderungserkennung für Map- und Objekt-Spaltenwerte behoben (#10990 von @mgohin)

  • Datumstransformer-Änderungserkennung — Falsch-positive Dirty-Erkennung bei Datumstransformern behoben (#11963 von @gioboa)

  • Child-mpath-Aktualisierung — Der mpath von Baum-Entities wird nun korrekt aktualisiert, auch bei Neuzuordnung mit soft-gelöschten Eltern (#10844 von @JoseCToscano)

  • Weitergabe von Schema/Datenbank für Closure-Junction-Tabellen — Schema- und Datenbankeinstellungen werden nun korrekt an Closure-Junction-Tabellen weitergegeben (#12110 von @pkuczynski)

  • Handhabung virtueller Eigenschaften im Schema Builder — Der Schema Builder versucht nicht mehr, Spalten für virtuelle Eigenschaften zu erstellen (#11000 von @skyran1278)

  • Entfernen namenloser TableForeignKey — Das Löschen eines Fremdschlüssels ohne expliziten Namen führt nicht mehr zu Fehlern (#10744 von @taichunmin)

  • getPendingMigrations erstellt keine Migrationstabelle mehr — Die Überprüfung ausstehender Migrationen hat nun keine Nebeneffekte mehr (#11672 von @pkuczynski)

  • Many-to-many deferrable Fremdschlüssel@ManyToMany berücksichtigt nun die deferrable-Option für die Fremdschlüssel der Verknüpfungstabelle (#11924 von @smith-xyz)

  • Spaltenreihenfolge bei zusammengesetzten Fremdschlüsseln — Der Schema-Builder sortiert referenzierte Spalten in zusammengesetzten Fremdschlüsseln gemäß der Indexreihenfolge des referenzierten Primärschlüssels, um Ablehnungen durch MySQL / MSSQL / SAP HANA zu verhindern (#12280 von @pkuczynski)

Driver-spezifische Korrekturen

  • PostgreSQL: timestamptz-Persistenz/Hydration — Spalten vom Typ timestamp with time zone werden nun korrekt gespeichert und hydriert (#11774 von @Minishlink)

  • PostgreSQL: Geometrietypen-Neuspeicherung — Punkt-/Kreiswerte werden beim Speichern normalisiert, um Fehler beim erneuten Speichern hydrierter Objekte zu vermeiden (#11857 von @Cprakhar)

  • PostgreSQL/CockroachDB: Tabellen mit Anführungszeichen — Handhabung von Tabellen mit Sonderzeichen in Namen korrigiert (#10993 von @iskalyakin)

  • PostgreSQL: Sequentielle Abfrageausführung — Abfragen werden nun sequenziell auf derselben Verbindung ausgeführt, um pg-Deprecation-Warnungen zu vermeiden (#12105 von @pkuczynski)

  • MySQL: PolarDB-X 2.0-VersionserkennunggetVersion() liefert für PolarDB-X 2.0 nicht mehr undefined zurück (#11837 von @Missna)

  • MongoDB: ObjectIdColumn-EigenschaftsnamensübersetzungfindOneBy({ id: value }) übersetzt nun korrekt zu _id in MongoDB-Abfragen (#12200 von @pkuczynski)

  • MongoDB: eingebettete Arrays verschachtelter Dokumente — verarbeitet korrekt eingebettete Arrays innerhalb verschachtelter Dokumentstrukturen (#10940 von @mciuchitu)

  • SQLite: simple-enum-Arrayssimple-enum-Spalten mit array: true führen nicht mehr zu CHECK-Constraint-Fehlern (#11865 von @Cprakhar)

  • SAP HANA: Escaping von Date-Parametern — JS-Date-Werte werden nun als Query-Parameter übergeben statt in SQL-Strings eingebettet (#11867 von @alumni)

  • CockroachDB: strukturierte Abfrageergebnisse bei Transaktionswiederholung — das useStructuredResult-Flag bleibt während CockroachDB-Transaktionswiederholungen jetzt erhalten (#11861 von @naorpeled)

  • Cordova: betroffene Zeilen in Queries — Abfrageergebnisse enthalten jetzt die Anzahl der betroffenen Zeilen (#10873 von @jacobg)

Andere Änderungen

  • CLI init-Befehl — Stürzt nicht mehr ab, wenn package.json nicht existiert (#11947 von @gioboa); Das veröffentlichte Paket enthält jetzt korrekt die für Scaffolding benötigten devDependencies (#12281 von @pkuczynski)

  • Deno process-Import — korrigierter falscher Import für die process-Abhängigkeit in Deno (#11248 von @yohannpoli)

Sicherheitskorrekturen

  • SQL-Injection-Prävention — parametrisierte Queries und escapede Bezeichner werden jetzt in allen Treibern für Schema-Introspection und DDL-Methoden verwendet, was SQL-Injection über Datenbank-/Schema-/Tabellen-/Spaltennamen verhindert (#12207 von @pkuczynski, #12197 von @pkuczynski, #12185 von @pkuczynski)

  • Validierung von OrderBy-Bedingungen — QueryBuilder orderBy und addOrderBy validieren nun Bedingungswerte zur Laufzeit und verhindern so Injection über Order-Ausdrücke (#12217 von @pkuczynski)

Performance-Verbesserungen

  • PostgreSQL / CockroachDB: gebündeltes DROP in clearDatabase() — konsolidiert einzelne DROP-Befehle zu gebündelten Queries, was die Roundtrips während Test-Setups signifikant reduziert (#12164, #12159 von @pkuczynski)