No new features have been added to the Teradata Provider 13.00.00.01 Release.
Period types have been added. These are Provider Specific Types that are equivalent to the Teradata Database's Period types. The new types are as follows:
TdPeriodDate : Equivalent to the Teradata Database PERIOD(DATE) data type.
TdPeriodTime : Equivalent to the Teradata Database PERIOD(TIME(scale)) data type.
TdPeriodTimeWithTimeZone : Equivalent to the Teradata Database PERIOD(TIME(scale) WITH TIME ZONE) data type.
TdPeriodTimestamp : Equivalent to the Teradata Database PERIOD(TIMESTAMP(scale)) data type.
TdPeriodTimestampWithTimeZone : Equivalent to the Teradata Database PERIOD(TIMESTAMP(scale) WITH TIME ZONE) data type.
ToTimeZone method as been added to TdTimeWithTimeZone and TdTimestampWithTimeZone. This method allows the time zone to be changed.
The TdCommandBuilder and TdDataAdapter page of the Developers Guide has been updated.
Provider now supports the StatementInfo parcel when receiving data from Teradata. This enables the provider to make available additional metadata about SQL statements sent to Teradata.
The behavior of the provider has changed with the availability of the additional metadata. For applications that rely on the old behavior, the UseEnhancedSchemaTable connection string attribute has been added. Set this attribute to false
will enable the old behavior. The default is true
.
When this attribute is set to "false", the provider will return the same metadata as the prior releases.
The DataSet Designer now orders columns of tables in the order that they were defined in the data definition.
An ArgumentOutOfRangeException will now be thrown when the property TdDataAdapter.UpdateBatchSize is set to a negative value.
Documentation has been added to Developer's Guide under Working With Provider Features -- TdDataAdapter And TdCommandBuiler -- Guidelines -- Attempting to insert a Null value into an Identity Column. This section provides a guideline when inserting data of type decimal into a column defined as a DECIMAL and "GENERATED ALWAYS AS IDENTITY".
The Teradata Provider now correctly handles the situation when an instance of a TdCommandBuilder is set to another instance of a TdDataAdapter using the TdCommandBuilder.DataAdapter property. When TdCommandBuilder.DataAdapter is used to change the associated TdDataAdapter, the provider unregisters with the existing one then registers with the new data adapter.
An ArgumentOutOfRangeException is no longer thrown when TdCommand.UpdateRowSource is set to UpdateRowSource.OutputParameters.
The Teradata Provider will not set the PRIMARY_KEY column of the Indexes Schema Collection to true for all columns contained in a composite unique primary index. All the columns in the index must also be defined as NOT NULL.
Silent install is now correctly working. Visual Studio 2005 and 2008 options are no longer ignored during silent installation.
Documentation has been added to Developer's Guide under Working With Provider Features -- TdDataAdapter and TdCommandBuilder -- Guidelines -- Inserting Into a Column Defined As NOT NULL with a Default value. This section provides a guideline when data is being inserted into a database table that contains a column that is defined as NOT NULL with a DEFAULT.
The ToString method of the Date and Time types now generate the correct Teradata literal string representation.
The IConvertible.ToType implementation of the Period types have been fixed. When this method was invoked, it was possible that the Teradata Provider could go into an infinite loop.
The LDAP and SPNEGO mechanisms now work when using Query Directory.
The LdapServicePassword is no longer stored in plain text.
Exceptions that are thrown from the Date And Time methods are now documented.
When the properties of a Null Date And Time value is accessed, a TdException will now get thrown that indicates that this instance is the null value.
An ArgumentNullException is now thrown when a null String reference is passed as the value parameter to the Parse method of all Provider Specific Date And Time Types. If a String.Empty is passed as parameter into any of the Parse methods a FormatException is now thrown..
There were many problems with the documentation related to the Provider Specific Date And Time Types. Some of the exceptions thrown by properties and methods were not documented, and documentation needed to be clarified for the Parse and ToString methods.
The TdTimestampWithTimeZone.GetHashCode threw an exception when this method is called from a Null value. This has been fixed so that when GetHashCode is called from a Null value, a 0 is returned.
Documentation for the method ToString(IFormatProvider) of all Date And Time Provider Specific Types has been updated to indicate that the cultural settings specified in the DateTimeFormatInfo object is ignored.
The return value is the type's Null value.
When parsing a string representation of a TdTime, TdTimeWithTimeZone, TdTimestamp or TdTimestampWithTimeZone that has a scale that is greater than 6, a FormatException will get thrown.
ToTimeZone method has been added to TdTimeWithTimeZone and TdTimestampWithTimeZone. This method allows the time zone to be changed.
When an application uses the TdDataAdapter, customizes the commands, and defines parameters the Teradata Database may throw an error if the provider uses Iterated Requests. A workaround for this problem is described in the page Developer's Guide, Specifying INSERT, UPDATE, DELETE command.
The provider threw an InvalidCastException when an application attempted to convert character data to a DateTime when the session character set was UTF8. The Teradata Database padded the character data with spaces which caused the overall length to be greater than 10 characters (YYYY-MM-DD). This exception got thrown when the length was greater than 10.
TdTransaction.Commit threw an exception in ANSI session mode when the Connection Isolation level (TdConnection.IsolationLevel) did not match what was specified at the Transaction level.
When the total size of the parameters of a command is greater than what is allowed by the Teradata Database, the provider threw an InvalidOperationException that contained an unhelpful error message. This has changed so that a more informative exception is thrown. A TdException will now get thrown that also contains a more informative error message.
This problem ocurrs when the provider is connected to a Teradata Database version 6.2 or earlier. The TdParameter.ProviderSpecificValue property returned a Provider Specific Date And Time Type (e.g. TdDate, TdTimestamp, etc...) when the EnableTdDateTime Connection String Attribute was set to false. This has been fixed so that this property now returns the corresponding .NET Framework type.
The provider supports Batch Update using Multi-Statement and/or Iterated Requests. When the provider used Iterated Request there was a problem when the session mode had been set to ANSI. The provider appended a "COMMIT WORK" to the SQL statement. The Teradata Database returned an error indicating that it expected a single request.
This problem is related to the Parse method of TdTime/TdTimeWithTimeZone and TdTimestamp/TdTimestampWithTimeZone. In the string representation of these types, the sub-seconds did not get correctly parsed when a IFormatProvider of a culture different from "invariant" was specified.
The provider did not automatically grow an internal buffer when a "CREATE STORED PROCEDURE" statement was executed and returned a large result set. In this situation, an application received a Teradata Database error 3115 which indicates that the internal buffer is to small to hold one record. This has been modified so that the 3115 error is handled internally and the size of the buffer is automatically adjusted by the provider.
Visual Studio Change Password feature now correctly works when the Session Mode is set to ANSI.