Support for TdDataReader.GetFieldValue<SByte> has been added for ByteInt columns.
The Data Provider now applies the Connection-Timeout to the Change-Database command. Previously it applied the Default Command-timeout to the Change-Database command when it opened the Connection (TdConnection.Open). This change will resolve an issues related to the Teradata Workload Analyzer delaying the Change-Database command. An Application must increase the ConnectionTimeout when the Teradata Workload Analyzer is setup to delay the Change-Database command.
The Data Provider supports SPNEGO Authentication Mechanism on .NET Core in addition to LDAP and TD2 mechanisms previously supported in version 16.20.2. SPNEGO authentication on .NET Core requires the Teradata Database version 16.10.03 or 16.20.22 and higher.
The Data Provider supports Direct Access and Materialized Foreign tables. The TABLE_TYPE_EX column of the Tables Schema Collection returns information for the foreign tables.
The .NET Data Provider for Teradata has been ported to .NET Core 2.0.
Some features are not supported by the .NET Core implementation. Please refer to Migration Considerations.
The tracing functionality now uses Event Tracing for Windows (ETW) on Windows platforms and lttng on Linux.
Refer to Troubleshooting for more details.
The Data Provider supports the JWT authentication mechanism. Refer to Authentication String Construction for more details.
Support for the new Set Transform statement has been added. You must use this statement BEFORE preparing a statement. When you issue a Set Transform statement any statements that have already been prepared on this session will be reset to an un-prepared state.
A new generic method has been added to TdParameter to retreive the value of an Output or InputOutput parameter as a specified data type.
The following methods may now be called when retrieving LOB data when using CommandBehavior.SequentialAccess. Previously, these methods were only available when using CommandBehavior.Default:
Support has been added for the new DATASET STORAGE FORMAT CSV data type in the Columns Schema Collection and TdDataReader.GetSchemaTable output.
Support has been added for TIME SERIES tables in the Schema Collections:
The Data Provider successfully returns a Connection from a Pool when TdConnection.OpenAsync() method is used to retrieve an idle Connection. The Data Provider no longer throws "[100002] Cannot create connection within the time specified".
The Data Provider successfully connects to the Teradata Database when 1) the User's password has expired, 2) the User has specified a new Password in the Connection-String and 3) the Teradata Database Network policy is to to always encrypt the Data send to and from the Data Provider. The Data Provider no longer throws a NullReferenceException.
The Data Provider will throw an OperationCancelledException when an ExecuteXXXAsync() operation is cancelled using a CancellationTokenSource. This will set the Task state to Cancelled. (i.e. Task.IsCancelled will be true.) If you call Wait() or WaitAll() on the task it will throw an AggregateException that wraps a TaskCancelledException. If you await the task it will throw an OperationCanceledException.
The Data Provider threw a System.IndexOutOfRangeException when executing an SQL query (using TdCommand or TdDataAdapter) with the following characteristics:
1) one or more Smart-LOB parameters and
2) the Redrive feature was enabled on the Teradata Database.
This issue is very rare and it has been fixed.
The Data Provider no longer throws a TdException (error code 5526) from TdCommand.ExecuteCreateProcedure method when the stored-procedure references an Extended Object Name (e.g. Column-Name greater than 30 characters).
The Data Provider no longer throws a NullReferenceException when the application invokes TdConnection.Close() method to cancel the recovery/reconnection after a network failure.
The Data Provider no longer returns an Aborted Connection (see Teradata Database error code 3134) to the pool. This will prevent very rare cases of error codes 3902 (Session is not logged on) or 115009 (Message truncation error) when the application retrieved an aborted-connection from a pool.
The Data Provider no longer throws a NullReferenceException when the Data Provider is published/deployed with the application (private deployment).
The Data Provider version 16.20.2 throws "The type initializer for 'Teradata.Client.Provider.UtlPerformanceCounters' threw an exception.
---> System.NullReferenceException: Object reference not set to an instance of an object."
Previously, if an application re-used TdParameter objects associated with a TdCommand in some scenarios while connected to Teradata Database 15.10, the Data Provider may throw TdException 100056: Total size of parameters is greater than the max Data parcel size. This issue has been fixed.
The Data Provider will no longer attempt to use the DBC.ColumnsJQV view, when fetching the Columns Schema Collection, if the Teradata Database QVCI feature is disabled.
The Data Provider will now correctly report the situation where the Offset specified for an input parameter is larger than the input data value length.
The Data Provider will now correctly handle an input parameter defined as TdType.VarChar when the parameter value is a TextReader.
The Data Provider will now correctly ignore the TdParameter.Size value when retrieving the value for an output parameter defined as TdType.TdXml.
If TdParameter.Size is greater than 64000, the Data Provider sends the parameter as a Clob. If the TdParameter.DbType property is set to AnsiString, then TdParameter.Size property refers to the maximum size, in bytes, of the data within the column, matching the DbParameter.Size specification.
Previously, the Data Provider treated the TdParameter.Size of a Clob as the maximum size, in characters, of the data within the column, which did not match the DbParameter.Size specification. Depending on the session character set, the Data Provider could send more data to the Teradata Database than the application requested.
If the session character set is UTF16, TdParameter.DbType property is set to AnsiString, TdParameter.Size is less than or equal to 64000, and the number of characters in TdParametter.Value is less than the number of bytes specified in TdParamter.Size, the Data Provider sent fewer characters than the application requested. This issue has been fixed.
A GUI or ASP.NET application may hang in the TdConnection.OpenAsync method. This issue has been fixed.