pmacs-activerecord-oracle_enhanced-adapter 1.4.2.rc1 → 1.5.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +11 -40
  3. data/History.md +170 -0
  4. data/README.md +61 -5
  5. data/Rakefile +1 -0
  6. data/VERSION +1 -1
  7. data/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb +330 -161
  8. data/lib/active_record/connection_adapters/oracle_enhanced_column.rb +48 -8
  9. data/lib/active_record/connection_adapters/oracle_enhanced_column_dumper.rb +77 -0
  10. data/lib/active_record/connection_adapters/oracle_enhanced_connection.rb +8 -24
  11. data/lib/active_record/connection_adapters/oracle_enhanced_context_index.rb +4 -13
  12. data/lib/active_record/connection_adapters/oracle_enhanced_database_tasks.rb +61 -0
  13. data/lib/active_record/connection_adapters/oracle_enhanced_dirty.rb +13 -12
  14. data/lib/active_record/connection_adapters/oracle_enhanced_jdbc_connection.rb +42 -19
  15. data/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb +28 -74
  16. data/lib/active_record/connection_adapters/oracle_enhanced_procedures.rb +165 -231
  17. data/lib/active_record/connection_adapters/oracle_enhanced_schema_creation.rb +89 -0
  18. data/lib/active_record/connection_adapters/oracle_enhanced_schema_definitions.rb +16 -24
  19. data/lib/active_record/connection_adapters/oracle_enhanced_schema_dumper.rb +29 -38
  20. data/lib/active_record/connection_adapters/oracle_enhanced_schema_statements.rb +93 -42
  21. data/lib/active_record/connection_adapters/oracle_enhanced_schema_statements_ext.rb +5 -3
  22. data/lib/active_record/connection_adapters/oracle_enhanced_structure_dump.rb +7 -7
  23. data/lib/active_record/connection_adapters/oracle_enhanced_version.rb +1 -1
  24. data/lib/pmacs-activerecord-oracle_enhanced-adapter.rb +2 -2
  25. data/pmacs-activerecord-oracle_enhanced-adapter.gemspec +19 -17
  26. data/spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb +35 -99
  27. data/spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb +17 -3
  28. data/spec/active_record/connection_adapters/oracle_enhanced_context_index_spec.rb +105 -98
  29. data/spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb +74 -44
  30. data/spec/active_record/connection_adapters/oracle_enhanced_database_tasks_spec.rb +89 -0
  31. data/spec/active_record/connection_adapters/oracle_enhanced_dbms_output_spec.rb +3 -3
  32. data/spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb +13 -2
  33. data/spec/active_record/connection_adapters/oracle_enhanced_procedures_spec.rb +11 -12
  34. data/spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb +252 -60
  35. data/spec/active_record/connection_adapters/oracle_enhanced_schema_statements_spec.rb +170 -40
  36. data/spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb +14 -8
  37. data/spec/spec_helper.rb +25 -54
  38. metadata +41 -72
  39. data/lib/active_record/connection_adapters/oracle_enhanced.rake +0 -105
  40. data/lib/active_record/connection_adapters/oracle_enhanced_activerecord_patches.rb +0 -41
  41. data/lib/active_record/connection_adapters/oracle_enhanced_base_ext.rb +0 -118
  42. data/lib/active_record/connection_adapters/oracle_enhanced_core_ext.rb +0 -25
  43. data/lib/active_record/connection_adapters/oracle_enhanced_tasks.rb +0 -17
  44. data/spec/active_record/connection_adapters/oracle_enhanced_core_ext_spec.rb +0 -19
