activerecord-redshift-adapter 0.9.10 → 8.0.0.beta1

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.
Files changed (92) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +25 -1
  3. data/README.md +28 -86
  4. data/lib/active_record/connection_adapters/redshift_7_0/array_parser.rb +92 -0
  5. data/lib/active_record/connection_adapters/redshift_7_0/column.rb +17 -0
  6. data/lib/active_record/connection_adapters/redshift_7_0/database_statements.rb +232 -0
  7. data/lib/active_record/connection_adapters/redshift_7_0/oid/date_time.rb +36 -0
  8. data/lib/active_record/connection_adapters/redshift_7_0/oid/decimal.rb +15 -0
  9. data/lib/active_record/connection_adapters/redshift_7_0/oid/json.rb +41 -0
  10. data/lib/active_record/connection_adapters/redshift_7_0/oid/jsonb.rb +25 -0
  11. data/lib/active_record/connection_adapters/redshift_7_0/oid/type_map_initializer.rb +62 -0
  12. data/lib/active_record/connection_adapters/redshift_7_0/oid.rb +17 -0
  13. data/lib/active_record/connection_adapters/redshift_7_0/quoting.rb +99 -0
  14. data/lib/active_record/connection_adapters/redshift_7_0/referential_integrity.rb +17 -0
  15. data/lib/active_record/connection_adapters/redshift_7_0/schema_definitions.rb +70 -0
  16. data/lib/active_record/connection_adapters/redshift_7_0/schema_dumper.rb +17 -0
  17. data/lib/active_record/connection_adapters/redshift_7_0/schema_statements.rb +421 -0
  18. data/lib/active_record/connection_adapters/redshift_7_0/type_metadata.rb +39 -0
  19. data/lib/active_record/connection_adapters/redshift_7_0/utils.rb +81 -0
  20. data/lib/active_record/connection_adapters/redshift_7_0_adapter.rb +768 -0
  21. data/lib/active_record/connection_adapters/redshift_7_1/array_parser.rb +92 -0
  22. data/lib/active_record/connection_adapters/redshift_7_1/column.rb +17 -0
  23. data/lib/active_record/connection_adapters/redshift_7_1/database_statements.rb +180 -0
  24. data/lib/active_record/connection_adapters/redshift_7_1/oid/date_time.rb +36 -0
  25. data/lib/active_record/connection_adapters/redshift_7_1/oid/decimal.rb +15 -0
  26. data/lib/active_record/connection_adapters/redshift_7_1/oid/json.rb +41 -0
  27. data/lib/active_record/connection_adapters/redshift_7_1/oid/jsonb.rb +25 -0
  28. data/lib/active_record/connection_adapters/redshift_7_1/oid/type_map_initializer.rb +62 -0
  29. data/lib/active_record/connection_adapters/redshift_7_1/oid.rb +17 -0
  30. data/lib/active_record/connection_adapters/redshift_7_1/quoting.rb +161 -0
  31. data/lib/active_record/connection_adapters/redshift_7_1/referential_integrity.rb +17 -0
  32. data/lib/active_record/connection_adapters/redshift_7_1/schema_definitions.rb +70 -0
  33. data/lib/active_record/connection_adapters/redshift_7_1/schema_dumper.rb +17 -0
  34. data/lib/active_record/connection_adapters/redshift_7_1/schema_statements.rb +422 -0
  35. data/lib/active_record/connection_adapters/redshift_7_1/type_metadata.rb +43 -0
  36. data/lib/active_record/connection_adapters/redshift_7_1/utils.rb +81 -0
  37. data/lib/active_record/connection_adapters/redshift_7_1_adapter.rb +847 -0
  38. data/lib/active_record/connection_adapters/redshift_7_2/array_parser.rb +92 -0
  39. data/lib/active_record/connection_adapters/redshift_7_2/column.rb +17 -0
  40. data/lib/active_record/connection_adapters/redshift_7_2/database_statements.rb +180 -0
  41. data/lib/active_record/connection_adapters/redshift_7_2/oid/date_time.rb +36 -0
  42. data/lib/active_record/connection_adapters/redshift_7_2/oid/decimal.rb +15 -0
  43. data/lib/active_record/connection_adapters/redshift_7_2/oid/json.rb +41 -0
  44. data/lib/active_record/connection_adapters/redshift_7_2/oid/jsonb.rb +25 -0
  45. data/lib/active_record/connection_adapters/redshift_7_2/oid/type_map_initializer.rb +62 -0
  46. data/lib/active_record/connection_adapters/redshift_7_2/oid.rb +17 -0
  47. data/lib/active_record/connection_adapters/redshift_7_2/quoting.rb +164 -0
  48. data/lib/active_record/connection_adapters/redshift_7_2/referential_integrity.rb +17 -0
  49. data/lib/active_record/connection_adapters/redshift_7_2/schema_definitions.rb +70 -0
  50. data/lib/active_record/connection_adapters/redshift_7_2/schema_dumper.rb +17 -0
  51. data/lib/active_record/connection_adapters/redshift_7_2/schema_statements.rb +422 -0
  52. data/lib/active_record/connection_adapters/redshift_7_2/type_metadata.rb +43 -0
  53. data/lib/active_record/connection_adapters/redshift_7_2/utils.rb +81 -0
  54. data/lib/active_record/connection_adapters/redshift_7_2_adapter.rb +847 -0
  55. data/lib/active_record/connection_adapters/redshift_8_0/array_parser.rb +92 -0
  56. data/lib/active_record/connection_adapters/redshift_8_0/column.rb +17 -0
  57. data/lib/active_record/connection_adapters/redshift_8_0/database_statements.rb +181 -0
  58. data/lib/active_record/connection_adapters/redshift_8_0/oid/date_time.rb +36 -0
  59. data/lib/active_record/connection_adapters/redshift_8_0/oid/decimal.rb +15 -0
  60. data/lib/active_record/connection_adapters/redshift_8_0/oid/json.rb +41 -0
  61. data/lib/active_record/connection_adapters/redshift_8_0/oid/jsonb.rb +25 -0
  62. data/lib/active_record/connection_adapters/redshift_8_0/oid/type_map_initializer.rb +62 -0
  63. data/lib/active_record/connection_adapters/redshift_8_0/oid.rb +17 -0
  64. data/lib/active_record/connection_adapters/redshift_8_0/quoting.rb +164 -0
  65. data/lib/active_record/connection_adapters/redshift_8_0/referential_integrity.rb +17 -0
  66. data/lib/active_record/connection_adapters/redshift_8_0/schema_definitions.rb +70 -0
  67. data/lib/active_record/connection_adapters/redshift_8_0/schema_dumper.rb +17 -0
  68. data/lib/active_record/connection_adapters/redshift_8_0/schema_statements.rb +422 -0
  69. data/lib/active_record/connection_adapters/redshift_8_0/type_metadata.rb +43 -0
  70. data/lib/active_record/connection_adapters/redshift_8_0/utils.rb +81 -0
  71. data/lib/active_record/connection_adapters/redshift_8_0_adapter.rb +846 -0
  72. data/lib/active_record/connection_adapters/redshift_adapter.rb +13 -1282
  73. data/lib/active_record/tasks/redshift_7_0_tasks.rb +148 -0
  74. data/lib/active_record/tasks/redshift_7_1_tasks.rb +151 -0
  75. data/lib/active_record/tasks/redshift_7_2_tasks.rb +151 -0
  76. data/lib/active_record/tasks/redshift_8_0_tasks.rb +151 -0
  77. data/lib/active_record/tasks/redshift_tasks.rb +13 -0
  78. data/lib/activerecord-redshift-adapter.rb +13 -0
  79. metadata +112 -98
  80. data/.gitignore +0 -26
  81. data/Gemfile +0 -14
  82. data/Rakefile +0 -26
  83. data/activerecord-redshift-adapter.gemspec +0 -24
  84. data/lib/activerecord_redshift/table_manager.rb +0 -230
  85. data/lib/activerecord_redshift_adapter/version.rb +0 -4
  86. data/lib/activerecord_redshift_adapter.rb +0 -4
  87. data/lib/monkeypatch_activerecord.rb +0 -195
  88. data/lib/monkeypatch_arel.rb +0 -96
  89. data/spec/active_record/base_spec.rb +0 -37
  90. data/spec/active_record/connection_adapters/redshift_adapter_spec.rb +0 -97
  91. data/spec/dummy/config/database.example.yml +0 -12
  92. data/spec/spec_helper.rb +0 -33
