tiny_tds 0.7.0-x86-mingw32 → 0.9.5.beta.1-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +3 -1
- data/CHANGELOG +17 -46
- data/Gemfile +4 -0
- data/README.md +20 -14
- data/Rakefile +18 -13
- data/VERSION +1 -0
- data/appveyor.yml +17 -6
- data/bin/tsql +25 -0
- data/exe/.keep +0 -0
- data/ext/tiny_tds/client.c +26 -24
- data/ext/tiny_tds/client.h +1 -0
- data/ext/tiny_tds/extconf.rb +57 -36
- data/ext/tiny_tds/extconsts.rb +14 -0
- data/ext/tiny_tds/result.c +76 -36
- data/ext/tiny_tds/result.h +0 -4
- data/ext/tiny_tds/tiny_tds_ext.h +4 -2
- data/lib/tiny_tds.rb +3 -9
- data/lib/tiny_tds/client.rb +61 -34
- data/lib/tiny_tds/version.rb +1 -1
- data/ports/patches/freetds/0.91.112/Makefile.in.diff +29 -0
- data/ports/patches/freetds/0.91.112/dblib-30-char-username.diff +11 -0
- data/ports/patches/freetds/0.95.75/0001-mingw_missing_inet_pton.diff +34 -0
- data/test/client_test.rb +32 -12
- data/test/result_test.rb +13 -13
- data/test/schema/sqlserver_2000.sql +13 -13
- data/test/schema/sqlserver_2005.sql +13 -13
- data/test/schema/sqlserver_2008.sql +13 -13
- data/test/schema/sqlserver_2014.sql +9 -9
- data/test/schema/sqlserver_azure.sql +13 -13
- data/test/schema/sybase_ase.sql +7 -7
- data/test/schema_test.rb +157 -33
- data/test/test_helper.rb +13 -8
- data/test/thread_test.rb +6 -4
- metadata +21 -16
@@ -1,16 +1,16 @@
|
|
1
1
|
|
2
2
|
/*
|
3
3
|
|
4
|
-
* Binary Data - Our test binary data is a 1 pixel gif. The basic (raw) data is below. Quoting this data
|
5
|
-
would involve this (encode) method and be (encoded) with the 0x prefix for raw SQL. In other clients the
|
4
|
+
* Binary Data - Our test binary data is a 1 pixel gif. The basic (raw) data is below. Quoting this data
|
5
|
+
would involve this (encode) method and be (encoded) with the 0x prefix for raw SQL. In other clients the
|
6
6
|
(raw_db) value without the 0x prefix would need to be (packed) again yield the original (raw) value.
|
7
|
-
|
7
|
+
|
8
8
|
(raw) - "GIF89a\001\000\001\000\221\000\000\377\377\377\377\377\377\376\001\002\000\000\000!\371\004\004\024\000\377\000,\000\000\000\000\001\000\001\000\000\002\002D\001\000;"
|
9
9
|
(encode) - "0x#{raw.unpack("H*")[0]}"
|
10
10
|
(encoded) - "0x47494638396101000100910000fffffffffffffe010200000021f904041400ff002c00000000010001000002024401003b"
|
11
11
|
(raw_db) - "47494638396101000100910000fffffffffffffe010200000021f904041400ff002c00000000010001000002024401003b"
|
12
12
|
(packed) - [raw_db].pack('H*')
|
13
|
-
|
13
|
+
|
14
14
|
*/
|
15
15
|
|
16
16
|
CREATE TABLE [dbo].[datatypes] (
|
@@ -70,13 +70,13 @@ INSERT INTO [datatypes] ([id], [char_10]) VALUES ( 42, '12345678' )
|
|
70
70
|
INSERT INTO [datatypes] ([id], [datetime]) VALUES ( 61, '1753-01-01T00:00:00.000' )
|
71
71
|
INSERT INTO [datatypes] ([id], [datetime]) VALUES ( 62, '9999-12-31T23:59:59.997' )
|
72
72
|
INSERT INTO [datatypes] ([id], [datetime]) VALUES ( 63, '2010-01-01T12:34:56.123' )
|
73
|
-
-- INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 71, '0001-01-
|
74
|
-
-- INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 72, '1984-01-
|
75
|
-
-- INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 73, '9999-12-
|
76
|
-
-- INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 81, '1984-01-24T04:20:00.
|
73
|
+
-- INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 71, '0001-01-01 00:00:00.0000000' )
|
74
|
+
-- INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 72, '1984-01-24 04:20:00.0000000' )
|
75
|
+
-- INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 73, '9999-12-31 23:59:59.9999999' )
|
76
|
+
-- INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 81, '1984-01-24T04:20:00.1234567-08:00' ) -- 1984-01-24 04:20:00.00 -08:00
|
77
77
|
-- INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 82, '1984-01-24T04:20:00.0000000Z' ) -- 1984-01-24 04:20:00.00 +00:00
|
78
78
|
-- INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 83, '9999-12-31T23:59:59.9999999Z' ) -- 9999-12-31 23:59:59.99 +00:00
|
79
|
-
-- INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 84, '1984-01-24T04:20:00.
|
79
|
+
-- INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 84, '1984-01-24T04:20:00.1234567-08:00' ) -- 1984-01-24 04:20:00.1234567 -08:00
|
80
80
|
-- INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 85, '1984-01-24T04:20:00.0000000Z' ) -- 1984-01-24 04:20:00.0000000 +00:00
|
81
81
|
-- INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 86, '9999-12-31T23:59:59.9999999Z' ) -- 9999-12-31 23:59:59.9999999 +00:00
|
82
82
|
INSERT INTO [datatypes] ([id], [decimal_9_2]) VALUES ( 91, 12345.01 )
|
@@ -120,10 +120,10 @@ INSERT INTO [datatypes] ([id], [smallmoney]) VALUES ( 251, 4.20 )
|
|
120
120
|
INSERT INTO [datatypes] ([id], [smallmoney]) VALUES ( 252, -214748.3647 )
|
121
121
|
INSERT INTO [datatypes] ([id], [smallmoney]) VALUES ( 253, 214748.3646 )
|
122
122
|
INSERT INTO [datatypes] ([id], [text]) VALUES ( 271, 'test text' )
|
123
|
-
-- INSERT INTO [datatypes] ([id], [time_2]) VALUES ( 281, '
|
124
|
-
-- INSERT INTO [datatypes] ([id], [time_2]) VALUES ( 282, '
|
125
|
-
-- INSERT INTO [datatypes] ([id], [time_7]) VALUES ( 283, '
|
126
|
-
-- INSERT INTO [datatypes] ([id], [time_7]) VALUES ( 284, '
|
123
|
+
-- INSERT INTO [datatypes] ([id], [time_2]) VALUES ( 281, '15:45:00.709714966' ) -- 15:45:00.71
|
124
|
+
-- INSERT INTO [datatypes] ([id], [time_2]) VALUES ( 282, '04:20:00.288321545' ) -- 04:20:00.29
|
125
|
+
-- INSERT INTO [datatypes] ([id], [time_7]) VALUES ( 283, '15:45:00.709714966' ) -- 15:45:00.709714900
|
126
|
+
-- INSERT INTO [datatypes] ([id], [time_7]) VALUES ( 284, '04:20:00.288321545' ) -- 04:20:00.288321500
|
127
127
|
INSERT INTO [datatypes] ([id], [tinyint]) VALUES ( 301, 0 )
|
128
128
|
INSERT INTO [datatypes] ([id], [tinyint]) VALUES ( 302, 255 )
|
129
129
|
INSERT INTO [datatypes] ([id], [uniqueidentifier]) VALUES ( 311, NEWID() )
|
@@ -1,16 +1,16 @@
|
|
1
1
|
|
2
2
|
/*
|
3
3
|
|
4
|
-
* Binary Data - Our test binary data is a 1 pixel gif. The basic (raw) data is below. Quoting this data
|
5
|
-
would involve this (encode) method and be (encoded) with the 0x prefix for raw SQL. In other clients the
|
4
|
+
* Binary Data - Our test binary data is a 1 pixel gif. The basic (raw) data is below. Quoting this data
|
5
|
+
would involve this (encode) method and be (encoded) with the 0x prefix for raw SQL. In other clients the
|
6
6
|
(raw_db) value without the 0x prefix would need to be (packed) again yield the original (raw) value.
|
7
|
-
|
7
|
+
|
8
8
|
(raw) - "GIF89a\001\000\001\000\221\000\000\377\377\377\377\377\377\376\001\002\000\000\000!\371\004\004\024\000\377\000,\000\000\000\000\001\000\001\000\000\002\002D\001\000;"
|
9
9
|
(encode) - "0x#{raw.unpack("H*")[0]}"
|
10
10
|
(encoded) - "0x47494638396101000100910000fffffffffffffe010200000021f904041400ff002c00000000010001000002024401003b"
|
11
11
|
(raw_db) - "47494638396101000100910000fffffffffffffe010200000021f904041400ff002c00000000010001000002024401003b"
|
12
12
|
(packed) - [raw_db].pack('H*')
|
13
|
-
|
13
|
+
|
14
14
|
*/
|
15
15
|
|
16
16
|
CREATE TABLE [dbo].[datatypes] (
|
@@ -70,13 +70,13 @@ INSERT INTO [datatypes] ([id], [char_10]) VALUES ( 42, '12345678' )
|
|
70
70
|
INSERT INTO [datatypes] ([id], [datetime]) VALUES ( 61, '1753-01-01T00:00:00.000' )
|
71
71
|
INSERT INTO [datatypes] ([id], [datetime]) VALUES ( 62, '9999-12-31T23:59:59.997' )
|
72
72
|
INSERT INTO [datatypes] ([id], [datetime]) VALUES ( 63, '2010-01-01T12:34:56.123' )
|
73
|
-
-- INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 71, '0001-01-
|
74
|
-
-- INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 72, '1984-01-
|
75
|
-
-- INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 73, '9999-12-
|
76
|
-
-- INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 81, '1984-01-24T04:20:00.
|
73
|
+
-- INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 71, '0001-01-01 00:00:00.0000000' )
|
74
|
+
-- INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 72, '1984-01-24 04:20:00.0000000' )
|
75
|
+
-- INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 73, '9999-12-31 23:59:59.9999999' )
|
76
|
+
-- INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 81, '1984-01-24T04:20:00.1234567-08:00' ) -- 1984-01-24 04:20:00.00 -08:00
|
77
77
|
-- INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 82, '1984-01-24T04:20:00.0000000Z' ) -- 1984-01-24 04:20:00.00 +00:00
|
78
78
|
-- INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 83, '9999-12-31T23:59:59.9999999Z' ) -- 9999-12-31 23:59:59.99 +00:00
|
79
|
-
-- INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 84, '1984-01-24T04:20:00.
|
79
|
+
-- INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 84, '1984-01-24T04:20:00.1234567-08:00' ) -- 1984-01-24 04:20:00.1234567 -08:00
|
80
80
|
-- INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 85, '1984-01-24T04:20:00.0000000Z' ) -- 1984-01-24 04:20:00.0000000 +00:00
|
81
81
|
-- INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 86, '9999-12-31T23:59:59.9999999Z' ) -- 9999-12-31 23:59:59.9999999 +00:00
|
82
82
|
INSERT INTO [datatypes] ([id], [decimal_9_2]) VALUES ( 91, 12345.01 )
|
@@ -120,10 +120,10 @@ INSERT INTO [datatypes] ([id], [smallmoney]) VALUES ( 251, 4.20 )
|
|
120
120
|
INSERT INTO [datatypes] ([id], [smallmoney]) VALUES ( 252, -214748.3647 )
|
121
121
|
INSERT INTO [datatypes] ([id], [smallmoney]) VALUES ( 253, 214748.3646 )
|
122
122
|
INSERT INTO [datatypes] ([id], [text]) VALUES ( 271, 'test text' )
|
123
|
-
-- INSERT INTO [datatypes] ([id], [time_2]) VALUES ( 281, '
|
124
|
-
-- INSERT INTO [datatypes] ([id], [time_2]) VALUES ( 282, '
|
125
|
-
-- INSERT INTO [datatypes] ([id], [time_7]) VALUES ( 283, '
|
126
|
-
-- INSERT INTO [datatypes] ([id], [time_7]) VALUES ( 284, '
|
123
|
+
-- INSERT INTO [datatypes] ([id], [time_2]) VALUES ( 281, '15:45:00.709714966' ) -- 15:45:00.71
|
124
|
+
-- INSERT INTO [datatypes] ([id], [time_2]) VALUES ( 282, '04:20:00.288321545' ) -- 04:20:00.29
|
125
|
+
-- INSERT INTO [datatypes] ([id], [time_7]) VALUES ( 283, '15:45:00.709714966' ) -- 15:45:00.709714900
|
126
|
+
-- INSERT INTO [datatypes] ([id], [time_7]) VALUES ( 284, '04:20:00.288321545' ) -- 04:20:00.288321500
|
127
127
|
INSERT INTO [datatypes] ([id], [tinyint]) VALUES ( 301, 0 )
|
128
128
|
INSERT INTO [datatypes] ([id], [tinyint]) VALUES ( 302, 255 )
|
129
129
|
INSERT INTO [datatypes] ([id], [uniqueidentifier]) VALUES ( 311, NEWID() )
|
@@ -1,16 +1,16 @@
|
|
1
1
|
|
2
2
|
/*
|
3
3
|
|
4
|
-
* Binary Data - Our test binary data is a 1 pixel gif. The basic (raw) data is below. Quoting this data
|
5
|
-
would involve this (encode) method and be (encoded) with the 0x prefix for raw SQL. In other clients the
|
4
|
+
* Binary Data - Our test binary data is a 1 pixel gif. The basic (raw) data is below. Quoting this data
|
5
|
+
would involve this (encode) method and be (encoded) with the 0x prefix for raw SQL. In other clients the
|
6
6
|
(raw_db) value without the 0x prefix would need to be (packed) again yield the original (raw) value.
|
7
|
-
|
7
|
+
|
8
8
|
(raw) - "GIF89a\001\000\001\000\221\000\000\377\377\377\377\377\377\376\001\002\000\000\000!\371\004\004\024\000\377\000,\000\000\000\000\001\000\001\000\000\002\002D\001\000;"
|
9
9
|
(encode) - "0x#{raw.unpack("H*")[0]}"
|
10
10
|
(encoded) - "0x47494638396101000100910000fffffffffffffe010200000021f904041400ff002c00000000010001000002024401003b"
|
11
11
|
(raw_db) - "47494638396101000100910000fffffffffffffe010200000021f904041400ff002c00000000010001000002024401003b"
|
12
12
|
(packed) - [raw_db].pack('H*')
|
13
|
-
|
13
|
+
|
14
14
|
*/
|
15
15
|
|
16
16
|
CREATE TABLE [dbo].[datatypes] (
|
@@ -70,13 +70,13 @@ INSERT INTO [datatypes] ([id], [date]) VALUES ( 52, '9999-12-31' )
|
|
70
70
|
INSERT INTO [datatypes] ([id], [datetime]) VALUES ( 61, '1753-01-01T00:00:00.000' )
|
71
71
|
INSERT INTO [datatypes] ([id], [datetime]) VALUES ( 62, '9999-12-31T23:59:59.997' )
|
72
72
|
INSERT INTO [datatypes] ([id], [datetime]) VALUES ( 63, '2010-01-01T12:34:56.123' )
|
73
|
-
INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 71, '0001-01-
|
74
|
-
INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 72, '1984-01-
|
75
|
-
INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 73, '9999-12-
|
76
|
-
INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 81, '1984-01-24T04:20:00.
|
73
|
+
INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 71, '0001-01-01 00:00:00.0000000' )
|
74
|
+
INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 72, '1984-01-24 04:20:00.0000000' )
|
75
|
+
INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 73, '9999-12-31 23:59:59.9999999' )
|
76
|
+
INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 81, '1984-01-24T04:20:00.1234567-08:00' ) -- 1984-01-24 04:20:00.00 -08:00
|
77
77
|
INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 82, '1984-01-24T04:20:00.0000000Z' ) -- 1984-01-24 04:20:00.00 +00:00
|
78
78
|
INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 83, '9999-12-31T23:59:59.9999999Z' ) -- 9999-12-31 23:59:59.99 +00:00
|
79
|
-
INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 84, '1984-01-24T04:20:00.
|
79
|
+
INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 84, '1984-01-24T04:20:00.1234567-08:00' ) -- 1984-01-24 04:20:00.1234567 -08:00
|
80
80
|
INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 85, '1984-01-24T04:20:00.0000000Z' ) -- 1984-01-24 04:20:00.0000000 +00:00
|
81
81
|
INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 86, '9999-12-31T23:59:59.9999999Z' ) -- 9999-12-31 23:59:59.9999999 +00:00
|
82
82
|
INSERT INTO [datatypes] ([id], [decimal_9_2]) VALUES ( 91, 12345.01 )
|
@@ -120,10 +120,10 @@ INSERT INTO [datatypes] ([id], [smallmoney]) VALUES ( 251, 4.20 )
|
|
120
120
|
INSERT INTO [datatypes] ([id], [smallmoney]) VALUES ( 252, -214748.3647 )
|
121
121
|
INSERT INTO [datatypes] ([id], [smallmoney]) VALUES ( 253, 214748.3646 )
|
122
122
|
INSERT INTO [datatypes] ([id], [text]) VALUES ( 271, 'test text' )
|
123
|
-
INSERT INTO [datatypes] ([id], [time_2]) VALUES ( 281, '
|
124
|
-
INSERT INTO [datatypes] ([id], [time_2]) VALUES ( 282, '
|
125
|
-
INSERT INTO [datatypes] ([id], [time_7]) VALUES ( 283, '
|
126
|
-
INSERT INTO [datatypes] ([id], [time_7]) VALUES ( 284, '
|
123
|
+
INSERT INTO [datatypes] ([id], [time_2]) VALUES ( 281, '15:45:00.709714966' ) -- 15:45:00.71
|
124
|
+
INSERT INTO [datatypes] ([id], [time_2]) VALUES ( 282, '04:20:00.288321545' ) -- 04:20:00.29
|
125
|
+
INSERT INTO [datatypes] ([id], [time_7]) VALUES ( 283, '15:45:00.709714966' ) -- 15:45:00.709714900
|
126
|
+
INSERT INTO [datatypes] ([id], [time_7]) VALUES ( 284, '04:20:00.288321545' ) -- 04:20:00.288321500
|
127
127
|
INSERT INTO [datatypes] ([id], [tinyint]) VALUES ( 301, 0 )
|
128
128
|
INSERT INTO [datatypes] ([id], [tinyint]) VALUES ( 302, 255 )
|
129
129
|
INSERT INTO [datatypes] ([id], [uniqueidentifier]) VALUES ( 311, NEWID() )
|
@@ -70,13 +70,13 @@ INSERT INTO [datatypes] ([id], [date]) VALUES ( 52, '9999-12-31' )
|
|
70
70
|
INSERT INTO [datatypes] ([id], [datetime]) VALUES ( 61, '1753-01-01T00:00:00.000' )
|
71
71
|
INSERT INTO [datatypes] ([id], [datetime]) VALUES ( 62, '9999-12-31T23:59:59.997' )
|
72
72
|
INSERT INTO [datatypes] ([id], [datetime]) VALUES ( 63, '2010-01-01T12:34:56.123' )
|
73
|
-
INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 71, '0001-01-
|
74
|
-
INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 72, '1984-01-
|
75
|
-
INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 73, '9999-12-
|
76
|
-
INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 81, '1984-01-24T04:20:00.
|
73
|
+
INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 71, '0001-01-01 00:00:00.0000000' )
|
74
|
+
INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 72, '1984-01-24 04:20:00.0000000' )
|
75
|
+
INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 73, '9999-12-31 23:59:59.9999999' )
|
76
|
+
INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 81, '1984-01-24T04:20:00.1234567-08:00' ) -- 1984-01-24 04:20:00.00 -08:00
|
77
77
|
INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 82, '1984-01-24T04:20:00.0000000Z' ) -- 1984-01-24 04:20:00.00 +00:00
|
78
78
|
INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 83, '9999-12-31T23:59:59.9999999Z' ) -- 9999-12-31 23:59:59.99 +00:00
|
79
|
-
INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 84, '1984-01-24T04:20:00.
|
79
|
+
INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 84, '1984-01-24T04:20:00.1234567-08:00' ) -- 1984-01-24 04:20:00.1234567 -08:00
|
80
80
|
INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 85, '1984-01-24T04:20:00.0000000Z' ) -- 1984-01-24 04:20:00.0000000 +00:00
|
81
81
|
INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 86, '9999-12-31T23:59:59.9999999Z' ) -- 9999-12-31 23:59:59.9999999 +00:00
|
82
82
|
INSERT INTO [datatypes] ([id], [decimal_9_2]) VALUES ( 91, 12345.01 )
|
@@ -120,10 +120,10 @@ INSERT INTO [datatypes] ([id], [smallmoney]) VALUES ( 251, 4.20 )
|
|
120
120
|
INSERT INTO [datatypes] ([id], [smallmoney]) VALUES ( 252, -214748.3647 )
|
121
121
|
INSERT INTO [datatypes] ([id], [smallmoney]) VALUES ( 253, 214748.3646 )
|
122
122
|
INSERT INTO [datatypes] ([id], [text]) VALUES ( 271, 'test text' )
|
123
|
-
INSERT INTO [datatypes] ([id], [time_2]) VALUES ( 281, '
|
124
|
-
INSERT INTO [datatypes] ([id], [time_2]) VALUES ( 282, '
|
125
|
-
INSERT INTO [datatypes] ([id], [time_7]) VALUES ( 283, '
|
126
|
-
INSERT INTO [datatypes] ([id], [time_7]) VALUES ( 284, '
|
123
|
+
INSERT INTO [datatypes] ([id], [time_2]) VALUES ( 281, '15:45:00.709714966' ) -- 15:45:00.71
|
124
|
+
INSERT INTO [datatypes] ([id], [time_2]) VALUES ( 282, '04:20:00.288321545' ) -- 04:20:00.29
|
125
|
+
INSERT INTO [datatypes] ([id], [time_7]) VALUES ( 283, '15:45:00.709714966' ) -- 15:45:00.709714900
|
126
|
+
INSERT INTO [datatypes] ([id], [time_7]) VALUES ( 284, '04:20:00.288321545' ) -- 04:20:00.288321500
|
127
127
|
INSERT INTO [datatypes] ([id], [tinyint]) VALUES ( 301, 0 )
|
128
128
|
INSERT INTO [datatypes] ([id], [tinyint]) VALUES ( 302, 255 )
|
129
129
|
INSERT INTO [datatypes] ([id], [uniqueidentifier]) VALUES ( 311, NEWID() )
|
@@ -1,16 +1,16 @@
|
|
1
1
|
|
2
2
|
/*
|
3
3
|
|
4
|
-
* Binary Data - Our test binary data is a 1 pixel gif. The basic (raw) data is below. Quoting this data
|
5
|
-
would involve this (encode) method and be (encoded) with the 0x prefix for raw SQL. In other clients the
|
4
|
+
* Binary Data - Our test binary data is a 1 pixel gif. The basic (raw) data is below. Quoting this data
|
5
|
+
would involve this (encode) method and be (encoded) with the 0x prefix for raw SQL. In other clients the
|
6
6
|
(raw_db) value without the 0x prefix would need to be (packed) again yield the original (raw) value.
|
7
|
-
|
7
|
+
|
8
8
|
(raw) - "GIF89a\001\000\001\000\221\000\000\377\377\377\377\377\377\376\001\002\000\000\000!\371\004\004\024\000\377\000,\000\000\000\000\001\000\001\000\000\002\002D\001\000;"
|
9
9
|
(encode) - "0x#{raw.unpack("H*")[0]}"
|
10
10
|
(encoded) - "0x47494638396101000100910000fffffffffffffe010200000021f904041400ff002c00000000010001000002024401003b"
|
11
11
|
(raw_db) - "47494638396101000100910000fffffffffffffe010200000021f904041400ff002c00000000010001000002024401003b"
|
12
12
|
(packed) - [raw_db].pack('H*')
|
13
|
-
|
13
|
+
|
14
14
|
*/
|
15
15
|
|
16
16
|
CREATE TABLE [dbo].[datatypes] (
|
@@ -70,13 +70,13 @@ INSERT INTO [datatypes] ([id], [date]) VALUES ( 52, '9999-12-31' )
|
|
70
70
|
INSERT INTO [datatypes] ([id], [datetime]) VALUES ( 61, '1753-01-01T00:00:00.000' )
|
71
71
|
INSERT INTO [datatypes] ([id], [datetime]) VALUES ( 62, '9999-12-31T23:59:59.997' )
|
72
72
|
INSERT INTO [datatypes] ([id], [datetime]) VALUES ( 63, '2010-01-01T12:34:56.123' )
|
73
|
-
INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 71, '0001-01-
|
74
|
-
INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 72, '1984-01-
|
75
|
-
INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 73, '9999-12-
|
76
|
-
INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 81, '1984-01-24T04:20:00.
|
73
|
+
INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 71, '0001-01-01 00:00:00.0000000' )
|
74
|
+
INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 72, '1984-01-24 04:20:00.0000000' )
|
75
|
+
INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 73, '9999-12-31 23:59:59.9999999' )
|
76
|
+
INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 81, '1984-01-24T04:20:00.1234567-08:00' ) -- 1984-01-24 04:20:00.00 -08:00
|
77
77
|
INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 82, '1984-01-24T04:20:00.0000000Z' ) -- 1984-01-24 04:20:00.00 +00:00
|
78
78
|
INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 83, '9999-12-31T23:59:59.9999999Z' ) -- 9999-12-31 23:59:59.99 +00:00
|
79
|
-
INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 84, '1984-01-24T04:20:00.
|
79
|
+
INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 84, '1984-01-24T04:20:00.1234567-08:00' ) -- 1984-01-24 04:20:00.1234567 -08:00
|
80
80
|
INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 85, '1984-01-24T04:20:00.0000000Z' ) -- 1984-01-24 04:20:00.0000000 +00:00
|
81
81
|
INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 86, '9999-12-31T23:59:59.9999999Z' ) -- 9999-12-31 23:59:59.9999999 +00:00
|
82
82
|
INSERT INTO [datatypes] ([id], [decimal_9_2]) VALUES ( 91, 12345.01 )
|
@@ -120,10 +120,10 @@ INSERT INTO [datatypes] ([id], [smallmoney]) VALUES ( 251, 4.20 )
|
|
120
120
|
INSERT INTO [datatypes] ([id], [smallmoney]) VALUES ( 252, -214748.3647 )
|
121
121
|
INSERT INTO [datatypes] ([id], [smallmoney]) VALUES ( 253, 214748.3646 )
|
122
122
|
INSERT INTO [datatypes] ([id], [text]) VALUES ( 271, 'test text' )
|
123
|
-
INSERT INTO [datatypes] ([id], [time_2]) VALUES ( 281, '
|
124
|
-
INSERT INTO [datatypes] ([id], [time_2]) VALUES ( 282, '
|
125
|
-
INSERT INTO [datatypes] ([id], [time_7]) VALUES ( 283, '
|
126
|
-
INSERT INTO [datatypes] ([id], [time_7]) VALUES ( 284, '
|
123
|
+
INSERT INTO [datatypes] ([id], [time_2]) VALUES ( 281, '15:45:00.709714966' ) -- 15:45:00.71
|
124
|
+
INSERT INTO [datatypes] ([id], [time_2]) VALUES ( 282, '04:20:00.288321545' ) -- 04:20:00.29
|
125
|
+
INSERT INTO [datatypes] ([id], [time_7]) VALUES ( 283, '15:45:00.709714966' ) -- 15:45:00.709714900
|
126
|
+
INSERT INTO [datatypes] ([id], [time_7]) VALUES ( 284, '04:20:00.288321545' ) -- 04:20:00.288321500
|
127
127
|
INSERT INTO [datatypes] ([id], [tinyint]) VALUES ( 301, 0 )
|
128
128
|
INSERT INTO [datatypes] ([id], [tinyint]) VALUES ( 302, 255 )
|
129
129
|
INSERT INTO [datatypes] ([id], [uniqueidentifier]) VALUES ( 311, NEWID() )
|
data/test/schema/sybase_ase.sql
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
|
2
2
|
/*
|
3
3
|
|
4
|
-
* Binary Data - Our test binary data is a 1 pixel gif. The basic (raw) data is below. Quoting this data
|
5
|
-
would involve this (encode) method and be (encoded) with the 0x prefix for raw SQL. In other clients the
|
4
|
+
* Binary Data - Our test binary data is a 1 pixel gif. The basic (raw) data is below. Quoting this data
|
5
|
+
would involve this (encode) method and be (encoded) with the 0x prefix for raw SQL. In other clients the
|
6
6
|
(raw_db) value without the 0x prefix would need to be (packed) again yield the original (raw) value.
|
7
|
-
|
7
|
+
|
8
8
|
(raw) - "GIF89a\001\000\001\000\221\000\000\377\377\377\377\377\377\376\001\002\000\000\000!\371\004\004\024\000\377\000,\000\000\000\000\001\000\001\000\000\002\002D\001\000;"
|
9
9
|
(encode) - "0x#{raw.unpack("H*")[0]}"
|
10
10
|
(encoded) - "0x47494638396101000100910000fffffffffffffe010200000021f904041400ff002c00000000010001000002024401003b"
|
11
11
|
(raw_db) - "47494638396101000100910000fffffffffffffe010200000021f904041400ff002c00000000010001000002024401003b"
|
12
12
|
(packed) - [raw_db].pack('H*')
|
13
|
-
|
13
|
+
|
14
14
|
*/
|
15
15
|
|
16
16
|
CREATE TABLE [datatypes] (
|
@@ -71,12 +71,12 @@ INSERT INTO [datatypes] ([id], [datetime]) VALUES ( 61, '1753-01-01T00:
|
|
71
71
|
INSERT INTO [datatypes] ([id], [datetime]) VALUES ( 62, '9999-12-31T23:59:59.997' )
|
72
72
|
INSERT INTO [datatypes] ([id], [datetime]) VALUES ( 63, '2010-01-01T12:34:56.123' )
|
73
73
|
-- INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 71, '0001-01-01T00:00:00.0000000Z' )
|
74
|
-
-- INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 72, '1984-01-24T04:20:00.
|
74
|
+
-- INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 72, '1984-01-24T04:20:00.1234567-08:00' )
|
75
75
|
-- INSERT INTO [datatypes] ([id], [datetime2_7]) VALUES ( 73, '9999-12-31T23:59:59.9999999Z' )
|
76
|
-
-- INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 81, '1984-01-24T04:20:00.
|
76
|
+
-- INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 81, '1984-01-24T04:20:00.1234567-08:00' ) -- 1984-01-24 04:20:00.00 -08:00
|
77
77
|
-- INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 82, '1984-01-24T04:20:00.0000000Z' ) -- 1984-01-24 04:20:00.00 +00:00
|
78
78
|
-- INSERT INTO [datatypes] ([id], [datetimeoffset_2]) VALUES ( 83, '9999-12-31T23:59:59.9999999Z' ) -- 9999-12-31 23:59:59.99 +00:00
|
79
|
-
-- INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 84, '1984-01-24T04:20:00.
|
79
|
+
-- INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 84, '1984-01-24T04:20:00.1234567-08:00' ) -- 1984-01-24 04:20:00.1234567 -08:00
|
80
80
|
-- INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 85, '1984-01-24T04:20:00.0000000Z' ) -- 1984-01-24 04:20:00.0000000 +00:00
|
81
81
|
-- INSERT INTO [datatypes] ([id], [datetimeoffset_7]) VALUES ( 86, '9999-12-31T23:59:59.9999999Z' ) -- 9999-12-31 23:59:59.9999999 +00:00
|
82
82
|
INSERT INTO [datatypes] ([id], [decimal_9_2]) VALUES ( 91, 12345.01 )
|
data/test/schema_test.rb
CHANGED
@@ -241,35 +241,164 @@ class SchemaTest < TinyTds::TestCase
|
|
241
241
|
|
242
242
|
describe 'for 2008 and up' do
|
243
243
|
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
244
|
+
it 'casts date' do
|
245
|
+
# 0001-01-01
|
246
|
+
v = find_value 51, :date
|
247
|
+
if @client.tds_73?
|
248
|
+
assert_instance_of Date, v
|
249
|
+
assert_equal 1, v.year, 'Year'
|
250
|
+
assert_equal 1, v.month, 'Month'
|
251
|
+
assert_equal 1, v.day, 'Day'
|
252
|
+
else
|
253
|
+
assert_equal '0001-01-01', v
|
254
|
+
end
|
255
|
+
# 9999-12-31
|
256
|
+
v = find_value 52, :date
|
257
|
+
if @client.tds_73?
|
258
|
+
assert_instance_of Date, v
|
259
|
+
assert_equal 9999, v.year, 'Year'
|
260
|
+
assert_equal 12, v.month, 'Month'
|
261
|
+
assert_equal 31, v.day, 'Day'
|
262
|
+
else
|
263
|
+
assert_equal '9999-12-31', v
|
264
|
+
end
|
265
|
+
end
|
266
|
+
|
267
|
+
it 'casts time' do
|
268
|
+
# 15:45:00.709714966
|
269
|
+
v = find_value 281, :time_2
|
270
|
+
if @client.tds_73?
|
271
|
+
assert_instance_of Time, v
|
272
|
+
assert_equal 1900, v.year, 'Year'
|
273
|
+
assert_equal 1, v.month, 'Month'
|
274
|
+
assert_equal 1, v.day, 'Day'
|
275
|
+
assert_equal 15, v.hour, 'Hour'
|
276
|
+
assert_equal 45, v.min, 'Minute'
|
277
|
+
assert_equal 0, v.sec, 'Second'
|
278
|
+
assert_equal 710000, v.usec, 'Microseconds'
|
279
|
+
assert_equal 710000000, v.nsec, 'Nanoseconds'
|
280
|
+
else
|
281
|
+
assert_equal '15:45:00.71', v
|
282
|
+
end
|
283
|
+
# 04:20:00.288321545
|
284
|
+
v = find_value 282, :time_2
|
285
|
+
if @client.tds_73?
|
286
|
+
assert_instance_of Time, v
|
287
|
+
assert_equal 1900, v.year, 'Year'
|
288
|
+
assert_equal 1, v.month, 'Month'
|
289
|
+
assert_equal 1, v.day, 'Day'
|
290
|
+
assert_equal 4, v.hour, 'Hour'
|
291
|
+
assert_equal 20, v.min, 'Minute'
|
292
|
+
assert_equal 0, v.sec, 'Second'
|
293
|
+
assert_equal 290000, v.usec, 'Microseconds'
|
294
|
+
assert_equal 290000000, v.nsec, 'Nanoseconds'
|
295
|
+
else
|
296
|
+
assert_equal '04:20:00.29', v
|
297
|
+
end
|
298
|
+
# 15:45:00.709714966
|
299
|
+
v = find_value 283, :time_7
|
300
|
+
if @client.tds_73?
|
301
|
+
assert_instance_of Time, v
|
302
|
+
assert_equal 1900, v.year, 'Year'
|
303
|
+
assert_equal 1, v.month, 'Month'
|
304
|
+
assert_equal 1, v.day, 'Day'
|
305
|
+
assert_equal 15, v.hour, 'Hour'
|
306
|
+
assert_equal 45, v.min, 'Minute'
|
307
|
+
assert_equal 0, v.sec, 'Second'
|
308
|
+
assert_equal 709715, v.usec, 'Microseconds'
|
309
|
+
assert_equal 709715000, v.nsec, 'Nanoseconds'
|
310
|
+
else
|
311
|
+
assert_equal '15:45:00.7097150', v
|
312
|
+
end
|
313
|
+
# 04:20:00.288321545
|
314
|
+
v = find_value 284, :time_7
|
315
|
+
if @client.tds_73?
|
316
|
+
assert_instance_of Time, v
|
317
|
+
assert_equal 1900, v.year, 'Year'
|
318
|
+
assert_equal 1, v.month, 'Month'
|
319
|
+
assert_equal 1, v.day, 'Day'
|
320
|
+
assert_equal 4, v.hour, 'Hour'
|
321
|
+
assert_equal 20, v.min, 'Minute'
|
322
|
+
assert_equal 0, v.sec, 'Second'
|
323
|
+
assert_equal 288321, v.usec, 'Microseconds'
|
324
|
+
assert_equal 288321500, v.nsec, 'Nanoseconds'
|
325
|
+
else
|
326
|
+
assert_equal '04:20:00.2883215', v
|
327
|
+
end
|
328
|
+
end
|
329
|
+
|
330
|
+
it 'casts datetime2' do
|
331
|
+
# 0001-01-01 00:00:00.0000000
|
332
|
+
v = find_value 71, :datetime2_7
|
333
|
+
if @client.tds_73?
|
334
|
+
assert_instance_of Time, v
|
335
|
+
assert_equal 1, v.year, 'Year'
|
336
|
+
assert_equal 1, v.month, 'Month'
|
337
|
+
assert_equal 1, v.day, 'Day'
|
338
|
+
assert_equal 0, v.hour, 'Hour'
|
339
|
+
assert_equal 0, v.min, 'Minute'
|
340
|
+
assert_equal 0, v.sec, 'Second'
|
341
|
+
assert_equal 0, v.usec, 'Microseconds'
|
342
|
+
assert_equal 0, v.nsec, 'Nanoseconds'
|
343
|
+
else
|
344
|
+
assert_equal '0001-01-01 00:00:00.0000000', v
|
345
|
+
end
|
346
|
+
# 1984-01-24 04:20:00.0000000
|
347
|
+
v = find_value 72, :datetime2_7
|
348
|
+
if @client.tds_73?
|
349
|
+
assert_instance_of Time, v
|
350
|
+
assert_equal 1984, v.year, 'Year'
|
351
|
+
assert_equal 1, v.month, 'Month'
|
352
|
+
assert_equal 24, v.day, 'Day'
|
353
|
+
assert_equal 4, v.hour, 'Hour'
|
354
|
+
assert_equal 20, v.min, 'Minute'
|
355
|
+
assert_equal 0, v.sec, 'Second'
|
356
|
+
assert_equal 0, v.usec, 'Microseconds'
|
357
|
+
assert_equal 0, v.nsec, 'Nanoseconds'
|
358
|
+
else
|
359
|
+
assert_equal '1984-01-24 04:20:00.0000000', v
|
360
|
+
end
|
361
|
+
# 9999-12-31 23:59:59.9999999
|
362
|
+
v = find_value 73, :datetime2_7
|
363
|
+
if @client.tds_73?
|
364
|
+
assert_instance_of Time, v
|
365
|
+
assert_equal 9999, v.year, 'Year'
|
366
|
+
assert_equal 12, v.month, 'Month'
|
367
|
+
assert_equal 31, v.day, 'Day'
|
368
|
+
assert_equal 23, v.hour, 'Hour'
|
369
|
+
assert_equal 59, v.min, 'Minute'
|
370
|
+
assert_equal 59, v.sec, 'Second'
|
371
|
+
assert_equal 999999, v.usec, 'Microseconds'
|
372
|
+
assert_equal 999999900, v.nsec, 'Nanoseconds'
|
373
|
+
else
|
374
|
+
assert_equal '9999-12-31 23:59:59.9999999', v
|
375
|
+
end
|
376
|
+
end
|
377
|
+
|
378
|
+
it 'casts datetimeoffset' do
|
379
|
+
# 1984-01-24T04:20:00.1234567-08:00
|
380
|
+
v = find_value 84, :datetimeoffset_7
|
381
|
+
if @client.tds_73?
|
382
|
+
assertions = lambda {
|
383
|
+
assert_instance_of Time, v
|
384
|
+
assert_equal 1984, v.year, 'Year'
|
385
|
+
assert_equal 1, v.month, 'Month'
|
386
|
+
assert_equal 24, v.day, 'Day'
|
387
|
+
assert_equal 4, v.hour, 'Hour'
|
388
|
+
assert_equal 20, v.min, 'Minute'
|
389
|
+
assert_equal 0, v.sec, 'Second'
|
390
|
+
assert_equal 123456, v.usec, 'Microseconds'
|
391
|
+
assert_equal 123456700, v.nsec, 'Nanoseconds'
|
392
|
+
assert_equal -480, v.utc_offset, 'Offset'
|
393
|
+
}
|
394
|
+
assertions.call
|
395
|
+
v = find_value 84, :datetimeoffset_7, timezone: :local
|
396
|
+
assertions.call # Ignores timezone query option.
|
397
|
+
else
|
398
|
+
assert_equal '1984-01-24 04:20:00.1234567 -08:00', v
|
399
|
+
end
|
400
|
+
end
|
257
401
|
|
258
|
-
# it 'casts date' do
|
259
|
-
# value = find_value 51, :date
|
260
|
-
# assert_equal '', value
|
261
|
-
# end
|
262
|
-
#
|
263
|
-
# it 'casts datetime2' do
|
264
|
-
# value = find_value 72, :datetime2_7
|
265
|
-
# assert_equal '', value
|
266
|
-
# end
|
267
|
-
#
|
268
|
-
# it 'casts datetimeoffset' do
|
269
|
-
# value = find_value 81, :datetimeoffset_2
|
270
|
-
# assert_equal '', value
|
271
|
-
# end
|
272
|
-
#
|
273
402
|
# it 'casts geography' do
|
274
403
|
# value = find_value 111, :geography
|
275
404
|
# assert_equal '', value
|
@@ -284,11 +413,6 @@ class SchemaTest < TinyTds::TestCase
|
|
284
413
|
# value = find_value 131, :hierarchyid
|
285
414
|
# assert_equal '', value
|
286
415
|
# end
|
287
|
-
#
|
288
|
-
# it 'casts time' do
|
289
|
-
# value = find_value 283, :time_7
|
290
|
-
# assert_equal '', value
|
291
|
-
# end
|
292
416
|
|
293
417
|
end if sqlserver_2008? || sqlserver_2014? || sqlserver_azure?
|
294
418
|
|