Skip to content

v2.4.1

Choose a tag to compare

@TimelordUK TimelordUK released this 22 Oct 11:55
· 1327 commits to master since this release
  1. Node v17 binaries included.

msnodesqlv8 git(master) node --version
v17.0.1

dates.js
{
_: [],
k: 'linux',
t: [
'bcp', 'promises',
'json', 'connection-pool',
'pause', 'concurrent',
'multiple-errors', 'geography',
'tvp', 'warnings.js',
'compoundqueries.js', 'querycancel.js',
'txn.js', 'datatypes.js',
'params.js', 'query.js',
'querytimeout.js', 'connect.js',
'bulk.js', 'sproc.js',
'prepared.js', 'userbind.js',
'dates.js'
]
}
use conn_str Driver={ODBC Driver 17 for SQL Server}; Server=192.168.1.102;UID=linux; PWD=linux; Database=node

bcp
ms = 59
✔ bcp employee (835ms)
✔ bcp 7 column mixed table (477ms)
✔ bcp expect error null in non null column (353ms)
✔ bcp expect error duplicate primary key (92ms)
✔ bcp recovery from error. (99ms)
✔ bcp hierarchyid binary (153ms)
✔ bcp small binary (118ms)
✔ bcp bit bit (99ms)
✔ bcp uniqueidentifier (89ms)
✔ bcp smallint (81ms)
✔ bcp tinyint (105ms)
✔ bcp real with null (122ms)
✔ bcp real (107ms)
✔ bcp bigint with nulls (112ms)
✔ bcp bigint (85ms)
✔ bcp time (112ms)
✔ bcp numeric (114ms)
✔ bcp varchar(max) (10k chars) (763ms)
✔ bcp datetimeoffset datetimeoffset - mix with nulls (190ms)
✔ bcp datetimeoffset datetimeoffset (165ms)
✔ bcp binary binary - mix with nulls (139ms)
✔ bcp binary binary (204ms)
✔ bcp bit bit - mix with nulls (158ms)
✔ bcp timestamp timestamp - mix with nulls (163ms)
✔ bcp timestamp timestamp - no null (126ms)
✔ bcp varchar varchar with nulls (159ms)
✔ bcp varchar varchar (177ms)
✔ bcp int, int column - with nulls (158ms)
✔ bcp int, int column (141ms)

promises
✔ adhoc proc promise: open call close (95ms)
✔ promises for table insert select rows (2012ms)
✔ using promises to open, query, close pool (47ms)
✔ adhoc promise: open select close
✔ query aggregator: insert 1 valid 1, ivalid table (38ms)
✔ query aggregator: drop, create, insert, select, drop
✔ query aggregator: 4 inserts, 2 updates, 2 updates, update all (44ms)
✔ query aggregator: insert into invalid table
✔ bcp employee (415ms)

json
✔ use proc to insert a JSON array and bulk parse on server (186ms)
✔ use proc to insert a JSON based complex object (180ms)

connection-pool
✔ using promises to open, query, close pool (201ms)
✔ submit 10 queries with errors (no callback) to pool of 4 (69ms)
✔ submit error queries with callback for results (64ms)
✔ submit queries with callback for results (2597ms)
✔ submit 1000 short queries to pool of 4 - expect concurrent queries and fast completion (1743ms)
✔ open pool size 4 - submit queries on parked connections (5610ms)
✔ open pool size 4 - leave inactive so connections closed and parked (4537ms)
✔ submit 7 queries to pool of 4 connections - pause 1 and resume when only item left (3106ms)
✔ submit 7 queries to pool of 4 connections - cancel 2 waiting on pool, expect 4 + 1 concurrent (2067ms)
✔ submit 7 queries to pool of 4 connections - pause 1 and resume whilst waiting on queue (2081ms)
✔ submit 4 queries to pool of 2 connections - expect 2 x queue 2 x concurrent queries (2061ms)
✔ submit 4 queries to pool of 4 connections - expect 4 x concurrent queries (4061ms)
✔ open and close a pool with 2 connections without error

pause
✔ resume query having never paused (306ms)
✔ pause a closed query
✔ pause a paused query that is about to close
✔ pause a large query and cancel without resume (109ms)
✔ pause a large query to only get 10 rows then submit new query whilst other paused (first killed) (336ms)
✔ pause a large query to only get 10 rows (218ms)
✔ queries can start off paused (200ms)
✔ run a large query (123ms)
✔ pause a large query every 100 rows (798ms)
✔ pause a large query every 100 rows - submit new query (895ms)
✔ close connection with paused query pending a resume (1005ms)
✔ pause a large query and cancel without resume - submit new query (194ms)

