do_oracle 0.10.7-x86-mswin32-60 → 0.10.8-x86-mswin32-60

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/ChangeLog.markdown CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.10.8 2012-02-10
2
+
3
+ * Ruby 1.9.3 compatibility
4
+
1
5
  ## 0.10.7 2011-10-13
2
6
 
3
7
  No changes
@@ -34,7 +34,6 @@
34
34
 
35
35
  // To store rb_intern values
36
36
  static ID ID_NEW;
37
- static ID ID_NEW_DATE;
38
37
  static ID ID_LOGGER;
39
38
  static ID ID_DEBUG;
40
39
  static ID ID_LEVEL;
@@ -144,75 +143,19 @@ static char * get_uri_option(VALUE query_hash, char * key) {
144
143
  return value;
145
144
  }
146
145
 
147
- /* ====== Time/Date Parsing Helper Functions ====== */
148
- static void reduce( do_int64 *numerator, do_int64 *denominator ) {
149
- do_int64 a, b, c;
150
- a = *numerator;
151
- b = *denominator;
152
- while ( a != 0 ) {
153
- c = a; a = b % a; b = c;
154
- }
155
- *numerator = *numerator / b;
156
- *denominator = *denominator / b;
157
- }
158
-
159
- // Generate the date integer which Date.civil_to_jd returns
160
- static int jd_from_date(int year, int month, int day) {
161
- int a, b;
162
- if ( month <= 2 ) {
163
- year -= 1;
164
- month += 12;
165
- }
166
- a = year / 100;
167
- b = 2 - a + (a / 4);
168
- return floor(365.25 * (year + 4716)) + floor(30.6001 * (month + 1)) + day + b - 1524;
169
- }
170
-
171
- // Creates a Rational for use as a Timezone offset to be passed to DateTime.new!
172
- static VALUE seconds_to_offset(do_int64 num) {
173
- do_int64 den = 86400;
174
- reduce(&num, &den);
175
- return rb_funcall(rb_mKernel, ID_RATIONAL, 2, rb_ll2inum(num), rb_ll2inum(den));
176
- }
177
-
178
- static VALUE timezone_to_offset(int hour_offset, int minute_offset) {
179
- do_int64 seconds = 0;
180
-
181
- seconds += hour_offset * 3600;
182
- seconds += minute_offset * 60;
183
-
184
- return seconds_to_offset(seconds);
185
- }
186
-
187
146
  // Implementation using C functions
188
147
 
