ncs_mdes_warehouse 0.7.1 → 0.7.2
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.
- data/CHANGELOG.md +9 -0
- data/lib/ncs_navigator/warehouse/transformers/foreign_key_index.rb +1 -1
- data/lib/ncs_navigator/warehouse/transformers/foreign_key_index/static_key_provider.rb +2 -0
- data/lib/ncs_navigator/warehouse/transformers/sql_transformer.rb +16 -16
- data/lib/ncs_navigator/warehouse/version.rb +1 -1
- data/spec/ncs_navigator/warehouse/transformers/foreign_key_index_spec.rb +10 -1
- metadata +4 -4
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,15 @@
|
|
1
1
|
NCS Navigator MDES Warehouse History
|
2
2
|
====================================
|
3
3
|
|
4
|
+
0.7.2
|
5
|
+
-----
|
6
|
+
|
7
|
+
- Correct behavior of FK index with database external key provider. (#2387)
|
8
|
+
|
9
|
+
- Remove transaction handling in SqlTransformer. (Transformers are automatically
|
10
|
+
wrapped in a transaction, so it's redundant for the transformer to do it
|
11
|
+
itself.)
|
12
|
+
|
4
13
|
0.7.1
|
5
14
|
-----
|
6
15
|
|
@@ -92,7 +92,7 @@ module NcsNavigator::Warehouse::Transformers
|
|
92
92
|
def verify_relationship(record, belongs_to)
|
93
93
|
reference_name = belongs_to.child_key.first.name
|
94
94
|
reference_value = record.send(reference_name)
|
95
|
-
foreign_model = belongs_to.parent_model
|
95
|
+
foreign_model = belongs_to.parent_model
|
96
96
|
|
97
97
|
if reference_value && !seen?(foreign_model, reference_value)
|
98
98
|
interim_unsatisfied << RelationshipInstance.new(
|
@@ -13,6 +13,8 @@ module NcsNavigator::Warehouse::Transformers
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def existing_keys(model_class)
|
16
|
+
# validation is to help with the uses of this class in specs
|
17
|
+
fail 'model_class must be a string' unless Class === model_class
|
16
18
|
known_keys[model_class.to_s]
|
17
19
|
end
|
18
20
|
end
|
@@ -29,6 +29,7 @@ module NcsNavigator::Warehouse::Transformers
|
|
29
29
|
end
|
30
30
|
|
31
31
|
extend Forwardable
|
32
|
+
include NcsNavigator::Warehouse::StringifyTrace
|
32
33
|
|
33
34
|
def_delegators :@configuration, :shell, :log
|
34
35
|
attr_reader :statements, :name
|
@@ -70,24 +71,23 @@ module NcsNavigator::Warehouse::Transformers
|
|
70
71
|
# @return [void]
|
71
72
|
# @param [TransformStatus] transform_status
|
72
73
|
def transform(transform_status)
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
end
|
74
|
+
stmt_ct = statements.size
|
75
|
+
statements.each_with_index do |stmt, i|
|
76
|
+
log.info("Executing SQL statement in SQL transformer: \n#{stmt}")
|
77
|
+
shell.clear_line_and_say("[#{name}] Executing statement #{i + 1}/#{stmt_ct}...")
|
78
|
+
begin
|
79
|
+
result = adapter.execute(stmt)
|
80
|
+
transform_status.record_count += result.affected_rows
|
81
|
+
log.debug("Previous statement affected #{result.affected_rows} row#{result.affected_rows == 1 ? '' : 's'}.")
|
82
|
+
rescue Exception => e
|
83
|
+
transform_status.transform_errors << NcsNavigator::Warehouse::TransformError.
|
84
|
+
for_exception(e, "Exception while executing SQL statement \"#{stmt}\" (#{i + 1} of #{stmt_ct}).")
|
85
|
+
shell.clear_line_and_say("[#{name}] Failed on #{i + 1}/#{stmt_ct}.\n")
|
86
|
+
log.error("Previous statement failed with exception.\n#{e.class}: #{e}\n#{stringify_trace(e.backtrace)}")
|
87
|
+
return
|
88
88
|
end
|
89
|
-
shell.clear_line_and_say("[#{name}] Executed #{stmt_ct} SQL statement#{stmt_ct == 1 ? '' : 's'}.")
|
90
89
|
end
|
90
|
+
shell.clear_line_and_say("[#{name}] Executed #{stmt_ct} SQL statement#{stmt_ct == 1 ? '' : 's'}.\n")
|
91
91
|
end
|
92
92
|
|
93
93
|
private
|
@@ -24,7 +24,7 @@ module NcsNavigator::Warehouse::Transformers
|
|
24
24
|
end
|
25
25
|
|
26
26
|
let(:fk_index) { ForeignKeyIndex.new(:existing_key_provider => key_provider) }
|
27
|
-
let(:key_provider) { ForeignKeyIndex::StaticKeyProvider.new(Addr.to_s => [120, 180]) }
|
27
|
+
let(:key_provider) { ForeignKeyIndex::StaticKeyProvider.new(Addr.to_s => [120, 180], Frob.to_s => [80]) }
|
28
28
|
let(:transform_status) { NcsNavigator::Warehouse::TransformStatus.memory_only('test') }
|
29
29
|
let(:errors) { transform_status.transform_errors }
|
30
30
|
|
@@ -73,6 +73,15 @@ module NcsNavigator::Warehouse::Transformers
|
|
73
73
|
errors.should == []
|
74
74
|
end
|
75
75
|
|
76
|
+
it 'does not report for a key which is provided by the external key provider when the associated model class has not previously been referenced' do
|
77
|
+
another_index = ForeignKeyIndex.new(:existing_key_provider => key_provider)
|
78
|
+
|
79
|
+
another_index.record_and_verify(Addr.new(:id => 8, :frob_id => 80))
|
80
|
+
another_index.report_errors(transform_status)
|
81
|
+
|
82
|
+
errors.should == []
|
83
|
+
end
|
84
|
+
|
76
85
|
describe 'when a key is never satisfied' do
|
77
86
|
before do
|
78
87
|
fk_index.record_and_verify(Addr.new(:frob_id => 4, :id => 1))
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ncs_mdes_warehouse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-08-
|
12
|
+
date: 2012-08-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ncs_mdes
|
@@ -1817,7 +1817,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
1817
1817
|
version: '0'
|
1818
1818
|
segments:
|
1819
1819
|
- 0
|
1820
|
-
hash:
|
1820
|
+
hash: -207131653451212377
|
1821
1821
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1822
1822
|
none: false
|
1823
1823
|
requirements:
|
@@ -1826,7 +1826,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1826
1826
|
version: '0'
|
1827
1827
|
segments:
|
1828
1828
|
- 0
|
1829
|
-
hash:
|
1829
|
+
hash: -207131653451212377
|
1830
1830
|
requirements: []
|
1831
1831
|
rubyforge_project:
|
1832
1832
|
rubygems_version: 1.8.24
|