sequel_oracle_extensions 0.6.4 → 0.6.5
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/sequel/oracle_extensions/schemata.rb +37 -31
- data/sequel_oracle_extensions.gemspec +5 -10
- metadata +7 -9
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.6.
|
1
|
+
0.6.5
|
@@ -28,7 +28,7 @@ module Sequel
|
|
28
28
|
def table_metadata(table,options={})
|
29
29
|
columns = schema table, options
|
30
30
|
attributes = columns.instance_eval{ remove_instance_variable :@features }
|
31
|
-
attributes[:columns] =
|
31
|
+
attributes[:columns] = columns
|
32
32
|
|
33
33
|
# Collect table partitioning information, if applicable.
|
34
34
|
if attributes[:partitioning]
|
@@ -39,14 +39,16 @@ module Sequel
|
|
39
39
|
ds = ds.where :owner => schema unless schema.nil?
|
40
40
|
|
41
41
|
# Basic partitioning info.
|
42
|
-
attributes[:partitioning] =
|
43
|
-
|
44
|
-
from(:"#{who}_part_tables").
|
42
|
+
attributes[:partitioning] = Hash[
|
43
|
+
ds.select(:partitioning_type.as(:type), :interval, :subpartitioning_type.as(:subtype)).
|
44
|
+
from(:"#{who}_part_tables").first(:table_name=>table).
|
45
|
+
map{|k,v| [k, k==:interval ? v : v.downcase.to_sym] }
|
46
|
+
]
|
45
47
|
|
46
48
|
# Partitioning key column info.
|
47
|
-
attributes[:partitioning][:key] =
|
48
|
-
|
49
|
-
where(:object_type=>'TABLE', :name=>table).map{|r| r.values.
|
49
|
+
attributes[:partitioning][:key] =
|
50
|
+
ds.select(:column_name).from(:"#{who}_part_key_columns").order(:column_position).
|
51
|
+
where(:object_type=>'TABLE', :name=>table).map{|r| outm[r.values.first] }
|
50
52
|
end
|
51
53
|
|
52
54
|
attributes
|
@@ -125,19 +127,13 @@ module Sequel
|
|
125
127
|
order(:status.desc, :index_name, :ic__column_position)
|
126
128
|
ds = ds.where :i__owner => schema, :c__index_owner => schema unless schema.nil?
|
127
129
|
ds = ds.where :i__status => (opts[:valid] ? 'VALID' : 'UNUSABLE') unless opts[:valid].nil?
|
128
|
-
unless opts[:all]
|
129
|
-
pk = from(:"#{who}_constraints".as(:c)).where(:c__constraint_type=>'P').
|
130
|
-
where(:c__index_name => :i__index_name)
|
131
|
-
pk = pk.where :c__owner => schema unless schema.nil?
|
132
|
-
ds = ds.where ~pk.exists
|
133
|
-
end
|
134
130
|
|
135
131
|
# Collect the indexes as a hash of subhashes, including a column list.
|
136
|
-
# As a followup, collect any additional metadata about the indexes (such as bitmap join columns).
|
137
132
|
hash, join_indexes = {}, []
|
138
133
|
ds.each do |row|
|
139
134
|
key = outm[row[:index_name]]
|
140
135
|
unless subhash = hash[key]
|
136
|
+
# Unconditional attributes
|
141
137
|
subhash = hash[key] = {
|
142
138
|
:columns=>[], :unique=>(row[:uniqueness]=='UNIQUE'),
|
143
139
|
:db_type=>row[:index_type], :logging=>(row[:logging]=='YES'),
|
@@ -145,28 +141,38 @@ module Sequel
|
|
145
141
|
:tablespace=>outm[row[:tablespace_name]], :partitioned=>(row[:partitioned]=='YES'),
|
146
142
|
:visible=>(row[:visibility]=='VISIBLE'), :compress=>(row[:compression]!='DISABLED')
|
147
143
|
}
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
end
|
144
|
+
|
145
|
+
# Conditional attributes
|
146
|
+
subhash[:type] = $1.downcase.intern if subhash[:db_type] =~ /\b(BITMAP|NORMAL|DOMAIN)$/i
|
152
147
|
subhash[:function_based] = true if /^FUNCTION-BASED\b/ === subhash[:db_type]
|
153
148
|
subhash[:valid] = (row[:status]=='VALID') unless row[:status]=='N/A'
|
154
|
-
|
155
|
-
join_indexes << row[:index_name]
|
156
|
-
subhash[:join] = []
|
157
|
-
end
|
149
|
+
join_indexes << row[:index_name] and subhash[:join] = [] if row[:join_index]=='YES'
|
158
150
|
end
|
159
151
|
subhash[:columns] << outm[row[:column_name]]
|
160
152
|
end
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
subhash[:join][pos] = outm[row[:inner_table_column]]
|
153
|
+
|
154
|
+
# Exclude the primary key index, if required and applicable.
|
155
|
+
# NOTE: Disabled primary keys do not use any indexes, so they are not applicable here.
|
156
|
+
if ! opts[:all] and pk = primary_key(table)
|
157
|
+
if pk[:using_index] then hash.delete pk[:using_index]
|
158
|
+
elsif pk[:enabled] then hash.delete_if {|k,v| v[:columns]==pk[:columns] }
|
159
|
+
end
|
169
160
|
end
|
161
|
+
|
162
|
+
# Collect any additional metadata about the indexes (such as bitmap join columns).
|
163
|
+
unless join_indexes.empty?
|
164
|
+
ds = metadata_dataset.from(:"#{who}_join_ind_columns").where(:index_name=>join_indexes)
|
165
|
+
ds = ds.where :index_owner => schema unless schema.nil?
|
166
|
+
ds.each do |row|
|
167
|
+
subhash = hash[outm[row[:index_name]]]
|
168
|
+
ref_column = outm[row[:outer_table_column]]
|
169
|
+
pos = subhash[:columns].index ref_column
|
170
|
+
subhash[:columns][pos] = outm["#{row[:outer_table_name]}__#{ref_column}"]
|
171
|
+
subhash[:join][pos] = outm[row[:inner_table_column]]
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
# Done.
|
170
176
|
hash
|
171
177
|
end
|
172
178
|
|
@@ -444,6 +450,7 @@ module Sequel
|
|
444
450
|
order(:table_name, :status.desc, :constraint_name, :cc__position)
|
445
451
|
ds = ds.where :c__owner => schema unless schema.nil?
|
446
452
|
ds = ds.where :c__status => (options[:enabled] ? 'ENABLED' : 'DISABLED') unless options[:enabled].nil?
|
453
|
+
ds = ds.where :c__validated => (options[:validated] ? 'VALIDATED' : 'NOT VALIDATED') unless options[:validated].nil?
|
447
454
|
if constraint_type == 'R'
|
448
455
|
ds = ds.select_more(:c__r_constraint_name, :t__table_name.as(:r_table_name)).
|
449
456
|
join(:"#{x_cons}traints___t", [ [:owner,:c__r_owner], [:constraint_name,:c__r_constraint_name] ]).
|
@@ -451,7 +458,6 @@ module Sequel
|
|
451
458
|
else
|
452
459
|
ds = ds.select_more(:c__index_name)
|
453
460
|
end
|
454
|
-
ds = ds.limit(1) if constraint_type == 'P'
|
455
461
|
|
456
462
|
# Return the table constraints as a hash of subhashes, including a column list.
|
457
463
|
hash = {}
|
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{sequel_oracle_extensions}
|
8
|
-
s.version = "0.6.
|
8
|
+
s.version = "0.6.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.date = %q{2011-08-
|
11
|
+
s.authors = [%q{Joe Khoobyar}]
|
12
|
+
s.date = %q{2011-08-26}
|
13
13
|
s.description = %q{Oracle extensions for Sequel, including MERGE statements, optimizer hints, and schema extensions.}
|
14
14
|
s.email = %q{joe@ankhcraft.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -34,14 +34,9 @@ Gem::Specification.new do |s|
|
|
34
34
|
"spec/spec_helper.rb"
|
35
35
|
]
|
36
36
|
s.homepage = %q{http://github.com/joekhoobyar/sequel_oracle_extensions}
|
37
|
-
s.require_paths = [
|
38
|
-
s.rubygems_version = %q{1.
|
37
|
+
s.require_paths = [%q{lib}]
|
38
|
+
s.rubygems_version = %q{1.8.8}
|
39
39
|
s.summary = %q{Oracle MERGE, optimizer hints, and schema extensions for Sequel}
|
40
|
-
s.test_files = [
|
41
|
-
"spec/sequel/oracle_extensions/hints_spec.rb",
|
42
|
-
"spec/sequel/oracle_extensions/merge_spec.rb",
|
43
|
-
"spec/spec_helper.rb"
|
44
|
-
]
|
45
40
|
|
46
41
|
if s.respond_to? :specification_version then
|
47
42
|
s.specification_version = 3
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel_oracle_extensions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 13
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 6
|
9
|
-
-
|
10
|
-
version: 0.6.
|
9
|
+
- 5
|
10
|
+
version: 0.6.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Joe Khoobyar
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-08-
|
18
|
+
date: 2011-08-26 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: sequel
|
@@ -103,11 +103,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
103
103
|
requirements: []
|
104
104
|
|
105
105
|
rubyforge_project:
|
106
|
-
rubygems_version: 1.
|
106
|
+
rubygems_version: 1.8.8
|
107
107
|
signing_key:
|
108
108
|
specification_version: 3
|
109
109
|
summary: Oracle MERGE, optimizer hints, and schema extensions for Sequel
|
110
|
-
test_files:
|
111
|
-
|
112
|
-
- spec/sequel/oracle_extensions/merge_spec.rb
|
113
|
-
- spec/spec_helper.rb
|
110
|
+
test_files: []
|
111
|
+
|