activerecord-oracle_enhanced-adapter 1.6.9 → 1.7.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +10 -11
  3. data/History.md +126 -14
  4. data/README.md +9 -6
  5. data/RUNNING_TESTS.md +1 -1
  6. data/Rakefile +1 -16
  7. data/VERSION +1 -1
  8. data/activerecord-oracle_enhanced-adapter.gemspec +15 -52
  9. data/lib/active_record/connection_adapters/oracle_enhanced/column.rb +8 -22
  10. data/lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb +53 -45
  11. data/lib/active_record/connection_adapters/oracle_enhanced/connection.rb +6 -1
  12. data/lib/active_record/connection_adapters/oracle_enhanced/database_statements.rb +23 -62
  13. data/lib/active_record/connection_adapters/oracle_enhanced/jdbc_connection.rb +46 -56
  14. data/lib/active_record/connection_adapters/oracle_enhanced/jdbc_quoting.rb +35 -0
  15. data/lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb +34 -21
  16. data/lib/active_record/connection_adapters/oracle_enhanced/oci_quoting.rb +36 -0
  17. data/lib/active_record/connection_adapters/oracle_enhanced/procedures.rb +1 -1
  18. data/lib/active_record/connection_adapters/oracle_enhanced/quoting.rb +174 -0
  19. data/lib/active_record/connection_adapters/oracle_enhanced/schema_creation.rb +17 -8
  20. data/lib/active_record/connection_adapters/oracle_enhanced/schema_definitions.rb +17 -11
  21. data/lib/active_record/connection_adapters/oracle_enhanced/schema_dumper.rb +160 -178
  22. data/lib/active_record/connection_adapters/oracle_enhanced/schema_statements.rb +42 -94
  23. data/lib/active_record/connection_adapters/oracle_enhanced/schema_statements_ext.rb +50 -54
  24. data/lib/active_record/connection_adapters/oracle_enhanced/structure_dump.rb +15 -11
  25. data/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb +197 -301
  26. data/lib/active_record/oracle_enhanced/type/integer.rb +3 -2
  27. data/lib/active_record/oracle_enhanced/type/national_character_string.rb +25 -0
  28. data/lib/active_record/oracle_enhanced/type/raw.rb +14 -2
  29. data/lib/active_record/oracle_enhanced/type/string.rb +28 -0
  30. data/lib/active_record/oracle_enhanced/type/text.rb +32 -0
  31. data/lib/activerecord-oracle_enhanced-adapter.rb +12 -17
  32. data/spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb +113 -135
  33. data/spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb +51 -59
  34. data/spec/active_record/connection_adapters/oracle_enhanced_context_index_spec.rb +40 -41
  35. data/spec/active_record/connection_adapters/oracle_enhanced_cpk_spec.rb +6 -6
  36. data/spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb +281 -233
  37. data/spec/active_record/connection_adapters/oracle_enhanced_database_tasks_spec.rb +7 -7
  38. data/spec/active_record/connection_adapters/oracle_enhanced_dbms_output_spec.rb +10 -10
  39. data/spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb +22 -22
  40. data/spec/active_record/connection_adapters/oracle_enhanced_emulate_oracle_adapter_spec.rb +2 -2
  41. data/spec/active_record/connection_adapters/oracle_enhanced_procedures_spec.rb +36 -37
  42. data/spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb +86 -46
  43. data/spec/active_record/connection_adapters/oracle_enhanced_schema_statements_spec.rb +194 -294
  44. data/spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb +53 -39
  45. data/spec/spec_helper.rb +0 -6
  46. metadata +42 -143
  47. data/.travis.yml +0 -39
  48. data/.travis/oracle/download.sh +0 -14
  49. data/.travis/oracle/install.sh +0 -31
  50. data/.travis/setup_accounts.sh +0 -9
  51. data/lib/active_record/connection_adapters/oracle_enhanced/dirty.rb +0 -40
  52. data/lib/active_record/oracle_enhanced/type/timestamp.rb +0 -11
  53. data/spec/spec_config.yaml.template +0 -11
  54. data/spec/support/alter_system_user_password.sql +0 -2
  55. data/spec/support/create_oracle_enhanced_users.sql +0 -31
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d3bf47194eb3711fcdc5cc04ea0c11ca3afe5ba8
4
- data.tar.gz: cb7f41143131f866bf881a9fbc19d76785ff5c75
3
+ metadata.gz: f98878e23459a54a04b7fa57b79ff3ee30e50f78
4
+ data.tar.gz: ebecb63118fb612c6b21c5b6038e6f82c05e9bfd
5
5
  SHA512:
