<commit_before>LINQ to DB 2.0.0  Release Notes
---------------------------------
- breaking change: Dropped support for .NET 4.0, Silverlight 4-5 and Windows 8 Store frameworks. New target frameworks list is netcoreapp2.0, netstandard1.6, netstandard2.0 and net45
- breaking change: Behavior of enum mapping to a text type for enum without configured mappings changed to use ToString() instead of (enum underlying type).ToString(). To return old behavior, you should set Configuration.UseEnumValueNameForStringColumns to false (#1006, #1071)
- breaking change: [PostgreSQL] If you used BulkCopy with ProviderSpecific method specified, check https://github.com/linq2db/linq2db/wiki/Bulk-Copy for important notes regarding provider-specific support notes
- breaking change: [Firebird] Changed default identifier quotation mode to FirebirdIdentifierQuoteMode.Auto from None (#1120)

- feature: Predicate expression support added for associations configuration using fluent mapping (#961)
- feature: Support creation of query parameters in extension builders (#964)
- feature: New configuration flag LinqToDB.Common.Configuration.PreferApply
- feature: New In/NotIn extension methods added to LinqToDB.Tools.Extensions
- feature: IBM.Data.DB2.Core provider support
- feature: Oracle Data Provider for .NET Core provider support
- feature: Parameters to override table, schema/owner and database names added to InsertOrReplace*, InsertWith*Identity*, Update* and Delete* IDataContext extension methods
- feature: [MySQL] Procedures and functions support added to schema provider (#991)
- feature: [BulkCopy][SAP HANA, SQL CE] BulkCopyOptions.KeepIdentity support added (#1037)
- feature: Calculated columns support through ExpressionMethodAttribute.IsColumn property (#1004)
- feature: Dynamic columns support (#964, #507, #744, #1083)
- feature: [PostgreSQL] Added support for native INSERT ON CONFLICT UPDATE statement for InsertOrUpdate operation for PostgreSQL 9.5+ (#948)
- feature: [PostgreSQL][BulkCopy] Provider-specific copy method implemented (#935)
- feature: Added IQueryable interceptor callback. This feature could be used to attach linq2db to other IQueryable providers (#1116)
- feature: Extra overrides to Join* extensions that accept two queryable sources, join predicate and result selector expression (#1076, #1088)
- feature: Added extension point LinqExtensions.ExtensionsAdapter to override LINQ To DB async extensions with custom implementation
- feature: You can post-process instantiated entities by subscribing on new IEntityServices.OnEntityCreated event, implemented by DataContext/DataCOnnection and RemoteDataContextBase contexts (#1112)
- feature: You can set trace callback on DataContext instance using DataContext.OnTraceConnection property (#1131)
- feature: CreateTempTable API to work with temporary tables. Available as IDataContext extension methods

- improvement: [MS SQL] Query parameters for varchar/nvarchar types will use fixed size 8000/4000 to improve query plans caching by server (#989)
- improvement: [Oracle] Corrected date literal generation (#969)
- improvement: [Merge] Support partial projection in source query
- improvement: [Merge] Merge operation will throw LinqToDBException: "Column <column_name> doesn't exist in source" if projection in source query doesn't select needed field
- improvement: [Merge][MS SQL] Prefer parameters over literals for binary types in client-side source to avoid generation of huge SQL queries
- improvement: [BulkCopy] BulkCopy operation will throw LinqToDBException: "BulkCopyOptions.KeepIdentity = true is not supported by BulkCopyType.RowByRow mode" if KeepIdentity set to true for unsupported copy mode (#1037)
- improvement: [BulkCopy][SAP HANA] BulkCopy operation will throw LinqToDBException if BulkCopyOptions.KeepIdentity set to true for unsupported provider version to avoid unexpected results (#1037)
- improvement: [BulkCopy][Firebird] BulkCopy operation will throw LinqToDBException if BulkCopyOptions.KeepIdentity set to true to avoid unexpected results (#1037)
- improvement: Reading of schema for procedures will be wrapped into transaction with rollback if called without ambient transaction
- improvement: Allow basic mappings modifications using MappingSchema.EntityDescriptorCreatedCallback callback (#1074)
- improvement: Exception during column mapping will be wrappped into LinqToDBException with information which column failed with original error as InnerException (#1065)
- improvement: [PostgreSQL] Improved suppport for some types (#1091)
- improvement: [Firebird] Check table existence in DropTable (#1120)
- improvement: [Informix] Added support for delimited (quoted) identifiers

- fix: fixed another case of defect #170, where default(T) value could be selected for non-nullable field instead of NULL from left join, if SelectMany() call used in source (#1012)
- fix: [MS SQL, Sybase] updated Merge insert operation to respect SkipOnInsert mapping flag for identity fields when no custom insert expression specified. With this fix merge operation will allow database to generate identity value instead of use of value from source (#914)
- fix: [MS SQL] fixed old(!) Merge API to not try to update identity fields during update operation (#1007)
- fix: [SQLite] fixed incorrect SQL generation for DateTime.AddDays() method (#998)
- fix: fixed issue where incorrect query filter generated for left join association to an entity with inheritance mapping (#956)
- fix: fixed exception during sql generation for some queries when joins optimization enabled and table hints used (#956)
- fix: fixed regression in sql generation for complex subqueries containing joins, goup by and contains expressions (#928)
- fix: rare conversion error for binary data selection over WCF (#925)
- fix: [DB2, MS SQL, SQL CE]fixed invalid sql generation for queries with empty select list and Take()/Skip() calls (#817)
- fix: name spelling fix: ForeingKeyInfo -> ForeignKeyInfo (#941)
- fix: Sql.Lower/Sql.Upper functions should be evaluated on server when possible (#819)
- fix: [Firebird] fixed Sql.DatePart function support for seconds and milliseconds (#967)
- fix: async query could be blocked by Connection.Open used internally instead of Connection.OpenAsync (#1023)
- fix: Fixed "Table not found for 't18.[3]t19.Field2'" error for merge with source query using cross joins or SelectMany (#896)
- fix: [MS SQL] Drop table in another database doesn't work (#1030)
- fix: [Inheritance mapping] Fixed exception when you try to select inherited record as a field/property of specific type instead of base inheritance type (#1046)
- fix: [DB2, Oracle] Schema provider will not find any procedures when called with GetTables = false (#1068)
- fix: [MySQL, Sybase] Reading of procedure schema from ambient transaction will throw LinqToDbException to avoid unintentional database corruption (#792)
- fix: [Merge] Fixed API to not propose Merge call right after On* call when no operations added yet
- fix: MappingSchema converters not used for enum types (#1006)
- fix: [Inheritance mapping] Passing derived entity using parameter of base type use parameter type instead of entity type in Update, Delete and Insert methods for query generation (#1017)
- fix: [Flient Mapping] Complex types mapping doesn't work with fluent mapping (#1005)
- fix: Adding multiple metadata readers to default mapping schema could result in use of only last added reader (#1066)
- fix: LoadWith do not support type casts in load expression (#1069)
- fix: [Inheritance mapping] Support for loading of derived entities in LoadWith (#994)
- fix: [Inheritance mapping] Fixed different cases of type conversions using type cast or `is` operator between base and derived entities (#1065, #1057)
- fix: Fix issue when insert query from subquery data source with nullable parameter called first with null value fails for subsequential calls with non-null parameters (#1098)
- fix: [PostgreSQL] Proper type names generated for: System.Int16 identity fields, DataType.VarBinary/System.Linq.Binary, DataType.NChar/System.Char. Those type names used by CreateTable() method (#1091)
- fix: Default System.Char mapping changed to use length = 1 instead of unspecified (#1091)
- fix: [PostgreSQL] Interval type supports both NpgsqlTimeSpan and NpgsqlInterval (#1091)
- fix: [Oracle, Firebird] Support escaping of identifiers that use reserved words (#1110, #1095)
- fix: Improved support for mappings to interfaces (#1099)
- fix: [MSSQL] DateTime string literal generation fix (#1107)
- fix: Fixed T4 templates to work with .NET Core projects out-of-box using nuget package (#1067)
- fix: [Access] Fixed schema read failure when ACE OleDb provider used (https://github.com/linq2db/linq2db.LINQPad/issues/10)
- fix: [Access] Schema provider will now return system tables too (TableInfo.IsProviderSpecific == true) (#1119)
- fix: [Firebird] Use proper identifiers quotation for create/drop/truncate table for tables with generators and fix detection of cases when quotation is required (#1120)
- fix: Fixed issue when joined subquery condition were moved to outer query's condition (#922)

- other changes: t4models repository moved to main repository
- other changes: [Firebird] Made changes to Firebird provider/sql optimizer to allow subclassing (#1000)

- for developers: SelectQuery class refactoring (#936, #938)
- for developers: *DataProviders.txt tests configuration file replaced with JSON-based *DataProviders.json files
- for developers: migrated to latest C# version
- for developers: moved methods SchemaProviderBase.ToTypeName(), SchemaProviderBase.ToValidName() to public API (#944, #963)
- for developers: dual owner/schema naming replaced with schema name in code
- for developers: ActiveIssue attribute added for tests


LINQ to DB 1.10.1  Release Notes
---------------------------------
- fix async retry policy (#919)
- fix connection management (#927)

- feature: allow to configure null checking in predicates (#932)

- obsoletes: LinqToDB.Configuration.Linq.CheckNullForNotEquals, use CompareNullsAsValues instead


LINQ to DB 1.10.0  Release Notes
---------------------------------
- breaking change: [Oracle] bulk mode property (OracleTools.UseAlternativeBulkCopy) changed type from bool to AlternativeBulkCopy enum. If you assigned it to true, you should replace it with AlternativeBulkCopy.InsertInto value.
- breaking change: [Oracle] Old implementation used TO_DATE literal for DataType.DateTime type and TO_TIMESTAMP literal for other date and time types. New implementation will use TO_TIMESTAMP for DataType.DateTime2 type and TO_DATE for other date and time types (#879)

- documentation: Added XML documentation for mapping functionality (#836)
- documentation: Added documentation on explicit join definition: https://github.com/linq2db/linq2db/wiki/Join-Operators

- feature: LINQ extension methods to define inner and outer (left, right, full) joins (#685)
- feature: [Oracle] New bulk insert mode added (AlternativeBulkCopy.InsertDual) (#878)
- feature: new DataConnection async extensions: ExecuteAsync, ExecuteProcAsync, QueryToListAsync, QueryToArrayAsync (#838)
- feature: [MySQL] BulkCopyOptions.RetrieveSequence support (only for single integer indentity per table) (#866)
- feature: support for query expression preprocessing (#852)

- improvement: added Sql.NoConvert helper function to remove unnecessary conversions, introduced by LINQ (#870). Fixes #722<commit_msg>move release notes to wiki<commit_after>Release notes for newer versions moved to https://github.com/linq2db/linq2db/wiki/Releases-and-Roadmap

LINQ to DB 1.10.1  Release Notes
---------------------------------
- fix async retry policy (#919)
- fix connection management (#927)

- feature: allow to configure null checking in predicates (#932)

- obsoletes: LinqToDB.Configuration.Linq.CheckNullForNotEquals, use CompareNullsAsValues instead


LINQ to DB 1.10.0  Release Notes
---------------------------------
- breaking change: [Oracle] bulk mode property (OracleTools.UseAlternativeBulkCopy) changed type from bool to AlternativeBulkCopy enum. If you assigned it to true, you should replace it with AlternativeBulkCopy.InsertInto value.
- breaking change: [Oracle] Old implementation used TO_DATE literal for DataType.DateTime type and TO_TIMESTAMP literal for other date and time types. New implementation will use TO_TIMESTAMP for DataType.DateTime2 type and TO_DATE for other date and time types (#879)

- documentation: Added XML documentation for mapping functionality (#836)
- documentation: Added documentation on explicit join definition: https://github.com/linq2db/linq2db/wiki/Join-Operators

- feature: LINQ extension methods to define inner and outer (left, right, full) joins (#685)
- feature: [Oracle] New bulk insert mode added (AlternativeBulkCopy.InsertDual) (#878)
- feature: new DataConnection async extensions: ExecuteAsync, ExecuteProcAsync, QueryToListAsync, QueryToArrayAsync (#838)
- feature: [MySQL] BulkCopyOptions.RetrieveSequence support (only for single integer indentity per table) (#866)
- feature: support for query expression preprocessing (#852)

- improvement: added Sql.NoConvert helper function to remove unnecessary conversions, introduced by LINQ (#870). Fixes #722
{'fraction_non_alphanumeric': 0.07988856260823733, 'fraction_numerical': 0.03026880505985995, 'mean_word_length': 5.059306569343065, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 5, 'https://': 5, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4844797', 'n_tokens_mistral': 3648, 'n_tokens_neox': 3244, 'n_words': 1609}