fb 0.7.2 → 0.7.3
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.
- data/fb.c +6 -33
- data/test/DataTypesTestCases.rb +7 -5
- metadata +2 -2
data/fb.c
CHANGED
@@ -22,23 +22,6 @@
|
|
22
22
|
|
23
23
|
#include "ruby.h"
|
24
24
|
|
25
|
-
/* Ensure compatibility with early releases of Ruby 1.8.5 */
|
26
|
-
#ifndef RSTRING_PTR
|
27
|
-
# define RSTRING_PTR(v) RSTRING(v)->ptr
|
28
|
-
#endif
|
29
|
-
|
30
|
-
#ifndef RSTRING_LEN
|
31
|
-
# define RSTRING_LEN(v) RSTRING(v)->len
|
32
|
-
#endif
|
33
|
-
|
34
|
-
#ifndef RARRAY_PTR
|
35
|
-
# define RARRAY_PTR(v) RARRAY(v)->ptr
|
36
|
-
#endif
|
37
|
-
|
38
|
-
#ifndef RARRAY_LEN
|
39
|
-
# define RARRAY_LEN(v) RARRAY(v)->len
|
40
|
-
#endif
|
41
|
-
|
42
25
|
#ifdef HAVE_RUBY_REGEX_H
|
43
26
|
# include "ruby/re.h"
|
44
27
|
#else
|
@@ -48,18 +31,8 @@
|
|
48
31
|
// this sucks. but for some reason these moved around between 1.8 and 1.9
|
49
32
|
#ifdef ONIGURUMA_H
|
50
33
|
#define IGNORECASE ONIG_OPTION_IGNORECASE
|
51
|
-
#define MULTILINE ONIG_OPTION_MULTILINE
|
52
|
-
#define EXTENDED ONIG_OPTION_EXTEND
|
53
34
|
#else
|
54
35
|
#define IGNORECASE RE_OPTION_IGNORECASE
|
55
|
-
#define MULTILINE RE_OPTION_MULTILINE
|
56
|
-
#define EXTENDED RE_OPTION_EXTENDED
|
57
|
-
#endif
|
58
|
-
|
59
|
-
// this sucks too.
|
60
|
-
#ifndef RREGEXP_SRC_PTR
|
61
|
-
#define RREGEXP_SRC_PTR(r) RREGEXP(r)->str
|
62
|
-
#define RREGEXP_SRC_LEN(r) RREGEXP(r)->len
|
63
36
|
#endif
|
64
37
|
|
65
38
|
#include <stdio.h>
|
@@ -1645,7 +1618,7 @@ static void fb_cursor_set_inputparams(struct FbCursor *fb_cursor, long argc, VAL
|
|
1645
1618
|
*(double *)var->sqldata = dvalue;
|
1646
1619
|
offset += alignment;
|
1647
1620
|
break;
|
1648
|
-
|
1621
|
+
|
1649
1622
|
case SQL_INT64 :
|
1650
1623
|
offset = FB_ALIGN(offset, alignment);
|
1651
1624
|
var->sqldata = (char *)(fb_cursor->i_buffer + offset);
|
@@ -1669,7 +1642,7 @@ static void fb_cursor_set_inputparams(struct FbCursor *fb_cursor, long argc, VAL
|
|
1669
1642
|
*(ISC_INT64 *)var->sqldata = llvalue;
|
1670
1643
|
offset += alignment;
|
1671
1644
|
break;
|
1672
|
-
|
1645
|
+
|
1673
1646
|
case SQL_BLOB :
|
1674
1647
|
offset = FB_ALIGN(offset, alignment);
|
1675
1648
|
var->sqldata = (char *)(fb_cursor->i_buffer + offset);
|
@@ -2062,18 +2035,18 @@ static VALUE fb_cursor_fetch(struct FbCursor *fb_cursor)
|
|
2062
2035
|
case SQL_DOUBLE:
|
2063
2036
|
val = rb_float_new(*(double*)var->sqldata);
|
2064
2037
|
break;
|
2065
|
-
|
2038
|
+
|
2066
2039
|
case SQL_INT64:
|
2067
2040
|
if (var->sqlscale < 0) {
|
2068
2041
|
ratio = 1;
|
2069
2042
|
for (scnt = 0; scnt > var->sqlscale; scnt--) ratio *= 10;
|
2070
|
-
dval = (double)*(
|
2043
|
+
dval = (double)*(ISC_INT64*)var->sqldata/ratio;
|
2071
2044
|
val = rb_float_new(dval);
|
2072
2045
|
} else {
|
2073
|
-
val = LL2NUM(*(
|
2046
|
+
val = LL2NUM(*(ISC_INT64*)var->sqldata);
|
2074
2047
|
}
|
2075
2048
|
break;
|
2076
|
-
|
2049
|
+
|
2077
2050
|
case SQL_TIMESTAMP:
|
2078
2051
|
isc_decode_timestamp((ISC_TIMESTAMP *)var->sqldata, &tms);
|
2079
2052
|
val = fb_mktime(&tms, "local");
|
data/test/DataTypesTestCases.rb
CHANGED
@@ -65,7 +65,7 @@ class DataTypesTestCases < Test::Unit::TestCase
|
|
65
65
|
end
|
66
66
|
|
67
67
|
def gen_d92(i)
|
68
|
-
i *
|
68
|
+
i * 10000
|
69
69
|
end
|
70
70
|
|
71
71
|
def sum_i(range)
|
@@ -114,13 +114,14 @@ class DataTypesTestCases < Test::Unit::TestCase
|
|
114
114
|
TS TIMESTAMP,
|
115
115
|
N92 NUMERIC(9,2),
|
116
116
|
D92 DECIMAL(9,2),
|
117
|
-
N154 NUMERIC(15,4)
|
117
|
+
N154 NUMERIC(15,4),
|
118
|
+
D185 DECIMAL(18,5));
|
118
119
|
END
|
119
120
|
sql_insert = <<-END
|
120
121
|
insert into test
|
121
|
-
(I, SI, BI, F, D, C, C10, VC, VC10, VC10000, DT, TM, TS, N92, D92, N154)
|
122
|
+
(I, SI, BI, F, D, C, C10, VC, VC10, VC10000, DT, TM, TS, N92, D92, N154, D185)
|
122
123
|
values
|
123
|
-
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
|
124
|
+
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
|
124
125
|
END
|
125
126
|
sql_select = "select * from TEST order by I"
|
126
127
|
sql_sum = "select sum(I), sum(SI), sum(BI), sum(F), sum(D), sum(N92), sum(D92), sum(N154) from TEST"
|
@@ -137,7 +138,7 @@ class DataTypesTestCases < Test::Unit::TestCase
|
|
137
138
|
gen_f(i), gen_d(i),
|
138
139
|
gen_c(i), gen_c10(i), gen_vc(i), gen_vc10(i), gen_vc10000(i),
|
139
140
|
gen_dt(i), gen_tm(i), gen_ts(i),
|
140
|
-
gen_n92(i), gen_d92(i), gen_n92(i))
|
141
|
+
gen_n92(i), gen_d92(i), gen_n92(i), gen_d92(i))
|
141
142
|
end
|
142
143
|
end
|
143
144
|
connection.execute(sql_select) do |cursor|
|
@@ -159,6 +160,7 @@ class DataTypesTestCases < Test::Unit::TestCase
|
|
159
160
|
assert_equal gen_n92(i), row["N92"], "NUMERIC"
|
160
161
|
assert_equal gen_d92(i), row["D92"], "DECIMAL"
|
161
162
|
assert_equal gen_n92(i), row["N154"], "NUMERIC"
|
163
|
+
assert_equal gen_d92(i), row["D185"], "DECIMAL"
|
162
164
|
i += 1
|
163
165
|
end
|
164
166
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-08-22 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Ruby Firebird Extension Library
|
15
15
|
email: rowland@rowlandresearch.com
|