The AseDbType started off being an enum whose values were informed by (pinned to) those of DbType, which lead to some enum values being the same/indistinguishable (like Image vs Binary).
This generally isn't a big deal, but it makes it harder for callers to specify an exact AseDbType and see the behaviour they're expecting (generally in edge cases, admittedly).
So, this change seeks to right that wrong, and at the same time address issues #59 and #62 .
Introduced tests which assert that our AseDbType's numeric values are equivalent to the reference driver's
Introduced tests related to issues #59 and #62
Fixed issues related to introduced tests
Had to implement the TDS_BIGDATETIMEN type for parameter transmission, which involved inspecting Ribo output and figuring out that in this format, the date/time is encoded as an 8 byte number representing the number of microseconds since year 0 (1 BC?). Turns out that the reference driver prefers to use big datetime even when transmitting times. Probably because it's a better resolution?
The
AseDbType
started off being an enum whose values were informed by (pinned to) those ofDbType
, which lead to some enum values being the same/indistinguishable (likeImage
vsBinary
).This generally isn't a big deal, but it makes it harder for callers to specify an exact
AseDbType
and see the behaviour they're expecting (generally in edge cases, admittedly).So, this change seeks to right that wrong, and at the same time address issues #59 and #62 .
AseDbType
's numeric values are equivalent to the reference driver'sTDS_BIGDATETIMEN
type for parameter transmission, which involved inspecting Ribo output and figuring out that in this format, the date/time is encoded as an 8 byte number representing the number of microseconds since year 0 (1 BC?). Turns out that the reference driver prefers to use big datetime even when transmitting times. Probably because it's a better resolution?