@@ -1,118 +0,0 @@
1
- module ActiveRecord
2
- class Base
3
- # Establishes a connection to the database that's used by all Active Record objects.
4
- def self.oracle_enhanced_connection(config) #:nodoc:
5
- if config[:emulate_oracle_adapter] == true
6
- # allows the enhanced adapter to look like the OracleAdapter. Useful to pick up
7
- # conditionals in the rails activerecord test suite
8
- require 'active_record/connection_adapters/emulation/oracle_adapter'
9
- ConnectionAdapters::OracleAdapter.new(
10
- ConnectionAdapters::OracleEnhancedConnection.create(config), logger, config)
11
- else
12
- ConnectionAdapters::OracleEnhancedAdapter.new(
13
- ConnectionAdapters::OracleEnhancedConnection.create(config), logger, config)
14
- end
15
- end
16
-
17
- # Specify table columns which should be ignored by ActiveRecord, e.g.:
18
- #
19
- # ignore_table_columns :attribute1, :attribute2
20
- def self.ignore_table_columns(*args)
21
- connection.ignore_table_columns(table_name,*args)
22
- end
23
-
24
- # Specify which table columns should be typecasted to Date (without time), e.g.:
25
- #
26
- # set_date_columns :created_on, :updated_on
27
- def self.set_date_columns(*args)
28
- connection.set_type_for_columns(table_name,:date,*args)
29
- end
30
-
31
- # Specify which table columns should be typecasted to Time (or DateTime), e.g.:
32
- #
33
- # set_datetime_columns :created_date, :updated_date
34
- def self.set_datetime_columns(*args)
35
- connection.set_type_for_columns(table_name,:datetime,*args)
36
- end
37
-
38
- # Specify which table columns should be typecasted to boolean values +true+ or +false+, e.g.:
39
- #
40
- # set_boolean_columns :is_valid, :is_completed
41
- def self.set_boolean_columns(*args)
42
- connection.set_type_for_columns(table_name,:boolean,*args)
43
- end
44
-
45
- # Specify which table columns should be typecasted to integer values.
46
- # Might be useful to force NUMBER(1) column to be integer and not boolean, or force NUMBER column without
47
- # scale to be retrieved as integer and not decimal. Example:
48
- #
49
- # set_integer_columns :version_number, :object_identifier
50
- def self.set_integer_columns(*args)
51
- connection.set_type_for_columns(table_name,:integer,*args)
52
- end
53
-
54
- # Specify which table columns should be typecasted to string values.
55
- # Might be useful to specify that columns should be string even if its name matches boolean column criteria.
56
- #
57
- # set_string_columns :active_flag
58
- def self.set_string_columns(*args)
59
- connection.set_type_for_columns(table_name,:string,*args)
60
- end
61
-
62
- # After setting large objects to empty, select the OCI8::LOB
63
- # and write back the data.
64
- if ActiveRecord::VERSION::MAJOR == 3 && ActiveRecord::VERSION::MINOR >= 1
65
- before_update :record_changed_lobs
66
- after_update :enhanced_write_lobs
67
- else
68
- before_update :record_changed_lobs
69
- after_save :enhanced_write_lobs
70
- end
71
- def enhanced_write_lobs #:nodoc:
72
- if connection.is_a?(ConnectionAdapters::OracleEnhancedAdapter) &&
73
- !(self.class.custom_create_method || self.class.custom_update_method)
74
- connection.write_lobs(self.class.table_name, self.class, attributes, @changed_lob_columns || self.class.lob_columns)
75
- end
76
- end
77
- def record_changed_lobs
78
- @changed_lob_columns = self.class.lob_columns.select{|col| self.send(:"#{col.name}_changed?") && !self.class.readonly_attributes.to_a.include?(col.name)}
79
- end
80
- private :enhanced_write_lobs
81
- private :record_changed_lobs
82
-
83
- # Get table comment from schema definition.
84
- def self.table_comment
85
- connection.table_comment(self.table_name)
86
- end
87
-
88
- def self.lob_columns
89
- columns.select do |column|
90
- column.respond_to?(:lob?) && column.lob?
91
- end
92
- end
93
-
94
- def self.virtual_columns
95
- columns.select do |column|
96
- column.respond_to?(:virtual?) && column.virtual?
97
- end
98
- end
99
-
100
- if ActiveRecord::VERSION::MAJOR < 3
101
- def attributes_with_quotes_with_virtual_columns(include_primary_key = true, include_readonly_attributes = true, attribute_names = @attributes.keys)
102
- virtual_column_names = self.class.virtual_columns.map(&:name)
103
- attributes_with_quotes_without_virtual_columns(include_primary_key, include_readonly_attributes, attribute_names - virtual_column_names)
104
- end
105
-
106
- alias_method_chain :attributes_with_quotes, :virtual_columns
107
- else
108
- def arel_attributes_values_with_virtual_columns(include_primary_key = true, include_readonly_attributes = true, attribute_names = @attributes.keys)
109
- virtual_column_names = self.class.virtual_columns.map(&:name)
110
- arel_attributes_values_without_virtual_columns(include_primary_key, include_readonly_attributes, attribute_names - virtual_column_names)
111
- end
112
-
113
- alias_method_chain :arel_attributes_values, :virtual_columns
114
- end
115
-
116
- end
117
-
118
- end
@@ -1,25 +0,0 @@
1
- require "bigdecimal"
2
-
3
- unless BigDecimal.method_defined?(:to_d)
4
- BigDecimal.class_eval do
5
- def to_d #:nodoc:
6
- self
7
- end
8
- end
9
- end
10
-
11
- unless Bignum.method_defined?(:to_d)
12
- Bignum.class_eval do
13
- def to_d #:nodoc:
14
- BigDecimal.new(self.to_s)
15
- end
16
- end
17
- end
18
-
19
- unless Fixnum.method_defined?(:to_d)
20
- Fixnum.class_eval do
21
- def to_d #:nodoc:
22
- BigDecimal.new(self.to_s)
23
- end
24
- end
25
- end
@@ -1,17 +0,0 @@
1
- # Used just for Rails 2.x
2
- # In Rails 3.x rake tasks are loaded using railtie
3
- if ActiveRecord::VERSION::MAJOR == 2
4
-
5
- if defined?(Rake.application) && Rake.application &&
6
- ActiveRecord::Base.configurations[defined?(Rails.env) ? Rails.env : RAILS_ENV]['adapter'] == 'oracle_enhanced'
7
- oracle_enhanced_rakefile = File.dirname(__FILE__) + "/oracle_enhanced.rake"
8
- if Rake.application.lookup("environment")
9
- # rails tasks already defined; load the override tasks now
10
- load oracle_enhanced_rakefile
11
- else
12
- # rails tasks not loaded yet; load as an import
13
- Rake.application.add_import(oracle_enhanced_rakefile)
14
- end
15
- end
16
-
17
- end
@@ -1,19 +0,0 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
-
4
- describe "OracleEnhancedAdapter to_d method" do
5
- it "BigDecimal#to_d returns the same decimal number" do
6
- d = BigDecimal.new("12345678901234567890.0123456789")
7
- d.to_d.should == d
8
- end
9
-
10
- it "Bignum#to_d translates large integer to decimal" do
11
- n = 12345678901234567890
12
- n.to_d.should == BigDecimal.new(n.to_s)
13
- end
14
-
15
- it "Fixnum#to_d translates small integer to decimal" do
16
- n = 123456
17
- n.to_d.should == BigDecimal.new(n.to_s)
18
- end
19
- end