6
- metadata.gz: 976de1d723fa15c16a103e6ea6c9961f1600a04f1e08f4817e804b1a05dca1aec5d1759a5a1a42c938061118caf1bd2f1b40f0b0328763b052631ff765e92e50
7
- data.tar.gz: 01fa3f9969c749aa645571e219a5069c333d05afc39d138733ef723846da8ef8b0dfffef699cc3385c8df4a7233fff83bc551c08fead510aab683560a92166cd
6
+ metadata.gz: 539c8e0b3e594c6cde1704bbddbefb7dc92208d1bcbf053fd8a6eff37322b0e7c7acc899f9a9c9d7581ff4b06d9d2c7ddd7dc6cdb85db96af04f027331445646
7
+ data.tar.gz: 5257dcdc1df87458889098bec9eada6b1105f6158e7e47a2600ff35a362ecb6f40ad2a37a438a83e1a99cb7364fb4980fe96cd221ac0688fc86f91b4baa07ef4
data/Gemfile CHANGED
@@ -1,23 +1,22 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
3
  group :development do
4
- gem 'jeweler', '~> 2.0'
5
- gem 'rspec'
4
+ gem 'rspec', '~> 3.3'
6
5
  gem 'rdoc'
6
+ gem 'rake'
7
7
 
8
- gem 'activerecord', github: 'rails/rails', branch: '4-2-stable'
9
- gem 'activemodel', github: 'rails/rails', branch: '4-2-stable'
10
- gem 'activesupport', github: 'rails/rails', branch: '4-2-stable'
11
- gem 'actionpack', github: 'rails/rails', branch: '4-2-stable'
12
- gem 'railties', github: 'rails/rails', branch: '4-2-stable'
8
+ gem 'activerecord', github: 'rails/rails', branch: 'master'
9
+ gem 'rack', github: 'rack/rack', branch: 'master'
10
+ gem 'arel', github: 'rails/arel', branch: 'master'
13
11
 
14
- gem 'arel', github: 'rails/arel', branch: '6-0-stable'
15
- gem 'journey', github: 'rails/journey'
16
-
17
- gem 'activerecord-deprecated_finders'
18
12
  gem 'ruby-plsql', '>=0.5.0'
19
13
 
20
14
  platforms :ruby do
21
15
  gem 'ruby-oci8', github: 'kubo/ruby-oci8'
16
+ gem 'byebug'
17
+ end
18
+
19
+ platforms :jruby do
20
+ gem 'ruby-debug'
22
21
  end
23
22
  end