metadata CHANGED
@@ -1,145 +1,159 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-redshift-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.10
5
- prerelease:
4
+ version: 8.0.0.beta1
6
5
  platform: ruby
7
6
  authors:
8
- - Keith Gabryelski
9
- autorequire:
7
+ - Janusz Mordarski
8
+ - Nancy Foen
9
+ - Minero Aoki
10
+ - iamdbc
11
+ - Quentin Rousseau
12
+ - Johan Le Bray
13
+ - Owen Stephens
14
+ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2014-01-28 00:00:00.000000000 Z
17
+ date: 2024-11-25 00:00:00.000000000 Z
13
18
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: pg
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
30
19
  - !ruby/object:Gem::Dependency
31
20
  name: activerecord
32
21
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
22
  requirements:
35
- - - ! '>='
23
+ - - ">="
36
24
  - !ruby/object:Gem::Version
37
- version: 3.0.0
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
25
+ version: '7.0'
26
+ - - "<"
44
27
  - !ruby/object:Gem::Version
45
- version: 3.0.0
46
- - !ruby/object:Gem::Dependency
47
- name: activesupport
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: 3.0.0
28
+ version: '9.0'
54
29
  type: :runtime
55
30
  prerelease: false
56
31
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: 3.0.0
62
- - !ruby/object:Gem::Dependency
63
- name: arel
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
32
  requirements:
67
- - - ! '>='
33
+ - - ">="
68
34
  - !ruby/object:Gem::Version
69
- version: 3.0.0
70
- type: :runtime
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
35
+ version: '7.0'
36
+ - - "<"
76
37
  - !ruby/object:Gem::Version
77
- version: 3.0.0
38
+ version: '9.0'
78
39
  - !ruby/object:Gem::Dependency
79
- name: rspec
40
+ name: pg
80
41
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
42
  requirements:
83
- - - ! '>='
43
+ - - "~>"
84
44
  - !ruby/object:Gem::Version
85
- version: '0'
86
- type: :development
45
+ version: '1.0'
46
+ type: :runtime
87
47
  prerelease: false
88
48
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
49
  requirements:
91
- - - ! '>='
50
+ - - "~>"
92
51
  - !ruby/object:Gem::Version
93
- version: '0'
94
- description: This gem provides the Rails 3 with database adapter for AWS RedShift.
95
- email: keith@fiksu.com
52
+ version: '1.0'
53
+ description: Amazon Redshift adapter for ActiveRecord 7+
54
+ email: janusz.m@gmail.com
96
55
  executables: []
97
56
  extensions: []
98
57
  extra_rdoc_files: []
99
58
  files:
100
- - .gitignore
101
- - Gemfile
102
59
  - LICENSE
103
60
  - README.md
