@@ -126,6 +126,7 @@ final class TDS {
126
126
static final byte TDS_FEATURE_EXT_DATACLASSIFICATION = 0x09 ;
127
127
static final byte DATA_CLASSIFICATION_NOT_ENABLED = 0x00 ;
128
128
static final byte MAX_SUPPORTED_DATA_CLASSIFICATION_VERSION = 0x02 ;
129
+ static final byte DATA_CLASSIFICATION_VERSION_ADDED_RANK_SUPPORT = 0x02 ;
129
130
130
131
static final int AES_256_CBC = 1 ;
131
132
static final int AEAD_AES_256_CBC_HMAC_SHA256 = 2 ;
@@ -3613,11 +3614,10 @@ void writeDateTimeOffset(Object value, int scale, SSType destSSType) throws SQLS
3613
3614
int minutesOffset ;
3614
3615
3615
3616
/*
3616
- * Out of all the supported temporal datatypes, DateTimeOffset is the only datatype that doesn't
3617
- * allow direct casting from java.sql.timestamp (which was created from a String).
3618
- * DateTimeOffset was never required to be constructed from a String, but with the
3619
- * introduction of extended bulk copy support for Azure DW, we now need to support this scenario.
3620
- * Parse the DTO as string if it's coming from a CSV.
3617
+ * Out of all the supported temporal datatypes, DateTimeOffset is the only datatype that doesn't allow direct
3618
+ * casting from java.sql.timestamp (which was created from a String). DateTimeOffset was never required to be
3619
+ * constructed from a String, but with the introduction of extended bulk copy support for Azure DW, we now need
3620
+ * to support this scenario. Parse the DTO as string if it's coming from a CSV.
3621
3621
*/
3622
3622
if (value instanceof String ) {
3623
3623
// expected format: YYYY-MM-DD hh:mm:ss[.nnnnnnn] [{+|-}hh:mm]
@@ -3628,8 +3628,8 @@ void writeDateTimeOffset(Object value, int scale, SSType destSSType) throws SQLS
3628
3628
String offsetString = stringValue .substring (lastColon - 3 );
3629
3629
3630
3630
/*
3631
- * At this point, offsetString should look like +hh:mm or -hh:mm. Otherwise, the optional offset
3632
- * value has not been provided. Parse accordingly.
3631
+ * At this point, offsetString should look like +hh:mm or -hh:mm. Otherwise, the optional offset value
3632
+ * has not been provided. Parse accordingly.
3633
3633
*/
3634
3634
String timestampString ;
3635
3635
@@ -3646,11 +3646,10 @@ void writeDateTimeOffset(Object value, int scale, SSType destSSType) throws SQLS
3646
3646
}
3647
3647
3648
3648
/*
3649
- * If the target data type is DATETIMEOFFSET, then use UTC for the calendar that
3650
- * will hold the value, since writeRPCDateTimeOffset expects a UTC calendar.
3651
- * Otherwise, when converting from DATETIMEOFFSET to other temporal data types,
3652
- * use a local time zone determined by the minutes offset of the value, since
3653
- * the writers for those types expect local calendars.
3649
+ * If the target data type is DATETIMEOFFSET, then use UTC for the calendar that will hold the value,
3650
+ * since writeRPCDateTimeOffset expects a UTC calendar. Otherwise, when converting from DATETIMEOFFSET
3651
+ * to other temporal data types, use a local time zone determined by the minutes offset of the value,
3652
+ * since the writers for those types expect local calendars.
3654
3653
*/
3655
3654
timeZone = (SSType .DATETIMEOFFSET == destSSType ) ? UTC .timeZone
3656
3655
: new SimpleTimeZone (minutesOffset * 60 * 1000 , "" );
@@ -3689,11 +3688,10 @@ void writeDateTimeOffset(Object value, int scale, SSType destSSType) throws SQLS
3689
3688
minutesOffset = dtoValue .getMinutesOffset ();
3690
3689
3691
3690
/*
3692
- * If the target data type is DATETIMEOFFSET, then use UTC for the calendar that
3693
- * will hold the value, since writeRPCDateTimeOffset expects a UTC calendar.
3694
- * Otherwise, when converting from DATETIMEOFFSET to other temporal data types,
3695
- * use a local time zone determined by the minutes offset of the value, since
3696
- * the writers for those types expect local calendars.
3691
+ * If the target data type is DATETIMEOFFSET, then use UTC for the calendar that will hold the value, since
3692
+ * writeRPCDateTimeOffset expects a UTC calendar. Otherwise, when converting from DATETIMEOFFSET to other
3693
+ * temporal data types, use a local time zone determined by the minutes offset of the value, since the
3694
+ * writers for those types expect local calendars.
3697
3695
*/
3698
3696
timeZone = (SSType .DATETIMEOFFSET == destSSType ) ? UTC .timeZone
3699
3697
: new SimpleTimeZone (minutesOffset * 60 * 1000 , "" );
0 commit comments