oracle-enhanced-enhanced 0.0.1 → 0.1.0

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.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- oracle-enhanced-enhanced (0.0.1)
4
+ oracle-enhanced-enhanced (0.1.0)
5
5
  activerecord-oracle_enhanced-adapter
6
6
 
7
7
  GEM
@@ -2,9 +2,6 @@ module ActiveRecord
2
2
  module ConnectionAdapters
3
3
  class OracleEnhancedAdapter
4
4
 
5
- # Set our new enhanced defaults
6
- set_enhanced_defaults
7
-
8
5
  # Maximum length of an Oracle VARCHAR2 field
9
6
  VARCHAR2_MAX_LENGTH = 4000
10
7
 
@@ -14,7 +11,7 @@ module ActiveRecord
14
11
  NATIVE_DATABASE_TYPES[:text] = use_varchar2 ? {:name => 'VARCHAR2', :limit => length} : {:name => 'CLOB'}
15
12
  end
16
13
 
17
- # Create convenience methods to check what storage representation is in effect
14
+ # Create convenience methods to check what text storage representation is in effect
18
15
  # e.g. text_is_clob?, text_is_varchar2?
19
16
  %w(clob varchar2).each do |format|
20
17
  (class << self; self; end).instance_eval do
@@ -24,44 +21,51 @@ module ActiveRecord
24
21
  end
25
22
  end
26
23
 
27
- # Convert an existing CLOB field into a VARCHAR2. For use in migrations.
28
- def convert_clob_to_varchar2(table_name, column_name, varchar2_length = VARCHAR2_MAX_LENGTH, temp_column_name = nil)
29
- convert_text_column_storage_type table_name, column_name, "varchar2#{varchar2_length}", temp_column_name
30
- end
31
-
32
- # Convert an existing VARCHAR2 field into a CLOB. For use in migrations.
33
- def convert_varchar2_to_clob(table_name, column_name, temp_column_name = nil)
34
- convert_text_column_storage_type table_name, column_name, 'clob', temp_column_name
35
- end
36
-
37
- private
38
-
39
24
  # Enable our enhanced settings/defaults
40
- def set_enhanced_defaults
25
+ def self.set_enhanced_defaults
41
26
  # Use varchar2(4000) for TEXT fields
42
27
  set_text_storage_representation true
43
28
 
44
29
  # Cache columns because we don't need to hit the database to check metadata all the time
30
+ #TODO: should we disable this for development?
45
31
  self.cache_columns = true
46
32
 
47
33
  # Oracle's default sequence behavious doesn't appeal to us OCD freaks who prefer monotonically increasing sequences
48
34
  self.default_sequence_start_value = "1 NOCACHE ORDER"
49
35
  end
50
36
 
37
+ # Enable the enhanced defaults
38
+ set_enhanced_defaults
39
+ end
40
+
41
+ module SchemaStatements
42
+ # Convert an existing CLOB field into a VARCHAR2. For use in migrations.
43
+ def convert_clob_to_varchar2(table_name, column_name, varchar2_length = ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter::VARCHAR2_MAX_LENGTH, temp_column_name = nil)
44
+ convert_text_column_storage_type table_name, column_name, "varchar2(#{varchar2_length})", temp_column_name
45
+ end
46
+
47
+ # Convert an existing VARCHAR2 field into a CLOB. For use in migrations.
48
+ def convert_varchar2_to_clob(table_name, column_name, temp_column_name = nil)
49
+ convert_text_column_storage_type table_name, column_name, 'clob', temp_column_name
50
+ end
51
+
52
+ private
53
+
51
54
  # Convert a field from varchar2 to clob or vice versa
52
55
  def convert_text_column_storage_type(table_name, column_name, to_type, temp_column_name)
53
- # Inspired by http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1770086700346491686
54
- temp_col = temp_column_name || 'oee_temp_col'
56
+ quoted_table_name = quote_table_name(table_name)
57
+ orig_col = quote_column_name(column_name)
58
+ temp_col = quote_column_name(temp_column_name || 'oee_temp_col')
55
59
  cmds = <<-SQL
