index_shotgun 0.3.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +162 -0
- data/.github_changelog_generator +2 -1
- data/.rubocop.yml +26 -2
- data/.travis.yml +23 -19
- data/CHANGELOG.md +20 -0
- data/Gemfile +14 -1
- data/README.md +2 -4
- data/ci/build.sh +1 -1
- data/exe/index_shotgun +1 -1
- data/gemfiles/activerecord_5_0.gemfile +18 -3
- data/gemfiles/activerecord_5_1.gemfile +22 -0
- data/gemfiles/activerecord_5_2.gemfile +22 -0
- data/gemfiles/common.gemfile +3 -0
- data/index_shotgun.gemspec +10 -9
- data/lib/index_shotgun.rb +0 -11
- data/lib/index_shotgun/analyzer.rb +187 -185
- data/lib/index_shotgun/cli.rb +16 -16
- data/lib/index_shotgun/version.rb +1 -1
- metadata +50 -25
- data/.hound.yml +0 -2
- data/.rubocop_standard.yml +0 -196
- data/ci/wercker_setup.sh +0 -8
- data/gemfiles/activerecord_4_2.gemfile +0 -7
- data/gemfiles/databases.gemfile +0 -16
- data/gemfiles/wercker_oracle.gemfile +0 -7
- data/wercker.yml +0 -47
data/lib/index_shotgun.rb
CHANGED
@@ -7,14 +7,3 @@ module IndexShotgun
|
|
7
7
|
end
|
8
8
|
|
9
9
|
require "index_shotgun/railtie" if defined?(Rails)
|
10
|
-
|
11
|
-
begin
|
12
|
-
require "mysql2/version"
|
13
|
-
|
14
|
-
if Gem::Version.create(Mysql2::VERSION) >= Gem::Version.create("0.4.0") &&
|
15
|
-
ActiveRecord.version < Gem::Version.create("4.2.5")
|
16
|
-
raise "Requirements activerecord gem v4.2.5+ when using mysql2 gem v0.4.0+"
|
17
|
-
end
|
18
|
-
|
19
|
-
rescue LoadError
|
20
|
-
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module IndexShotgun
|
2
|
-
module Analyzer
|
2
|
+
module Analyzer # rubocop:disable Metrics/ModuleLength
|
3
3
|
require "index_shotgun/array_start_with"
|
4
4
|
|
5
5
|
class Response
|
@@ -24,7 +24,7 @@ module IndexShotgun
|
|
24
24
|
ActiveSupport::Deprecation.silence do
|
25
25
|
ActiveRecord::Base.connection.tables
|
26
26
|
end
|
27
|
-
tables.reject! {
|
27
|
+
tables.reject! {|table| exclude_tables.include?(table.downcase) }
|
28
28
|
|
29
29
|
duplicate_indexes =
|
30
30
|
tables.each_with_object([]) do |table, array|
|
@@ -33,8 +33,8 @@ module IndexShotgun
|
|
33
33
|
end
|
34
34
|
|
35
35
|
message =
|
36
|
-
duplicate_indexes.each_with_object("") do |info,
|
37
|
-
|
36
|
+
duplicate_indexes.each_with_object("") do |info, str|
|
37
|
+
str << <<~MSG
|
38
38
|
# =============================
|
39
39
|
# #{info[:index].table}
|
40
40
|
# =============================
|
@@ -43,11 +43,11 @@ module IndexShotgun
|
|
43
43
|
# To remove this duplicate index, execute:
|
44
44
|
ALTER TABLE `#{info[:index].table}` DROP INDEX `#{info[:index].name}`;
|
45
45
|
|
46
|
-
|
46
|
+
MSG
|
47
47
|
end
|
48
48
|
|
49
|
-
total_index_count = tables.map {
|
50
|
-
message <<
|
49
|
+
total_index_count = tables.map {|table| table_indexes(table).count }.sum
|
50
|
+
message << <<~MSG
|
51
51
|
# ########################################################################
|
52
52
|
# Summary of indexes
|
53
53
|
# ########################################################################
|
@@ -56,7 +56,7 @@ module IndexShotgun
|
|
56
56
|
# Total Indexes #{total_index_count}
|
57
57
|
# Total Tables #{tables.count}
|
58
58
|
|
59
|
-
|
59
|
+
MSG
|
60
60
|
|
61
61
|
response = Response.new
|
62
62
|
response.duplicate_index_count = duplicate_indexes.count
|
@@ -99,189 +99,191 @@ module IndexShotgun
|
|
99
99
|
ActiveRecord::Base.connection.indexes(table)
|
100
100
|
end
|
101
101
|
|
102
|
+
ORACLE_SYSTEM_TABLES = %w[
|
103
|
+
AQ$DEF$_AQCALL
|
104
|
+
AQ$DEF$_AQERROR
|
105
|
+
AQ$_DEF$_AQCALL_F
|
106
|
+
AQ$_DEF$_AQERROR_F
|
107
|
+
AQ$_INTERNET_AGENTS
|
108
|
+
AQ$_INTERNET_AGENT_PRIVS
|
109
|
+
AQ$_QUEUES
|
110
|
+
AQ$_QUEUE_TABLES
|
111
|
+
AQ$_SCHEDULES
|
112
|
+
CATALOG
|
113
|
+
COL
|
114
|
+
DEF$_AQCALL
|
115
|
+
DEF$_AQERROR
|
116
|
+
DEF$_CALLDEST
|
117
|
+
DEF$_DEFAULTDEST
|
118
|
+
DEF$_DESTINATION
|
119
|
+
DEF$_ERROR
|
120
|
+
DEF$_LOB
|
121
|
+
DEF$_ORIGIN
|
122
|
+
DEF$_PROPAGATOR
|
123
|
+
DEF$_PUSHED_TRANSACTIONS
|
124
|
+
HELP
|
125
|
+
LOGMNRC_DBNAME_UID_MAP
|
126
|
+
LOGMNRC_GSBA
|
127
|
+
LOGMNRC_GSII
|
128
|
+
LOGMNRC_GTCS
|
129
|
+
LOGMNRC_GTLO
|
130
|
+
LOGMNRP_CTAS_PART_MAP
|
131
|
+
LOGMNRT_MDDL$
|
132
|
+
LOGMNR_AGE_SPILL$
|
133
|
+
LOGMNR_ATTRCOL$
|
134
|
+
LOGMNR_ATTRIBUTE$
|
135
|
+
LOGMNR_CCOL$
|
136
|
+
LOGMNR_CDEF$
|
137
|
+
LOGMNR_COL$
|
138
|
+
LOGMNR_COLTYPE$
|
139
|
+
LOGMNR_DICTIONARY$
|
140
|
+
LOGMNR_DICTSTATE$
|
141
|
+
LOGMNR_ENC$
|
142
|
+
LOGMNR_ERROR$
|
143
|
+
LOGMNR_FILTER$
|
144
|
+
LOGMNR_GLOBAL$
|
145
|
+
LOGMNR_GT_TAB_INCLUDE$
|
146
|
+
LOGMNR_GT_USER_INCLUDE$
|
147
|
+
LOGMNR_GT_XID_INCLUDE$
|
148
|
+
LOGMNR_ICOL$
|
149
|
+
LOGMNR_IND$
|
150
|
+
LOGMNR_INDCOMPART$
|
151
|
+
LOGMNR_INDPART$
|
152
|
+
LOGMNR_INDSUBPART$
|
153
|
+
LOGMNR_INTEGRATED_SPILL$
|
154
|
+
LOGMNR_KOPM$
|
155
|
+
LOGMNR_LOB$
|
156
|
+
LOGMNR_LOBFRAG$
|
157
|
+
LOGMNR_LOG$
|
158
|
+
LOGMNR_LOGMNR_BUILDLOG
|
159
|
+
LOGMNR_NTAB$
|
160
|
+
LOGMNR_OBJ$
|
161
|
+
LOGMNR_OPQTYPE$
|
162
|
+
LOGMNR_PARAMETER$
|
163
|
+
LOGMNR_PARTOBJ$
|
164
|
+
LOGMNR_PROCESSED_LOG$
|
165
|
+
LOGMNR_PROPS$
|
166
|
+
LOGMNR_REFCON$
|
167
|
+
LOGMNR_RESTART_CKPT$
|
168
|
+
LOGMNR_RESTART_CKPT_TXINFO$
|
169
|
+
LOGMNR_SEED$
|
170
|
+
LOGMNR_SESSION$
|
171
|
+
LOGMNR_SESSION_ACTIONS$
|
172
|
+
LOGMNR_SESSION_EVOLVE$
|
173
|
+
LOGMNR_SPILL$
|
174
|
+
LOGMNR_SUBCOLTYPE$
|
175
|
+
LOGMNR_TAB$
|
176
|
+
LOGMNR_TABCOMPART$
|
177
|
+
LOGMNR_TABPART$
|
178
|
+
LOGMNR_TABSUBPART$
|
179
|
+
LOGMNR_TS$
|
180
|
+
LOGMNR_TYPE$
|
181
|
+
LOGMNR_UID$
|
182
|
+
LOGMNR_USER$
|
183
|
+
LOGSTDBY$APPLY_MILESTONE
|
184
|
+
LOGSTDBY$APPLY_PROGRESS
|
185
|
+
LOGSTDBY$EDS_TABLES
|
186
|
+
LOGSTDBY$EVENTS
|
187
|
+
LOGSTDBY$FLASHBACK_SCN
|
188
|
+
LOGSTDBY$HISTORY
|
189
|
+
LOGSTDBY$PARAMETERS
|
190
|
+
LOGSTDBY$PLSQL
|
191
|
+
LOGSTDBY$SCN
|
192
|
+
LOGSTDBY$SKIP
|
193
|
+
LOGSTDBY$SKIP_SUPPORT
|
194
|
+
LOGSTDBY$SKIP_TRANSACTION
|
195
|
+
MVIEW$_ADV_AJG
|
196
|
+
MVIEW$_ADV_BASETABLE
|
197
|
+
MVIEW$_ADV_CLIQUE
|
198
|
+
MVIEW$_ADV_ELIGIBLE
|
199
|
+
MVIEW$_ADV_EXCEPTIONS
|
200
|
+
MVIEW$_ADV_FILTER
|
201
|
+
MVIEW$_ADV_FILTERINSTANCE
|
202
|
+
MVIEW$_ADV_FJG
|
203
|
+
MVIEW$_ADV_GC
|
204
|
+
MVIEW$_ADV_INFO
|
205
|
+
MVIEW$_ADV_JOURNAL
|
206
|
+
MVIEW$_ADV_LEVEL
|
207
|
+
MVIEW$_ADV_LOG
|
208
|
+
MVIEW$_ADV_OUTPUT
|
209
|
+
MVIEW$_ADV_PARAMETERS
|
210
|
+
MVIEW$_ADV_PLAN
|
211
|
+
MVIEW$_ADV_PRETTY
|
212
|
+
MVIEW$_ADV_ROLLUP
|
213
|
+
MVIEW$_ADV_SQLDEPEND
|
214
|
+
MVIEW$_ADV_TEMP
|
215
|
+
MVIEW$_ADV_WORKLOAD
|
216
|
+
MVIEW_EVALUATIONS
|
217
|
+
MVIEW_EXCEPTIONS
|
218
|
+
MVIEW_FILTER
|
219
|
+
MVIEW_FILTERINSTANCE
|
220
|
+
MVIEW_LOG
|
221
|
+
MVIEW_RECOMMENDATIONS
|
222
|
+
MVIEW_WORKLOAD
|
223
|
+
OL$
|
224
|
+
OL$HINTS
|
225
|
+
OL$NODES
|
226
|
+
PRODUCT_PRIVS
|
227
|
+
PRODUCT_USER_PROFILE
|
228
|
+
PUBLICSYN
|
229
|
+
REPCAT$_AUDIT_ATTRIBUTE
|
230
|
+
REPCAT$_AUDIT_COLUMN
|
231
|
+
REPCAT$_COLUMN_GROUP
|
232
|
+
REPCAT$_CONFLICT
|
233
|
+
REPCAT$_DDL
|
234
|
+
REPCAT$_EXCEPTIONS
|
235
|
+
REPCAT$_EXTENSION
|
236
|
+
REPCAT$_FLAVORS
|
237
|
+
REPCAT$_FLAVOR_OBJECTS
|
238
|
+
REPCAT$_GENERATED
|
239
|
+
REPCAT$_GROUPED_COLUMN
|
240
|
+
REPCAT$_INSTANTIATION_DDL
|
241
|
+
REPCAT$_KEY_COLUMNS
|
242
|
+
REPCAT$_OBJECT_PARMS
|
243
|
+
REPCAT$_OBJECT_TYPES
|
244
|
+
REPCAT$_PARAMETER_COLUMN
|
245
|
+
REPCAT$_PRIORITY
|
246
|
+
REPCAT$_PRIORITY_GROUP
|
247
|
+
REPCAT$_REFRESH_TEMPLATES
|
248
|
+
REPCAT$_REPCAT
|
249
|
+
REPCAT$_REPCATLOG
|
250
|
+
REPCAT$_REPCOLUMN
|
251
|
+
REPCAT$_REPGROUP_PRIVS
|
252
|
+
REPCAT$_REPOBJECT
|
253
|
+
REPCAT$_REPPROP
|
254
|
+
REPCAT$_REPSCHEMA
|
255
|
+
REPCAT$_RESOLUTION
|
256
|
+
REPCAT$_RESOLUTION_METHOD
|
257
|
+
REPCAT$_RESOLUTION_STATISTICS
|
258
|
+
REPCAT$_RESOL_STATS_CONTROL
|
259
|
+
REPCAT$_RUNTIME_PARMS
|
260
|
+
REPCAT$_SITES_NEW
|
261
|
+
REPCAT$_SITE_OBJECTS
|
262
|
+
REPCAT$_SNAPGROUP
|
263
|
+
REPCAT$_TEMPLATE_OBJECTS
|
264
|
+
REPCAT$_TEMPLATE_PARMS
|
265
|
+
REPCAT$_TEMPLATE_REFGROUPS
|
266
|
+
REPCAT$_TEMPLATE_SITES
|
267
|
+
REPCAT$_TEMPLATE_STATUS
|
268
|
+
REPCAT$_TEMPLATE_TARGETS
|
269
|
+
REPCAT$_TEMPLATE_TYPES
|
270
|
+
REPCAT$_USER_AUTHORIZATIONS
|
271
|
+
REPCAT$_USER_PARM_VALUES
|
272
|
+
SQLPLUS_PRODUCT_PROFILE
|
273
|
+
SYSCATALOG
|
274
|
+
SYSFILES
|
275
|
+
TAB
|
276
|
+
TABQUOTAS
|
277
|
+
].freeze
|
278
|
+
|
102
279
|
def exclude_tables
|
103
280
|
return @exclude_tables if @exclude_tables
|
104
281
|
|
105
282
|
# Rails default tables
|
106
|
-
tables = %w
|
283
|
+
tables = %w[ar_internal_metadata schema_migrations]
|
107
284
|
|
108
285
|
# Oracle system tables
|
109
|
-
tables +=
|
110
|
-
AQ$DEF$_AQCALL
|
111
|
-
AQ$DEF$_AQERROR
|
112
|
-
AQ$_DEF$_AQCALL_F
|
113
|
-
AQ$_DEF$_AQERROR_F
|
114
|
-
AQ$_INTERNET_AGENTS
|
115
|
-
AQ$_INTERNET_AGENT_PRIVS
|
116
|
-
AQ$_QUEUES
|
117
|
-
AQ$_QUEUE_TABLES
|
118
|
-
AQ$_SCHEDULES
|
119
|
-
CATALOG
|
120
|
-
COL
|
121
|
-
DEF$_AQCALL
|
122
|
-
DEF$_AQERROR
|
123
|
-
DEF$_CALLDEST
|
124
|
-
DEF$_DEFAULTDEST
|
125
|
-
DEF$_DESTINATION
|
126
|
-
DEF$_ERROR
|
127
|
-
DEF$_LOB
|
128
|
-
DEF$_ORIGIN
|
129
|
-
DEF$_PROPAGATOR
|
130
|
-
DEF$_PUSHED_TRANSACTIONS
|
131
|
-
HELP
|
132
|
-
LOGMNRC_DBNAME_UID_MAP
|
133
|
-
LOGMNRC_GSBA
|
134
|
-
LOGMNRC_GSII
|
135
|
-
LOGMNRC_GTCS
|
136
|
-
LOGMNRC_GTLO
|
137
|
-
LOGMNRP_CTAS_PART_MAP
|
138
|
-
LOGMNRT_MDDL$
|
139
|
-
LOGMNR_AGE_SPILL$
|
140
|
-
LOGMNR_ATTRCOL$
|
141
|
-
LOGMNR_ATTRIBUTE$
|
142
|
-
LOGMNR_CCOL$
|
143
|
-
LOGMNR_CDEF$
|
144
|
-
LOGMNR_COL$
|
145
|
-
LOGMNR_COLTYPE$
|
146
|
-
LOGMNR_DICTIONARY$
|
147
|
-
LOGMNR_DICTSTATE$
|
148
|
-
LOGMNR_ENC$
|
149
|
-
LOGMNR_ERROR$
|
150
|
-
LOGMNR_FILTER$
|
151
|
-
LOGMNR_GLOBAL$
|
152
|
-
LOGMNR_GT_TAB_INCLUDE$
|
153
|
-
LOGMNR_GT_USER_INCLUDE$
|
154
|
-
LOGMNR_GT_XID_INCLUDE$
|
155
|
-
LOGMNR_ICOL$
|
156
|
-
LOGMNR_IND$
|
157
|
-
LOGMNR_INDCOMPART$
|
158
|
-
LOGMNR_INDPART$
|
159
|
-
LOGMNR_INDSUBPART$
|
160
|
-
LOGMNR_INTEGRATED_SPILL$
|
161
|
-
LOGMNR_KOPM$
|
162
|
-
LOGMNR_LOB$
|
163
|
-
LOGMNR_LOBFRAG$
|
164
|
-
LOGMNR_LOG$
|
165
|
-
LOGMNR_LOGMNR_BUILDLOG
|
166
|
-
LOGMNR_NTAB$
|
167
|
-
LOGMNR_OBJ$
|
168
|
-
LOGMNR_OPQTYPE$
|
169
|
-
LOGMNR_PARAMETER$
|
170
|
-
LOGMNR_PARTOBJ$
|
171
|
-
LOGMNR_PROCESSED_LOG$
|
172
|
-
LOGMNR_PROPS$
|
173
|
-
LOGMNR_REFCON$
|
174
|
-
LOGMNR_RESTART_CKPT$
|
175
|
-
LOGMNR_RESTART_CKPT_TXINFO$
|
176
|
-
LOGMNR_SEED$
|
177
|
-
LOGMNR_SESSION$
|
178
|
-
LOGMNR_SESSION_ACTIONS$
|
179
|
-
LOGMNR_SESSION_EVOLVE$
|
180
|
-
LOGMNR_SPILL$
|
181
|
-
LOGMNR_SUBCOLTYPE$
|
182
|
-
LOGMNR_TAB$
|
183
|
-
LOGMNR_TABCOMPART$
|
184
|
-
LOGMNR_TABPART$
|
185
|
-
LOGMNR_TABSUBPART$
|
186
|
-
LOGMNR_TS$
|
187
|
-
LOGMNR_TYPE$
|
188
|
-
LOGMNR_UID$
|
189
|
-
LOGMNR_USER$
|
190
|
-
LOGSTDBY$APPLY_MILESTONE
|
191
|
-
LOGSTDBY$APPLY_PROGRESS
|
192
|
-
LOGSTDBY$EDS_TABLES
|
193
|
-
LOGSTDBY$EVENTS
|
194
|
-
LOGSTDBY$FLASHBACK_SCN
|
195
|
-
LOGSTDBY$HISTORY
|
196
|
-
LOGSTDBY$PARAMETERS
|
197
|
-
LOGSTDBY$PLSQL
|
198
|
-
LOGSTDBY$SCN
|
199
|
-
LOGSTDBY$SKIP
|
200
|
-
LOGSTDBY$SKIP_SUPPORT
|
201
|
-
LOGSTDBY$SKIP_TRANSACTION
|
202
|
-
MVIEW$_ADV_AJG
|
203
|
-
MVIEW$_ADV_BASETABLE
|
204
|
-
MVIEW$_ADV_CLIQUE
|
205
|
-
MVIEW$_ADV_ELIGIBLE
|
206
|
-
MVIEW$_ADV_EXCEPTIONS
|
207
|
-
MVIEW$_ADV_FILTER
|
208
|
-
MVIEW$_ADV_FILTERINSTANCE
|
209
|
-
MVIEW$_ADV_FJG
|
210
|
-
MVIEW$_ADV_GC
|
211
|
-
MVIEW$_ADV_INFO
|
212
|
-
MVIEW$_ADV_JOURNAL
|
213
|
-
MVIEW$_ADV_LEVEL
|
214
|
-
MVIEW$_ADV_LOG
|
215
|
-
MVIEW$_ADV_OUTPUT
|
216
|
-
MVIEW$_ADV_PARAMETERS
|
217
|
-
MVIEW$_ADV_PLAN
|
218
|
-
MVIEW$_ADV_PRETTY
|
219
|
-
MVIEW$_ADV_ROLLUP
|
220
|
-
MVIEW$_ADV_SQLDEPEND
|
221
|
-
MVIEW$_ADV_TEMP
|
222
|
-
MVIEW$_ADV_WORKLOAD
|
223
|
-
MVIEW_EVALUATIONS
|
224
|
-
MVIEW_EXCEPTIONS
|
225
|
-
MVIEW_FILTER
|
226
|
-
MVIEW_FILTERINSTANCE
|
227
|
-
MVIEW_LOG
|
228
|
-
MVIEW_RECOMMENDATIONS
|
229
|
-
MVIEW_WORKLOAD
|
230
|
-
OL$
|
231
|
-
OL$HINTS
|
232
|
-
OL$NODES
|
233
|
-
PRODUCT_PRIVS
|
234
|
-
PRODUCT_USER_PROFILE
|
235
|
-
PUBLICSYN
|
236
|
-
REPCAT$_AUDIT_ATTRIBUTE
|
237
|
-
REPCAT$_AUDIT_COLUMN
|
238
|
-
REPCAT$_COLUMN_GROUP
|
239
|
-
REPCAT$_CONFLICT
|
240
|
-
REPCAT$_DDL
|
241
|
-
REPCAT$_EXCEPTIONS
|
242
|
-
REPCAT$_EXTENSION
|
243
|
-
REPCAT$_FLAVORS
|
244
|
-
REPCAT$_FLAVOR_OBJECTS
|
245
|
-
REPCAT$_GENERATED
|
246
|
-
REPCAT$_GROUPED_COLUMN
|
247
|
-
REPCAT$_INSTANTIATION_DDL
|
248
|
-
REPCAT$_KEY_COLUMNS
|
249
|
-
REPCAT$_OBJECT_PARMS
|
250
|
-
REPCAT$_OBJECT_TYPES
|
251
|
-
REPCAT$_PARAMETER_COLUMN
|
252
|
-
REPCAT$_PRIORITY
|
253
|
-
REPCAT$_PRIORITY_GROUP
|
254
|
-
REPCAT$_REFRESH_TEMPLATES
|
255
|
-
REPCAT$_REPCAT
|
256
|
-
REPCAT$_REPCATLOG
|
257
|
-
REPCAT$_REPCOLUMN
|
258
|
-
REPCAT$_REPGROUP_PRIVS
|
259
|
-
REPCAT$_REPOBJECT
|
260
|
-
REPCAT$_REPPROP
|
261
|
-
REPCAT$_REPSCHEMA
|
262
|
-
REPCAT$_RESOLUTION
|
263
|
-
REPCAT$_RESOLUTION_METHOD
|
264
|
-
REPCAT$_RESOLUTION_STATISTICS
|
265
|
-
REPCAT$_RESOL_STATS_CONTROL
|
266
|
-
REPCAT$_RUNTIME_PARMS
|
267
|
-
REPCAT$_SITES_NEW
|
268
|
-
REPCAT$_SITE_OBJECTS
|
269
|
-
REPCAT$_SNAPGROUP
|
270
|
-
REPCAT$_TEMPLATE_OBJECTS
|
271
|
-
REPCAT$_TEMPLATE_PARMS
|
272
|
-
REPCAT$_TEMPLATE_REFGROUPS
|
273
|
-
REPCAT$_TEMPLATE_SITES
|
274
|
-
REPCAT$_TEMPLATE_STATUS
|
275
|
-
REPCAT$_TEMPLATE_TARGETS
|
276
|
-
REPCAT$_TEMPLATE_TYPES
|
277
|
-
REPCAT$_USER_AUTHORIZATIONS
|
278
|
-
REPCAT$_USER_PARM_VALUES
|
279
|
-
SQLPLUS_PRODUCT_PROFILE
|
280
|
-
SYSCATALOG
|
281
|
-
SYSFILES
|
282
|
-
TAB
|
283
|
-
TABQUOTAS
|
284
|
-
)
|
286
|
+
tables += ORACLE_SYSTEM_TABLES
|
285
287
|
|
286
288
|
@exclude_tables = tables.map(&:downcase)
|
287
289
|
@exclude_tables
|
data/lib/index_shotgun/cli.rb
CHANGED
@@ -56,24 +56,24 @@ module IndexShotgun
|
|
56
56
|
|
57
57
|
private
|
58
58
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
59
|
+
def analyze(adapter_name, gem_name = nil)
|
60
|
+
gem_name ||= adapter_name
|
61
|
+
begin
|
62
|
+
require gem_name
|
63
|
+
rescue LoadError
|
64
|
+
puts "[ERROR] #{adapter_name} is not installed. Please run `gem install #{gem_name}` and install gem"
|
65
|
+
exit!
|
66
|
+
end
|
67
67
|
|
68
|
-
|
68
|
+
config = options.reverse_merge(adapter: adapter_name)
|
69
69
|
|
70
|
-
|
71
|
-
|
70
|
+
ask_password = config.delete("ask_password")
|
71
|
+
config[:password] = ask("Input password (hidden):", echo: false) if ask_password
|
72
72
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
73
|
+
ActiveRecord::Base.establish_connection(config)
|
74
|
+
response = IndexShotgun::Analyzer.perform
|
75
|
+
puts response.message
|
76
|
+
response.exit_if_failure!
|
77
|
+
end
|
78
78
|
end
|
79
79
|
end
|