104
- - Rakefile
105
- - activerecord-redshift-adapter.gemspec
61
+ - lib/active_record/connection_adapters/redshift_7_0/array_parser.rb
62
+ - lib/active_record/connection_adapters/redshift_7_0/column.rb
63
+ - lib/active_record/connection_adapters/redshift_7_0/database_statements.rb
64
+ - lib/active_record/connection_adapters/redshift_7_0/oid.rb
65
+ - lib/active_record/connection_adapters/redshift_7_0/oid/date_time.rb
66
+ - lib/active_record/connection_adapters/redshift_7_0/oid/decimal.rb
67
+ - lib/active_record/connection_adapters/redshift_7_0/oid/json.rb
68
+ - lib/active_record/connection_adapters/redshift_7_0/oid/jsonb.rb
69
+ - lib/active_record/connection_adapters/redshift_7_0/oid/type_map_initializer.rb
70
+ - lib/active_record/connection_adapters/redshift_7_0/quoting.rb
71
+ - lib/active_record/connection_adapters/redshift_7_0/referential_integrity.rb
72
+ - lib/active_record/connection_adapters/redshift_7_0/schema_definitions.rb
73
+ - lib/active_record/connection_adapters/redshift_7_0/schema_dumper.rb
74
+ - lib/active_record/connection_adapters/redshift_7_0/schema_statements.rb
75
+ - lib/active_record/connection_adapters/redshift_7_0/type_metadata.rb
76
+ - lib/active_record/connection_adapters/redshift_7_0/utils.rb
77
+ - lib/active_record/connection_adapters/redshift_7_0_adapter.rb
78
+ - lib/active_record/connection_adapters/redshift_7_1/array_parser.rb
79
+ - lib/active_record/connection_adapters/redshift_7_1/column.rb
80
+ - lib/active_record/connection_adapters/redshift_7_1/database_statements.rb
81
+ - lib/active_record/connection_adapters/redshift_7_1/oid.rb
82
+ - lib/active_record/connection_adapters/redshift_7_1/oid/date_time.rb
83
+ - lib/active_record/connection_adapters/redshift_7_1/oid/decimal.rb
84
+ - lib/active_record/connection_adapters/redshift_7_1/oid/json.rb
85
+ - lib/active_record/connection_adapters/redshift_7_1/oid/jsonb.rb
86
+ - lib/active_record/connection_adapters/redshift_7_1/oid/type_map_initializer.rb
87
+ - lib/active_record/connection_adapters/redshift_7_1/quoting.rb
88
+ - lib/active_record/connection_adapters/redshift_7_1/referential_integrity.rb
89
+ - lib/active_record/connection_adapters/redshift_7_1/schema_definitions.rb
90
+ - lib/active_record/connection_adapters/redshift_7_1/schema_dumper.rb
91
+ - lib/active_record/connection_adapters/redshift_7_1/schema_statements.rb
92
+ - lib/active_record/connection_adapters/redshift_7_1/type_metadata.rb
93
+ - lib/active_record/connection_adapters/redshift_7_1/utils.rb
94
+ - lib/active_record/connection_adapters/redshift_7_1_adapter.rb
95
+ - lib/active_record/connection_adapters/redshift_7_2/array_parser.rb
96
+ - lib/active_record/connection_adapters/redshift_7_2/column.rb
97
+ - lib/active_record/connection_adapters/redshift_7_2/database_statements.rb
98
+ - lib/active_record/connection_adapters/redshift_7_2/oid.rb
99
+ - lib/active_record/connection_adapters/redshift_7_2/oid/date_time.rb
100
+ - lib/active_record/connection_adapters/redshift_7_2/oid/decimal.rb
101
+ - lib/active_record/connection_adapters/redshift_7_2/oid/json.rb
102
+ - lib/active_record/connection_adapters/redshift_7_2/oid/jsonb.rb
103
+ - lib/active_record/connection_adapters/redshift_7_2/oid/type_map_initializer.rb
104
+ - lib/active_record/connection_adapters/redshift_7_2/quoting.rb
105
+ - lib/active_record/connection_adapters/redshift_7_2/referential_integrity.rb
106
+ - lib/active_record/connection_adapters/redshift_7_2/schema_definitions.rb
107
+ - lib/active_record/connection_adapters/redshift_7_2/schema_dumper.rb
108
+ - lib/active_record/connection_adapters/redshift_7_2/schema_statements.rb
109
+ - lib/active_record/connection_adapters/redshift_7_2/type_metadata.rb
110
+ - lib/active_record/connection_adapters/redshift_7_2/utils.rb
111
+ - lib/active_record/connection_adapters/redshift_7_2_adapter.rb
112
+ - lib/active_record/connection_adapters/redshift_8_0/array_parser.rb
113
+ - lib/active_record/connection_adapters/redshift_8_0/column.rb
114
+ - lib/active_record/connection_adapters/redshift_8_0/database_statements.rb
115
+ - lib/active_record/connection_adapters/redshift_8_0/oid.rb
116
+ - lib/active_record/connection_adapters/redshift_8_0/oid/date_time.rb
117
+ - lib/active_record/connection_adapters/redshift_8_0/oid/decimal.rb
118
+ - lib/active_record/connection_adapters/redshift_8_0/oid/json.rb
119
+ - lib/active_record/connection_adapters/redshift_8_0/oid/jsonb.rb
120
+ - lib/active_record/connection_adapters/redshift_8_0/oid/type_map_initializer.rb
121
+ - lib/active_record/connection_adapters/redshift_8_0/quoting.rb
122
+ - lib/active_record/connection_adapters/redshift_8_0/referential_integrity.rb
123
+ - lib/active_record/connection_adapters/redshift_8_0/schema_definitions.rb
124
+ - lib/active_record/connection_adapters/redshift_8_0/schema_dumper.rb
125
+ - lib/active_record/connection_adapters/redshift_8_0/schema_statements.rb
126
+ - lib/active_record/connection_adapters/redshift_8_0/type_metadata.rb
127
+ - lib/active_record/connection_adapters/redshift_8_0/utils.rb
128
+ - lib/active_record/connection_adapters/redshift_8_0_adapter.rb
106
129
  - lib/active_record/connection_adapters/redshift_adapter.rb