56
- alter table #{table_name} add #{temp_col} #{to_type}
57
- update #{table_name} set #{temp_col} = #{column_name}
58
- update #{table_name} set #{column_name} = null
59
- alter table #{table_name} modify #{column_name} long
60
- alter table #{table_name} modify #{column_name} #{to_type}
61
- update #{table_name} set #{column_name} = #{temp_col}
62
- alter table #{table_name} drop column #{temp_col}
60
+ alter table #{quoted_table_name} add #{temp_col} #{to_type}
61
+ update #{quoted_table_name} set #{temp_col} = #{orig_col}
62
+ alter table #{quoted_table_name} drop column #{orig_col}
63
+ alter table #{quoted_table_name} rename column #{temp_col} to #{orig_col}
63
64
  SQL
64
- cmds.split('\n').each{|cmd| execute cmd}
65
+ cmds.split("\n").map(&:strip).each{|cmd| execute cmd}
66
+
67
+ # Also process any history table
68
+ convert_text_column_storage_type(history_table_name(table_name), column_name, to_type, temp_column_name) if history_table_exists?(table_name)
65
69
  end
66
70
  end
67
71
 
@@ -1,7 +1,7 @@
1
1
  module Oracle
2
2
  module Enhanced
3
3
  module Enhanced
4
- VERSION = "0.0.1"
4
+ VERSION = "0.1.0"
5
5
  end
6
6
  end
7
7
  end
@@ -9,8 +9,12 @@ Gem::Specification.new do |s|
9
9
  s.authors = ["Steve Lamotte"]
10
10
  s.email = ["slamotte@winnipeg.ca"]
11
11
  s.homepage = "http://gems.winnipegtransit.org"
12
- s.summary = %q{Additional enhancements/customizations to the Oracle Enhanced adapter}
13
- s.description = %q{This gem includes several enhancements and customizations to the standard Oracle Enhanced adapter, which is still required. Any customizations to this adapter's behaviour or additional Oracle-specific utilities should be added here.}
12
+ s.summary = %q{Additional enhancements/customizations to the excellent ActiveRecord Oracle Enhanced adapter}
13
+ s.description = <<-END
14
+ This gem includes several enhancements and customizations to the standard ActiveRecord Oracle Enhanced adapter, which is still required.
15
+
16
+ Any customizations to this adapter's behaviour or additional Oracle-specific utilities should be added here.
17
+ END
14
18
 
15
19
  s.rubyforge_project = "oracle-enhanced-enhanced"
16
20
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oracle-enhanced-enhanced
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 0
9
8
  - 1
10
- version: 0.0.1
9
+ - 0
10
+ version: 0.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Steve Lamotte
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-28 00:00:00 -05:00
18
+ date: 2011-05-16 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -32,7 +32,11 @@ dependencies:
32
32
  version: "0"
33
33
  type: :runtime
34
34
  version_requirements: *id001
35
- description: This gem includes several enhancements and customizations to the standard Oracle Enhanced adapter, which is still required. Any customizations to this adapter's behaviour or additional Oracle-specific utilities should be added here.
35
+ description: |
36
+ This gem includes several enhancements and customizations to the standard ActiveRecord Oracle Enhanced adapter, which is still required.
37
+
38
+ Any customizations to this adapter's behaviour or additional Oracle-specific utilities should be added here.
39
+
36
40
  email:
37
41
  - slamotte@winnipeg.ca
38
42
  executables: []
@@ -46,7 +50,7 @@ files:
46
50
  - Gemfile
47
51
  - Gemfile.lock
48
52
  - Rakefile
49
- - lib/active_directory/connection_adapters/oracle_enhanced_adapter.rb
53
+ - lib/oracle-enhanced-enhanced.rb
50
54
  - lib/oracle-enhanced-enhanced/version.rb
51
55
  - oracle-enhanced-enhanced.gemspec
52
56
  has_rdoc: true
@@ -82,6 +86,6 @@ rubyforge_project: oracle-enhanced-enhanced
82
86
  rubygems_version: 1.3.7
83
87
  signing_key:
84
88
  specification_version: 3
85
- summary: Additional enhancements/customizations to the Oracle Enhanced adapter
89
+ summary: Additional enhancements/customizations to the excellent ActiveRecord Oracle Enhanced adapter
86
90
  test_files: []
87
91