189
148
  static VALUE parse_date(VALUE r_value) {
190
- VALUE time_array;
191
149
  int year, month, day;
192
- int jd, ajd;
193
- VALUE rational;
194
-
195
- if (rb_obj_class(r_value) == rb_cTime) {
196
- time_array = rb_funcall(r_value, ID_TO_A, 0);
197
- year = NUM2INT(rb_ary_entry(time_array, 5));
198
- month = NUM2INT(rb_ary_entry(time_array, 4));
199
- day = NUM2INT(rb_ary_entry(time_array, 3));
200
-
201
- jd = jd_from_date(year, month, day);
202
150
 
203
- // Math from Date.jd_to_ajd
204
- ajd = jd * 2 - 1;
205
- rational = rb_funcall(rb_mKernel, ID_RATIONAL, 2, INT2NUM(ajd), INT2NUM(2));
206
-
207
- return rb_funcall(rb_cDate, ID_NEW_DATE, 3, rational, INT2NUM(0), INT2NUM(2299161));
208
-
209
- } else if (rb_obj_class(r_value) == rb_cDate) {
151
+ if (rb_obj_class(r_value) == rb_cDate) {
210
152
  return r_value;
211
-
212
- } else if (rb_obj_class(r_value) == rb_cDateTime) {
213
- rational = rb_iv_get(r_value, "@ajd");
214
- return rb_funcall(rb_cDate, ID_NEW_DATE, 3, rational, INT2NUM(0), INT2NUM(2299161));
215
-
153
+ } else if (rb_obj_class(r_value) == rb_cTime ||
154
+ rb_obj_class(r_value) == rb_cDateTime) {
155
+ year = NUM2INT(rb_funcall(r_value, rb_intern("year"), 0));
156
+ month = NUM2INT(rb_funcall(r_value, rb_intern("month"), 0));
157
+ day = NUM2INT(rb_funcall(r_value, rb_intern("day"), 0));
158
+ return rb_funcall(rb_cDate, ID_NEW, 3, INT2NUM(year), INT2NUM(month), INT2NUM(day));
216
159
  } else {
217
160
  // Something went terribly wrong
218
161
  rb_raise(eDataError, "Couldn't parse date from class %s object", rb_obj_classname(r_value));
@@ -222,16 +165,10 @@ static VALUE parse_date(VALUE r_value) {
222
165
  // Implementation using C functions
223
166
 
224
167
  static VALUE parse_date_time(VALUE r_value) {
225
- VALUE ajd, offset;
226
-
227
168
  VALUE time_array;
228
- int year, month, day, hour, min, sec, hour_offset, minute_offset;
169
+ int year, month, day, hour, min, sec;
229
170
  // int usec;
230
- int jd;
231
- do_int64 num, den;
232
-
233
171
  long int gmt_offset;
234
- int is_dst;
235
172
 
236
173
  // time_t rawtime;
237
174
  // struct tm * timeinfo;
@@ -249,43 +186,10 @@ static VALUE parse_date_time(VALUE r_value) {
249
186
  min = NUM2INT(rb_ary_entry(time_array, 1));
250
187
  sec = NUM2INT(rb_ary_entry(time_array, 0));
251
188
 
252
- is_dst = rb_ary_entry(time_array, 8) == Qtrue ? 3600 : 0;
253
189
  gmt_offset = NUM2INT(rb_funcall(r_value, ID_UTC_OFFSET, 0 ));
254
190
 
255
- if ( is_dst > 0 )
256
- gmt_offset -= is_dst;
257
-
258
- hour_offset = -(gmt_offset / 3600);
259
- minute_offset = -(gmt_offset % 3600 / 60);
260
-
261
- jd = jd_from_date(year, month, day);
262
-
263
- // Generate ajd with fractional days for the time
264
- // Extracted from Date#jd_to_ajd, Date#day_fraction_to_time, and Rational#+ and #-
265
- num = (hour * 1440) + (min * 24);
266
-
267
- // Modify the numerator so when we apply the timezone everything works out
268
- num -= (hour_offset * 1440) + (minute_offset * 24);
269
-
270
- den = (24 * 1440);
271
- reduce(&num, &den);
272
-
273
- num = (num * 86400) + (sec * den);
274
- den = den * 86400;
275
- reduce(&num, &den);
276
-
277
- num = (jd * den) + num;
278
-
279
- num = num * 2;
280
- num = num - den;
281
- den = den * 2;
282
-
283
- reduce(&num, &den);
284
-
285
- ajd = rb_funcall(rb_mKernel, ID_RATIONAL, 2, rb_ull2inum(num), rb_ull2inum(den));
286
- offset = timezone_to_offset(hour_offset, minute_offset);
287
-
288
- return rb_funcall(rb_cDateTime, ID_NEW_DATE, 3, ajd, offset, INT2NUM(2299161));
191
+ return rb_funcall(rb_cDateTime, ID_NEW, 7, INT2NUM(year), INT2NUM(month), INT2NUM(day),
192
+ INT2NUM(hour), INT2NUM(min), INT2NUM(sec), gmt_offset);
289
193
  } else {
290
194
  // Something went terribly wrong
291
195
  rb_raise(eDataError, "Couldn't parse datetime from class %s object", rb_obj_classname(r_value));
@@ -794,11 +698,6 @@ void Init_do_oracle() {
794
698
  rb_funcall(rb_mKernel, rb_intern("require"), 1, rb_str_new2("data_objects"));
795
699
 
796
700
  ID_NEW = rb_intern("new");
797
- #ifdef RUBY_LESS_THAN_186
798
- ID_NEW_DATE = rb_intern("new0");
799
- #else
800
- ID_NEW_DATE = rb_intern("new!");
801
- #endif
802
701
  ID_LOGGER = rb_intern("logger");
803
702
  ID_DEBUG = rb_intern("debug");
804
703
  ID_LEVEL = rb_intern("level");
Binary file
Binary file
@@ -1,5 +1,5 @@
1
1
  module DataObjects
2
2
  module Oracle
3
- VERSION = '0.10.7'
3
+ VERSION = '0.10.8'
4
4
  end
5
5
  end
data/tasks/compile.rake CHANGED
@@ -32,7 +32,7 @@ begin
32
32
  # Gem::Specification API.
33
33
  gem.dependencies.delete_if { |d| d.name == 'ruby-oci8'}
34
34
 
35
- gem.add_dependency "do_jdbc", '0.10.7'
35
+ gem.add_dependency "do_jdbc", '0.10.8'
36
36
  end
37
37
  end
38
38
  rescue LoadError
data/tasks/spec.rake CHANGED
@@ -2,7 +2,6 @@ require 'rspec/core/rake_task'
2
2
 
3
3
  RSpec::Core::RakeTask.new(:spec => [:clean, :compile]) do |spec|
4
4
  spec.pattern = './spec/**/*_spec.rb'
5
- spec.skip_bundler = true
6
5
  end
7
6
 
8
7
  RSpec::Core::RakeTask.new(:rcov => [:clean, :compile]) do |rcov|
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: do_oracle
3
3
  version: !ruby/object:Gem::Version
4
- hash: 57
4
+ hash: 39
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 10
9
- - 7
10
- version: 0.10.7
9
+ - 8
10
+ version: 0.10.8
11
11
  platform: x86-mswin32-60
12
12
  authors:
13
13
  - Raimonds Simanovskis
@@ -18,23 +18,23 @@ cert_chain: []
18
18
  date: 2011-03-29 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- requirement: &id001 !ruby/object:Gem::Requirement
21
+ version_requirements: &id001 !ruby/object:Gem::Requirement
22
22
  none: false
23
23
  requirements:
24
24
  - - "="
25
25
  - !ruby/object:Gem::Version
26
- hash: 57
26
+ hash: 39
27
27
  segments:
28
28
  - 0
29
29
  - 10
30
- - 7
31
- version: 0.10.7
32
- version_requirements: *id001
30
+ - 8
31
+ version: 0.10.8
33
32
  name: data_objects
34
33
  prerelease: false
35
34
  type: :runtime
35
+ requirement: *id001
36
36
  - !ruby/object:Gem::Dependency
37
- requirement: &id002 !ruby/object:Gem::Requirement
37
+ version_requirements: &id002 !ruby/object:Gem::Requirement
38
38
  none: false
39
39
  requirements:
40
40
  - - ~>
@@ -44,12 +44,12 @@ dependencies:
44
44
  - 2
45
45
  - 5
46
46
  version: "2.5"
47
- version_requirements: *id002
48
47
  name: rspec
49
48
  prerelease: false
50
49
  type: :development
50
+ requirement: *id002
51
51
  - !ruby/object:Gem::Dependency
52
- requirement: &id003 !ruby/object:Gem::Requirement
52
+ version_requirements: &id003 !ruby/object:Gem::Requirement
53
53
  none: false
54
54
  requirements:
55
55
  - - ~>
@@ -59,10 +59,10 @@ dependencies:
59
59
  - 0
60
60
  - 7
61
61
  version: "0.7"
62
- version_requirements: *id003
63
62
  name: rake-compiler
64
63
  prerelease: false
65
64
  type: :development
65
+ requirement: *id003
66
66
  description: Implements the DataObjects API for Oracle
67
67
  email: raimonds.simanovskis@gmail.com
68
68
  executables: []
@@ -140,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
140
  requirements: []
141
141
 
142
142
  rubyforge_project: dorb
143
- rubygems_version: 1.8.6
143
+ rubygems_version: 1.8.14
144
144
  signing_key:
145
145
  specification_version: 3
146
146
  summary: DataObjects Oracle Driver