concurrent
✔ open connections in sequence and prove distinct connection objects created
✔ check for blocked calls to api with event emission (2012ms)
✔ check for blocked calls to api (2016ms)
✔ check for blocked calls to api with nested query (4032ms)
✔ open connections simultaneously and prove distinct connection objects created
✔ make sure two concurrent connections each have unique spid

multiple errors
✔ non trusted invalid user (60ms)
✔ select then use print statement capture print
✔ use print statement capture print
✔ callback multiple errors
✔ event based multiple errors

geography
✔ use tvp to insert geography LINES using pm (632ms)
✔ show a geography .Net error is reported back from driver (131ms)
✔ use tvp to insert geography LINESTRING, POINT and POLYGON using pm in 1 call (164ms)
✔ insert lines from json coordinates (95ms)
✔ insert points from json coordinates (164ms)
✔ insert a polygon from json coordinates (79ms)
✔ insert an array of geography lines (112ms)
✔ insert an array of geography points (122ms)
✔ prepare a geography point statement for repeat invocations (141ms)

tvp
✔ use tvp simple test type insert test extended ascii (279ms)
✔ use tvp simple test type insert test long string 8 * 1024 (129ms)
✔ call tvp proc with local table (179ms)
✔ call tvp proc from proc (2136ms)
✔ use tvp to select from table type complex object Employee type (638ms)
✔ employee use tm to get a table value type representing table and create that user table type (340ms)
✔ use tvp simple test type insert test using pm (215ms)
✔ non dbo schema use tvp simple test type select test (136ms)
✔ use tvp simple test type select test (154ms)
✔ use tvp simple test type insert test (131ms)

warnings
✔ TEST THREE - Prepared Query - JOIN HINT WARNING (51ms)
✔ TEST ONE - Query - JOIN HINT WARNING
✔ TEST TWO - Query - NULL ELIMNATED WARNING
✔ TEST FIVE - Stord Proc - JOIN HINT WARNING (57ms)
✔ print raises warning not error
✔ TEST FOUR - Prepared Query - NULL ELIMNATED WARNING

compoundqueries
✔ check row count emission is as expected for compound queries 1 insert
✔ test 001 - batched query: SELECT....; INSERT ....; SELECT....; (82ms)
✔ check row count emission is as expected for compound queries 3 inserts, update all
✔ check row count emission is as expected for compound queries 4 inserts, 2 updates, 2 updates, update all
✔ test 003 - batched query: SELECT....; SELECT (with no results) ....; SELECT....; (44ms)
✔ test 004 - batched query: SELECT....; INSERT (invalid...should fail) ....; SELECT....; (42ms)

querycancel
✔ nested cancel - expect Operation canceled on both
✔ cancel single waitfor using notifier - expect Operation canceled
✔ cancel single query and submit new query to prove connection still valid
✔ cancel single query from notifier using tmp connection - expect Operation canceled
✔ cancel single waitfor - expect Operation canceled
✔ cancel single waitfor on non polling query - expect cancel error and query to complete (3011ms)
✔ cancel single query - expect Operation canceled
✔ waitfor delay 20 and delayed cancel- expect Operation canceled (106ms)
✔ cancel single query and cancel again - expect Operation canceled and error
✔ 2 x cancel - expect Operation canceled on both
✔ pause a large query and cancel check done (132ms)
✔ cancel a prepared call that waits
✔ cancel a call to proc that waits for delay of input param. (86ms)

txn
✔ setup for tests
✔ begin a transaction and use streaming with error on constraint to trigger rollback detection (49ms)
✔ begin a transaction and rollback on violation and insert valid (69ms)
✔ begin a transaction and add two rows no constraint violation, commit and check (50ms)
✔ begin a transaction and rollback with no query
✔ begin a transaction and rollback with no query and no callback
✔ begin a transaction and commit
✔ begin a transaction and rollback
✔ begin a transaction and then query with an error
✔ begin a transaction and commit (with no async support)

