1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
-
+
-
+
-
+
-
+
+
+
+
+
|
#import "PGResultRow.h"
static id
convert_type(PGresult *res, int col, OFString *str)
{
switch (PQftype(res, col)) {
case 16: /* BOOLOID */
case 16: /* BOOLOID */
if ([str isEqual: @"t"])
return [OFNumber numberWithBool: YES];
else
return [OFNumber numberWithBool: NO];
case 21: /* INT2OID */
case 21: /* INT2OID */
return [OFNumber numberWithInt16: (int16_t)[str decimalValue]];
case 23: /* INT4OID */
case 23: /* INT4OID */
return [OFNumber numberWithInt32: (int32_t)[str decimalValue]];
case 20: /* INT8OID */
case 20: /* INT8OID */
return [OFNumber numberWithInt64: (int64_t)[str decimalValue]];
case 700: /* FLOAT4OID */
return [OFNumber numberWithFloat: [str floatValue]];
case 701: /* FLOAT8OID */
return [OFNumber numberWithDouble: [str doubleValue]];
}
return str;
}
@interface PGResultRowEnumerator: OFEnumerator
{
|