MySQL (64-bit) 歷史版本列表
MySQL 64 位專為企業組織提供關鍵業務數據庫應用程序而設計。它為企業開發人員,數據庫管理員和 ISV 提供了一系列新的企業功能,以提高開發,部署和管理工業強度應用程序的效率.如果您需要 MySQL 數據庫的 GUI,可以下載 - NAVICAT(MySQL GUI)。它支持將 MySQL,MS SQL,MS Access,Excel,CSV,XML 或其他格式導入到 MySQL.MySQL... MySQL (64-bit) 軟體介紹更新時間:2021-11-09
更新細節:
What's new in this version:
dotConnect for SQLite Professional 5.18.2014
Entity Developer:
- The bug with parsing discriminator value as string, even when its type is different, in TPH inheritance of EF Core Model is fixed
Entity Framework support:
- Entity Framework Core 5.0.12 is supported
- Entity Framework Core 3.1.21 is supported
dotConnect for SQLite Professional 5.18.2001
- Visual Studio 2019 Preview support is discontinued
- The bug with throwing Devart.Common.LicenseException, when Devart.Data.MySql.dll is embedded into a single file application, is fixed
- The bug with applying .NET Standard licensing to .NET 6 projects is fixed
Entity Developer:
- The bug with launching Entity Developer after applying Windows 10 Update KB5006670 and Windows 11 Update KB5006674 is fixed
LinqConnect (formerly known as LINQ to MySQL):
- The bug with parsing TypeName values in XML mapping generated by Visual Basic template is fixed
Entity Framework support:
- Entity Framework Core 5.0.11 is supported
- Entity Framework Core 3.1.20 is supported
- The implementation of config.CodeFirstOptions.TruncateLongDefaultNames in EF6 .NET Standard compliant assemblies is improved: the generated names are constant, independent on a current domain and workstation
- The bug with using DateTime.Now, DateTime.UtcNow, DateTimeOffset.Now within LINQ query in EF Core 5 is fixed
dotConnect for SQLite Professional 5.18.1895
Entity Developer:
- The new property Validation Framework is implemented in the Data Transfer Object template for generating DataAnnotations attributes
- The Uri data type is supported in EF Core Model
- The new option "Save connection to" is implemented in Model Settings of EF Core Model to provide the ability to store the connection string in "Model file", "Entity Developer storage", "Environment variable"
- The new option "Enum Output" is added to the EF Core template to specify output for the generated enums
- The new property Generate UnitOfWork Repository Properties (by default, True) is implemented in the Repository and Unit Of Work template of EF Core Model for accessing the collections of entities
- The representation of one-to-one association with non-nullable properties on both ends is changed from 1 -> 1 to 0..1 -> 1 on a diagram in EF Core Model
- The bug throwing "Unknown property 'DoNotSerialize'.", when complex types and VB.NET template are used in EF Core Model, is fixed
- The bug with code generation for the Constrained option of Association Editor in the case of 0..1 -> 1 association in EF Core Model is fixed
Entity Framework support:
- Entity Framework Core 5.0.10 is supported
- Entity Framework Core 3.1.19 is supported
The following Code-First Migration operations are supported in EF Core 3 and EF Core 5 via recreating a table and copying the existing data:
- AlterColumn
- RenameColumn (SQLite 3.24 and below)
- DropColumn (SQLite 3.34 and below)
- AddForeignKey
- DropForeignKey
- AddPrimaryKey
- DropPrimaryKey
The SQL translation of the following class members used in LINQ query is supported in EF Core 3 and EF Core 5:
- static method IsNullOrWhiteSpace() of the String class
- static property Today and instance properties DayOfWeek, Ticks of the DateTime class
- static methods Max(), Min(), Sqrt(), Log(), Log10(), Sin(), Cos(), Tan(), Asin(), Acos(), Atan() of the Math class
- Mapping of System.Decimal to SQLite DECIMAL with specified precision and scale in EF Core 5 is supported
- Mapping of internet/intranet data type System.Uri to SQLite TEXT is supported in EF Core 3 and EF Core 5
- Mapping of network data types System.Net.IPAddress and System.Net.NetworkInformation.PhysicalAddress to SQLite TEXT is supported in EF Core 5
- The SQL translation of these static methods of the MathF class used in LINQ query is supported in EF Core 5: Abs(), Round(), Truncate(), Floor(), Ceiling(), Max(), Min(), Pow(), Sqrt(), Log(), Log10(), Sin(), Cos(), Tan(), Asin(), Acos(), Atan()
- The definition of System.ICloneable is removed from .NET Framework assembly EntityEFCore3Devart.Data.SQLite.Entity.EFCore.dll
dotConnect for SQLite Professional 5.17.1944
LinqConnect (formerly known as LINQ to SQLite):
- The new methods IsNotDistinctFrom() and IsDistinctFrom() are added to the Devart.Data.Linq.SqlMethods class
Entity Framework support:
- Entity Framework Core 5.0.8 is supported
- Entity Framework Core 3.1.17 is supported
- The bug with using Int16 as a data type of the Primary Key property in EF Core Migrations is fixed
dotConnect for SQLite Professional 5.17.1930
- Visual Studio 2019 version 16.11 Preview 2.0 is supported
- The sqlite3.dll library that is included into the installation package is updated to version 3.36.0
Entity Developer:
- The behavior of the Regenerate Storage and Mapping functionality in EF Core Model is changed: the NOT NULL attribute of the column is reset to undefined now; after that, the behavior depends on the Nullable attribute of the class property only
- The bug with applying the Default Precision and Default Scale values from Model Settings to the non-decimal data types by Update To Database Wizard in EF Core is fixed
Entity Framework support;
- Entity Framework Core 5.0.7 is supported
- Entity Framework Core 3.1.16 is supported
- The bug with comparing enum values in EF Core 3 and EF Core 5 is fixed
- The bug with .Contains and .Length in EF Core 3 and EF Core 5, when using NetTopologySuite spatial functionality, is fixed
dotConnect for SQLite Professional 5.17.1905
Entity Developer:
- The new extended property Use Generic DbContextOptions Constructor Argument is added to model properties of EF Core Model
- The new extended property Do Not Generate Constructor With DbContextOptions Argument is added to model properties of EF Core Model
- The bug with generating the Equals method for entities with Record Type=True by C# EF Core template is fixed
- The bug with cleaning values of Length and Precision/Scale column's attributes by Update From Database Wizard in EF Core Model is fixed
- The bug with ignoring template's Validation Error Messages values in the generated code, when class property's Validate Expression is initialized and Validate Format is set to a non-default value, is fixed
- The bug with creating app.config in Visual Studio .NET Framework projects, when the "Rewrite connection string during regeneration" option is turned off in Model Settings, is fixed
Entity Framework support:
- Entity Framework Core 5.0.6 is supported
- Entity Framework Core 3.1.15 is supported
- The EF6 provider registration used with .NET Framework compliant assemblies is improved: the [DbConfigurationType(typeof(SQLiteEntityProviderServicesConfiguration))] attribute set for DbContext descendant allows now calling the DbContext constructor, that accepts a connection string, with no need to register a custom IDbConnectionFactory implementation
dotConnect for SQLite Professional 5.17.1866
Entity Developer:
- The new hotkey Alt+E is implemented in Property Editor for opening Column Editor in EF Core Model
- The bug with throwing "bufferAdapter is not a VsTextDocData" when saving a model in .NET Core, .NET Standard, .NET 5, .NET 6 projects of Visual Studio 2019 is fixed
- The bug with missing .NET Framework, .NET Core 1, .NET Core 2 options for the Target Framework property in Model Settings of EF Core Model in a standalone Entity Developer is fixed
- The bug with preserving Target Framework=.NET Framework in Model Settings of EF Core Model in a standalone Entity Developer is fixed
dotConnect for SQLite Professional 5.17.1860
- Visual Studio 2019 version 16.10 Preview is supported
- The sqlite3.dll library that is included into the installation package is updated to version 3.35.3
- The bug with reading System.Byte[] instead of actual values of CHAR columns via SQLiteDataReader is fixed
Entity Developer:
- .NET 6.0 is added to the list of available Target Framework versions in Create Model Wizard and Model Settings in EF Core, EF6, LinqConnect models
- The new extended property Record Type is added for classes in the case of C# EF Core template to generate records instead of classes in C# 9.0 or higher and .NET 5 or higher
- The new options "Private setter for store generated properties" and "Constructor parameter" are added to Model Settings in EF Core for controlling visibility of setter for store generated properties
- The new options "Don't show this message again" in the prompt window and "Prompt before generating code when there are model validation warnings" in the menu Options are implemented in a standalone Entity Developer to provide the ability not to stop code generation by warnings
- The new extended property Do Not Generate Default Constructor is added to EF Core Model for model, classes, and complex types
- The new extended property Do Not Generate Mapping is added to EF Core Model for class properties
The JSON (Newtonsoft.Json, Microsoft.Text.Json) and YAML (YamlDotNet) serializations are supported in EF Core (via EF Core template) and EF6 (via DbContext template):
- The new template property Serialization Library is added for specifying the library used for serialization
- The new template property Serialize Original Column Names is added for controlling the appearance of original column names in serialization
- The new template property Serialize Navigation Properties is added for controlling the appearance of navigation properties in serialization
- The new template property Serialize Null Value is added for managing the behavior of nullable properties
- The new extended property Do Not Serialize is added for properties and navigation properties to exclude them from serialization
- The new extended property Serialization Name is added for properties and navigation properties to set custom names in serialization
The Data Transfer Object template is improved:
- The new template property Serialization Library is added for specifying library used for serialization, possible values are Data Contract, JSON (Newtonsoft.Json), JSON (Microsoft.Text.Json), YamlDotNet
- The new extended property Do Not Serialize is added for properties and navigation properties to exclude them from serialization
- The new extended property Serialization Name is added for properties and navigation properties to set custom names in serialization
- The behavior is changed: WCF Data Contract Attributes is set to False by default now
The following properties are marked as obsolete:
- the Generate Data Contracts property of the EF Core template
- the Do Not Generate Data Contract Attribute extended property of navigation properties in EF Core Model
- the WCF Data Contract Attributes property of the DbContext and Data Transfer Object templates
- the WCF DataMember Attribute on Navigation Properties property of the DbContext and Data Transfer Object templates
- The bug with creating app.config in Visual Studio .NET Core projects is fixed
- The bug with detecting the existing classes with QueryType=True by Update From Database Wizard in EF Core Model is fixed
Entity Framework support:
- Entity Framework Core 5.0.4 is supported
- Entity Framework Core 3.1.13 is supported
dotConnect for SQLite Professional 5.17.1836
- The sqlite3.dll library that is included into the installation package is updated to version 3.34.1
- The new command line option /disablegac that disables adding assemblies to GAC is added
Entity Developer:
- The behavior is changed in Entity Developer embedded into Visual Studio: lower versions in the EF Core version property of Model Settings are not hidden any more
- The behavior is changed in EF Core Model: QueryType=True is set now for all classes without PK
- C# code generation is improved: the using directives are generated instead of full namespaces in the names of attributes for DataAnnotations, NHibernate Validator, and Enterprise Library validation frameworks
- Code generation is improved: OnModelCreating(modelBuilder) of the base class is invoked now if the Base Context Type property of EF Core Model is initialized
Entity Framework support:
- Entity Framework Core 5.0.3 is supported
- Entity Framework Core 3.1.12 is supported
- The bug with translating Enum.HasFlag to SQL in EF Core 3 and EF Core 5 is fixed
dotConnect for SQLite Professional 5.17.1812
- The bug with blocking thread during retrieving a connection from the pool, when connections from the same pool are used in several threads, is fixed
Entity Developer:
- The new attribute DisplayName is implemented for model objects' extended properties which are available via template properties
- The new options --ContextNamespace and --DefaultNamespace are added to the Create-Model command of Console Entity Developer
- The new extended model property Base Context Type is added for specifying a parent class for the generated context in EF Core Model
- The new extended properties Base Type for complex types and Base Complex Type for model are implemented in EF Core Model
- The %type name% keyword is supported in the Base Type extended property of entities and complex types, and in Base Complex Type, Base Entity Type, Base Context Type extended model properties for setting generic base type in EF Core Model
- Code generation is improved: RelationalIndexBuilderExtensions.HasDatabaseName is generated now instead of RelationalIndexBuilderExtensions.HasName in EF Core 5
- Display names of extended properties in EF Core Model are updated: Entity Base is renamed to Base Type in class properties, Entity Base is renamed to Base Entity Type in model properties, Context Base is renamed to Base Context Type in model properties
- The bug with setting additional keyboard mapping scheme via menu Options on Windows with German display language is fixed
LinqConnect (formerly known as LINQ to SQLite):
- The new property Local is added to the Table and Table classes to return a collection of the entities attached to the context
- The new method GetEntityState(object entity) is added to Table class and ITable interface to return one of the EntityState values
- The bug with throwing "Bad key member '...' in association '...' of type '...'." in runtime by .NET Standard compliant assemblies is fixed
Entity Framework support:
- Entity Framework Core 5.0.2 is supported
- Entity Framework Core 3.1.11 is supported
- The new metadata to describe autoincremental columns via annotations in EF Core Code-First Migrations are implemented
dotConnect for SQLite Professional 5.17.1792
Entity Framework support:
- Entity Framework Core 5.0.1 is supported
- The bug with creating savepoints in EF Core 5 is fixed
dotConnect for SQLite Professional 5.17.1782
- Visual Studio 2019 version 16.9 Preview is supported
- The sqlite3.dll library that is included into the installation package is updated to version 3.34.0
- The bug with using URI format with file path in the Data Source connection string parameter is fixed
- The bug with updating projects that reference EF6 provider assembly via Upgrade Wizard is fixed
Entity Developer:
The new features are supported in Entity Framework 5.0:
- TPT inheritance
- Many-to-many associations
- The new types of properties IPAddress and PhysicalAddress
- The Model Refactoring functionality is supported for classes in EF Core Model
- The behavior is changed in a standalone Entity Developer: by default the Target Framework model property in EF Core Model is set to .NET 5 instead of .NET Framework
- The bug with saving non-default value of Target Framework model property in EF6 model modified with a standalone Entity Developer is fixed
- The bug with adding new arguments at the end of argument list instead of actual position in method signature by Update From Database Wizard is fixed
Entity Framework support:
- Entity Framework Core 5.0 is supported
- Entity Framework Core 3.1.10 is supported
- The behavior is changed: EF Core 3 assemblies available via NuGet package are compiled for .NET Standard 2.0 instead of .NET Standard 2.1
- The behavior is changed: EF Core 2 assemblies are no longer available via NuGet package but created in the provider installation folder
- The bug with using another context's connection in DbContextOptionsBuilder.UseSQLite(connection) in EF Core is fixed
dotConnect for SQLite Professional 5.16.1759
- The bug with Visual Studio 2019 integration, when both v16.7 RTM and v16.8 Preview are installed on the same computer, is fixed
- The bug with missing Name and Owner properties of the SQLiteConnection class in .NET Standard compliant assemblies is fixed
Entity Developer:
- The bug with reading templates from *.edps by console Entity Developer is fixed
Entity Framework support:
- Entity Framework Core 3.1.9 is supported
- The bug with invalid attempt to load the SQLite extension library 'mod_spatialite', when .UseNetTopologySuite() is not used, in EF Core is fixed
dotConnect for SQLite Professional 5.16.1739
- Visual Studio 2019 version 16.8 Preview is supported
Entity Developer:
- EF Core 3 spatial data types support is improved: in addition to Geometry and Geography, specific .NET NetTopologySuite types like GeographyPoint, GeographyLine are now available property types
- The default mapping for spatial data types in Server's Options is updated
- The bug with throwing "EntityProperty does not contain a definition for IsSpatialType", when custom template from previous versions is used, in EF Core Model is fixed
- The bug with applying On Delete Action=Cascade set in Association Editor to the Generate Database Script functionality in EF Core Model is fixed
- The bug with reading settings from *.edps by console Entity Developer is fixed
Entity Framework support:
- The bug with throwing System.NullReferenceException by the Code-First CreateDatabase() / Code-First Migrations functionality in EF Core is fixed
dotConnect for SQLite Professional 5.16.1730
- The sqlite3.dll library that is included into the installation package is updated to version 3.33.0
- The SendCallStack property is added to the Devart.Common.DbMonitor class for possibility to turn off resource-demanding logging of CallStack
- The Filter property is added to the Devart.Common.DbMonitor class for possibility to choose events being logged
- The Devart.Common.DbMonitor class is improved: now values of the DateTime parameters sent to the dbMonitor tool are supplemented with milliseconds
- The bug with updating projects in folders below the main project by Upgrade Wizard is fixed
- The bug with using Microsoft DataSet Wizard is fixed
Entity Developer:
- The error message in console Entity Developer is improved: now the text includes the list of all available templates if the specified name of template was incorrect
- The bug with saving a new model, which has never been saved before, after some time of work in a standalone Entity Developer is fixed
- The bug with generating mapping for the properties with Shadow=True in EF Core Model is fixed
- The bug with using spatial types inside complex types in EF Core Model is fixed
Entity Framework support:
- Support for spatial data types in EF Core 3 is implemented
- Entity Framework Core 3.1.8 is supported
- The new NuGet package Devart.Data.SQLite.EFCore.NetTopolosySuite with a .NET Standard 2.1 assembly, that is compatible with .NET Core 3, is added
- The new EntityEFCore3Devart.Data.SQLite.Entity.EFCore.NetTopolosySuite.dll assembly compiled with EF Core 3.1 and .NET Framework 4.6.1 is added
- The SQLiteFunctions class, which allows using SQLite-specific functions in LINQ to Entities, is supported in EF Core
- The SQLiteTextFunctions class, which allows using SQLite full-text search functionality in LINQ to Entities, is supported in EF Core
dotConnect for SQLite Professional 5.15.1696
- The bug with throwing System.NullReferenceException when opening *.edmx with invalid associations is fixed
dotConnect for SQLite Professional 5.15.1686
- The sqlite3.dll library that is included into the installation package is updated to version 3.32.3
- LinqConnect (formerly known as LINQ to SQLite)
- The "Could not find element type in model" bug when loading XML mapping in .NET Standard LinqConnect assemblies is fixed
- The bug with using enums via .NET Standard compliant assemblies is fixed
Entity Framework support:
- The bug with incorrect SQL generation when using .Substring() in a .Select() statement in EF Core 2 is fixed
dotConnect for SQLite Professional 5.15.1666
- Visual Studio 2019 version 16.7 Preview is supported
- The sqlite3.dll library that is included into the installation package is updated to version 3.32.2
Entity Developer:
- .NET 5 is added to the list of available Target Framework versions in Create Model Wizard and Model Settings in EF6, EF Core, LinqConnect models
- The new option "Execute procedures for result set detection" is added to Model Settings of EF Core Model to control obtaining metadata of a procedure or function result set
- The new option "Use NULL parameter values" is added to Model Settings of EF Core Model to specify whether NULL parameter values are used for stored procedure execution
- The new option "Add complex types to diagram" is added to Model Settings of EF Core Model to control behavior of Create Model Wizard and Update Model From Database Wizard
- The new option "Add new complex types to the current diagram" is added to Update Model From Database Wizard of EF Core Model
- The new Primitive Default Value Generation property is added to EF, EF Core templates to determine whether to generate initialization for a primitive property based on database DEFAULT column value
- The new property Collection Property Type is added to EF template "DbContext" and EF Core template "EF Core" to determine .NET type used as a property type for the Many end of associations
- The new property Collection Initialization Type is added to EF template "DbContext" and EF Core template "EF Core" to determine .NET type used for initialization of the Many end of association; if it is set to None, then no initialization is generated
- The new property "Nullable Reference Types" is added to C# templates of EF, EF Core models to specify whether C# 8 nullable reference types and non-nullable reference types must be generated
- The new partial method is added to the OnModelCreating(DbModelBuilder modelBuilder) method generated by DbContext template of EF model
- The EF Core model deserialization is improved: Entity Developer shows the full list of detected errors and tries to load the model with invalid elements or ignores such elements if their deserialization is not possible
Console Entity Developer improvements:
- Import of stored procedures and functions via Create-Model command is supported
- The new options --Procedures and --Functions are added to Create-Model command for filtering stored procedures and functions; by default all procedures/functions are imported
- The new option --Execute is added to Create-Model command for executing procedures/functions to get metadata from result set
- The asterisk symbol (*) is supported in --Tables and --Views parameters of Create-Model to include all objects
- The bug with opening connection via some supported providers is fixed
- The bug with enumerating values separated with comma and without whitespace in --Templates, --Schemas, --Tables parameters is fixed
- The DbProviderFactories registration is implemented in Create Model Wizard for EF6 models and .NET Framework provider assemblies
- The new property Target Framework is added to Create Model Wizard and Model Settings of EF6 models
- The compatibility issue with JetBrains ReSharper is fixed
- The behavior is changed: the definition of auto-implemented property is put now on the single line with
- C# DbContext template of Devart Entity Model when ImplementINotifyPropertyChanging=False and ImplementINotifyPropertyChanged=False and PropertyChangePartialMethods=False
- C# EF Core template of Devart EF Core Model when PropertyChangeNotifiers=False and PropertyChangePartialMethods=False
- The behavior for the new EF, EF Core models is changed: Primitive Default Value Generation is set to Literal now instead of LiteralOrExpression
- The behavior is changed: the names of system types are generated without "System." prefix now in EF Core models; for example, it is DateTime instead of System.DateTime
- The behavior is changed: only one confirmation for executing stored procedure is requested by Entity Developer when drag&drop-ing procedure from Database Explorer to Model Explorer or diagram surface
- The behavior is changed: now the EF Core template generates an additional partial class for the context class when "File Per Class" and "Generate Partial Class" are set to True
- The bug with detecting strings, being expressions, as string literals when generating initialization of string properties basing on database columns' default values in EF, EF Core models is fixed
- The bug with missing default value in the generated code basing on DEFAULT value in a database, when any of ImplementINotifyPropertyChanging, ImplementINotifyPropertyChanged, PropertyChangePartialMethods options of DbContext template in EF is turned on, is fixed
- The bug with code generation for zero-or-one to zero-or-one association in the EF6 model with the DbContext template (Fluent Mapping=True) is fixed
- The bug with generating .HasMany end of one-to-many association in EF Core Model is fixed
- The bug with generating TPH mapping in EF Core 3 model is fixed
- The bug with false appearing the "Table or view '...' has no primary key columns, and the entity key for the corresponding storage entity was calculated automatically from other fields." warning in the Error List window is fixed
- The bug with generating new Guid() with Primitive Default Value Generation=Literal in EF, EF Core models is fixed
LinqConnect (formerly known as LINQ to SQLite):
- The bug with materializing elements, the types of which are explicitly converted from non-nullable to nullable on the client side, is fixed
- The bug with incorrect detection of altered column comment in a many-to-many association join table by Update From Database Wizard is fixed
Entity Framework support:
- Entity Framework 6.4.4 is supported
- The translation of the DateTime.AddMinutes() method in LINQ query into SQL statement in EF Core is supported
- The bug with adding / subtracting DateTime and TimeSpan, DateTimeOffset and TimeSpan values in LINQ query in EF Core 3 is fixed
- The bug with SQL generation in EF Core 3, when enum values are used in CASE and COALESCE statements, is fixed
- The EF6 provider registration used with .NET Standard compliant assemblies is improved: the [DbConfigurationType(typeof(SQLiteEntityProviderServicesConfiguration))] attribute set for DbContext descendant allows now calling the DbContext constructor, that accepts a connection string, with no need to register a custom IDbConnectionFactory implementation
dotConnect for SQLite Professional 5.15.1612
LinqConnect (formerly known as LINQ to SQLite):
- The insert of the object, the type of which is an unmapped class inherited from a mapped class, is supported
- The bug with throwing System.NullReferenceException, when constructing the error saying that unmapped class is not supported, is fixed
Entity Developer:
- Command-line interface is implemented in a standalone Entity Developer
- The new property Context Name is added to Model Properties in EF Core Model
- The new property Target Framework is added to Model Properties in EF Core Model
- The provider registration is improved: requirement to put provider registration entry in the config file is not obligatory anymore
- Create Model Wizard is improved: now it allows installing multiple NuGet packages on the final step
- Model file tree in .NET Core / .NET Standard projects is improved: all generated code files and model files are nested under the same node in Solution Explorer
Entity Framework support:
- Entity Framework Core 3.1.3 is supported
- The .ToString() call for numbers, DateTime/DateTimeOffset properties and values in LINQ queries in EF Core is supported
- The call of Convert.ToString(value) in LINQ queries in EF Core is supported
- The bug with comparing milliseconds of DateTime properties is fixed
dotConnect for SQLite Professional 5.15.1583
- The SQLiteDataTable and SQLiteDataSet classes are supported in .NET Standard 2.0
- The behavior is changed: pool is automatically cleared when AppDomain is being closed
Entity Developer:
- The bug with returning multiple result sets in code generated by the EF Core template is fixed
Entity Framework support:
- Entity Framework Core 3.1.1 is supported
- The bug with using nullable enum properties with default mapping to integers in LINQ query in EF Core 3.1 is fixed
- The bug with using value converters detected automatically by .HasConversion() in EF Core 3 is fixed
- The bug with using NULL constant values in EF Core 3 is fixed
- The bug with using binary operators AND, OR in EF Core 3 is fixed
- The bug with setting a default value for DateTime and TimeSpan properties via EF Core Code-First Migrations is fixed
dotConnect for SQLite Professional 5.15.1541
- Visual Studio 2019 version 16.5 Preview is supported
- The bug with using Toolbox component SQLiteDataSource in web projects of Visual Studio 2013, 2015, 2017, 2019 is fixed
- The bug with enabling Devart DataSet Editor in Visual Studio 2017 and Visual Studio 2019 is fixed
- LinqConnect (formerly known as LINQ to SQLite)
- The bug with using Toolbox component DbLinqDataSource in web projects of Visual Studio 2013, 2015, 2017, 2019 is fixed
Entity Developer
- The bug with creating one-to-one association basing on an optional FK in EF Core Model is fixed
- The bug with code generation for oneOrZero-to-one and one-to-many associations based on an optional FK in EF Core Model is fixed
- The bug with generating a mapping for a unique constraint specified in owned type property of EF Core Model is fixed
Entity Framework support:
- Entity Framework 6.4 is supported
- Entity Framework Core 3.1 is supported
- The new EntityEFCore3Devart.Data.Oracle.Entity.EFCore.dll assembly compiled with EF Core 3.1 and .NET Framework 4.6.1 is added
- The config.DatabaseScript.ForeignKey.IndexCreation configuration option is supported in EF Core 1/EF Core 2/EF Core 3
- The bug with creating a unique constraint in the database via EF Core Code-First Migrations is fixed
- The bug with applying .ValueGeneratedOnAdd() to the string, guid, byte[] properties with .Key() and without .HasDefaultValueSql() in EF Core is fixed
- The bug with using bitwise operators And, Or, Xor with Int64 arguments in LINQ query is fixed
- The bug with detecting implicit database column type, when model mapping and migration mapping are different, via EF Core Code-First Migrations is fixed
- The bug with generating SQL when using explicit cast in LINQ queries in EF Core 1/EF Core 2 is fixed
- The bug with throwing the "Null TypeMapping in Sql Tree" error by methods in LINQ query in EF Core 3 is fixed
dotConnect for SQLite Professional 5.14.1519
- The "Optimize rendering for screens with different pixel densities" feature of Visual Studio 2019 is supported by Devart DataSet Editor
Entity Developer:
- The Self-Contained Entity Configuration property is added to VB.NET version of EF Core template
- The Entities Configuration Output property is added to VB.NET version of EF Core template
- The code generation for the class properties with Alternate Key=True by VB.NET version of EF Core template is supported in EF Core model
- The bug with code generation, when Raw SQL Query is initialized in class properties, in EF Core 3 model is fixed
- The bug with generating .HasNoKey(), when Self-Contained Entity Configuration is set to True in properties of EF Core template, in EF Core 3 model is fixed
- The bug with generating alternate keys, when Self-Contained Entity Configuration is set to True in C# version of EF Core template, in EF Core model is fixed
Entity Framework support:
- The SQL generation in case of config.QueryOptions.UseCSharpNullComparisonBehavior=true in EF1/EF4/EF5/EF6 is improved
- The bug with using Scaffold-DbContext in EF Core 3 is fixed
- The bug with the redundant empty ORDER BY clause in a subquery, when paging is used, in EF Core 3 is fixed
- The bug with using .Contains within .Select of LINQ query in EF Core 2 is fixed
- The bug with generating invalid SQL when calling members of owned type in EF Core 2 is fixed
dotConnect for SQLite Professional 5.14.1504
Entity Developer:
- The DbContext template is improved: precision and scale for database types are generated now in EF4/EF5/EF6 models when Fluent Mapping=True and Mapping Generation Strategy=UseAttributes
- The bug with throwing the EntityFrameworkCoreVersion error in Create Model Wizard in a standalone Entity Developer is fixed
Entity Framework support:
- Entity Framework Core 2.2.6 is supported
dotConnect for SQLite Professional 5.14.1499
- The sqlite3.dll library that is included into the installation package is updated to version 3.30.1
- The "Optimize rendering for screens with different pixel densities" feature of Visual Studio 2019 is supported by Devart DataSet Manager
Entity Developer:
The DbContext template is improved for using Entity Framework 6.3:
- The "Configuration Type Name" property, which specifies the descendant of DbConfiguration class that should be used for code-based configuration, is added
- The "Use DbConfigurationType Attribute" property, which determines whether to register the configuration type specified in the ConfigurationTypeName property of the DbConfigurationType attribute, is added
- The DbProviderFactories.RegisterFactory method is generated when UseDbConfigurationTypeAttribute=true and ConfigurationTypeName='%Default%'
- With UseDbConfigurationTypeAttribute=false, the static constructor for registering factory and the new partial method OnStaticConfigured are generated
- The "Optimize rendering for screens with different pixel densities" feature of Visual Studio 2019 is supported
- The compatibility issue with JetBrains ReSharper is fixed
Entity Framework support:
- Entity Framework Core 3.0 is supported
- Entity Framework 6.3 is supported
- The lock for Microsoft.EntityFrameworkCore dependency is added to the NuGet package Devart.Data.SQLite.EFCore
dotConnect for SQLite Professional 5.13.1470
Entity Developer:
- Entity Framework 6.3 Preview 9 is supported for projects with target framework .NET Core 3 or .NET Standard 2.1
- The behaviour is changed: a plural form of names ending with "s" now has a longer version (for example, status -> statuses)
- The bug with applying the new Foreign Key's Delete Rule values SET DEFAULT and SET NULL by the Update Database From Model and Update Model From Database wizards is fixed (Entity Framework)
- The bug with copying a property with Primary Key=True / Entity Key=True to a complex type is fixed (Entity Framework)
- The bug with naming of a composing unique key by Create Model Wizard / Update From Database Wizard in EF Core is fixed (Entity Framework)
- The bug with invalid attempt to cast unsupported Visual Studio project to type 'VSLangProj.VSProject' is fixed
Entity Framework support:
- Entity Framework 6.3 Preview 9 is supported
- A new NuGet package Devart.Data.SQLite.EF6 with a .NET Standard 2.1 assembly, compatible with .NET Core 3, is added
- The bug with using the same database connection in several EF Core contexts is fixed
- The bug with applying a value converter to .Where expression with .Contains on nullable enum in EF Core 2 is fixed
dotConnect for SQLite Professional 5.12.1437
- The bug with throwing System.IndexOutOfRangeException when OracleParameter.Size=-1 is fixed
Entity Framework support:
- The bug with applying a value converter to a nullable column in EF Core 2 is fixed
- The bug with using the binary operator Add for the types 'System.String' and 'System.String' within LINQ query in EF Core 2 is fixed
dotConnect for SQLite Professional 5.12.1422
- The bug with throwing "Operation is not supported" by web providers, when the cookie is used, is fixed
Entity Developer:
- The ability to disable generation of the byte order mark (BOM) in the beginning of code files in a standalone Entity Developer is implemented
- The bug with design time copy/cut/paste functionality for entities is fixed
- The bug with invalid integer to enum conversion by a generated method, which is based on SQL query and returns a collection of entities, in EF Core 2 is fixed
Entity Framework support:
- The bug with applying a filter to the nullable property with implicit EnumToStringConverter via LINQ queries in EF Core 2 is fixed
- The bug with missing brackets around SELECT inside the generated CASE statement in EF Core 2 is fixed
- The bug with nullable parameters in EF Core 2 is fixed
- The bug with reopening connections in EF Core 2 is fixed
- The bug with incorrect exception message on opening connection, when ConnectionString is not set, by .NET Standard compliant assemblies is fixed
dotConnect for SQLite Professional 5.12.1402
- The sqlite3.dll library that is included into the installation package is updated to version 3.28.0
- Deprecated design-time Synchronous API calls are no longer used with Visual Studio 2019 and Visual Studio 2017
LinqConnect (formerly known as LINQ to MySQL):
- The bug with executing incorrect SQL request (cached during one of the previous calls), when a variable initialized with an empty collection participates in LINQ query, is fixed
Entity Framework support:
- Entity Framework Core 2.2.4 is supported
- The bug with closing database connection by context.Dispose() in the scope of a distributed transaction in EF Core 2 is fixed
- The bug with using a value converter, when the .NET data type remains the same, within the WHERE clause in EF Core 2 is fixed
dotConnect for SQLite Professional 5.12.1366
- Visual Studio 2019 is supported
- Entity Developer: the bug with processing DBNull returned by the function in EF Core is fixed
- Entity Framework support: the bug with using the "Generate Database from Model" wizard when working with Entity Framework 6 Tools is fixed
dotConnect for SQLite Professional 5.11.1357
- Visual Studio 2019 Release Candidate 4 is supported
- The sqlite3.dll library that is included into the installation package is updated to version 3.27.2
- The behavior is changed: reader.GetValue("text_column_with_nonstandard_typename") returns now the System.String object
- The bug with loss of changes, applied in different concurrent transactions, when journaling is not in the WAL mode, is fixed
LinqConnect (formerly known as LINQ to SQLite):
- The bug with using the System.Char argument as literal or variable in LINQ query is fixed
Entity Framework support:
- Entity Framework Core 2.2.3 is supported
- The SQL translation of the following method overloads, that accept the StringComparison argument and return bool, in the System.String class is supported in EF Core 2: Contains, StartsWith, EndsWith, Equals
- The bug with generating the COALESCE expression in EF Core is fixed
dotConnect for SQLite Professional 5.11.1328
- The sqlite3.dll library that is included into the installation package is updated to version 3.27.1
LinqConnect (formerly known as LINQ to SQLite):
- The bug with executing incorrect SQL request (cached during one of the previous calls), when .Contains() is invoked in the multithreaded application, is fixed
Entity Developer:
- The bug with generating fluent mapping for the one-to-one association by the DbContext template in EF4/EF5/EF6 is fixed
Entity Framework support:
- The translation of single-char literal into SQL statement in EF Core is supported
- The bug with throwing Devart.Common.LicenseException when using config.Workarounds.ProviderManifestToken in EF Core is fixed
- The bug with using a value converter for the property used in .Contains() in EF Core 2 is fixed
- The bug with translating String.IndexOf() into SQL statement in EF Core is fixed
- The bug with updating a null value of the concurrency check column with some non-null value in EF Core is fixed
dotConnect for Professional SQLite 5.11.1307
- The sqlite3.dll library that is included into the installation package is updated to version 3.26.0
- The bug with connecting to database with .NET Standard 1.3 compatible assemblies on .NET Framework 4.6.0 run-time is fixed
LinqConnect (formerly known as LINQ to SQLite):
- The new overload DataContext.Refresh(bool ignoreErrors, RefreshMode mode, object entity) is added for ignoring errors during refresh
- The existing overload DataContext.Refresh(RefreshMode mode, object entity) is improved: its check avoids the try to refresh the entity that is added to the context but not submitted to the database
- The type and text of the error generated by the DataContext.Refresh(RefreshMode mode, object entity) method, when the passed entity doesn't exist in database, is fixed
Entity Developer:
- The multiple select functionality in EF Core Model is improved: now it allows setting PrimaryKey, ValueGenerated, Concurrency for several properties simultaneously
- The bug with detecting order of columns in composite primary key with two or more columns by Update To Database and by Update From Database wizards in EF Core is fixed
- The bug with using ASP.NET Core Web Application (.NET Framework) and Azure Functions v1 (.NET Framework) projects in Visual Studio 2017 is fixed
Entity Framework support:
- Entity Framework Core 2.2.1 is supported
- The new extension method Database.IsSQLite() in EF Core 2 is implemented
- The bug with applying config.Workarounds.IgnoreSchemaName=true to the .ToTable() functionality in EF Core 2 is fixed
- The bugs with using the GuidToStringConverter, EnumToStringConverter, ValueConverter classes in EF Core 2 are fixed
- The bug with constructing the LIKE clause in EF Core 2 is fixed
- The bug with generating a subselect within the SELECT list in EF Core 2 is fixed
- The bug with applying an aggregate function to the result of a subselect in EF Core 2 is fixed
更新時間:2021-10-19
更新細節:
What's new in this version:
Audit Log Notes:
- A CREATE USER statement BY 'auth_string' clause was written to the audit log and general query log as an AS 'auth_string' clause.
Authentication Notes:
- Previously, MySQL user accounts authenticated to the server using a single authentication method. MySQL now supports multifactor authentication (MF, which makes it possible to create accounts that have up to three authentication methods. MFA support entails these changes:
- CREATE USER and ALTER USER syntax has been extended to permit specification of multiple authentication methods.
- The authentication_policy system variable enables MFA policy to be established by controlling how many factors can be used and the types of authentication permitted for each factor. This places constraints on how the authentication-related clauses of CREATE USER and ALTER USER statements may be used.
- Client programs have new --password1, --password2, and --password3 command-line options for specifying multiple passwords. For applications that use the C API, the new MYSQL_OPT_USER_PASSWORD option for the mysql_options4 C API function enables the same capability.
- In addition, MySQL Enterprise Edition now supports authentication to MySQL Server using devices such as smart cards, security keys, and biometric readers. This authentication method is based on the Fast Identity Online (FID standard, and uses a pair of plugins, authentication_fido on the server side and authentication_fido_client on the client side. The server-side FIDO authentication plugin is included only in MySQL Enterprise Edition distributions.
- Multifactor authentication can use existing MySQL authentication methods, the new FIDO authentication method, or a combination of both. For more information, see Multifactor Authentication, and FIDO Pluggable Authentication.
- In cases where an authentication plugin performed no hashing of the authentication string, CREATE USER statements with a BY 'auth_string' clause failed with an error.
Compilation Notes:
- MySQL now can be compiled using C++17. The following minimum version requirements apply for compiler support:
- GCC 7.1 or Clang 5
- XCode 10
- GCC 10
- Visual Studio 2019 Update 4
- In particular, on Solaris, GCC is now the only supported compiler. The code has been cleaned up to remove adaptations and workarounds for Sun Studio, Oracle Studio, and SunPro. 4,
Connection Management Notes:
- Previously, if the server restricted a client to the sandbox mode used to handle client connections for accounts with expired passwords, the client could use the SET statement. This is no longer permitted. For more information about sandbox mode, see Server Handling of Expired Passwords.
Storage Engine Notes:
- The BLACKHOLE storage engine maximum key length has been increased from 1000 to 3072 bytes (the same as InnoD. Thanks to Adam Cable for the contribution. 9, Firewall Notes:
- The new FIREWALL_EXEMPT privilege exempts a user from firewall restrictions. This is useful, for example, for any database administrator who configures the firewall, to avoid the possibility of a misconfiguration causing even the administrator to be locked out and unable to execute statements. See MySQL Enterprise Firewall.
Keyring Notes:
- Diagnostics for keyring_hashicorp plugin configuration issues have been improved.
Performance Schema Notes:
- To assist monitoring and troubleshooting, the Performance Schema instrumentation is now used to export names of instrumented threads to the operating system. This enables utilities that display thread names, such as debuggers and the Unix ps command, to display distinct mysqld thread names rather than “mysqld”. This feature is supported only on Linux, macOS, and Windows. For more information, see The setup_instruments Table.
Pluggable Authentication:
- Microsoft Windows: The Kerberos authentication method added in MySQL 8.0.26 for MySQL server and client hosts running Linux is now supported on the client side for Windows. This enables MySQL client applications running on Windows to connect to MySQL accounts on Linux server hosts that authenticate using Kerberos. For details, see Kerberos Pluggable Authentication.
Security Notes:
- For platforms on which OpenSSL libraries are bundled, the linked OpenSSL library for MySQL Server has been updated to version 1.1.1l. Issues fixed in the new OpenSSL version are described
Server Administration:
- Setting the session value of the following system variables is now a restricted operation and the session user must have privileges sufficient to set restricted session variables:
- low_priority_updates
- max_delayed_threads
- max_error_count
- min_examined_row_limit
- preload_buffer_size
- select_into_buffer_size
- select_into_disk_sync_delay
- show_old_temporals
- For information about the privileges required to set restricted session variables, see System Variable Privileges
Spatial Data Support:
- The ST_SymDifference and ST_Intersection functions now permit the geometry arguments to have a geographic spatial reference system (SR. Previously, ST_SymDifference and ST_Intersection supported only geometry arguments in a Cartesian SRS. See Spatial Operator Functions.
- Functionality Added or Changed:
- Important Change: The default_authentication_plugin variable is deprecated as of MySQL 8.0.27; expect support for it to be removed in a future version of MySQL.
- The default_authentication_plugin variable is still used in MySQL 8.0.27, but in conjunction with and at a lower precedence than the new authentication_policy system variable, which is introduced in MySQL 8.0.27 with the multifactor authentication feature. For details, see The Default Authentication Plugin.
- Important Change: The BINARY operator is now deprecated, and subject to removal in a future release of MySQL. Use of BINARY now causes a warning. Use CAST(... AS BINAR instead.
- Important Change: The system variable group_replication_components_stop_timeout specifies the time that Group Replication waits for each of its modules to complete ongoing processes while shutting down. The component timeout applies after a STOP GROUP_REPLICATION statement is issued, which happens automatically during server restart or auto-rejoin. The timeout is used to resolve situations in which Group Replication components cannot be stopped normally, which might happen if the member is expelled from the group while it is in an error state, or while a process such as MySQL Enterprise Backup is holding a global lock on tables on the member. In such situations, the member cannot stop the applier thread or complete the distributed recovery process to rejoin. The STOP GROUP_REPLICATION statement does not complete until either the situation is resolved (for example, by the lock being release, or the component timeout expires and the modules are shut down regardless of their status.
- Previously, the timeout value defaulted to 31536000 seconds (365 day, which did not help in situations such as those just described. The new default value is 300 seconds, so that Group Replication components are stopped after 5 minutes if the situation is not resolved before that time, allowing the member to be restarted and to rejoin.
- References: See also:
- Replication: Multithreading is now enabled by default for replica servers. A multithreaded applier has a number of applier threads that execute transactions in parallel. This behavior can avoid many cases of unwanted replication lag that can cause temporary divergence between the source and replicas.
- The following default server settings are used to produce the multithreading behavior:
- replica_parallel_workers=4. This setting enables multithreading and creates four applier threads on the replica, plus a coordinator thread to manage them. If you are using multiple replication channels, each channel has this number of threads. Four applier threads provide a base level of parallelism, and you can change the setting to specify up to 1024 applier threads.
- replica_preserve_commit_order=1. This setting ensures that transactions are externalized on the replica in the same order as they appear in the replica's relay log, so the replica never enters a state that the master was not in, and there are no gaps in the sequence of transactions that have been executed from the relay log.
- replica_parallel_type=LOGICAL_CLOCK. This setting specifies that transactions that are part of the same binary log group commit on a replication source server are applied in parallel on a replica. It is required when replica_preserve_commit_order=1 is set.
- To override the new defaults and disable multithreading for a replica server, specify replica_parallel_workers=0. This setting disables parallel execution and gives the replica a single applier thread and no coordinator thread. When you apply this setting, the replica_parallel_type and replica_preserve_commit_order options have no effect and are ignored.
- Replication: In previous releases, Group Replication secured group communication connections and distributed recovery connections between members using its own implementation of the security protocols, including TLS/SSL and the use of an allowlist for incoming Group Communication System (GC connections. Replication groups can now use the MySQL Server's own connection security in place of the Group Replication implementation. Using the MySQL protocol means that standard methods of user authentication can be used for granting (or revokin access to the group in place of the allowlist, and that the latest functionality of the server's protocol is always available on release. Network namespaces are supported for Group Replication when the MySQL communication stack is used.
- To use the MySQL Server's implementation of the connection security management in place of the Group Replication implementation, set the new system variable group_replication_communication_stack to MYSQL. In addition, the network address set by group_replication_local_address for each group member must be changed to one of the IP addresses and ports which MySQL Server is listening on, as specified by bind_address. If a network namespace is used, this must be configured using the CHANGE REPLICATION SOURCE TO statement in the group_replication_recovery channel.
- Authentication is carried out using the existing replication user account that Group Replication uses for distributed recovery, as set using CHANGE REPLICATION SOURCE TO, and this user must be given the new GROUP_REPLICATION_STREAM privilege. The TLS/SSL configuration for the connection is taken from Group Replication's existing settings for securing distributed recovery, plus the group_replication_ssl_mode system variable that specifies whether TLS/ SSL is enabled or disabled for group communications. These settings must be configured if they are not already in place. All these settings must be the same on all group members to avoid communication issues.
- See Configuring a group to use the MySQL Communication Stack for more details.
- Programs that encounter issues while processing include or includedir directives in option files now produce error messages that are more informative about the cause of the errors. 8, The default value for the thread_stack system variable has been increased to 1048576 on all supported platforms.
References: See also:
- A default time zone can now be set for a server by using the server option --default-time-zone while starting a MySQL Server Docker container. Before, the container failed to start if the option was used.
- When GTID-based replication is in use on a replica server, the replication applier and receiver threads still track and have some dependencies on binary log file names and file positions, as used for the alternative binary log file position based replication. A new option for the CHANGE REPLICATION SOURCE TO statement, GTID_ONLY, removes the persistence of file names and file positions from the replication metadata repositories. For replication channels with this setting, in-memory file positions are still tracked, and file positions can still be observed for debugging purposes in error messages and through interfaces such as SHOW REPLICA STATUS statements (where they are shown as being invalid if they are out of dat. However, the writes and reads required to persist and check the file positions are avoided in situations where GTID-based replication does not actually require them, including the transaction queuing and application process.
- The GTID_ONLY option is disabled by default for asynchronous replication channels, but it is enabled by default for group replication channels, and it cannot be disabled for them. To set GTID_ONLY = 1 for a replication channel, GTIDs must be in use on the server (gtid_mode = O, and row-based binary logging must be in use on the source (statement-based replication is not supporte. The CHANGE REPLICATION SOURCE TO options REQUIRE_ROW_FORMAT and SOURCE_AUTO_POSITION must each be set to 1 for the replication channel. When GTID_ONLY is set to 1, the replica uses replica_parallel_workers=1 if that system variable is set to zero for the server, so it is always technically a multi-threaded applier. This is because a multi-threaded applier uses saved positions rather than the replication metadata repositories to locate the start of a transaction that it needs to reapply.
- The asynchronous connection failover mechanism for MySQL replication now enables a replica that is part of a managed replication group to automatically reconnect to the sender if the current receiver (the primary of the grou fails. The new feature works with Group Replication, on a group configured in single-primary mode, where the group’s primary is a replica that has a replication channel with SOURCE_CONNECTION_AUTO_FAILOVER set to ON. The feature operates by default on a group in this situation, although you can disable it for the group by disabling the new member action mysql_start_failover_channels_if_primary, using the group_replication_disable_member_action function. The feature is designed for a group of senders and a group of receivers to keep synchronized with each other even when some members are temporarily unavailable. It also synchronizes a group of receivers with one or more senders that are not part of a managed group. A replica that is not part of a replication group cannot use this feature.
- To configure this feature, the replication channel and the replication user account and password for the channel must be set up on all the member servers in the replication group, and on any new joining members. You can do this using the CHANGE REPLICATION SOURCE TO statement, or if the new servers are provisioned using MySQL’s clone functionality, this all happens automatically. The SOURCE_CONNECTION_AUTO_FAILOVER setting for the channel is broadcast to group members from the primary when they join, and also if it is changed. The source list is broadcast to all members when they join or when it is updated. If the primary goes offline or into an error state, the new primary that is selected for the group has the source list and the channel configuration already in place, and establishes a replacement asynchronous replication connection with the source.
- A new function asynchronous_connection_failover_reset is also provided for administrators to remove all settings relating to the asynchronous connection failover mechanism. Use this function to clean up a server that is no longer being used in a managed group.
- The group communication engine for Group Replication (XCom, a Paxos varian defaults to using every member of the group as a leader. When the Group Replication communication protocol version is set to 8.0.27 or later, the group communication engine can now use a single leader to drive consensus when the group is in single-primary mode. Operating with a single consensus leader improves performance and resilience in single-primary mode, particularly when some of the group’s secondary members are currently unreachable.
- The single consensus leader is colocated with the group’s primary, and changes when a new primary is elected. The Performance Schema table replication_group_communication_information shows the preferred and actual consensus leader, or leaders if all members are used as a leader, the communication protocol version, and the write concurrency.
- To enable the new behavior, set the system variable group_replication_paxos_single_leader to ON (the default is OF. When Group Replication is running in multi-primary mode, or with earlier communication protocol versions, or when group_replication_paxos_single_leader is set to OFF, the group communication engine operates using every member of the group as a leader.
- Note that when you manually upgrade the members of a replication group to a new MySQL Server release, the group's communication protocol version is not automatically upgraded to match. If you no longer need to support members at earlier releases, you can use the group_replication_set_communication_protocol function to set the communication protocol version to the new MySQL Server version to which you have upgraded the members. MySQL InnoDB Cluster manages the communication protocol version automatically for replication groups created using that function.
- For online DDL operations, storage is usually the bottleneck. With this change we have improved CPU utilization and index building. Scan phase CPU utilization has been improved and the indexes can be built simultaneously instead of serially. Memory management is also tightened to respect the memory configuration limits set by the user.
- The new innodb_ddl_buffer_size variable defines the maximum buffer size for DDL operations. The default setting is 1048576 bytes (approximately 1 M. Defining a buffer size limit avoids potential out of memory errors for online DDL operations that create or rebuild secondary indexes.
- The clone plugin now permits concurrent DDL operations on the donor MySQL Server instance while a cloning operation is in progress. Previously, a backup lock was held during the cloning operation, preventing concurrent DDL on the donor. To revert to the previous behavior of blocking concurrent DDL on the donor during a clone operation, enable the clone_block_ddl variable. See Cloning and Concurrent DDL.
- Setting a session value for the internal_tmp_mem_storage_engine variable now requires the SESSION_VARIABLES_ADMIN or SYSTEM_VARIABLES_ADMIN privilege.
Fixed:
- Incompatible Change: For all SELECT statements on a view, the query digest was based on the view definition. As a result, different queries had the same digest and aggregated together in the Performance Schema table events_statements_summary_by_digest, so statistics in that table were not usable for distinguishing distinct SELECT statements.
- The query digest for each SELECT statement on a view now is based on the SELECT, not the view definition. This enables distinguishing distinct SELECT statements in the events_statements_summary_by_digest table. However, tools that use query digests may need some adjustment to account for this change. For example, MySQL Enterprise Firewall and query rewrite plugins rely on query digests and existing rules for them that are associated with views may need to be updated. 3,
- Important Change: EXPLAIN FORMAT=TREE now shows whether an index scan uses a covering index, and thus does not need to look up other columns from the table/clustered index. For example, if idx1 is a covering index, the old output Index scan on t1 using idx1 is now shown as Covering index scan on t1 using idx1. Previously, this information was shown only for FORMAT=TRADITIONAL and FORMAT=JSON.
- This fix also improves the wording used for full-text search to align with this change. For example, the old output Indexed full text search on t1 (which was the same in both the covering and non-covering case is now Full-text index search on t1 when there is no covering index, and Full-text covering index search on t1 when a covering index is used.
- InnoDB: An excessive number of notes were written to the error log when the innodb_open_files limit was temporarily exceeded.
- InnoDB: An in-place DDL operation failed to flush all modified pages. 5,
- InnoDB: A parallel scan returned an incorrect partition ID when loading data into HeatWave from a subpartitioned InnoDB table.
- InnoDB: The unused os_event::event_iter field in the InnoDB sources was removed to reduce memory use in the os_event structure.
- Our thanks to Facebook for the contribution.
- InnoDB: A workaround was implemented for a Clang issue that causes a build failure on Windows (Bugzilla – Bug 5153.
- InnoDB: The srv_purge_thread and srv_worker_thread threads were duplicated in the performance_schema.threads table.
- Thanks to Kaige Ye for the contribution. 6, InnoDB: Truncation of an undo tablespace during use by an active transaction raised an assertion failure. The transaction was prematurely marked as complete, permitting the truncation operation.
- InnoDB: When loading data into HeatWave from a partitioned table with concurrent DML modifying the primary key, the partition ID reported in the load callback was found to be incorrect for some records.
- InnoDB: Instances of MY_ATTRIBUTE((noretur and MY_ATTRIBUTE((unuse in the InnoDB sources were replaced by C++17 [[noreturn]] and [[maybe_unused]] attributes.
- InnoDB: Each buffer pool block includes a block->lock_hash_val field. Caching of this value was determined to be unnecessary, as it introduced unnecessary coupling of the buffer and lock system and unnecessary memory usage.
- InnoDB: A query that performed an index merge with retrieval ordered by row ID raised an assertion failure. The record buffer set up for the index merge could not be used due to the scanned table containing a primary key with a BLOB component. A record buffer cannot be used for reading BLOBs, which are stored outside of the record. The BLOB primary key was not detected when the record buffer was set up, as the primary key column was not yet in the read set. Retrievals ordered by row ID temporarily add the primary key at a later stage when needed. To address this issue, a record buffer is no longer requested for row-ordered retrievals if the primary key has a BLOB component.
- InnoDB: Deleting or updating a row from a parent table initiated a cascading SET NULL operation on the child table that set a virtual column value to NULL. The virtual column value should have been derived from the base column value.
- Thanks to Yin Peng at Tencent for the contribution.
- InnoDB: On a system that was nearing disk capacity, an InnoDB recovery operation involving application of file extension redo log records (MLOG_FILE_EXTEN could cause a failure.
- InnoDB: Conflicting explicit locks granted on the same record raised an assertion failure.
- InnoDB: Freeing the first page of LOB at the end of purge batch raised an assertion failure. The failure was due an invalid root page number.
- InnoDB: To facilitate failure reporting and resolution, the ib::fatal function in the InnoDB sources was revised to include the caller's location.
- InnoDB: Recovery on the clone recipient server failed with the following error: Error reading encryption for innodb_undo_007. The encryption key was not written to encrypted spaces created during the page copy phase of the clone operation.
- InnoDB: To avoid generating unwanted warning messages, the fil_space_acquire function in the InnoDB sources was replaced by the fil_space_acquire_silent function where possible. Both functions are used by background threads to acquire a tablespace.
- InnoDB: InnoDB CRC32 checksum algorithm implementations have now been optimized for use with ARM and x86/x64 architectures.
- InnoDB: Startup on an instance with thousands of tables took an excessive amount of time due a large amount of traffic on the error logging subsystem.
- InnoDB: The INFORMATION_SCHEMA.FILES view did not show the current path of the temporary tablespace file, and the file name shown was different from the one defined by the innodb_temp_data_file_path variable. 5, InnoDB: On Windows, keeping a file open without a shared write lock while attempting to acquire the fil_shard mutex caused a deadlock with another thread that had acquired the fil_shard mutex and was attempting to access the same file.
- InnoDB: Starting a MySQL Server instance using the same InnoDB data files as an another running MySQL Server instance resulted in an initialization failure. 4, InnoDB: The InnoDB recovery process did not recognize that page compression had been applied to data that was being recovered, causing the tablespace data file to increase in size during the redo log apply phase, which could lead to a recovery failure for systems approaching a disk-full state.
- InnoDB: An assert that traversed a list of file segments which were not full to calculate the number of used pages for comparison with the number of used pages tracked by a field in the file segment inode failed sporadically.
- InnoDB: A transaction failed to roll back when the server was restarted after failure occurred during an online DDL operation. Table locks could not be resurrected for the uncommitted transaction and the data dictionary table object could not be loaded for the affected table.
- Thanks to Shaohua Wang for the contribution. 0, InnoDB: A query that used a temporary table for aggregation exhausted the memory available to the TempTable storage engine, causing an update operation to fail with a table is full error. 3, Replication: During the Group Replication auto-rejoin procedure, a group member sets its status to RECOVERING. If the group member does not manage to rejoin, it should change the status to ERROR, but if a view change occurred in the meantime, it was possible for the status to remain in RECOVERING. The member status is now set to ERROR after an unsuccessful auto-rejoin procedure, regardless of any ongoing or stuck view changes.
- Replication: Garbage collection for certification information has been moved from the Group Replication Group Communication System (GC thread to a background thread, so that sending and receiving of messages are not blocked while garbage collection is in progress.
- Replication: When Group Replication is configured with group_replication_consistency = BEFORE_ON_PRIMARY_FAILOVER, in the event of a primary failover, client connections are held until the new primary has the same state as the previous primary. Some monitoring and administration statements are exempt from this hold, so that the new primary can be inspected during the failover process.
- Previously, DO statements had a blanket exemption from the hold, but now only DO statements that do not use tables or loadable functions are exempt, as for SELECT statements.
- Replication: The replication applier (SQ thread overrode retryable errors (such as deadlocks and wait timeout from storage engines with a key not found error, causing replication to stop without retrying the transaction. These errors are no longer overridden.
- Replication: MySQL Server incorrectly permitted reads from Performance Schema tables relating to Group Replication while Group Replication was stopping or restarting, and the data concerned should not have been used. The server now checks whether Group Replication is in OFFLINE status or uninitialized before executing the query.
- Replication: When Group Replication is configured with group_replication_consistency = BEFORE_ON_PRIMARY_FAILOVER, in the event of a primary failover, client connections are held until the new primary has the same state as the previous primary. Some monitoring and administration statements are exempt from this hold, so that the new primary can be inspected during the failover process. Previously, SHOW statements had a blanket exemption from the hold (with the exception of SHOW CREATE USE, but now only SHOW statements that do not depend on data (only on status or configuratio are exempt. The exempt SHOW statements are listed in the documentation for the feature.
- Replication: While Group Replication's distributed recovery process was ongoing to synchronize a joining member with the donor, the Performance Schema table replication_group_member_stats table was not updated with the current number of transactions queued on the group_replication_applier channel (the COUNT_TRANSACTIONS_REMOTE_IN_APPLIER_QUEUE field The count is now tracked while new transactions are arriving during distributed recovery, although it remains zero until the joiner has certified the transactions that were received in the first phase of distributed recovery.
- Replication: For multithreaded replicas (replicas on which replica_parallel_workers is set to a value greater than , if replica_parallel_workers is set to 1, the setting for replica_preserve_commit_order is now ignored. When there is a single applier, transactions are always executed and committed in the same order as in the replica's relay log; ignoring the process to preserve the commit order avoids potential performance degradation.
- Replication: A deadlock could occur when a statement referencing Access Control Lists (ACL, such as CREATE USER, was executed on the primary of a Group Replication group, and a member joined the group immediately afterwards before the transaction commit was confirmed by the other group members. The distributed recovery process needs a read lock on the ACL cache which is locked by the ACL statement. This situation blocked Group Replication's Group Communication System (GC thread until the ACL statement timed out, making the primary unreachable and possibly preventing the new member from joining. The ACL cache lock is now no longer required for the distributed recovery process, although the lock in the situation described is only released after the view change is complete and the ACL statement is committed. Any new connections or statements that require the ACL cache lock, including a member join when Group Replication uses the MySQL communication stack, must therefore wait on this or fail and retry.
- Replication: An assertion was raised if a replica MySQL Server instance with unpopulated time zones attempted to replicate a statement that set a time zone value that was unknown to the replica. Replicas now handle this situation correctly.
- Replication: The error messages issued by MySQL Replication when GTIDs required for auto-positioning have been purged could be incorrectly assigned or scrambled in some situations.
- Replication: If the thread that runs Group Replication’s applier module is stopped, the group cannot function properly because it cannot exchange group transactions and messages. Previously, a member in this situation remained in ONLINE status and ignored the internal errors. The member now changes to ERROR status if the thread is stopped, and takes the action specified by the group_replication_exit_state_action system variable.
- Replication: If a group member was elected as the primary right before or while it was shutting down, the shutdown process hung while waiting on the primary election process, which was attempting to make the server leave the group since the election had failed due to the shutdown. The error handling process for primary elections now takes this into account, and does not take any further actions if the member is already leaving the group.
- Replication: The contents of the gtid_executed and gtid_purged GTID sets were not persisted after restoring a dump taken using mysqldump. The dump file sequence has now been changed so that the mysql schema (which contains the mysql.gtid_executed tabl is not dropped after the gtid_purged GTID set is written. A new option --skip-mysql-schema is added for mysqldump which lets you choose not to drop the mysql schema at all.
- Replication: Querying the Performance Schema table replication_asynchronous_connection_failover could return an error if a row was deleted during the query process. In this situation, the row count is now returned as zero, and the query can be retried.
- Replication: In some situations, a replica that used connection compression was not able to re-establish a lost connection to the source server. The issue has now been fixed.
- Replication: From MySQL 8.0.22, a replication source server writes a TRUNCATE TABLE statement to the binary log to notify replicas to empty a MEMORY table the first time it is used after a server restart. Previously, the thread where the statement was logged was not registered with the global thread manager, so Group Replication was not able to acknowledge it. The issue has now been corrected.
- JSON: Made additional improvements in JSON function error handling to those made in MySQL 8.0.23.
References: See also:
- JSON: JSON_TABLE allowed duplicate column names when the names differed in case only, although column names are case-insensitive in MySQL.
- Now this function compares column names in case-insensitive fashion.
- The MySQL client library could contribute to a memory leak if MySQL was linked against OpenSSL 1.0.1, as is the case for builds on EL6.
- Regular expression functions now report an error when an expression or pattern cannot be converted to a character set which is suitable for the ICU regular expression engine.
- In addition, error checking in several geometry functions has been improved.
- Implicitly grouped queries sometimes calculate aggregates during optimization when their values can be easily retrieved from indexes. When a predicate referenced a column that was declared with a NO PAD collation, that predicate might be evaluated using PAD SPACE semantics, and so return wrong results. This was because an internal function that checked for insignificant trailing spaces made the assumption that all nonbinary collations had PAD SPACE semantics, which was true of MySQL 5.7, but is not the case for MySQL 8.0, which has added many collations having NO PAD semantics, including the default collation (utf8mb4_0900_ai_c.
- We fix this by explicitly checking the padding attribute of the collation in such cases.
- A query containing a common table expression with a MATCH AGAINST clause executed on a table defined without a full-text index raised an assertion failure.
- Several Performance Schema tables contained default timestamp values of 0 (zer which conflicted with the default sql_mode values NO_ZERO_IN_DATE and NO_ZERO_DATE.
- For example, attempting to create a new table based on such a Performance Schema table resulted in an error similar to the following: ERROR 1067 (4200: Invalid default value for 'FIRST_SEEN'
- Default timestamp values have been removed from the following tables:
- performance_schema.events_errors_summary_by_account_by_error
- performance_schema.events_errors_summary_by_host_by_error
- performance_schema.events_errors_summary_by_thread_by_error
- performance_schema.events_errors_summary_by_user_by_error
- performance_schema.events_errors_summary_global_by_error
- performance_schema.events_statements_summary_by_digest
- performance_schema.host_cache
- performance_schema.replication_applier_filters
- performance_schema.replication_applier_global_filters
- 3, A failed write to the NOTIFY_SOCKET environment variable caused a failure. The ER_SYSTEMD_NOTIFY_WRITE_FAILED error associated with the failed write has two parameters, but only one parameter was passed to the error logging routine.
- An incorrectly type-casted variable was used when setting the --ssl-fips-mode option.
- The following threads were not present in the performance_schema.threads table:
- buf_resize_thread
- fts_optimize_thread
- Thanks to Kaige Ye for the contribution.
- Thanks to Kaige Ye for the contribution. 0, A recursive call to an internal save function led to an unexpected error.
- The SPACE function did not handle certain large or unsigned values correctly.
- The internal mysqld_list_fields function failed to remove temporary tables created to evaluate JSON table functions.
- The code to produce minimal TAR packages added debug symbols to the packages, which caused larger (roughly by 10 builds. Now DEB/RPM compiler flags are on by default for debug symbol builds, and off by default for minimal sized release builds. 9, Some multi-table DELETE statements were found to leak memory.
References: See also:
- The return value for a copy function internal to the server was not handled as expected
References: This issue is a regression of:
- YEAR values were not always interpreted correctly
References: This issue is a regression of:
- Empty range frames were not always handled correctly
References: This issue is a regression of:
- Function arguments were not always evaluated correctly during resolution of functions defined within views
References: This issue is a regression of:
- In debug builds, the ALTER TABLE statement could produce an error if it added a new virtual column with the same name as one of the columns later referred to by a foreign key. This fix now ignores a virtual column if the name is duplicated and instead uses existing, non-virtual column names to check conditions.
- An assert condition to ensure that execution of a stored program instruction is started when there are no errors did not work properly for a CASE statement in a loop.
- In debug builds, ANALYZE TABLE with the UPDATE HISTOGRAM clause could return a non-success value to the caller, instead of a success value, after successfully clearing the diagnostics area.
- The mecab_charset system status variable now reports its value as utf8mb4 rather than utf8, which is deprecated.
- In debug builds, MySQL Enterprise Encryption UDFs did not set the nullable flag when returning NULL.
- The range optimizer was sometimes called when a plan lock was in force. This caused issues since the range optimizer can call itself, but a plan lock does not allow for recursion.
References: This issue is a regression of:
- CAST and DEFAULT, when used inside stored routines, were not always handled correctly.
- String functions that use temporary string buffers during evaluation could lead to unexpected shutdowns.
- The error message emitted after a host name failed to resolve to an IP address did not include a meaningful errno value. Now, (- indicating EAI_NONAME is returned in the message instead of ().
- A statement such as CREATE TABLE t SELECT 1 created an InnoDB table that was written incorrectly to the binary log if the value of binlog_format was set to ROW and sql_mode was in ANSI mode. As a result, replication of the statement failed with an error on the replica. Applying the mysqlbinlog utility to such a binary log could also fail.
- The atomic CREATE...SELECT was implemented by adding a new clause to CREATE TABLE called START TRANSACTION. However, this clause was not added when ANSI mode was enabled. This in turn caused the execution of an ordinary implicitly committed CREATE TABLE in the middle of the transaction and produced an error in GTID mode if the transaction had an assigned GTID. The issue is fixed by removing the SQL mode dependency from the new clause. 2, A log file containing a malformed ISO8601 timestamp was processed incorrectly.
- String conversion warnings that previously referred to utf8 now reference utf8mb3 instead.
- For Enterprise Linux 8 (and Fedor, fixed the debuginfo RPMS packages by disabling REPRODUCIBLE_BUILD in fprofile.cmake.
- EXPLAIN FORMAT=TREE now shows more precise information than displayed previously about scans generated by the range optimizer. In particular, sub-iterators are now displayed explicitly, and are properly timed with EXPLAIN ANALYZE; index range scans now show the actual ranges being scanned. Descriptions in the output are also more user-friendly than before; for example, index_for_group_by shown for a query using DISTINCT is replaced by index skip scan for deduplication.
- In addition, a roundoff error causing inaccuracies in row count estimation for read over range intersection scans has been corrected, and optimizer traces for index range scans now correctly displays implicit key parts from InnoDB primary keys when they are used. 7,
- For a query with rollup, when setting an expression as nullable because it had a grouping column, we missed setting all expressions within that expression as nullable, doing so only for the topmost expression. This meant that, during evaluation, a NULL generated by rollup was not always propagated correctly. To fix this, we now set all the expressions having a grouping column as nullable when the query uses rollup.
- During execution of EXPLAIN, when crossing into a different query block through a streaming or materialization node, this node was counted as the root, rather than the actual root node.
- Fixed an undefined conversion from double to int64 in sql/join_optimizer/cost_model.cc.
- The internal function find_in_group_list did not match up match up all items correctly during ROLLUP processing. We fix this by adding casts to GROUP BY expressions. 2,
References: This issue is a regression of:
- A missing test for success of a memory allocation in the MySQL client library could lead to a client exit.
- An audit log function call from a prepared statement caused an error.
- Avoid adding column names prefixed with !hidden! to ensure that new names do not collide with names used by existing hidden columns for functional indexes. Generated hidden column names now have the following new form that extends the use of functional indexes into environments that do not support names generated by MD5:
- !hidden!index_name!key_part_number!counter
- The counter value of a generated name is zero unless a column with that name already exists in the table. In this case, the value is incremented until the name becomes unique.
- Removed an unnecessary hard-coded dependency on the range optimizer from sql_help.cc.
- Insufficient buffer space allocation during window function execution could cause an assertion to be raised.
- When finding the list of tables under a hash join, we did not take into account those that were also hidden under ZERO_ROWS iterators. This could lead to NULL row flags not being set correctly, which also caused problems when weedout wanted to save row IDs for them.
- The gen_dictionary, gen_range, and gen_rnd_pan data masking functions each could generate the same value if executed in close temporal proximity multiple times.
- Creation and deletion of temporary tables used in resolution of common table expressions and having table references created within subqueries were not always managed correctly.
- When the -–binary-as-hex option is enabled for the mysql client, empty strings are now printed as 0x instead of NULL. The resolver usually terminates the analysis and exits after encountering an error in a statement. In the case of duplicate column analysis, the resolver continued to the end of the column list, possibly adding multiple error messages to the diagnostics object.
- When a scalar subquery returned multiple rows, the resulting error was not always handled correctly.
- Changing the server SQL mode after creating a table containing generated columns could cause spurious messages to be written to the error log.
- Manifest file reading could fail on Windows.
- Evaluation of the values in an IN list did not stop immediately on error, which led to assert failures. We fix this by stopping evaluation in such cases as soon as an error has been raised.
- If an error was raised while evaluating a comparison of two non-nullable values as strings, the result of the comparison was set to NULL, even though the result was non-nullable according to the comparison operator metadata. The error was correctly returned to the user, but an assertion was raised by this inconsistency when running in debug mode.
- This is fixed by causing Arg_comparator not to set its owner to NULL when the owner is not nullable.
- An unset variable referenced in an SQL script executed during an upgrade operation caused a failure.
- Improper error propagation in filesort operations could raise an assertion.
- Bit functions in window expressions assert that the runtime size of a bit mask is not bigger than its resolve time size. We found several violations of this rule, listed here:
- ENCRYPT sometimes computed the maximum size of the result incorrectly.
- CONVERT, CONCAT, CONCAT_WS, EXPORT_SET, INSERT, REPLACE, and WEIGHT_STRING did not compute the maximum result length properly for the binary character set.
- During resolution of REPLACE(str, from_str, to_st we assumed that the entire length of from_str would be replaced for each match in str, but since from_str may be only 1 character long, it is possible for str to be replaced with multiple copies of to_str.
- COMPRESS computed the maximum result length in an arbitrary fashion. Now we use compressBound from the zlib library instead.
- In the internal WalkAndReplace function, errors from set_cmp_func were not correctly propagated. 7,
- References: This issue is a regression of:
- A deadlock could occur if a RESET REPLICA ALL statement was used while the channel configuration was being read.
- A potential race condition in accessing the persisted variables cache has been eliminated.
- The constant propagation performed by the MySQL optimizer could in some cases replace references to a column that was not nullable with a nullable expression. When this occurred, the parent item of the replaced column reference could sometimes have the wrong nullability, leading assert failures later, during execution, when a non-nullable item unexpectedly returned NULL.
- We fix this by skipping constant propagation in cases where a non-nullable column reference is replaced by a nullable expression.
- References: This issue is a regression of:
- A column name provided in a query could differ in collation details, or because the name was provided as an expression alias in the query, and still match a column name in the dictionary. The query output contained the column name specified in the query (for example, aa rather than the column name from the dictionary (for example, AA.
- When the server SQL mode is other than strict mode, certain string functions return NULL to indicate that the result is too large for the result buffer, which could lead to in inconsistent behaviour such as incorrectly sorted output. In addition, the functions LAST_INSERT_ID and CAST(... AS CHA did not maintain nullability properly for all cases.
- Hidden items added as part of an ORDER BY, windowing function, or a reference to a view were not always handled correctly in implicitly grouped queries. 9,
- Type resolution for negation did not set the proper precision when converting the type from integer to decimal. This is fixed by assigning the same precision as the argument.
- References: This issue is a regression of:
- Improper error propagation for failed CREATE TABLE ... SELECT statements caused rollback not to occur.
- When used in a subquery, a VALUES having more than one ROW was not always handled correctly.
- The error packet that MySQL Server sends to a client program when the wait timeout expires (ER_CLIENT_INTERACTION_TIMEOU used an incorrect sequence number of 2 instead of 0 in the packet header when protocol compression was used. 5, Concurrent insert operations on multiple tables with full-text indexes caused a large number of full-text index synchronization requests, resulting in an out of memory condition. 5, The fix for a previous issue, following subsequent work which made it redundant and which led to invalid results from expressions used in window functions, has been reverted.
References: Reverted patches:
- In prepared statements, NULLIF result type determination could be incorrect. 5, When transforming EXISTS to a semijoin, and when the query contained a view reference, the query was not processed correctly.
- References: This issue is a regression of:
- Creating and dropping of views within stored routines were not always handled correctly.
- The fix for a previous issue included a minor refactoring of how the precision and scale of a decimal expression were determined. It later emerged that, for the TRUNCATE function, we might end up with a precision of zero, which is invalid.
- We fix this problem by treating a precision of zero as one.
- References: See also:
- For legacy reasons, we can have composite access paths including Filter and Sort inside table_path. For ease of analysis and better formatting, we move the EXPLAIN output for these previous to the Materialize access path.
- Constant folding did not always handle errors correctly when evaluating decimal expressions.
- A call order mismatch in Query_block::prepare_values caused setup_order to be called after resolve_subquery, which meant that, for a VALUES clause that was a subquery, the subquery could be merged into the outer query block before calling setup_order, leading to inconsistent data structures and an error.
- We fix this issue by performing setup_order earlier, and, if the column is not found, resolution is aborted.
References: This issue is a regression of:
- In the Performance Schema table variables.info, the system variable skip_slave_start was incorrectly listed as COMPILED when the global value was actually loaded from the persisted variables file, so PERSISTED should have been used.
- A SELECT query on the INFORMATION_SCHEMA.PROCESSLIST view with concurrent MySQL Server load caused a failure.
- When a query uses a temporary table for aggregation, the group by item is used as a unique constraint on the temporary table: If the item value is already present, the row is updated; otherwise, a new row is inserted into the temporary table. If the item has a result field or reference item, it it evaluated twice, once to check whether the result exists in the temporary table and, if not, again while constructing the row to be inserted. When the group by item was nondeterministic, the result value used to check for existence differed from that with which an insert was attempted, causing the insert to be rejected if the value already existed in the table.
- We fix this by using the hash of any nondeterministic items as the unique constraint, so that the hash is evaluated once only.
- In the case of a lateral derived table, if the creation of the cache invalidator was delayed, the table materialization was emitted without the invalidator, which kept rematerialization from occurring during execution and led to wrong results.
- The pending cache invalidator was emitted only when the index of the lateral table was less than that of the last table in the table list being considered. When the table index of the pending invalidator was equal to the last table of the join slice, the cache invalidator was skipped and the materialization was emitted without the invalidator.
- We fix this by creating the pending cache invalidator if the table index of the pending invalidator is less than or equal to that of the last table in the table list of the current join slice.
- Privilege-checking for table-specific roles was in some contexts not restrictive enough.
- Inconsistencies in how certain comparison predicates were evaluated (for example, when part of a WHERE claus could return different results if a function was used instead of a string literal. 1, Columns of type ENUM or SET are ordered based on numeric comparison, but the comparison function for range expressions (that is, expressions used for ordering in case of a range frame specificatio of a window function is set based on the result type of the column, which for ENUM and SET is String. As a result, processing of rows for a window frame (to see whether a row is before or after the fram did not work correctly; for example, a string comparison might determine that a row occurs before a frame, while a numeric comparison would have placed the row after.
- To fix this problem, we implement integer cache items for ENUM and SET, as well as integer comparison functions for use when ENUM or SET types are involved in range expressions.
- A DML statement, when accessing a subquery which had been optimized away and cleaned up, led to an unplanned shutdown of the server.
- When resolving columns, their names are compared in case-insensitive fashion using utf8_general_ci, which does not always follow the same comparison rules as those for the collation actually used for the table. Previously, when a table had in excess of 32 columns, name lookup was performed using a hash table. Hashing is collation-aware, and so follows the collation's comparison rules; this caused name lookup and duplication detection to be done in an inconsistent fashion. We solve this problem by removing the hash, and performing column name resolution in the same way in all cases regardless of the number of columns.
- For a nullable column, when adjacent ranges were rounded off to the same value by range optimizer, wrong results were returned.
References: See also:
- Quote handling was improved for the SHOW GRANTS statement.
- An attempt could be made to write a JSON_TABLE expression to the optimizer trace before the temporary table backing the table function had been created, causing an assertion to be raised. Now when the column type is not yet available, <column type not resolved yet> is written.
- Validity checks for mandatory_roles system variable settings are now synchronized with validity checks performed for GRANT role statements.
- The keyring_hashicorp_update_config function was not safe for concurrent execution.
- The gen_dictionary function now takes latin1 as the character set of its argument, and returns the same character set.
- The query rewrite plugin failed when refreshing the rewrite rules and the table holding the rewrite rules contained rows that had been marked as deleted, but not physically removed.
- We fix this by causing the query rewrite plugin to skip the deleted rows instead of failing when it sees them.
- Refactoring done as part of implementing window functions in MySQL made it possible to refer to aliases of aggregates in ORDER BY clauses but also allowed direct references to such aggregates, even though this should not be allowed. Now the server checks explicitly for such illegal references.
- In certain cases, the view reference cloned when pushing a condition down to a derived table was not always resolved in the desired context. In addition, a check for a null condition was not performed correctly.
- Otherwise identical strings, using, respectively, the ASCII (collation ascii_general_c and UCS2 (collation ucs2_general_c character sets did not match as expected in join conditions.
- References: See also:
- Given the default collation c1 of a character set cs, and a different collation c2 (that is, not equal to c, then the statement CREATE DATABASE d COLLATE c2 CHARACTER SET cs created a new database with the default collation set to c1 instead of c2.
- Some queries using HAVING COUNT(DISTINCT .. did not return any rows when one was expected.
- References: This issue is a regression of:
- Multi-valued indexes were not used in the following cases:
- In views
- In prepared statements
- In a WHERE containing MEMBER OF combined using OR with another predicate
- In addition, MySQL wrongly reported impossible condition for a WHERE clause in the form f AND f, where f was any of MEMBER OF, JSON_CONTAINS, or JSON_OVERLAPS.
- Our thanks to Yubao Liu for the contribution.
- References: See also: This issue is a regression of:
- When NULL was passed to a user-created function that called REGEXP_INSTR, the first invocation of the function returned NULL as expected, but each subsequent invocation of the function also returned NULL without regard to the value passed to it.
- Some of the functions defined in mbr_utils.cc threw heap-allocated exceptions in some situations. Memory allocated for the exception object in these cases was never freed, which meant that a small amount of memory leaked each time an exception was thrown.
- This is fixed by allocating the exception on the stack in such cases, instead.
- Column names were not displayed correctly in the results of ROLLUP queries when the subquery_to_derived optimization was enabled.
- A stored procedure containing an IF statement using EXISTS, which acted on one or more tables that were deleted and recreated between executions, did not execute correctly for subsequent invocations following the first one.
- When executing a range query with multiple identical ranges joined by OR (for example, a query with WHERE (a=1 AND b=2 AND c= OR (a=1 AND b=2 AND c=, the optimizer lost part of the range, and so chose a query plan that was not optimal.
- Our thanks to Facebook for the contribution.
- While evaluating a loose index scan as a possible option for performing grouping and finding the minimum value, the cost calculation did not reflect the fact that the query looked at one group only, due to the equality predicates on the grouping attributes. This resulted in examination of additional rows since grouping is performed after reading the rows from the index.
- We fix this by determining whether a query produces only one group by checking for the presence of equality predicates on grouping attributes and using these for calculating the cost. This causes the optimizer to pick loose index scan for such cases when doing so is found to be beneficial.
References: See also:
- When resolving integer division, the precision of the result is taken from the dividend. When the divisor is a decimal number, it may be less than 1, which may cause the result to use more digits than the dividend. This yielded incorrect values in some cases in which the result of integer division was a decimal or float.
- Added an in-memory estimate to the optimizer trace to indicate how much of a given table is buffered in the buffer pool.
- Our thanks to Øystein Grøvlen for the contribution.
- The EXPLAIN output for a DML statement contains the table identifier, which normally includes the database name, in the output of SHOW WARNINGS. For some statements such as CREATE VIEW, the database name should be omitted, which is enforced by setting the alias_name_used flag to true in the cached table object, but when the cached table was reused following CREATE VIEW, the flag was not reset, which caused the database name to be omitted from the warnings following EXPLAIN for statements run after a CREATE VIEW which access the same cached table as the view.
- We fix this by ensuring that the alias_name_used flag is always set to an appropriate value during table initialization.
更新時間:2021-10-16
更新細節:
What's new in this version:
New:
- Clear Groups – Custom Clear Groups allow you to clear as many or few layers as you would like. Your volunteer and staff operators now have control over which group of layers they are clearing.
- Key Mappings – Custom Key Mappings let you add keyboard shortcuts for accessing your favorite features. Designate key combinations to access different Props, Macros, menu items, and more.
- Search Preview – The local library search now includes a preview of your text and content. Switch between text or thumbnail view to see exactly which presentation you are looking for.
- Collaborate Better with Planning Center Services – Create place holders in playlists for future presentations, view attachments within a plan, hide extra plan items, add your own presentations, and more
- Maintain Text Attributes Across Outputs – Special attributes, like bold and underline, as well as object or text builds, now stay maintained as intended when applied with a theme or used in an alternate theme
Fixed:
- the wrong underline color in Reflow Editor
- an issue where slide notes imported from Windows to Mac had a margin on the right side
- an issue where foreground video slides were cleared when triggering a macro using an audience look action
- search returning no results when searching the exact name
- an issue where group colors and names were not being displayed in list view on the "Presenter" tab in ProRemote
- search returning no results when searching for numbers
- an issue with parsing of DB3 formatted Bibles
- a crash in the downloads playlist
- an issue where Planning Center folders, services, and plans would not be ordered correctly in the plan selector window
Improves data links to be more consistent across platforms.
- an issue where the Calendar button would not show up on a playlist that was targeted by a Calendar event
- an issue where resizing the main window could hang the entire application
- a bug that caused Planning Center items to not match to presentations
- a bug where stage actions were not validated until relaunch of the application
- an issue where presentation documents would not have an icon in file explorer
- an issue where the width of the input preferences window would change
- an issue with an extra row in the group label table
- an issue where dragging arrangement groups could result in unexpected behavior and visual artifacts
- an issue that would cause text with diacritics to render incorrectly
- bi-directional "bidi" complex script rendering
更新時間:2021-10-11
更新細節:
What's new in this version:
vMix 24.0.0.72
- Replay DUR display now factors in transition time when multiple events selected
- Replay remaining time now factors in transition times
- ReplaySelectAllEvents would not work properly with subsequent shortcuts
- Fix for SQ and LQ replay quality settings resulting in lower than expected quality after some time
- MultiCorder Timeline filename now matches recording filename format
vMix 24.0.0.71
- Fixed rare race condition when closing an NDI input connected to NewBlue Titler Live. May cause spurious clock values to appear.
- Splash screen now 50% sharper
vMix 24.0.0.70
Fixed:
- potential audio hiccups during replay transitions at 50p/25p frame rates
- ReplayLastEvent shortcut not working correctly
- wrong angle in replay activators on channel b when in A|B mode
- incorrect input sometimes displayed in Edit Activator
vMix 24.0.0.66
- new default Dark Mode for vMix Social Web Interface, link at bottom of vMix Social Web Interface page is available to switch back to light mode if needed
- new Twitter streaming destination. Periscope is now discontinued and replaced with direct Twitter streaming. Users who currently use Periscope/Twitter destination
- Will need to login again and configure a stream title
- Support for newer VST3 plugins such as new NDI5 tools
- Improved Tally light support for Sony VISCA over IP cameras
Fixed:
- duplicated text when loading GT tickers from presets
- error message opening MultiCorder when a non-supported stream is added to vMix
- issue where disconnecting PTZ on one Sony VISCA camera disconnects them all
vMix 24.0.0.63
- Fix for missing fonts at end of dropdown list in GT Designer
- Adding warning when enabling Fault Tolerant on recording, as it has a number of limitations that operators should be aware of
- Fixed vMix AVI in Instant Replay not able to be converted to MOV in vMix Media Converter
- Fixed Select Case in scripting not working if indented/formatted
vMix 24.0.0.62
- Fixed issue with YouTube Stream Now login caused by recent security updates
vMix 24.0.0.61
- Fixed issue when changing Input Frame Delay, that may cause the input to stop or corrupt memory
vMix 24.0.0.60
- Updated Twitch login for both vMix and vMix Social due to new browser policy on Twitch
- Fixed infinite loop possible when setting Dynamic input to itself
- Fixed TCP API tally showing incorrect numbers for inputs both in output and overlay at same time
- TCP and Web API are now locked down by default with some enhanced security measures
vMix 24.0.0.59
- Updated SRT library to latest 1.4.3. This fixes a crash issue in the library when some versions of VLC attempt to connect
- Added support for "Select Case" in VB.NET scripting
- Instant Replay Export progress bar may not have updated correctly for combined clips
- Instant Replay Export will now encode much faster to MP4 if replay recording is stopped
- Fix for issue where if some replay sources have no audio they would take a long time to export alongside other angles with audio
vMix 24.0.0.58
- Incorrect colour space may have been applied to WebM alpha videos and ProRes 444 videos
- Local scripts were not being removed with Remove button
- Activators for replays 5-8 were not working correctly
- Older GT titles with stray animations may not have played back correctly when removing animations from them
vMix 24.0.0.57
- NDI FEIM checkbox was not being saved in a preset
- Going to Previous video in a List input using shortcut or back button would not jump over disabled items in the list
- Web Controller buttons may look incorrect if the name of the shortcut button was long
- Virtual sets would not load the default angle correctly when opened from preset
- Double checks for multiple instances of vMix running, as accidentally double/triple clicking on start bar icon may not have been detected previously
- Fixed distorted borders when using in NDI inputs not yet connected
vMix 24.0.0.56
- New WebM support including Alpha Channel. Note: heavily compressed files like WebM use more CPU than larger but lightly compressed formats like MOV. So WebM support has been added for convenience, but do not expect it to perform better than image sequences and MOV.
- New Audio Gap Handling feature added in Settings - Audio. Provides alternative option instead of audio "drops" where audio source is slightly slower than the computer.
- Fix for audio alerts not calculating correctly and may display even if there was audio in the past x seconds
- Improved vMix Call audio sync slightly
- Frame Rate setting can now be adjusted without unticking Use Streaming Settings in Settings -> External Output, as it is not controlled by streaming settings, only resolution is.
- SRT library was not updating correctly in 24 and was still version 1.4.0. Latest version 1.4.2 now installs correctly.
- Fixed replay showing live previews too early, leading to flicker at end of events playback
- Fixed SRT outputs not starting up again when restarting vMix due to settings changes
- Fixed preset folder not showing the correct folder on save when opening presets directly by double clicking the files
vMix 24.0.0.52
- Added support for 100p and 200p frame rates
- Fix for incorrect animation when transitioning in to a new Title on an Overlay channel while the animation of the previous title was still in progress
- Fix for Mix input Cut shortcut not always working when using multiple mix inputs at a time
- Fix for error when loading Instant Replay when Display Mode is set to Legacy in Settings -> Performance. We strongly recommend this be changed
- To Auto however, as Legacy has performance issues on modern machines
- Added Channel parameter support to Scripting
- Running script duration is incorrect when multiple scripts are running at a time
vMix 24.0.0.51
- If events are playing back, replay will no longer jump to the frames of newly created events, which would end playback of events in the process
- Fix for issue with Sony VISCA over IP connection hanging in situations where another app or NDI is already using the protocol
- When switching to a GT title in Overlay stinger settings, vMix will now reset the duration and cut times to 0, as the timing from the GT title is used directly
vMix 24.0.0.50
- Added alert for not recording!
- Fixed issue with shortcut MoveMultiViewOverlay when used in Triggers with borders enabled
- Shortcut function search now has focus, so you can start typing without needing to click the search box
vMix 24.0.0.49
- Fixes VST3 issue in .47 and .48
更新時間:2021-08-25
更新細節:
What's new in this version:
New:
- New subscription plan, the Professional plan, is now available
- Supports rekordbox Cloud Unlimited powered by Dropbox that allows you to upload unlimited music files to the cloud storage
- Supports Collection Auto Upload that allows you to automatically upload music files in your Collection to the cloud storage
- Supports Device library backup that allows you to backup your data exported on USB storage devices to your computer or the cloud storage so that you can recover it at any time if the device is lost
- Added PING PONG and HELIX to Beat FX
Improved:
- The ESC key is now enabled to clear the Search filter
Vocal position now shows on a PC/Mac that doesn’t support AVX, only for tracks that have been - analyzed on a PC/Mac that does support AVX
- Sound Color FX knobs for the Sampler and Master are now always displayed on the screen
Added the following long-awaited features to MIDI LEARN:
- CFX Select Next/Back
- CFX On
- Browse Up/Down
- Video Load Deck 1/2
- FX Select Back
Fixed:
- Occasionally downloaded tracks may not be displayed in the Promo Locker in the browse tree when Inflyte tracks are set to be downloaded to USB storage devices
- The [AUTO/TAP] button would not light up properly when switching to Auto or Tap mode on controllers equipped with the [AUTO/TAP] button for Beat FX
- Occasionally changes to the Auto Gain settings may not be saved
- Occasionally the track analysis data may not be synchronized when using Cloud Library Sync
- Potential freeze when importing Histories from a device
- Occasionally the Sound Color FX user settings that has been set when a controller was connected was unexpectedly changed when rekordbox is started
- Improved stability and fixes for other minor issues
更新時間:2021-08-06
更新細節:
What's new in this version:
- Adds support for editing multiple text ranges
- Improves the group name matching with Planning Center sequences
Fixed:
- a crash that can occur with when using the “replace line returns” option with some text links
- a bug that causes delete and backspace to not respond in the reflow editor
- a bug that causes selected effects to not show the translated effect name
- a bug that causes macros to not sync
- an issue with media bin items not showing the missing media indicator
- an issue with system clock text links showing format options that do not match the local system’s format preferences
- an issue that prevents elapsed timers from starting with negative values
- Fix a bug that prevents capitalization from being preserved during copy/paste
- a bug that causes search results to return as empty if numbers are part of the query
- an issue that prevents triggering of the next slide build when a go to next timer is active
- a bug that prevents message actions from transferring correct between Mac and Windows
- an issue with timer actions being lost when importing a presentation on Mac that was created on Windows
- an issue with stage actions showing "No Change" instead of the appropriate stage layout
- a bug that prevents importing of groups between Mac and Windows
- a bug that causes capitalization settings to not be saved in slide notes
- an issue with hot keys not showing in the reflow editor
- an issue with the action dialog not showing when adding prop action from action palette
- an issue that prevents image import for images being dragged from a web browser
- a hang that happens when an invalid url is used for a web fill
- an issue with the roundness value popup not showing for a rounded rectangle
- an issue with the incorrect slide being triggered when switching between playlist items
- a bug that prevents dropping a folder in media bin not allowed
- an issue where clicking unlock all elements in the editor does not unlock all of the elements
- an issue where template guidelines are visible after applying a template, even if the visibility disabled
- an issue where video/audio continues to play during a scrub
- an issue where the paragraph spacing is not changing by the expected amount
更新時間:2021-07-20
更新細節:
更新時間:2021-07-20
更新細節:
更新時間:2021-07-20
更新細節:
更新時間:2021-07-20
更新細節:
What's new in this version:
Fixed:
- cloud renaming of partial folders not syncing
- errors when downloading files with no extension or MIME type