107
- - lib/activerecord_redshift/table_manager.rb
108
- - lib/activerecord_redshift_adapter.rb
109
- - lib/activerecord_redshift_adapter/version.rb
110
- - lib/monkeypatch_activerecord.rb
111
- - lib/monkeypatch_arel.rb
112
- - spec/active_record/base_spec.rb
113
- - spec/active_record/connection_adapters/redshift_adapter_spec.rb
114
- - spec/dummy/config/database.example.yml
115
- - spec/spec_helper.rb
116
- homepage: http://github.com/fiksu/activerecord-redshift-adapter
130
+ - lib/active_record/tasks/redshift_7_0_tasks.rb
131
+ - lib/active_record/tasks/redshift_7_1_tasks.rb
132
+ - lib/active_record/tasks/redshift_7_2_tasks.rb
133
+ - lib/active_record/tasks/redshift_8_0_tasks.rb
134
+ - lib/active_record/tasks/redshift_tasks.rb
135
+ - lib/activerecord-redshift-adapter.rb
136
+ homepage: https://github.com/januszm/activerecord-redshift-adapter
117
137
  licenses:
118
- - New BSD License
119
- post_install_message:
138
+ - MIT
139
+ metadata: {}
140
+ post_install_message:
120
141
  rdoc_options: []
121
142
  require_paths:
122
143
  - lib
123
144
  required_ruby_version: !ruby/object:Gem::Requirement
124
- none: false
125
145
  requirements:
126
- - - ! '>='
146
+ - - ">="
127
147
  - !ruby/object:Gem::Version
128
- version: '0'
148
+ version: '3.0'
129
149
  required_rubygems_version: !ruby/object:Gem::Requirement
130
- none: false
131
150
  requirements:
132
- - - ! '>='
151
+ - - ">="
133
152
  - !ruby/object:Gem::Version
134
153
  version: '0'
135
154
  requirements: []