datatypes
✔ test 023a - fetch large varbinary in chunks 'varbinary(max)', fetch as binary (1418ms)
✔ write / read an image column (107ms)
✔ test 001 - verify functionality of data type 'smalldatetime', fetch as date (65ms)
✔ test 002 - verify functionality of data type 'datetime', fetch as date (48ms)
✔ test 003_a - insert valid data into time(7) via TSQL, fetch as date (48ms)
✔ test 003_b - insert valid data into time(0) via TSQL, fetch as date (51ms)
✔ test 004_a - insert valid data into datetime2(7) via TSQL, fetch as date (43ms)
✔ test 004_b - insert valid data into datetime2(0) via TSQL, fetch as date (48ms)
✔ test 005_a - insert valid data into datetimeoffset(7) via TSQL, fetch as date (45ms)
✔ test 005_b - insert valid data into datetimeoffset(0) via TSQL, fetch as date (45ms)
✔ test 006_a - insert valid data into datetimeoffset(7) via TSQL, fetch as date UTC (46ms)
✔ test 007 - insert valid data into date via TSQL, fetch as date (47ms)
✔ test 008 - insert null into varchar(max) via TSQL, fetch as text (47ms)
✔ test 008_bndryCheck_VC - insert 2048 char string into varchar(max) via TSQL, fetch as text (51ms)
✔ test 008_bndryCheck_NVC - insert 2049 char string into nvarchar(max) via TSQL, fetch as text (53ms)
✔ test 009 - verify functionality of data type 'guid', fetch as text (46ms)
✔ test 010 - verify functionality of data type 'tinyint', fetch as number (46ms)
✔ test 011 - verify functionality of data type 'smallint', fetch as number (42ms)
✔ test 012 - verify functionality of data type 'int', fetch as number (46ms)
✔ test 013 - verify functionality of data type 'bigint', fetch as number
✔ test 014 - verify functionality of data type 'smallmoney', fetch as number (46ms)
✔ test 015 - verify functionality of data type 'money', fetch as number
✔ test 016 - verify functionality of data type 'numeric(7,3)', fetch as number (51ms)
✔ test 017 - verify functionality of data type 'decimal(7,3)', fetch as number (44ms)
✔ test 018 - verify functionality of data type 'bit', fetch as number (54ms)
✔ test 019 - verify functionality of data type 'float(53)', fetch as number (49ms)
✔ test 020 - verify functionality of data type 'real', fetch as number (44ms)
✔ test 021 - verify functionality of data type 'binary(n)', fetch as binary (49ms)
✔ test 022 - verify functionality of data type 'varbinary(n)', fetch as binary (48ms)
✔ test 023 - verify functionality of data type 'varbinary(max)', fetch as binary (46ms)
✔ test 024 - verify functionality of data type 'image', fetch as binary (53ms)
✔ test 025 - verify functionality of data type 'xml', fetch as text (55ms)
✔ test 026 - verify functionality of data type 'char', fetch as text (48ms)
✔ test 027 - verify functionality of data type 'varchar(n)', fetch as text (60ms)
✔ test 028 - verify functionality of data type 'varchar(max)', fetch as text (58ms)
✔ test 029 - verify functionality of data type 'text', fetch as text (62ms)
✔ test 030 - verify functionality of data type 'nchar', fetch as text (64ms)
✔ test 031 - verify functionality of data type 'nvarchar(n)', fetch as text (52ms)
✔ test 032 - verify functionality of data type 'nvarchar(max)', fetch as text (61ms)
✔ test 033 - verify functionality of data type 'ntext', fetch as text (58ms)
✔ test 034 - verify functionality of data type 'sysname', fetch as text (45ms)