data/History.md CHANGED
@@ -1,19 +1,131 @@
1
- ## 1.6.9 / 2017-03-29
2
-
3
- * Changes and bug fixes since 1.6.8
4
- * Fix the BINARY_FLOAT column type returns nil in JRuby [#1257]
5
-
6
- ## 1.6.8 / 2017-03-18
7
-
8
- * Changes and bug fixes since 1.6.7
9
- * Better fix to support "Relation#count does not support finder options anymore in Rails [#787, #788]
1
+ ## 1.7.0.beta1 / 2016-07-18
2
+
3
+ * Major enhancements
4
+
5
+ * Support Rails 5.0
6
+ * Use Arel::Visitors::Oracle12 to use better top-N query support [#671]
7
+ * Oracle TIMESTAMP sql type is associated with Rails `DateTime` type [#845]
8
+ * Rails :time as Oracle TIMESTAMP to support subsecond precision [#817, #816]
9
+ * Rails :datetime as Oracle TIMESTAMP to support subsecond precision [#739]
10
+ * Remove ActiveRecord::OracleEnhanced::Type::Timestamp [#815]
11
+ * Deprecate `quote_date_with_to_date` and `quote_timestamp_with_to_timestamp` [#879]
12
+ * Deprecate `set_boolean_columns` and `set_string_columns` [#874]
13
+ * Deprecate `set_integer_columns [#872]
14
+ * Deprecate `set_date_columns` and `set_datetime_columns` [#869]
15
+ * Deprecate `ignore_table_columns` to use Rails native `ignored_columns` [#855]
16
+ * Set :datetime for an attribute explicitly [#875, #876]
17
+ * Support `#views` #738
18
+ * Replace `table_exists?` with `data_source_exists?` [#842]
19
+ * Introduce `data_source_exists?` to return tables and views [#841]
20
+ * Implement primary_keys to prepare dumping composite primary key [#860]
21
+ * Support for any type primary key [#836]
22
+ * Dump composite primary keys [#863]
23
+ * Dump type and options for non default primary keys [#861]
24
+ * Support creating foreign keys in create table [#862]
25
+ * Support ActiveRecord native comment feature [#822, #821, #819]
26
+
27
+ * Changes and bug fixes
28
+
29
+ * Fix cast_type issue [#795]
30
+ * Rename quote_value to quote_default_expression [#661]
31
+ * Change bind parameters order to come offset first then limit next [#831]
32
+ * type_cast arity change [#781]
33
+ * Initial support for sql_type_metadata [#656]
34
+ * Support bind_params for JDBC connections [#806]
35
+ * Use all_* dictionary replacing user_* ones [#713]
36
+ * Register `NUMBER(1)` sql_type to `Type::Boolean` [#844]
37
+ * Add `ActiveRecord::ValueTooLong` exception class [#827]
38
+ * Not passing `native_database_types` to `TableDefinition` [#747]
39
+ * Ignore index name in `index_exists?` when not passed a name to check for [#840]
40
+ * Add reversible syntax for change_column_default [#839]
41
+ * Support Oracle national character set NCHAR, NVARCHAR2 [#886]
42
+ * Support "limited" :returning_id [#894, #803]
43
+ * Support RAW sql data type in Rails 5 [#877]
44
+ * Remove `serialized_attributes` which is removed in Rails 5 [#694]
45
+ * Add deprecation warning for `bind_param` [#809]
46
+ * Remove `self.string_to_raw` from Column which is not called anymore [#813]
47
+ * Remove type_cast from Column [#811]
48
+ * Remove deprecated `distinct` method [#771]
49
+ * Remove alias_method_chain and rename oracle_enhanced_table to table [#864]
50
+ * Warn if `AR.primary_key` is called for a table with composite primary key [#837]
51
+ * Remove select method from Oracle enhanced adapter [#784]
52
+ * Remove version check to see if ::Rails::Railtie exists [#769]
53
+ * Remove FALSE_VALUES [#716]
54
+ * Remove TRUE_VALUES from OracleEnhancedColumn [#646]
55
+ * Remove insert_sql method [#866, #890]
56
+ * Rails5 remove require bind visitor [#853]
57
+ * substitute_at has been removed from Rails [#849]
58
+ * Serialize value for lob columns [#878]
59
+ * Do not cache prepared statements that are unlikely to have cache hits [#748]
60
+ * Handle BLOB type correctly [#804]
61
+ * Move ActiveRecord::Type to ActiveModel [#723]
62
+ * Remove cast_type to support Rails 5 Attribute API [#867]
63
+ * Handle ActiveModel::Type::Binary::Data type cast in _type_cast [#826]
64
+ * Use Abstract adapter `dump_schema_information` implementation [#857]
65
+ * Use ActiveRecord initialize_schema_migrations_table [#843]
66
+ * Use ActiveRecord::SchemaDumper#ignored? [#838]
67
+ * Use Abstract adapter join_to_update [#801, #800]
68
+ * Use ActiveRecord::OracleEnhanced::Type::Text [#887]
69
+ * Use ActiveRecord::OracleEnhanced::Type::String [#883]
70
+ * Use OracleEnhanced::ColumnDefinition [#650]
71
+ * Move to ActiveRecord::ConnectionAdapters::OracleEnhanced::SchemaDumper [#695]
72
+ * ColumnDumper uses Module#prepend [#696]
73
+ * Migrate from OracleEnhancedSchemaStatementExt to OracleEnhanced::SchemaStatementsExt [#768]
74
+ * Extract ActiveRecord::ConnectionAdapters::OracleEnhanced::Quoting [#764]
75
+ * Use keyword arguments for new table options [#820]
76
+ * Move `ruby_to_java_value` logic to `_type_cast` [#904]
77
+ * OracleEnhancedColumn.new needs sql_type_metadata including sql_type [#858]
78
+ * OracleEnhanced::JDBCQuoting and OCIQuoting [#897]
79
+ * Address `add_column_options!': undefined method `quote_value' [#647]
80
+ * Remove dirty tracking methods [#883]
81
+ * Use arel master branch for rails5 development [#645]
82
+ * Bump ruby-oci8 version to 2.2.0 or higher [#775]
83
+ * Remove jeweler dependency [#766]
84
+ * Remove required_rubygems_version [#719]
85
+ * Remove journey which is already part of Rails [#701]
86
+ * Remove dependencies with non activerecord gems [#700]
87
+ * Remove activerecord-deprecated_finders [#698]
88
+ * Use rack master branch [#697]
89
+ * Clean up gemspec file and bump rspec, ruby-plsql and ruby-oci8 versions [#717]
90
+ * Remove magic comment for utf-8 [#772, #726]
91
+ * add_dependency with ruby-oci8 only if it runs cruby, not jruby [#902]
92
+ * Install ruby-debug for jruby [#899]
93
+ * Address dirty object tracking should not mark empty text as changed [#888]
94
+ * Revert "Update matcher to skip sql statements to get `table` metadata" [#881]
95
+ * No need to set @visitor instance variable here [#854]
96
+ * log binds should not be type_casted [#818]
97
+ * Fix schema dumper errors [#810]
98
+ * Address undefined method `cast_type' [#805]
99
+ * Better fix to support "Relation#count does not support finder options anymore in Rails [#788, #787]
100
+ * ActiveRecord::Calculations#count no longer accepts an options hash argument #754
101
+ * Supress WARNINGs using `raise_error` without specific errors [#724]
102
+ * Use RSpec 3 [#707]
103
+ * Update "OracleEnhancedAdapter boolean type detection based on string column types and names" [#873]
104
+ * Update "OracleEnhancedAdapter integer type detection based on column names" [#871]
105
+ * Update "OracleEnhancedAdapter date type detection based on column names" [#868]
106
+ * Do not set emulate_dates_by_column_name or emulate_dates in specs [#870]
107
+ * Update rake spec message to show default branch name as master [#648]
108
+ * Remove `ActiveRecord::Base.default_timezone = :local` from spec_helper [#901]
109
+ * Update to rspec3 syntax to avoid deprecation notices [#776]
110
+ * Remove RAILS_GEM_VERSION [#702]
10
111
  * Run Oracle enhanced adapter unit tests using Travis CI [#789]
11
112
  * Upgrade travis-oracle to Version 2.0.1 [#903]
12
- * NoMethodError: undefined method `write' for nil:NilClass for serialized column [#798, #1004]
13
- * Support connection strings in `DATABASE_URL` [#1036]
14
- * Rebuild primary key index to default_tablespaces[:index] [#1037]
15
- * Use docker oracle xe 11g for release16 branch [#1238]
16
- * Fix deprecated warnings in Ruby 2.4.0+ [#1237]
113
+
114
+ * Known issues
115
+
116
+ - Only with JRuby
117
+ * Rails 5 : create table with primary key trigger with default primary key not returning id [#912]
118
+ * Rails 5 : dirty object tracking not working correctly for CLOB [#911]
119
+ * Rails 5 : handling of CLOB columns get failures [#910]
120
+ * Rails 5 : SQL with bind parameters when NLS_NUMERIC_CHARACTERS is set to ', '
121
+ show Java::JavaSql::SQLSyntaxErrorException: / ORA-01722: invalid number [#909]
122
+ * Rails 5 : explain should explain query with binds got Java::JavaSql::SQLException: Invalid column index [#908]
123
+ - CRuby and JRuby
124
+ * Rails 5 : create table with primary key trigger not returning id [#907]
125
+ * Rails 5 : custom methods for create, update and destroy not working [#906]
126
+ * Rails 5 : has_and_belongs_to_many test gets ORA-01400 since primary key column "ID"
127
+ not included in insert statement [#856, rails/rails#25388]
128
+ * Rails 5 : undefined method `to_i' for #<Arel::Nodes::BindParam:0x00000002c92910> [#848, rails/arel#438]
17
129
 
18
130
  ## 1.6.7 / 2016-03-08
19
131
 
data/README.md CHANGED
@@ -12,6 +12,15 @@ Oracle enhanced ActiveRecord adapter provides Oracle database access from Ruby o
12
12
 
13
13
  INSTALLATION
14
14
  ------------
15
+ ### Rails 5
16
+
17
+ Oracle enhanced adapter Rails 5 support is still in beta release, so use with caution.
18
+
19
+ ```ruby
20
+ # Use oracle as the database for Active Record
21
+ gem 'activerecord-oracle_enhanced-adapter', '=> 1.7.0.beta1'
22
+ ```
23
+
15
24
  ### Rails 4.2
16
25
 
17
26
  Oracle enhanced adapter version 1.6 just supports Rails 4.2 and does not support Rails 4.1 or lower version of Rails.
@@ -191,12 +200,6 @@ environment variable, note that the adapter name uses a dash instead of an under
191
200
  DATABASE_URL=oracle-enhanced://localhost/XE
192
201
  ```
193
202
 
194
- You can also specify a connection string via the `DATABASE_URL`, as long as it doesn't have any whitespace:
195
-
196
- ```bash
197
- DATABASE_URL=oracle-enhanced://user:secret@connection-string/(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=xe)))
198
- ```
199
-
200
203
  If you deploy JRuby on Rails application in Java application server that supports JNDI connections then you can specify JNDI connection as well:
201
204
 
202
205
  ```yml
data/RUNNING_TESTS.md CHANGED
@@ -42,7 +42,7 @@ Running tests
42
42
  bundle install
43
43
 
44
44
  * Configure database credentials in one of two ways:
45
- * copy spec/spec_config.yaml.template to spec/spec_config.yaml and modify as needed
45
+ * copy spec/spec_config.yaml.template to spec/config.yaml and modify as needed
46
46
  * set required environment variables (see DATABASE_NAME in spec_helper.rb)
47
47
 
48
48
  * Run tests with
data/Rakefile CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'bundler'
3
+ require 'bundler/gem_tasks'
3
4
  begin
4
5
  Bundler.setup(:default, :development)
5
6
  rescue Bundler::BundlerError => e
@@ -10,22 +11,6 @@ end
10
11
 
11
12
  require 'rake'
12
13
 
13
- require 'jeweler'
14
- Jeweler::Tasks.new do |gem|
15
- gem.name = "activerecord-oracle_enhanced-adapter"
16
- gem.summary = "Oracle enhanced adapter for ActiveRecord"
17
- gem.description = <<-EOS
18
- Oracle "enhanced" ActiveRecord adapter contains useful additional methods for working with new and legacy Oracle databases.
19
- This adapter is superset of original ActiveRecord Oracle adapter.
20
- EOS
21
- gem.email = "raimonds.simanovskis@gmail.com"
22
- gem.homepage = "http://github.com/rsim/oracle-enhanced"
23
- gem.authors = ["Raimonds Simanovskis"]
24
- gem.extra_rdoc_files = ['README.md']
25
- gem.license = 'MIT'
26
- end
27
- Jeweler::RubygemsDotOrgTasks.new
28
-
29
14
  require 'rspec/core/rake_task'
30
15
  RSpec::Core::RakeTask.new(:spec)
31
16
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.6.9
1
+ 1.7.0.beta1
@@ -1,16 +1,11 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
-
6
1
  Gem::Specification.new do |s|
7
2
  s.name = %q{activerecord-oracle_enhanced-adapter}
8
- s.version = "1.6.9"
3
+ s.version = "1.7.0.beta1"
9
4
 
10
5
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
6
  s.license = 'MIT'
12
7
  s.authors = [%q{Raimonds Simanovskis}]
13
- s.date = %q{2017-03-29}
8
+ s.date = %q{2016-07-18}
14
9
  s.description = %q{Oracle "enhanced" ActiveRecord adapter contains useful additional methods for working with new and legacy Oracle databases.
15
10
  This adapter is superset of original ActiveRecord Oracle adapter.
16
11
  }
@@ -36,11 +31,13 @@ This adapter is superset of original ActiveRecord Oracle adapter.
36
31
  "lib/active_record/connection_adapters/oracle_enhanced/context_index.rb",
37
32
  "lib/active_record/connection_adapters/oracle_enhanced/cpk.rb",
38
33
  "lib/active_record/connection_adapters/oracle_enhanced/database_statements.rb",
39
- "lib/active_record/connection_adapters/oracle_enhanced/dirty.rb",
40
34
  "lib/active_record/connection_adapters/oracle_enhanced/database_tasks.rb",
41
35
  "lib/active_record/connection_adapters/oracle_enhanced/jdbc_connection.rb",
36
+ "lib/active_record/connection_adapters/oracle_enhanced/jdbc_quoting.rb",
42
37
  "lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb",
38
+ "lib/active_record/connection_adapters/oracle_enhanced/oci_quoting.rb",
43
39
  "lib/active_record/connection_adapters/oracle_enhanced/procedures.rb",
40
+ "lib/active_record/connection_adapters/oracle_enhanced/quoting.rb",
44
41
  "lib/active_record/connection_adapters/oracle_enhanced/schema_creation.rb",
45
42
  "lib/active_record/connection_adapters/oracle_enhanced/schema_definitions.rb",
46
43
  "lib/active_record/connection_adapters/oracle_enhanced/schema_dumper.rb",
@@ -49,8 +46,10 @@ This adapter is superset of original ActiveRecord Oracle adapter.
49
46
  "lib/active_record/connection_adapters/oracle_enhanced/structure_dump.rb",
50
47
  "lib/active_record/connection_adapters/oracle_enhanced/version.rb",
51
48
  "lib/active_record/oracle_enhanced/type/integer.rb",
52
- "lib/active_record/oracle_enhanced/type/timestamp.rb",
49
+ "lib/active_record/oracle_enhanced/type/national_character_string.rb",
53
50
  "lib/active_record/oracle_enhanced/type/raw.rb",
51
+ "lib/active_record/oracle_enhanced/type/string.rb",
52
+ "lib/active_record/oracle_enhanced/type/text.rb",
54
53
  "lib/activerecord-oracle_enhanced-adapter.rb",
55
54
  "spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb",
56
55
  "spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb",
@@ -69,7 +68,6 @@ This adapter is superset of original ActiveRecord Oracle adapter.
69
68
  ]
70
69
  s.homepage = %q{http://github.com/rsim/oracle-enhanced}
71
70
  s.require_paths = [%q{lib}]
72
- s.rubygems_version = %q{1.8.6}
73
71
  s.summary = %q{Oracle enhanced adapter for ActiveRecord}
74
72
  s.test_files = [
75
73
  "spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb",
@@ -87,46 +85,11 @@ This adapter is superset of original ActiveRecord Oracle adapter.
87
85
  "spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb",
88
86
  "spec/spec_helper.rb"
89
87
  ]
90
-
91
- if s.respond_to? :specification_version then
92
- s.specification_version = 3
93
-
94
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
95
- s.add_development_dependency(%q<jeweler>, ["~> 2.0"])
96
- s.add_development_dependency(%q<rspec>, ["~> 2.4"])
97
- s.add_development_dependency(%q<activerecord>, ["~> 4.2.1"])
98
- s.add_development_dependency(%q<activemodel>, [">= 0"])
99
- s.add_development_dependency(%q<activesupport>, [">= 0"])
100
- s.add_development_dependency(%q<actionpack>, [">= 0"])
101
- s.add_development_dependency(%q<railties>, [">= 0"])
102
- s.add_development_dependency(%q<arel>, [">= 0"])
103
- s.add_development_dependency(%q<journey>, [">= 0"])
104
- s.add_development_dependency(%q<ruby-plsql>, [">= 0.4.4"])
105
- s.add_development_dependency(%q<ruby-oci8>, [">= 2.0.4"])
106
- else
107
- s.add_dependency(%q<jeweler>, ["~> 2.0"])
108
- s.add_dependency(%q<rspec>, ["~> 2.4"])
109
- s.add_dependency(%q<activerecord>, ["~> 4.2.1"])
110
- s.add_dependency(%q<activemodel>, [">= 0"])
111
- s.add_dependency(%q<activesupport>, [">= 0"])
112
- s.add_dependency(%q<actionpack>, [">= 0"])
113
- s.add_dependency(%q<railties>, [">= 0"])
114
- s.add_dependency(%q<arel>, [">= 0"])
115
- s.add_dependency(%q<journey>, [">= 0"])
116
- s.add_dependency(%q<ruby-plsql>, [">= 0.4.4"])
117
- s.add_dependency(%q<ruby-oci8>, [">= 2.0.4"])
118
- end
119
- else
120
- s.add_dependency(%q<jeweler>, ["~> 2.0"])
121
- s.add_dependency(%q<rspec>, ["~> 2.4"])
122
- s.add_dependency(%q<activerecord>, ["~> 4.2.1"])
123
- s.add_dependency(%q<activemodel>, [">= 0"])
124
- s.add_dependency(%q<activesupport>, [">= 0"])
125
- s.add_dependency(%q<actionpack>, [">= 0"])
126
- s.add_dependency(%q<railties>, [">= 0"])
127
- s.add_dependency(%q<arel>, [">= 0"])
128
- s.add_dependency(%q<journey>, [">= 0"])
129
- s.add_dependency(%q<ruby-plsql>, [">= 0.4.4"])
130
- s.add_dependency(%q<ruby-oci8>, [">= 2.0.4"])
131
- end
88
+ s.add_dependency(%q<rspec>, ["~> 3.3"])
89
+ s.add_dependency(%q<activerecord>, ["~> 5.0.0"])
90
+ s.add_dependency(%q<arel>, ["~> 7.0"])
91
+ s.add_dependency(%q<ruby-plsql>, [">= 0.5.0"])
92
+ s.add_dependency(%q<ruby-oci8>, [">= 2.2.0"]) if !defined?(RUBY_ENGINE) || RUBY_ENGINE == 'ruby'
93
+ s.license = 'MIT'
132
94
  end
95
+
@@ -4,11 +4,8 @@ module ActiveRecord
4
4
 
5
5
  attr_reader :table_name, :nchar, :virtual_column_data_default, :returning_id #:nodoc:
6
6
 
7
- FALSE_VALUES << 'N'
8
- TRUE_VALUES << 'Y'
7
+ def initialize(name, default, sql_type_metadata = nil, null = true, table_name = nil, virtual = false, returning_id = nil, comment = nil) #:nodoc:
9
8
 
10
- def initialize(name, default, cast_type, sql_type = nil, null = true, table_name = nil, virtual=false, returning_id=false) #:nodoc:
11
- @table_name = table_name
12
9
  @virtual = virtual
13
10
  @virtual_column_data_default = default.inspect if virtual
14
11
  @returning_id = returning_id
@@ -17,22 +14,15 @@ module ActiveRecord
17
14
  else
18
15
  default_value = self.class.extract_value_from_default(default)
19
16
  end
20
- super(name, default_value, cast_type, sql_type, null)
17
+ super(name, default_value, sql_type_metadata, null, table_name, comment: comment)
21
18
  # Is column NCHAR or NVARCHAR2 (will need to use N'...' value quoting for these data types)?
22
19
  # Define only when needed as adapter "quote" method will check at first if instance variable is defined.
23
- if sql_type
24
- @nchar = true if cast_type.class == ActiveRecord::Type::String && sql_type[0,1] == 'N'
25
- @object_type = sql_type.include? '.'
20
+ if sql_type_metadata
21
+ @object_type = sql_type_metadata.sql_type.include? '.'
26
22
  end
27
23
  # TODO: Need to investigate when `sql_type` becomes nil
28
24
  end
29
25
 
30
- def type_cast(value) #:nodoc:
31
- return OracleEnhancedColumn::string_to_raw(value) if type == :raw
32
- return guess_date_or_time(value) if type == :datetime && OracleEnhancedAdapter.emulate_dates
33
- super
34
- end
35
-
36
26
  def virtual?
37
27
  @virtual
38
28
  end
@@ -73,16 +63,12 @@ module ActiveRecord
73
63
  super
74
64
  end
75
65
 
76
- # convert RAW column values back to byte strings.
77
- def self.string_to_raw(string) #:nodoc:
78
- string
79
- end
80
-
81
66
  # Get column comment from schema definition.
82
67
  # Will work only if using default ActiveRecord connection.
83
- def comment
84
- ActiveRecord::Base.connection.column_comment(@table_name, name)
85
- end
68
+ # def comment
69
+ # #TODO: may be deprecated due to conflict with variable
70
+ # ActiveRecord::Base.connection.column_comment(@table_name, name)
71
+ # end
86
72
 
87
73
  private
88
74
 
@@ -2,65 +2,73 @@ module ActiveRecord #:nodoc:
2
2
  module ConnectionAdapters #:nodoc:
3
3
  module OracleEnhanced #:nodoc:
4
4
  module ColumnDumper #:nodoc:
5
- def self.included(base) #:nodoc:
6
- base.class_eval do
7
- private
8
- alias_method_chain :column_spec, :oracle_enhanced
9
- alias_method_chain :prepare_column_options, :oracle_enhanced
10
- alias_method_chain :migration_keys, :oracle_enhanced
11
-
12
- def oracle_enhanced_adapter?
13
- # return original method if not using 'OracleEnhanced'
14
- if (rails_env = defined?(Rails.env) ? Rails.env : (defined?(RAILS_ENV) ? RAILS_ENV : nil)) &&
15
- ActiveRecord::Base.configurations[rails_env] &&
16
- ActiveRecord::Base.configurations[rails_env]['adapter'] != 'oracle_enhanced'
17
- return false
18
- else
19
- return true
20
- end
21
- end
5
+
6
+ def column_spec(column)
7
+ spec = Hash[prepare_column_options(column).map { |k, v| [k, "#{k}: #{v}"] }]
8
+ spec[:name] = column.name.inspect
9
+ if column.virtual?
10
+ spec[:type] = "virtual"
11
+ else
12
+ spec[:type] = schema_type(column).to_s
22
13
  end
14
+ spec
23
15
  end
24
16
 
25
- def column_spec_with_oracle_enhanced(column, types)
26
- # return original method if not using 'OracleEnhanced'
27
- return column_spec_without_oracle_enhanced(column, types) unless oracle_enhanced_adapter?
17
+ def prepare_column_options(column)
18
+ spec = {}
28
19
 
29
- spec = prepare_column_options(column, types)
30
- (spec.keys - [:name, :type]).each do |k|
31
- key_s = (k == :virtual_type ? "type: " : "#{k.to_s}: ")
32
- spec[k] = key_s + spec[k]
20
+ if limit = schema_limit(column)
21
+ spec[:limit] = limit
33
22
  end
34
- spec
35
- end
36
23
 
37
- def prepare_column_options_with_oracle_enhanced(column, types)
38
- # return original method if not using 'OracleEnhanced'
39
- return prepare_column_options_without_oracle_enhanced(column, types) unless oracle_enhanced_adapter?
24
+ if precision = schema_precision(column)
25
+ spec[:precision] = precision
26
+ end
27
+
28
+ if scale = schema_scale(column)
29
+ spec[:scale] = scale
30
+ end
31
+
32
+ if virtual_as = schema_virtual_as(column)
33
+ spec[:as] = virtual_as
34
+ end
35
+
36
+ if virtual_type = schema_virtual_type(column)
37
+ spec[:virtual_type] = virtual_type
38
+ end
39
+
40
+ default = schema_default(column) if column.has_default?
41
+ spec[:default] = default unless default.nil?
42
+
43
+ spec[:null] = 'false' unless column.null
44
+
45
+ spec[:comment] = column.comment.inspect if column.comment.present?
40
46
 
41
- spec = {}
42
- spec[:name] = column.name.inspect
43
- spec[:type] = column.virtual? ? 'virtual' : column.type.to_s
44
- spec[:virtual_type] = column.type.inspect if column.virtual? && column.sql_type != 'NUMBER'
45
- spec[:limit] = column.limit.inspect if column.limit != types[column.type][:limit] && column.type != :decimal
46
- spec[:precision] = column.precision.inspect if !column.precision.nil?
47
- spec[:scale] = column.scale.inspect if !column.scale.nil?
48
- spec[:null] = 'false' if !column.null
49
- spec[:as] = column.virtual_column_data_default if column.virtual?
50
- spec[:default] = schema_default(column) if column.has_default? && !column.virtual?
51
- spec[:comment] = column.comment.inspect unless column.comment.nil?
52
- spec.delete(:default) if spec[:default].nil?
53
47
  spec
54
48
  end
55
49
 
56
- def migration_keys_with_oracle_enhanced
50
+ def migration_keys
57
51
  # TODO `& column_specs.map(&:keys).flatten` should be exetuted here
58
- # return original method if not using 'OracleEnhanced'
59
- return migration_keys_without_oracle_enhanced unless oracle_enhanced_adapter?
60
-
61
52
  [:name, :limit, :precision, :scale, :default, :null, :as, :virtual_type, :comment]
62
53
  end
54
+
55
+ private
56
+
57
+ def schema_virtual_as(column)
58
+ column.virtual_column_data_default if column.virtual?
59
+ end
60
+
61
+ def schema_virtual_type(column)
62
+ unless column.type == :decimal
63
+ column.type.inspect if column.virtual?
64
+ end
65
+ end
66
+
63
67
  end
64
68
  end
65
69
  end
70
+
71
+ module ColumnDumper #:nodoc:
72
+ prepend ConnectionAdapters::OracleEnhanced::ColumnDumper
73
+ end
66
74
  end