136
- rubyforge_project:
137
- rubygems_version: 1.8.25
138
- signing_key:
139
- specification_version: 3
140
- summary: Rails 3 database adapter support for AWS RedShift.
141
- test_files:
142
- - spec/active_record/base_spec.rb
143
- - spec/active_record/connection_adapters/redshift_adapter_spec.rb
144
- - spec/dummy/config/database.example.yml
145
- - spec/spec_helper.rb
155
+ rubygems_version: 3.5.22
156
+ signing_key:
157
+ specification_version: 4
158
+ summary: Amazon Redshift adapter for ActiveRecord
159
+ test_files: []
data/.gitignore DELETED
@@ -1,26 +0,0 @@
1
- # See http://help.github.com/ignore-files/ for more about ignoring files.
2
- #
3
- # If you find yourself ignoring temporary files generated by your text editor
4
- # or operating system, you probably want to add a global ignore instead:
5
- # git config --global core.excludesfile ~/.gitignore_global
6
-
7
- # Ignore bundler config
8
- /.bundle
9
-
10
- # Ignore the default SQLite database.
11
- /db/*.sqlite3
12
-
13
- # Ignore all logfiles and tempfiles.
14
- /log/*.log
15
- /tmp
16
- .idea/*
17
- database.yml
18
- /log/*.pid
19
- spec/dummy/db/*.sqlite3
20
- spec/dummy/log/*.log
21
- spec/dummy/tmp/
22
- spec/dummy/.sass-cache
23
- spec/dummy/config/database.yml
24
- spec/dummy/db/schema.rb
25
-
26
- Gemfile.lock
data/Gemfile DELETED
@@ -1,14 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- # Declare your gem's dependencies in partitioned.gemspec.
4
- # Bundler will treat runtime dependencies like base dependencies, and
5
- # development dependencies will be added by default to the :development group.
6
- gemspec
7
-
8
- # Declare any dependencies that are still in development here instead of in
9
- # your gemspec. These might include edge Rails or gems from your path or
10
- # Git. Remember to move these dependencies to your gemspec before releasing
11
- # your gem to rubygems.org.
12
-
13
- # To use debugger
14
- # gem 'ruby-debug'
data/Rakefile DELETED
@@ -1,26 +0,0 @@
1
- #!/usr/bin/env rake
2
- begin
3
- require 'bundler/setup'
4
- rescue LoadError
5
- puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
- end
7
-
8
- task :default => :spec
9
-
10
- begin
11
- require 'rdoc/task'
12
- rescue LoadError
13
- require 'rdoc/rdoc'
14
- require 'rake/rdoctask'
15
- RDoc::Task = Rake::RDocTask
16
- end
17
-
18
- RDoc::Task.new(:rdoc) do |rdoc|
19
- rdoc.rdoc_dir = 'rdoc'
20
- rdoc.title = 'activerecord-redshift-adapter'
21
- rdoc.options << '--line-numbers'
22
- rdoc.rdoc_files.include('README')
23
- rdoc.rdoc_files.include('lib/**/*.rb')
24
- end
25
-
26
- Bundler::GemHelper.install_tasks
@@ -1,24 +0,0 @@
1
- $LOAD_PATH.push File.expand_path("../lib", __FILE__)
2
-
3
- # Maintain your gem's version:
4
- require "activerecord_redshift_adapter/version"
5
-
6
- Gem::Specification.new do |s|
7
- s.name = 'activerecord-redshift-adapter'
8
- s.version = ActiverecordRedshiftAdapter::VERSION
9
- s.license = 'New BSD License'
10
- s.date = '2014-01-28'
11
- s.summary = "Rails 3 database adapter support for AWS RedShift."
12
- s.description = "This gem provides the Rails 3 with database adapter for AWS RedShift."
13
- s.authors = ["Keith Gabryelski"]
14
- s.email = 'keith@fiksu.com'
15
- s.files = `git ls-files`.split("\n")
16
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
- s.require_path = 'lib'
18
- s.homepage = 'http://github.com/fiksu/activerecord-redshift-adapter'
19
- s.add_dependency "pg"
20
- s.add_dependency "activerecord", '>= 3.0.0'
21
- s.add_dependency "activesupport", '>= 3.0.0'
22
- s.add_dependency "arel", '>= 3.0.0'
23
- s.add_development_dependency 'rspec'
24
- end
@@ -1,230 +0,0 @@
1
- module ActiverecordRedshift
2
- class TableManager
3
- attr_reader :default_options
4
-
5
- DEFAULT_OPTIONS = { :exemplar_table_name => nil, :add_identity => false, :temporary => true}
6
-
7
- def initialize(connection, default_options = {})
8
- @connection = connection
9
- table_name_options = {}
10
- if default_options[:partitioned_model]
11
- model = default_options[:partitioned_model]
12
- default_options[:exemplar_table_name] = model.table_name
13
- default_options[:schema_name] = model.configurator.schema_name
14
- end
15
-
16
- if default_options[:table_name].blank?
17
- connection_pid = @connection.execute("select pg_backend_pid() as pid").first['pid'].to_i
18
- table_name_options[:table_name] = "temporary_events_#{connection_pid}"
19
- end
20
- @default_options = DEFAULT_OPTIONS.merge(table_name_options).merge(default_options)
21
- end
22
-
23
- def partitioned_model
24
- return @default_options[:partitioned_model]
25
- end
26
-
27
- def schema_name
28
- return @default_options[:schema_name]
29
- end
30
-
31
- def exemplar_table_name
32
- return @default_options[:exemplar_table_name]
33
- end
34
-
35
- def add_identity
36
- return @default_options[:add_identity]
37
- end
38
-
39
- def temporary
40
- return @default_options[:temporary]
41
- end
42
-
43
- def base_table_name
44
- return @default_options[:table_name]
45
- end
46
-
47
- def table_name
48
- if schema_name.blank?
49
- return base_table_name
50
- end
51
- return "#{schema_name}.#{base_table_name}"
52
- end
53
-
54
- def drop_table
55
- @connection.execute("drop table #{table_name}")
56
- end
57
-
58
- def duplicate_table(options = {})
59
- current_options = @default_options.merge(options)
60
- target_table_name = current_options[:table_name]
61
- raise "target_table_name not set" if target_table_name.blank?
62
- exemplar_table_name = current_options[:exemplar_table_name]
63
- raise "exemplar_table_name not set" if exemplar_table_name.blank?
64
- table_name_elements = exemplar_table_name.split('.');
65
- if table_name_elements.length == 1
66
- table_name_elements.unshift("public")
67
- end
68
- schema_name = table_name_elements[0]
69
- parent_table_name = table_name_elements[1]
70
-
71
- # first find the diststyle
72
- ## namespace first
73
- sql = "select oid from pg_namespace where nspname = '#{schema_name}' limit 1"
74
- schema_oid = @connection.execute(sql).first['oid'].to_i
75
-
76
- ## now the diststyle 0 = even, 1 = some column
77
- sql = "select oid,reldiststyle from pg_class where relnamespace = #{schema_oid} and relname = '#{parent_table_name}' limit 1"
78
- pg_class_row = @connection.execute(sql).first
79
- reldiststyle = pg_class_row['reldiststyle'].to_i
80
- even_diststyle = (reldiststyle == 0)
81
- table_oid = pg_class_row['oid'].to_i
82
-
83
- ## get unique and primary key constraints (pg_constraints)
84
- sql = "select contype,conkey from pg_constraint where connamespace = #{schema_oid} and conrelid = #{table_oid}"
85
- primary_key = nil
86
- uniques = []
87
- @connection.execute(sql).each do |row|
88
- if row['contype'] == 'p'
89
- # primary key
90
- primary_key = row['conkey'][1..-2].split(',')
91
- elsif row['contype'] == 'u'
92
- # unique
93
- uniques << row['conkey'][1..-2].split(',')
94
- end
95
- end
96
-
97
- attnums = uniques.clone
98
- unless primary_key.blank?
99
- attnums << primary_key
100
- end
101
- attnums = attnums.flatten.uniq
102
-
103
- column_names = {}
104
- if attnums.length > 0
105
- sql = "select attname,attnum from pg_attribute where attrelid = #{table_oid} and attnum in (#{attnums.join(',')})"
106
- @connection.execute(sql).each do |row|
107
- column_names[row['attnum']] = row['attname']
108
- end
109
- end
110
-
111
- column_defaults = {}
112
- sql = "select a.attname,d.adsrc from pg_attribute as a,pg_attrdef as d where a.attrelid = d.adrelid and d.adnum = a.attnum and a.attrelid = #{table_oid}"
113
- @connection.execute(sql).each do |row|
114
- column_defaults[row['attname']] = row['adsrc']
115
- end
116
-
117
- with_search_path([schema_name]) do
118
- # select * from pg_table_def where tablename = 'bids' and schemaname = 'public';
119
- ## column, type, encoding, distkey, sortkey, not null
120
- sortkeys = []
121
- sql_columns = []
122
-
123
- if current_options[:add_identity]
124
- sql_columns << "_identity bigint identity"
125
- end
126
-
127
- sql = "select * from pg_table_def where tablename = '#{parent_table_name}' and schemaname = '#{schema_name}'"
128
- sql_column_rows = @connection.execute(sql)
129
- sql_column_rows.each do |row|
130
- column_info = []
131
- column_name = row['column']
132
- column_info << column_name
133
- column_info << row['type']
134
- if row['notnull'] == "t"
135
- column_info << "not null"
136
- end
137
- if row['distkey'] == "t"
138
- column_info << "distkey"
139
- end
140
- if row['encoding'] != 'none'
141
- column_info << "encode #{row['encoding']}"
142
- end
143
- if row['sortkey'] != "0"
144
- sortkeys[row['sortkey'].to_i - 1] = column_name
145
- end
146
- unless column_defaults[column_name].blank?
147
- column_info << "default #{column_defaults[column_name]}"
148
- end
149
-
150
- sql_columns << column_info.join(" ")
151
- end
152
-
153
- unless primary_key.blank?
154
- sql_columns << "primary key (#{primary_key.map{|pk| column_names[pk]}.join(',')})"
155
- end
156
-
157
- uniques.each do |unique|
158
- sql_columns << "unique (#{unique.map{|uk| column_names[uk]}.join(',')})"
159
- end
160
-
161
- if sortkeys.blank?
162
- sql_sortkeys = ""
163
- else
164
- sql_sortkeys = " sortkey (#{sortkeys.join(',')})"
165
- end
166
- sql = <<-SQL
167
- create #{"temporary " if current_options[:temporary]}table #{table_name}
168
- (
169
- #{sql_columns.join(', ')}
170
- ) #{"diststyle even " if even_diststyle}#{sql_sortkeys}
171
- SQL
172
- @connection.execute(sql)
173
- end
174
- end
175
-
176
- def table_def(table_name)
177
- table_parts = table_name.split('.')
178
- if table_parts.length == 1
179
- name = table_parts.first
180
- search_path = ["public"]
181
- else
182
- name = table_parts.last
183
- search_path = [table_parts.first]
184
- end
185
-
186
- with_search_path(search_path) do
187
- return @connection.execute("select * from pg_table_def where tablename = '#{name}'").to_a
188
- end
189
- end
190
-
191
- # search_path = array
192
- # modes: :prefix, :suffix, :replace
193
- def with_search_path(search_path, mode = :replace, &block)
194
- unless search_path.is_a? Array
195
- raise "search_path must be an Array"
196
- end
197
-
198
- old_search_path = get_search_path
199
- if mode == :prefix
200
- new_search_path = search_path + old_search_path
201
- elsif mode == :suffix
202
- new_search_path = old_search_path + search_path
203
- elsif mode == :replace
204
- new_search_path = search_path
205
- else
206
- raise "mode must be :prefix, :suffix, :replace"
207
- end
208
-
209
- set_search_path(new_search_path)
210
- begin
211
- yield
212
- ensure
213
- set_search_path(old_search_path)
214
- end
215
- end
216
-
217
- def get_search_path
218
- return @connection.execute("show search_path").to_a.first["search_path"].split(',').map{|p| p.delete('" ')}
219
- end
220
-
221
- def set_search_path(search_path)
222
- unless search_path.is_a? Array
223
- raise "search_path must be an Array"
224
- end
225
- quoted_search_path = search_path.map{|sp| "'#{sp}'"}.join(',')
226
- @connection.execute("set search_path = #{quoted_search_path}")
227
- end
228
-
229
- end
230
- end
@@ -1,4 +0,0 @@
1
- module ActiverecordRedshiftAdapter
2
- # the current version of this gem
3
- VERSION = "0.9.10"
4
- end
@@ -1,4 +0,0 @@
1
- require 'activerecord_redshift_adapter/version'
2
- require 'activerecord_redshift/table_manager'
3
- require 'monkeypatch_activerecord'
4
- require 'monkeypatch_arel'