params
✔ bind via a declare and insert
✔ query containing Swedish "åäö" as sql query literal no params
✔ query containing ascii chars as sql query literal no params
✔ query containing Swedish "åäö" as param
✔ insert/query containing Swedish "åäö" as param (44ms)
✔ bind a null to binary using sqlTypes.asVarBinary(null)
✔ select a long string using streaming - ensure no fragmentation (59ms)
✔ mssql set @str=?;DECLARE @SQL NVARCHAR(MAX) = @str; SELECT @s AS s
✔ insert string 100 in nchar(100) (54ms)
✔ insert string 500 in nvarchar(1000) (52ms)
✔ insert string 1 x 1000 in varchar(max) (44ms)
✔ insert string 4 x 1000 in varchar(max) (51ms)
✔ insert string 3999 in varchar(max) (50ms)
✔ insert string 4001 in varchar(max) (49ms)
✔ insert string 4 x 1024 in varchar(8000) (46ms)
✔ insert string 6 x 1024 in varchar(8000) (43ms)
✔ insert string 30 x 1024 in varchar(max) (68ms)
✔ insert string 2 x 1024 * 1024 in varchar(max) (1901ms)
✔ insert string 60 x 1024 in varchar(max) (114ms)
✔ verify empty string is sent as empty string, not null
✔ verify that non-Buffer object parameter returns an error
✔ verify Buffer objects as input parameters (44ms)
✔ insert min and max number values (50ms)
✔ select a long string using callback (70ms)
✔ select a long buffer using callback (41ms)
✔ verify buffer longer than column causes error (53ms)
✔ verify null string is sent as null, not empty string
✔ verify single char string param
✔ verify bool (true) to sql_variant
✔ verify bool (false) to sql_variant
✔ verify varchar to sql_variant
✔ verify numeric decimal to sql_variant
✔ verify int to sql_variant
✔ verify getdate (datetime) to sql_variant
✔ verify getdate to sql_variant
✔ insert null as parameter (51ms)
✔ invalid numbers cause errors
✔ insert string as parameter (48ms)
✔ insert a bool as a parameter
✔ insert largest positive int as parameter (39ms)
✔ insert largest negative int as parameter (40ms)
✔ insert bigint as parameter (52ms)
✔ insert largest bigint as parameter (39ms)
✔ insert decimal as parameter (40ms)
✔ insert decimal as bigint parameter (45ms)
✔ insert date as parameter (43ms)
✔ verify js date inserted into datetime field
✔ verify empty string inserted into nvarchar field (41ms)
✔ insert large string into max column (61ms)
✔ verify js date inserted into datetime field (56ms)
✔ verify js date before 1970 inserted into datetime field (50ms)
✔ verify dates with midnight time (44ms)
✔ verify bug fix for last day of the year error (63ms)
✔ bind a Buffer([0,1,2,3])] to binary

query
✔ simple query with a promise open-query-close-resolve var% (51ms)
✔ test retrieving a string with null embedded (43ms)
✔ test retrieving a large decimal as a string (40ms)
✔ multiple results from query in callback
✔ verify empty results retrieved properly
✔ object_name query (68ms)
✔ select nulls union all nulls
✔ test function parameter validation (66ms)
✔ test retrieving a LOB string larger than max string size
✔ query with errors
✔ simple query
✔ simple rawFormat query
✔ simple query of types like var%
✔ streaming test
✔ serialized queries
✔ multiple results from query in events
✔ boolean return value from query
✔ test retrieving a non-LOB string of max size
✔ test retrieving an empty string
✔ test function parameter validation (103ms)
✔ verify metadata is retrieved for udt/geography types (81ms)

querytimeout
✔ test timeout 2 secs on waitfor delay 10 (2006ms)
✔ test timeout 10 secs on waitfor delay 2 (2019ms)
✔ test timeout 0 secs on waitfor delay 4 (4023ms)

open
✔ connection closes OK in sequence with query
✔ trusted connection to a server
✔ verify closed connection throws an exception
✔ verify connection is not closed prematurely until a query is complete
✔ verify that close immediately flag only accepts booleans

