activefacts-compositions 1.9.12 → 1.9.13
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dd751029f078742f721c3a77358540eaacb549f1
|
4
|
+
data.tar.gz: f061fe150616c84bc70f169f6151838147b77a95
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 128bdf31ffb389014a8cc059f13ee5178b1960615a1ba2bebb9bf304b4920269bf0616f1ecccbbaf5e1f6e49c0485d8bc64523758abab2f244df581eb210ace7
|
7
|
+
data.tar.gz: 4cbde3aa2f0d73b2ddc0f2bb6db69d28c3fb25c4ca91da50797a66e548a224e29a6c02ff1f1ba413970ce82f8ecb04b3fd9bd8b9a278022d6af8d39f490677e2
|
@@ -100,35 +100,6 @@ module ActiveFacts
|
|
100
100
|
trace :binarize, "Populating #{a.inspect}"
|
101
101
|
end
|
102
102
|
|
103
|
-
def find_topic import_role
|
104
|
-
if import = @constellation.Import.values.select{ |import| import.import_role == import_role }.first
|
105
|
-
import.precursor_topic
|
106
|
-
else
|
107
|
-
nil
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
def build_binary_mappings schema_topic
|
112
|
-
trace :binarize, "Build_binary_mappings for #{schema_topic.topic_name}"
|
113
|
-
if @schema_topics.key?(schema_topic)
|
114
|
-
trace :binarize, "already built, skip"
|
115
|
-
return
|
116
|
-
end
|
117
|
-
@schema_topics[schema_topic] = true
|
118
|
-
|
119
|
-
# add binary mapping for all object types in this schema
|
120
|
-
schema_topic.all_concept.each do |concept|
|
121
|
-
if concept.object_type
|
122
|
-
@binary_mappings[concept.object_type]
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
# recurse through precursor schemas
|
127
|
-
schema_topic.all_import.each do |import|
|
128
|
-
build_binary_mappings(import.precursor_topic)
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
103
|
def populate_references
|
133
104
|
# A table of Mappings by object type, with a default Mapping for each:
|
134
105
|
@binary_mappings = Hash.new do |h, object_type|
|
@@ -140,46 +111,16 @@ module ActiveFacts
|
|
140
111
|
end
|
141
112
|
@component_by_fact = {}
|
142
113
|
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
import_role = @option_source ? 'source' : 'target'
|
147
|
-
trace :binarize, "Build binary bindings for #{import_role} schema" do
|
148
|
-
if schema_topic = find_topic(import_role)
|
149
|
-
build_binary_mappings(schema_topic)
|
150
|
-
else
|
151
|
-
raise "Could not find #{import_role} schema"
|
152
|
-
end
|
153
|
-
end
|
154
|
-
elsif @option_transform
|
155
|
-
trace :binarize, "Build binary bindings for transform schema" do
|
156
|
-
transform_topic = @constellation.Topic.values.select do |topic|
|
157
|
-
nr_importers = @constellation.Import.values.select{|i| i.precursor_topic == topic}.size
|
158
|
-
nr_importers == 0 # This topic is not imported by anything, it's the one
|
159
|
-
end.first
|
160
|
-
|
161
|
-
# add binary mapping for all object types in the transform schema
|
162
|
-
transform_topic.all_concept.each do |concept|
|
163
|
-
if concept.object_type
|
164
|
-
@binary_mappings[concept.object_type]
|
165
|
-
end
|
166
|
-
end
|
114
|
+
trace :binarize, "Build binary bindings for full schema" do
|
115
|
+
@constellation.ObjectType.each do |key, object_type|
|
116
|
+
@binary_mappings[object_type] # Ensure we create the top Mapping even if it has no references
|
167
117
|
end
|
168
|
-
|
169
|
-
=end
|
170
|
-
trace :binarize, "Build binary bindings for full schema" do
|
171
|
-
@constellation.ObjectType.each do |key, object_type|
|
172
|
-
@binary_mappings[object_type] # Ensure we create the top Mapping even if it has no references
|
173
|
-
end
|
174
|
-
end
|
175
|
-
# end
|
118
|
+
end
|
176
119
|
|
177
120
|
@binary_mappings.each do |object_type, mapping|
|
178
121
|
trace :binarize, "Populating possible absorptions for #{object_type.name}" do
|
179
122
|
|
180
123
|
object_type.all_role.each do |role|
|
181
|
-
# Exclude fact types not in @schema_topics
|
182
|
-
next if @schema_topics.size > 0 && !@schema_topics.key?(role.fact_type.concept.topic)
|
183
124
|
# Exclude base roles in objectified fact types (unless unary); just use link fact types
|
184
125
|
next if role.fact_type.entity_type && role.fact_type.all_role.size != 1
|
185
126
|
next if role.variable # REVISIT: Continue to ignore roles in derived fact types?
|
@@ -83,6 +83,18 @@ module ActiveFacts
|
|
83
83
|
"#{s}\nGO\n"
|
84
84
|
end
|
85
85
|
|
86
|
+
def open_escape
|
87
|
+
'['
|
88
|
+
end
|
89
|
+
|
90
|
+
def close_escape
|
91
|
+
']'
|
92
|
+
end
|
93
|
+
|
94
|
+
def index_kind(index)
|
95
|
+
(index.composite_as_primary_index ? ' CLUSTERED' : ' NONCLUSTERED')
|
96
|
+
end
|
97
|
+
|
86
98
|
class SQLServerDataTypeContext < SQLDataTypeContext
|
87
99
|
def integer_ranges
|
88
100
|
[
|
@@ -153,6 +153,10 @@ module ActiveFacts
|
|
153
153
|
}"
|
154
154
|
end
|
155
155
|
|
156
|
+
def index_kind(index)
|
157
|
+
''
|
158
|
+
end
|
159
|
+
|
156
160
|
def generate_index index, delayed_indices
|
157
161
|
nullable_columns =
|
158
162
|
index.all_index_field.select do |ixf|
|
@@ -162,16 +166,14 @@ module ActiveFacts
|
|
162
166
|
|
163
167
|
primary = index.composite_as_primary_index && !contains_nullable_columns
|
164
168
|
column_names =
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
clustering =
|
169
|
-
(index.composite_as_primary_index ? ' CLUSTERED' : ' NONCLUSTERED')
|
169
|
+
index.all_index_field.map do |ixf|
|
170
|
+
column_name(ixf.component)
|
171
|
+
end
|
170
172
|
|
171
173
|
if contains_nullable_columns
|
172
174
|
table_name = safe_table_name(index.composite)
|
173
175
|
delayed_indices <<
|
174
|
-
'CREATE UNIQUE'+
|
176
|
+
'CREATE UNIQUE'+index_kind(index)+' INDEX '+
|
175
177
|
escape("#{table_name(index.composite)}By#{column_names*''}", index_name_max) +
|
176
178
|
" ON #{table_name}("+column_names.map{|n| escape(n, column_name_max)}*', ' +
|
177
179
|
") WHERE #{
|
@@ -184,7 +186,7 @@ module ActiveFacts
|
|
184
186
|
else
|
185
187
|
'-- '+index.inspect + "\n\t" +
|
186
188
|
(primary ? 'PRIMARY KEY' : 'UNIQUE') +
|
187
|
-
|
189
|
+
index_kind(index) +
|
188
190
|
"(#{column_names.map{|n| escape(n, column_name_max)}*', '})"
|
189
191
|
end
|
190
192
|
end
|
@@ -290,6 +292,14 @@ module ActiveFacts
|
|
290
292
|
"#{s};\n\n"
|
291
293
|
end
|
292
294
|
|
295
|
+
def open_escape
|
296
|
+
'"'
|
297
|
+
end
|
298
|
+
|
299
|
+
def close_escape
|
300
|
+
'"'
|
301
|
+
end
|
302
|
+
|
293
303
|
def escape s, max = table_name_max
|
294
304
|
# Escape SQL keywords and non-identifiers
|
295
305
|
if s.size > max
|
@@ -299,7 +309,7 @@ module ActiveFacts
|
|
299
309
|
end
|
300
310
|
|
301
311
|
if s =~ /[^A-Za-z0-9_]/ || is_reserved_word(s)
|
302
|
-
"
|
312
|
+
"#{open_escape}#{s}#{close_escape}"
|
303
313
|
else
|
304
314
|
s
|
305
315
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activefacts-compositions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.9.
|
4
|
+
version: 1.9.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Clifford Heath
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|