@@ -105,7 +105,6 @@ class PostgreSQLClientTests: XCTestCase {
105
105
let queryResult = try client. query ( " select * from kitchen_sink " ) . await ( on: eventLoop)
106
106
if queryResult. count == 1 {
107
107
let row = queryResult [ 0 ]
108
- print ( row)
109
108
XCTAssertEqual ( row [ " smallint " ] , . int16( 1 ) )
110
109
XCTAssertEqual ( row [ " integer " ] , . int32( 2 ) )
111
110
XCTAssertEqual ( row [ " bigint " ] , . int( 3 ) )
@@ -120,20 +119,107 @@ class PostgreSQLClientTests: XCTestCase {
120
119
} else {
121
120
XCTFail ( " query result count is: \( queryResult. count) " )
122
121
}
122
+ }
123
+
124
+ func testParameterizedTypes( ) throws {
125
+ let ( client, eventLoop) = try PostgreSQLClient . makeTest ( )
126
+ let createQuery = """
127
+ create table kitchen_sink (
128
+ " smallint " smallint,
129
+ " integer " integer,
130
+ " bigint " bigint,
131
+ " decimal " decimal,
132
+ " numeric " numeric,
133
+ " real " real,
134
+ " double " double precision,
135
+ " varchar " varchar(64),
136
+ " char " char(4),
137
+ " text " text,
138
+ " bytea " bytea,
139
+ " timestamp " timestamp,
140
+ " date " date,
141
+ " time " time,
142
+ " boolean " boolean-- ,
143
+ -- " point " point,
144
+ -- " line " line,
145
+ -- " lseg " lseg,
146
+ -- " box " box,
147
+ -- " path " path,
148
+ -- " polygon " polygon,
149
+ -- " circle " circle,
150
+ -- " cidr " cidr,
151
+ -- " inet " inet,
152
+ -- " macaddr " macaddr,
153
+ -- " bit " bit(16),
154
+ -- " uuid " uuid
155
+ );
156
+ """
157
+ _ = try client. query ( " drop table if exists kitchen_sink; " ) . await ( on: eventLoop)
158
+ let createResult = try client. query ( createQuery) . await ( on: eventLoop)
159
+ XCTAssertEqual ( createResult. count, 0 )
160
+
161
+ let insertQuery = """
162
+ insert into kitchen_sink values (
163
+ $1, -- " smallint " smallint
164
+ $2, -- " integer " integer
165
+ $3, -- " bigint " bigint
166
+ $4, -- " decimal " decimal
167
+ $5, -- " numeric " numeric
168
+ $6, -- " real " real
169
+ $7, -- " double " double precision
170
+ $8, -- " varchar " varchar(64)
171
+ $9, -- " char " char(4)
172
+ $10, -- " text " text
173
+ $11, -- " bytea " bytea
174
+ $12, -- " timestamp " timestamp
175
+ $13, -- " date " date
176
+ $14, -- " time " time
177
+ $15 -- " boolean " boolean
178
+ -- " point " point,
179
+ -- " line " line,
180
+ -- " lseg " lseg,
181
+ -- " box " box,
182
+ -- " path " path,
183
+ -- " polygon " polygon,
184
+ -- " circle " circle,
185
+ -- " cidr " cidr,
186
+ -- " inet " inet,
187
+ -- " macaddr " macaddr,
188
+ -- " bit " bit(16),
189
+ -- " uuid " uuid
190
+ );
191
+ """
192
+ let insertResult = try client. parameterizedQuery ( insertQuery, [
193
+ PostgreSQLData . int16 ( 1 ) , // smallint
194
+ PostgreSQLData . int32 ( 2 ) , // integer
195
+ PostgreSQLData . int ( 3 ) , // bigint
196
+ PostgreSQLData . double ( 4 ) , // decimal
197
+ PostgreSQLData . double ( 5 ) , // numeric
198
+ PostgreSQLData . float ( 6 ) , // real
199
+ PostgreSQLData . double ( 7 ) , // double
200
+ PostgreSQLData . string ( " 8 " ) , // varchar
201
+ PostgreSQLData . string ( " 9 " ) , // char
202
+ PostgreSQLData . string ( " 10 " ) , // text
203
+ PostgreSQLData . data ( Data ( [ 0x31 , 0x32 ] ) ) , // bytea
204
+ PostgreSQLData . date ( Date ( ) ) , // timestamp
205
+ PostgreSQLData . date ( Date ( ) ) , // date
206
+ PostgreSQLData . date ( Date ( ) ) , // time
207
+ PostgreSQLData . uint8 ( 1 ) , // boolean
208
+ ] ) . await ( on: eventLoop)
209
+ XCTAssertEqual ( insertResult. count, 0 )
123
210
124
211
let parameterizedResult = try client. parameterizedQuery ( " select * from kitchen_sink " ) . await ( on: eventLoop)
125
212
if parameterizedResult. count == 1 {
126
213
let row = parameterizedResult [ 0 ]
127
- print ( row)
128
214
XCTAssertEqual ( row [ " smallint " ] , . int16( 1 ) )
129
215
XCTAssertEqual ( row [ " integer " ] , . int32( 2 ) )
130
216
XCTAssertEqual ( row [ " bigint " ] , . int( 3 ) )
131
217
XCTAssertEqual ( row [ " decimal " ] , . double( 4 ) )
132
218
XCTAssertEqual ( row [ " real " ] , . float( 6 ) )
133
219
XCTAssertEqual ( row [ " double " ] , . double( 7 ) )
134
- XCTAssertEqual ( row [ " varchar " ] , . string( " 9 " ) )
135
- XCTAssertEqual ( row [ " char " ] , . string( " 10 " ) )
136
- XCTAssertEqual ( row [ " text " ] , . string( " 11 " ) )
220
+ XCTAssertEqual ( row [ " varchar " ] , . string( " 8 " ) )
221
+ XCTAssertEqual ( row [ " char " ] , . string( " 9 " ) )
222
+ XCTAssertEqual ( row [ " text " ] , . string( " 10 " ) )
137
223
XCTAssertEqual ( row [ " bytea " ] , . data( Data ( [ 0x31 , 0x32 ] ) ) )
138
224
XCTAssertEqual ( row [ " boolean " ] , . uint8( 0x01 ) )
139
225
} else {
@@ -143,6 +229,10 @@ class PostgreSQLClientTests: XCTestCase {
143
229
144
230
static var allTests = [
145
231
( " testVersion " , testVersion) ,
232
+ ( " testSelectTypes " , testSelectTypes) ,
233
+ ( " testParse " , testParse) ,
234
+ ( " testTypes " , testTypes) ,
235
+ ( " testParameterizedTypes " , testParameterizedTypes) ,
146
236
]
147
237
}
148
238
0 commit comments