bulk
✔ load large number rows (2243ms)
✔ use tableMgr bulk insert single non UTC based time with time col (391ms)
✔ use tableMgr bulk insert single non UTC based date with datetime col (64ms)
✔ use tableMgr bulk insert single non UTC based date with DATETIMEOFFSET col (49ms)
✔ use tableMgr bulk insert varchar vector - exactly 4001 chars (129ms)
✔ use tableMgr bulk insert varchar vector - exactly 4000 chars (144ms)
✔ use tableMgr bulk insert varchar vector - exactly 3999 chars (137ms)
✔ use tableMgr bulk insert varbinary vector - with null (98ms)
✔ use tableMgr bulk insert varbinary vector - with empty (77ms)
✔ use tableMgr bulk insert varbinary vector - no nulls (65ms)
✔ use tableMgr bulk insert datetime vector - no nulls (75ms)
✔ use tableMgr bulk insert datetime vector - with nulls (80ms)
✔ use tableMgr bulk insert decimal vector - no nulls (81ms)
✔ use tableMgr bulk insert decimal vector - with nulls (70ms)
✔ use tableMgr bulk insert bit vector - with nulls (69ms)
✔ use tableMgr bulk insert bit vector - no nulls (69ms)
✔ use tableMgr bulk insert int vector - with nulls (79ms)
✔ use tableMgr bulk insert int vector - no nulls (60ms)
✔ use tableMgr bulk insert varchar vector - with nulls (62ms)
✔ use tableMgr bulk insert var char vector - no nulls (83ms)
✔ use tableMgr get Table and update 2 columns (114ms)
✔ employee table complex json object test api (642ms)
✔ test tm with large insert vector - should block for few secs (3932ms)
✔ bulk insert/select int column of huge unsigned batchSize 10 (368ms)
✔ bulk insert/select int column of huge unsigned and some 0 values batchSize 10 (112ms)
✔ bulk insert/select datetime column batchSize 1 (126ms)
✔ bulk insert/update/select int column of signed batchSize 10 (90ms)
✔ bind to db with space (521ms)
✔ bulk insert condition failure (51ms)
✔ non null varchar write empty string (546ms)
✔ bulk insert simple multi-column object - default a nullable column 10 (430ms)
✔ employee tmp table complex json object array bulk operations (775ms)
✔ bulk insert/select varbinary column batchSize 1 (518ms)
✔ bulk insert/select varbinary column batchSize 10 (83ms)
✔ bulk insert/select null column of datetime batchSize 10 (94ms)
✔ bulk insert/select null column of datetime batchSize 1 (115ms)
✔ employee complex json object array bulk operations (660ms)
✔ employee insert/select with non primary key (260ms)
✔ employee insert - update a single column (250ms)
✔ bulk insert/update/select bit strict column 10 (72ms)
✔ bulk insert/select bit strict column batchSize 1 (110ms)
✔ bulk insert/select bit strict column 10 (69ms)
✔ bulk insert/select datetime column batchSize 10 (75ms)
✔ bulk insert/select int column of signed batchSize 1 (107ms)
✔ bulk insert/select int column of signed batchSize 10 (74ms)
✔ bulk insert/select int column of unsigned batchSize 1 (107ms)
✔ bulk insert/select int column of unsigned batchSize 10 (75ms)
✔ bulk insert/select/update int column of unsigned batchSize 10 (89ms)
✔ bulk insert/select bit column batchSize 1 (476ms)
✔ bulk insert/select bit column 10 (76ms)
✔ bulk insert/update/select bit column 10 (86ms)
✔ bulk insert/select decimal column batchSize 1 (514ms)
✔ bulk insert/select decimal column batchSize 10 (75ms)
✔ bulk insert/select/delete decimal column batchSize 10 (101ms)
✔ bulk insert/update/select decimal column batchSize 10 (83ms)
✔ bulk insert/select varchar column batchSize 1 (120ms)
✔ bulk insert/select varchar column batchSize 10 (70ms)
✔ bulk insert/select/delete varchar column batchSize 10 (83ms)
✔ bulk insert/update/select varchar column batchSize 10 (87ms)
✔ bulk insert/update/select/delete varchar column batchSize 10 (102ms)
✔ bulk insert simple multi-column object in batches 10 (400ms)

