activerecord-redshift-adapter 0.9.12 → 8.0.0.beta2
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.
- checksums.yaml +5 -13
- data/LICENSE +25 -1
- data/README.md +29 -86
- data/lib/active_record/connection_adapters/redshift_7_0/array_parser.rb +92 -0
- data/lib/active_record/connection_adapters/redshift_7_0/column.rb +17 -0
- data/lib/active_record/connection_adapters/redshift_7_0/database_statements.rb +232 -0
- data/lib/active_record/connection_adapters/redshift_7_0/oid/date_time.rb +36 -0
- data/lib/active_record/connection_adapters/redshift_7_0/oid/decimal.rb +15 -0
- data/lib/active_record/connection_adapters/redshift_7_0/oid/json.rb +41 -0
- data/lib/active_record/connection_adapters/redshift_7_0/oid/jsonb.rb +25 -0
- data/lib/active_record/connection_adapters/redshift_7_0/oid/type_map_initializer.rb +62 -0
- data/lib/active_record/connection_adapters/redshift_7_0/oid.rb +17 -0
- data/lib/active_record/connection_adapters/redshift_7_0/quoting.rb +99 -0
- data/lib/active_record/connection_adapters/redshift_7_0/referential_integrity.rb +17 -0
- data/lib/active_record/connection_adapters/redshift_7_0/schema_definitions.rb +70 -0
- data/lib/active_record/connection_adapters/redshift_7_0/schema_dumper.rb +17 -0
- data/lib/active_record/connection_adapters/redshift_7_0/schema_statements.rb +421 -0
- data/lib/active_record/connection_adapters/redshift_7_0/type_metadata.rb +39 -0
- data/lib/active_record/connection_adapters/redshift_7_0/utils.rb +81 -0
- data/lib/active_record/connection_adapters/redshift_7_0_adapter.rb +765 -0
- data/lib/active_record/connection_adapters/redshift_7_1/array_parser.rb +92 -0
- data/lib/active_record/connection_adapters/redshift_7_1/column.rb +17 -0
- data/lib/active_record/connection_adapters/redshift_7_1/database_statements.rb +180 -0
- data/lib/active_record/connection_adapters/redshift_7_1/oid/date_time.rb +36 -0
- data/lib/active_record/connection_adapters/redshift_7_1/oid/decimal.rb +15 -0
- data/lib/active_record/connection_adapters/redshift_7_1/oid/json.rb +41 -0
- data/lib/active_record/connection_adapters/redshift_7_1/oid/jsonb.rb +25 -0
- data/lib/active_record/connection_adapters/redshift_7_1/oid/type_map_initializer.rb +62 -0
- data/lib/active_record/connection_adapters/redshift_7_1/oid.rb +17 -0
- data/lib/active_record/connection_adapters/redshift_7_1/quoting.rb +161 -0
- data/lib/active_record/connection_adapters/redshift_7_1/referential_integrity.rb +17 -0
- data/lib/active_record/connection_adapters/redshift_7_1/schema_definitions.rb +70 -0
- data/lib/active_record/connection_adapters/redshift_7_1/schema_dumper.rb +17 -0
- data/lib/active_record/connection_adapters/redshift_7_1/schema_statements.rb +422 -0
- data/lib/active_record/connection_adapters/redshift_7_1/type_metadata.rb +43 -0
- data/lib/active_record/connection_adapters/redshift_7_1/utils.rb +81 -0
- data/lib/active_record/connection_adapters/redshift_7_1_adapter.rb +844 -0
- data/lib/active_record/connection_adapters/redshift_7_2/array_parser.rb +92 -0
- data/lib/active_record/connection_adapters/redshift_7_2/column.rb +17 -0
- data/lib/active_record/connection_adapters/redshift_7_2/database_statements.rb +180 -0
- data/lib/active_record/connection_adapters/redshift_7_2/oid/date_time.rb +36 -0
- data/lib/active_record/connection_adapters/redshift_7_2/oid/decimal.rb +15 -0
- data/lib/active_record/connection_adapters/redshift_7_2/oid/json.rb +41 -0
- data/lib/active_record/connection_adapters/redshift_7_2/oid/jsonb.rb +25 -0
- data/lib/active_record/connection_adapters/redshift_7_2/oid/type_map_initializer.rb +62 -0
- data/lib/active_record/connection_adapters/redshift_7_2/oid.rb +17 -0
- data/lib/active_record/connection_adapters/redshift_7_2/quoting.rb +164 -0
- data/lib/active_record/connection_adapters/redshift_7_2/referential_integrity.rb +17 -0
- data/lib/active_record/connection_adapters/redshift_7_2/schema_definitions.rb +70 -0
- data/lib/active_record/connection_adapters/redshift_7_2/schema_dumper.rb +17 -0
- data/lib/active_record/connection_adapters/redshift_7_2/schema_statements.rb +422 -0
- data/lib/active_record/connection_adapters/redshift_7_2/type_metadata.rb +43 -0
- data/lib/active_record/connection_adapters/redshift_7_2/utils.rb +81 -0
- data/lib/active_record/connection_adapters/redshift_7_2_adapter.rb +844 -0
- data/lib/active_record/connection_adapters/redshift_8_0/array_parser.rb +92 -0
- data/lib/active_record/connection_adapters/redshift_8_0/column.rb +17 -0
- data/lib/active_record/connection_adapters/redshift_8_0/database_statements.rb +181 -0
- data/lib/active_record/connection_adapters/redshift_8_0/oid/date_time.rb +36 -0
- data/lib/active_record/connection_adapters/redshift_8_0/oid/decimal.rb +15 -0
- data/lib/active_record/connection_adapters/redshift_8_0/oid/json.rb +41 -0
- data/lib/active_record/connection_adapters/redshift_8_0/oid/jsonb.rb +25 -0
- data/lib/active_record/connection_adapters/redshift_8_0/oid/type_map_initializer.rb +62 -0
- data/lib/active_record/connection_adapters/redshift_8_0/oid.rb +17 -0
- data/lib/active_record/connection_adapters/redshift_8_0/quoting.rb +164 -0
- data/lib/active_record/connection_adapters/redshift_8_0/referential_integrity.rb +17 -0
- data/lib/active_record/connection_adapters/redshift_8_0/schema_definitions.rb +70 -0
- data/lib/active_record/connection_adapters/redshift_8_0/schema_dumper.rb +17 -0
- data/lib/active_record/connection_adapters/redshift_8_0/schema_statements.rb +422 -0
- data/lib/active_record/connection_adapters/redshift_8_0/type_metadata.rb +43 -0
- data/lib/active_record/connection_adapters/redshift_8_0/utils.rb +81 -0
- data/lib/active_record/connection_adapters/redshift_8_0_adapter.rb +843 -0
- data/lib/active_record/connection_adapters/redshift_adapter.rb +13 -1286
- data/lib/active_record/tasks/redshift_7_0_tasks.rb +148 -0
- data/lib/active_record/tasks/redshift_7_1_tasks.rb +151 -0
- data/lib/active_record/tasks/redshift_7_2_tasks.rb +151 -0
- data/lib/active_record/tasks/redshift_8_0_tasks.rb +151 -0
- data/lib/active_record/tasks/redshift_tasks.rb +13 -0
- data/lib/activerecord-redshift-adapter.rb +13 -0
- metadata +110 -84
- data/.gitignore +0 -26
- data/Gemfile +0 -14
- data/Rakefile +0 -26
- data/activerecord-redshift-adapter.gemspec +0 -24
- data/lib/activerecord_redshift/table_manager.rb +0 -230
- data/lib/activerecord_redshift_adapter/version.rb +0 -4
- data/lib/activerecord_redshift_adapter.rb +0 -4
- data/lib/monkeypatch_activerecord.rb +0 -195
- data/lib/monkeypatch_arel.rb +0 -96
- data/spec/active_record/base_spec.rb +0 -37
- data/spec/active_record/connection_adapters/redshift_adapter_spec.rb +0 -97
- data/spec/dummy/config/database.example.yml +0 -12
- data/spec/spec_helper.rb +0 -33
metadata
CHANGED
@@ -1,133 +1,159 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-redshift-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 8.0.0.beta2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
|
7
|
+
- Janusz Mordarski
|
8
|
+
- Nancy Foen
|
9
|
+
- Minero Aoki
|
10
|
+
- iamdbc
|
11
|
+
- Quentin Rousseau
|
12
|
+
- Johan Le Bray
|
13
|
+
- Owen Stephens
|
14
|
+
autorequire:
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
|
-
date:
|
17
|
+
date: 2024-11-26 00:00:00.000000000 Z
|
12
18
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: pg
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ! '>='
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ! '>='
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
19
|
- !ruby/object:Gem::Dependency
|
28
20
|
name: activerecord
|
29
21
|
requirement: !ruby/object:Gem::Requirement
|
30
22
|
requirements:
|
31
|
-
- -
|
23
|
+
- - ">="
|
32
24
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
-
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ! '>='
|
25
|
+
version: '7.0'
|
26
|
+
- - "<"
|
39
27
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: activesupport
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ! '>='
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: 3.0.0
|
28
|
+
version: '9.0'
|
48
29
|
type: :runtime
|
49
30
|
prerelease: false
|
50
31
|
version_requirements: !ruby/object:Gem::Requirement
|
51
32
|
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 3.0.0
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: arel
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
33
|
+
- - ">="
|
60
34
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
-
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ! '>='
|
35
|
+
version: '7.0'
|
36
|
+
- - "<"
|
67
37
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
38
|
+
version: '9.0'
|
69
39
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
40
|
+
name: pg
|
71
41
|
requirement: !ruby/object:Gem::Requirement
|
72
42
|
requirements:
|
73
|
-
- -
|
43
|
+
- - "~>"
|
74
44
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :
|
45
|
+
version: '1.0'
|
46
|
+
type: :runtime
|
77
47
|
prerelease: false
|
78
48
|
version_requirements: !ruby/object:Gem::Requirement
|
79
49
|
requirements:
|
80
|
-
- -
|
50
|
+
- - "~>"
|
81
51
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
description:
|
84
|
-
email:
|
52
|
+
version: '1.0'
|
53
|
+
description: Amazon Redshift adapter for ActiveRecord 7+
|
54
|
+
email: janusz.m@gmail.com
|
85
55
|
executables: []
|
86
56
|
extensions: []
|
87
57
|
extra_rdoc_files: []
|
88
58
|
files:
|
89
|
-
- .gitignore
|
90
|
-
- Gemfile
|
91
59
|
- LICENSE
|
92
60
|
- README.md
|
93
|
-
-
|
94
|
-
-
|
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
|
95
129
|
- lib/active_record/connection_adapters/redshift_adapter.rb
|
96
|
-
- lib/
|
97
|
-
- lib/
|
98
|
-
- lib/
|
99
|
-
- lib/
|
100
|
-
- lib/
|
101
|
-
-
|
102
|
-
|
103
|
-
- spec/dummy/config/database.example.yml
|
104
|
-
- spec/spec_helper.rb
|
105
|
-
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
|
106
137
|
licenses:
|
107
|
-
-
|
138
|
+
- MIT
|
108
139
|
metadata: {}
|
109
|
-
post_install_message:
|
140
|
+
post_install_message:
|
110
141
|
rdoc_options: []
|
111
142
|
require_paths:
|
112
143
|
- lib
|
113
144
|
required_ruby_version: !ruby/object:Gem::Requirement
|
114
145
|
requirements:
|
115
|
-
- -
|
146
|
+
- - ">="
|
116
147
|
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
148
|
+
version: '3.0'
|
118
149
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
150
|
requirements:
|
120
|
-
- -
|
151
|
+
- - ">="
|
121
152
|
- !ruby/object:Gem::Version
|
122
153
|
version: '0'
|
123
154
|
requirements: []
|
124
|
-
|
125
|
-
|
126
|
-
signing_key:
|
155
|
+
rubygems_version: 3.5.23
|
156
|
+
signing_key:
|
127
157
|
specification_version: 4
|
128
|
-
summary:
|
129
|
-
test_files:
|
130
|
-
- spec/active_record/base_spec.rb
|
131
|
-
- spec/active_record/connection_adapters/redshift_adapter_spec.rb
|
132
|
-
- spec/dummy/config/database.example.yml
|
133
|
-
- spec/spec_helper.rb
|
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-03-30'
|
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
|