sproc
✔ pool: two optional parameters override second set output to sum (119ms)
✔ connection: two optional parameters override second set output to sum
✔ pool: one default input, three output parameters (91ms)
✔ connection: one default input, three output parameters (51ms)
✔ pool: two parameters 1 optional set output to sum - omit required expect error (117ms)
✔ connection: two parameters 1 optional set output to sum - omit required expect error (42ms)
✔ pool: two optional parameters override both set output to sum (103ms)
✔ connection: two optional parameters override both set output to sum
✔ pool: two optional parameters set output to sum no input params (115ms)
✔ connection: two optional parameters set output to sum no input params (42ms)
✔ pool: two optional parameters override first set output to sum (88ms)
✔ connection: two optional parameters override first set output to sum (50ms)
✔ pool: 2 input, 1 optional parameter override set output to sum of 3 (109ms)
✔ connection: 2 input, 1 optional parameter override set output to sum of 3 (70ms)
✔ pool: 2 input, 1 optional default parameters set output to sum of 3 (57ms)
✔ connection: 2 input, 1 optional default parameters set output to sum of 3
✔ pool: omit required parameter expect error (148ms)
✔ connection: omit required parameter expect error (53ms)
✔ pool: add illegal parameter expect error (63ms)
✔ connection: add illegal parameter expect error (62ms)
✔ pool: use input output parameters i.e. use a param as both input and output (108ms)
✔ connection: use input output parameters i.e. use a param as both input and output
✔ pool: two in out params use first as input only second output only (92ms)
✔ connection: two in out params use first as input only second output only
✔ pool: test non existant sproc (76ms)
✔ connection: test non existant sproc
✔ pool: get proc and call multiple times asynchronously with changing params i.e. prove each call is independent (368ms)
✔ connection: get proc and call multiple times asynchronously with changing params i.e. prove each call is independent (1498ms)
✔ pool: insert/update/delete synchronously (232ms)
✔ connection: insert/update/delete synchronously (95ms)
✔ pool: get proc and call multiple times synchronously with changing params i.e. prove each call is independent (144ms)
✔ connection: get proc and call multiple times synchronously with changing params i.e. prove each call is independent
✔ pool: async call proc with changing params - include multiple select in sproc (237ms)
✔ connection: async call proc with changing params - include multiple select in sproc (88ms)
✔ pool: proc with multiple select - should callback with each (201ms)
✔ connection: proc with multiple select - should callback with each (75ms)
✔ proc with multiple select - should callback with each (44ms)
✔ check proc called as object paramater where converting via utility method
✔ pool: check proc called as object paramater where vals sent as attributes (128ms)
✔ connection: check proc called as object paramater where vals sent as attributes
✔ pool: stream call proc no callback with print in proc (166ms)
✔ connection: stream call proc no callback with print in proc (63ms)
✔ pool: call proc that has 2 output string params + return code (162ms)
✔ connection: call proc that has 2 output string params + return code (99ms)
✔ pool: get proc and call - should not error (110ms)
✔ connection: get proc and call - should not error (64ms)
✔ pool: stream call proc no callback (118ms)
✔ connection: stream call proc no callback (76ms)
✔ call proc that waits for delay of input param - wait 5, timeout 2 - should error (2114ms)
✔ call proc error with timeout then query on same connection (2049ms)
✔ pool: call proc that returns length of input string and decribes itself in results (147ms)
✔ connection: call proc that returns length of input string and decribes itself in results (102ms)
✔ pool: call proc that returns length of input string (114ms)
✔ connection: call proc that returns length of input string
✔ pool: call proc that has 2 input params + 1 output (125ms)
✔ connection: call proc that has 2 input params + 1 output
✔ pool: test asselect on proc (130ms)
✔ connection: test asselect on proc (67ms)
✔ test asselect on proc (65ms)
✔ call proc in non-dbo schema with parameters using callproc syntax (86ms)
✔ call proc that waits for delay of input param - wait 2, timeout 5 - should not error (2052ms)

prepared
✔ use prepared to select 0 rows - expect no error (await promise) (45ms)
✔ use prepared to select 0 rows - expect no error (promise then)
✔ use prepared to reserve and read multiple rows. (79ms)
✔ use prepared statement with params returning 0 rows. - expect no error
✔ use prepared statement with params updating 0 rows - expect no error
✔ use prepared statement twice with no parameters. (39ms)
✔ use prepared statements to select a row, then delete it over each row. (230ms)
✔ stress test prepared statement with 500 invocations cycling through primary key (5147ms)
✔ use prepared statement twice with different params.

userbind
✔ user bind DateTimeOffset to sql type DateTimeOffset - provide offset of 60 minutes
✔ user bind DateTime2 to sql type datetime2(7) - with scale set to illegal value, should error
✔ user bind DateTime2 to sql type datetime2(7) - with scale set too low, should error
✔ user bind WLongVarChar to NVARCHAR(MAX)
✔ user bind DateTimeOffset to sql type DateTimeOffset - no offset
✔ user bind SmallDateTime to sql type smalldatetime
✔ user bind DateTime2 to sql type datetime2(7) default scale
✔ user bind DateTime2 to sql type datetime2(7) - with scale set correctly, should pass
✔ user bind DateTime to sql type datetime2(7)
✔ user bind DateTime to sql type datetime - driver currently only supports 10ms accuracy with datetime
✔ user bind UniqueIdentifier (38ms)
✔ user bind Time
✔ user bind Date
✔ user bind Xml - well formatted.
✔ user bind Xml - bad xml should give error
✔ user bind nchar - check truncated user strings (1)
✔ user bind Char - check truncated user strings (1)
✔ user bind Char - returned string will be padded (2)
✔ user bind Char - use precision to clip user string (3)
✔ user bind NVarChar /16 bit encoded
✔ user bind Float, maps to numeric data structure.
✔ user bind Double, maps to numeric data structure.
✔ user bind Bit
✔ user bind BigInt
✔ user bind Int
✔ user bind TinyInt
✔ user bind SmallInt

date tests
✔ time to millisecond components (132ms)
✔ date retrieval verification
✔ test timezone offset correctly offsets js date type
✔ date to millisecond verification
✔ test timezone components of datetimeoffset

417 passing (2m)