masamune 0.17.12 → 0.17.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 +4 -4
- data/Rakefile +3 -3
- data/bin/masamune-aws-emr +1 -1
- data/bin/masamune-dump +1 -1
- data/bin/masamune-hive +1 -1
- data/bin/masamune-psql +1 -1
- data/bin/masamune-shell +1 -1
- data/lib/masamune.rb +1 -1
- data/lib/masamune/actions/aws_emr.rb +2 -2
- data/lib/masamune/actions/data_flow.rb +10 -10
- data/lib/masamune/actions/date_parse.rb +4 -6
- data/lib/masamune/actions/execute.rb +3 -3
- data/lib/masamune/actions/filesystem.rb +1 -1
- data/lib/masamune/actions/hadoop_filesystem.rb +2 -2
- data/lib/masamune/actions/hive.rb +5 -5
- data/lib/masamune/actions/invoke_parallel.rb +5 -5
- data/lib/masamune/actions/postgres.rb +6 -6
- data/lib/masamune/actions/postgres_admin.rb +1 -1
- data/lib/masamune/actions/s3cmd.rb +3 -3
- data/lib/masamune/actions/transform.rb +4 -4
- data/lib/masamune/after_initialize_callbacks.rb +4 -4
- data/lib/masamune/cached_filesystem.rb +7 -11
- data/lib/masamune/commands/aws_emr.rb +12 -12
- data/lib/masamune/commands/hadoop_filesystem.rb +8 -8
- data/lib/masamune/commands/hadoop_streaming.rb +16 -16
- data/lib/masamune/commands/hive.rb +31 -35
- data/lib/masamune/commands/postgres.rb +30 -32
- data/lib/masamune/commands/postgres_admin.rb +17 -16
- data/lib/masamune/commands/postgres_common.rb +1 -1
- data/lib/masamune/commands/retry_with_backoff.rb +19 -19
- data/lib/masamune/commands/s3cmd.rb +7 -7
- data/lib/masamune/commands/shell.rb +25 -38
- data/lib/masamune/configuration.rb +8 -9
- data/lib/masamune/data_plan/builder.rb +5 -5
- data/lib/masamune/data_plan/elem.rb +7 -7
- data/lib/masamune/data_plan/engine.rb +12 -15
- data/lib/masamune/data_plan/rule.rb +14 -12
- data/lib/masamune/data_plan/set.rb +13 -13
- data/lib/masamune/environment.rb +3 -3
- data/lib/masamune/filesystem.rb +29 -28
- data/lib/masamune/helpers/postgres.rb +8 -5
- data/lib/masamune/io.rb +2 -2
- data/lib/masamune/last_element.rb +3 -3
- data/lib/masamune/method_logger.rb +1 -1
- data/lib/masamune/schema/catalog.rb +9 -12
- data/lib/masamune/schema/column.rb +12 -10
- data/lib/masamune/schema/dimension.rb +5 -4
- data/lib/masamune/schema/fact.rb +2 -2
- data/lib/masamune/schema/map.rb +9 -13
- data/lib/masamune/schema/row.rb +3 -2
- data/lib/masamune/schema/store.rb +13 -14
- data/lib/masamune/schema/table.rb +24 -28
- data/lib/masamune/schema/table_reference.rb +7 -7
- data/lib/masamune/spec_helper.rb +1 -1
- data/lib/masamune/string_format.rb +1 -1
- data/lib/masamune/tasks/aws_emr_thor.rb +9 -9
- data/lib/masamune/tasks/dump_thor.rb +5 -5
- data/lib/masamune/tasks/hive_thor.rb +13 -13
- data/lib/masamune/tasks/postgres_thor.rb +8 -8
- data/lib/masamune/tasks/shell_thor.rb +3 -3
- data/lib/masamune/template.rb +4 -4
- data/lib/masamune/thor.rb +26 -25
- data/lib/masamune/transform/common/denormalize_table.rb +6 -6
- data/lib/masamune/transform/define_table.rb +1 -1
- data/lib/masamune/transform/hive/define_table.rb +0 -2
- data/lib/masamune/transform/insert_reference_values.rb +1 -1
- data/lib/masamune/transform/operator.rb +3 -2
- data/lib/masamune/transform/postgres/bulk_upsert.rb +0 -3
- data/lib/masamune/transform/postgres/deduplicate_dimension.rb +4 -6
- data/lib/masamune/transform/postgres/define_table.rb +2 -2
- data/lib/masamune/transform/postgres/insert_reference_values.rb +1 -4
- data/lib/masamune/transform/postgres/relabel_dimension.rb +1 -3
- data/lib/masamune/transform/postgres/rollup_fact.rb +3 -5
- data/lib/masamune/transform/postgres/snapshot_dimension.rb +1 -4
- data/lib/masamune/transform/postgres/stage_dimension.rb +8 -10
- data/lib/masamune/transform/postgres/stage_fact.rb +15 -14
- data/lib/masamune/version.rb +1 -1
- data/spec/masamune/actions/aws_emr_spec.rb +8 -8
- data/spec/masamune/actions/execute_spec.rb +6 -6
- data/spec/masamune/actions/hive_spec.rb +20 -15
- data/spec/masamune/actions/postgres_spec.rb +17 -10
- data/spec/masamune/after_initialization_callbacks_spec.rb +13 -7
- data/spec/masamune/commands/aws_emr_spec.rb +10 -10
- data/spec/masamune/commands/hadoop_filesystem_spec.rb +3 -3
- data/spec/masamune/commands/hadoop_streaming_spec.rb +4 -4
- data/spec/masamune/commands/hive_spec.rb +11 -11
- data/spec/masamune/commands/postgres_admin_spec.rb +9 -9
- data/spec/masamune/commands/postgres_spec.rb +15 -15
- data/spec/masamune/commands/retry_with_backoff_spec.rb +10 -7
- data/spec/masamune/commands/s3cmd_spec.rb +3 -3
- data/spec/masamune/commands/shell_spec.rb +16 -16
- data/spec/masamune/data_plan/builder_spec.rb +22 -19
- data/spec/masamune/data_plan/elem_spec.rb +20 -20
- data/spec/masamune/data_plan/engine_spec.rb +41 -33
- data/spec/masamune/data_plan/rule_spec.rb +19 -19
- data/spec/masamune/data_plan/set_spec.rb +8 -6
- data/spec/masamune/environment_spec.rb +5 -5
- data/spec/masamune/filesystem_spec.rb +87 -87
- data/spec/masamune/helpers/postgres_spec.rb +1 -1
- data/spec/masamune/rspec/job_fixture_spec.rb +0 -1
- data/spec/masamune/schema/catalog_spec.rb +16 -16
- data/spec/masamune/schema/column_spec.rb +19 -19
- data/spec/masamune/schema/dimension_spec.rb +2 -2
- data/spec/masamune/schema/fact_spec.rb +3 -3
- data/spec/masamune/schema/map_spec.rb +41 -41
- data/spec/masamune/schema/table_spec.rb +16 -16
- data/spec/masamune/string_format_spec.rb +7 -7
- data/spec/masamune/tasks/dump_thor_spec.rb +6 -6
- data/spec/masamune/tasks/hive_thor_spec.rb +2 -2
- data/spec/masamune/template_spec.rb +3 -2
- data/spec/masamune/thor_spec.rb +8 -8
- data/spec/masamune/transform/bulk_upsert.dimension_spec.rb +3 -3
- data/spec/masamune/transform/define_table.dimension_spec.rb +3 -3
- data/spec/masamune/transform/define_table.fact_spec.rb +5 -5
- data/spec/masamune/transform/define_table.table_spec.rb +6 -6
- data/spec/masamune/transform/denormalize_table_spec.rb +15 -15
- data/spec/masamune/transform/insert_reference_values.dimension_spec.rb +1 -1
- data/spec/masamune/transform/load_dimension_spec.rb +1 -1
- data/spec/masamune/transform/load_fact_spec.rb +1 -1
- data/spec/masamune/transform/rollup_fact_spec.rb +4 -4
- data/spec/masamune/transform/stage_dimension_spec.rb +3 -3
- data/spec/masamune/transform/stage_fact_spec.rb +4 -4
- data/spec/spec_helper.rb +1 -1
- data/spec/support/masamune/example_group.rb +2 -2
- data/spec/support/masamune/job_example_group.rb +3 -3
- data/spec/support/masamune/job_fixture.rb +4 -4
- data/spec/support/masamune/mock_command.rb +10 -10
- data/spec/support/masamune/mock_delegate.rb +2 -2
- data/spec/support/masamune/mock_filesystem.rb +3 -3
- data/spec/support/masamune/shared_example_group.rb +14 -16
- data/spec/support/masamune/step_example_group.rb +4 -4
- data/spec/support/masamune/step_fixture.rb +1 -1
- data/spec/support/masamune/task_example_group.rb +1 -1
- data/spec/support/masamune/thor_mute.rb +3 -2
- data/spec/support/rspec/example/action_example_group.rb +1 -1
- data/spec/support/rspec/example/task_example_group.rb +7 -4
- data/spec/support/rspec/example/transform_example_group.rb +1 -1
- data/spec/support/shared_examples/postgres_common_examples.rb +2 -2
- metadata +16 -2
@@ -70,8 +70,8 @@ describe Masamune::Schema::Table do
|
|
70
70
|
let(:table) do
|
71
71
|
described_class.new id: 'user',
|
72
72
|
columns: [
|
73
|
-
Masamune::Schema::Column.new(id: 'tenant_id', index:
|
74
|
-
Masamune::Schema::Column.new(id: 'user_id', index:
|
73
|
+
Masamune::Schema::Column.new(id: 'tenant_id', index: %w(tenant_id shared)),
|
74
|
+
Masamune::Schema::Column.new(id: 'user_id', index: %w(user_id shared))
|
75
75
|
]
|
76
76
|
end
|
77
77
|
|
@@ -83,7 +83,7 @@ describe Masamune::Schema::Table do
|
|
83
83
|
described_class.new id: 'user',
|
84
84
|
columns: [
|
85
85
|
Masamune::Schema::Column.new(id: 'tenant_id', unique: ['shared']),
|
86
|
-
Masamune::Schema::Column.new(id: 'user_id', unique:
|
86
|
+
Masamune::Schema::Column.new(id: 'user_id', unique: %w(user_id shared))
|
87
87
|
]
|
88
88
|
end
|
89
89
|
|
@@ -135,7 +135,7 @@ describe Masamune::Schema::Table do
|
|
135
135
|
]
|
136
136
|
end
|
137
137
|
|
138
|
-
it { expect { table }.to raise_error
|
138
|
+
it { expect { table }.to raise_error(/contains undefined columns/) }
|
139
139
|
end
|
140
140
|
|
141
141
|
context 'with partial values' do
|
@@ -182,11 +182,11 @@ describe Masamune::Schema::Table do
|
|
182
182
|
rows: [
|
183
183
|
Masamune::Schema::Row.new(values: {
|
184
184
|
tenant_id: 'default_tenant_id()',
|
185
|
-
user_id: -1
|
185
|
+
user_id: -1
|
186
186
|
}, default: true),
|
187
187
|
Masamune::Schema::Row.new(values: {
|
188
188
|
tenant_id: 'default_tenant_id()',
|
189
|
-
user_id: -2
|
189
|
+
user_id: -2
|
190
190
|
}, id: 'unknown')
|
191
191
|
]
|
192
192
|
end
|
@@ -208,7 +208,7 @@ describe Masamune::Schema::Table do
|
|
208
208
|
}),
|
209
209
|
Masamune::Schema::Row.new(values: {
|
210
210
|
name: 'active',
|
211
|
-
description: 'Active'
|
211
|
+
description: 'Active'
|
212
212
|
}, default: true),
|
213
213
|
Masamune::Schema::Row.new(values: {
|
214
214
|
name: 'inactive',
|
@@ -236,15 +236,15 @@ describe Masamune::Schema::Table do
|
|
236
236
|
Masamune::Schema::Column.new(id: 'description', type: :string)
|
237
237
|
],
|
238
238
|
rows: [
|
239
|
-
Masamune::Schema::Row.new(values: {name: 'active'}, default: true)
|
239
|
+
Masamune::Schema::Row.new(values: { name: 'active' }, default: true)
|
240
240
|
]
|
241
241
|
end
|
242
242
|
|
243
243
|
let(:table) do
|
244
244
|
described_class.new id: 'user', references: [
|
245
|
-
|
246
|
-
|
247
|
-
|
245
|
+
Masamune::Schema::TableReference.new(mini_table),
|
246
|
+
Masamune::Schema::TableReference.new(mini_table, label: 'actor', null: true, default: :null)
|
247
|
+
],
|
248
248
|
columns: [
|
249
249
|
Masamune::Schema::Column.new(id: 'name', type: :string)
|
250
250
|
]
|
@@ -286,9 +286,9 @@ describe Masamune::Schema::Table do
|
|
286
286
|
|
287
287
|
let(:table) do
|
288
288
|
described_class.new id: 'user', references: [
|
289
|
-
|
290
|
-
|
291
|
-
|
289
|
+
Masamune::Schema::TableReference.new(mini_table),
|
290
|
+
Masamune::Schema::TableReference.new(mini_table, label: 'hr')
|
291
|
+
],
|
292
292
|
columns: [
|
293
293
|
Masamune::Schema::Column.new(id: 'user_id', type: :integer),
|
294
294
|
Masamune::Schema::Column.new(id: 'name', type: :string),
|
@@ -384,8 +384,8 @@ describe Masamune::Schema::Table do
|
|
384
384
|
context 'with specified target table (referenced tables)' do
|
385
385
|
let(:target) do
|
386
386
|
described_class.new id: 'user_data', references: [
|
387
|
-
|
388
|
-
|
387
|
+
Masamune::Schema::TableReference.new(mini_table, label: 'hr')
|
388
|
+
],
|
389
389
|
columns: [
|
390
390
|
Masamune::Schema::Column.new(id: 'user_id', type: :integer),
|
391
391
|
Masamune::Schema::Column.new(id: 'name', type: :string)
|
@@ -27,13 +27,13 @@ describe Masamune::StringFormat do
|
|
27
27
|
subject { instance.strip_sql(input) }
|
28
28
|
|
29
29
|
context 'with quoted sql' do
|
30
|
-
let(:input) {
|
31
|
-
it { is_expected.to eq(
|
30
|
+
let(:input) { "'SELECT * FROM table;'" }
|
31
|
+
it { is_expected.to eq('SELECT * FROM table;') }
|
32
32
|
end
|
33
33
|
|
34
34
|
context 'with ; terminated sql' do
|
35
|
-
let(:input) {
|
36
|
-
it { is_expected.to eq(
|
35
|
+
let(:input) { 'SELECT * FROM table;;' }
|
36
|
+
it { is_expected.to eq('SELECT * FROM table;') }
|
37
37
|
end
|
38
38
|
|
39
39
|
context 'with multi line sql' do
|
@@ -47,12 +47,12 @@ describe Masamune::StringFormat do
|
|
47
47
|
|
48
48
|
EOS
|
49
49
|
end
|
50
|
-
it { is_expected.to eq(
|
50
|
+
it { is_expected.to eq('SELECT * FROM table;') }
|
51
51
|
end
|
52
52
|
|
53
53
|
context 'with un-quoted sql' do
|
54
|
-
let(:input) {
|
55
|
-
it { is_expected.to eq(
|
54
|
+
let(:input) { 'SELECT * FROM table' }
|
55
|
+
it { is_expected.to eq('SELECT * FROM table;') }
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|
@@ -44,7 +44,7 @@ describe Masamune::Tasks::DumpThor do
|
|
44
44
|
|
45
45
|
context 'with --type=unknown' do
|
46
46
|
let(:options) { ['--type=unknown'] }
|
47
|
-
it_behaves_like 'raises Thor::MalformattedArgumentError',
|
47
|
+
it_behaves_like 'raises Thor::MalformattedArgumentError', "Expected '--type' to be one of psql, hql; got unknown"
|
48
48
|
end
|
49
49
|
|
50
50
|
context 'with --section=pre' do
|
@@ -64,7 +64,7 @@ describe Masamune::Tasks::DumpThor do
|
|
64
64
|
|
65
65
|
context 'with --section=unknown' do
|
66
66
|
let(:options) { ['--section=unknown'] }
|
67
|
-
it_behaves_like 'raises Thor::MalformattedArgumentError',
|
67
|
+
it_behaves_like 'raises Thor::MalformattedArgumentError', "Expected '--section' to be one of pre, post, all; got unknown"
|
68
68
|
end
|
69
69
|
|
70
70
|
context 'with --skip-indexes' do
|
@@ -77,13 +77,13 @@ describe Masamune::Tasks::DumpThor do
|
|
77
77
|
it_behaves_like 'executes with success'
|
78
78
|
end
|
79
79
|
|
80
|
-
context
|
81
|
-
let(:options) { [
|
80
|
+
context "with --exclude='.*dimension'" do
|
81
|
+
let(:options) { ["--exclude='.*dimension'"] }
|
82
82
|
it_behaves_like 'executes with success'
|
83
83
|
end
|
84
84
|
|
85
|
-
context
|
86
|
-
let(:options) { [
|
85
|
+
context "with --exclude='.*dimension' '.*fact'" do
|
86
|
+
let(:options) { ["--exclude='.*dimension' '.*fact'"] }
|
87
87
|
it_behaves_like 'executes with success'
|
88
88
|
end
|
89
89
|
|
@@ -69,7 +69,7 @@ describe Masamune::Tasks::HiveThor do
|
|
69
69
|
context 'with --variables=YEAR:2015 MONTH:1' do
|
70
70
|
let(:options) { ['--variables=YEAR:2015', 'MONTH:1'] }
|
71
71
|
it do
|
72
|
-
expect_any_instance_of(described_class).to receive(:hive).with(hash_including(variables: { 'YEAR' => '2015', 'MONTH' => '1'})).once.and_return(mock_success)
|
72
|
+
expect_any_instance_of(described_class).to receive(:hive).with(hash_including(variables: { 'YEAR' => '2015', 'MONTH' => '1' })).once.and_return(mock_success)
|
73
73
|
cli_invocation
|
74
74
|
end
|
75
75
|
end
|
@@ -77,7 +77,7 @@ describe Masamune::Tasks::HiveThor do
|
|
77
77
|
context 'with -X YEAR:2015 MONTH:1' do
|
78
78
|
let(:options) { ['-X', 'YEAR:2015', 'MONTH:1'] }
|
79
79
|
it do
|
80
|
-
expect_any_instance_of(described_class).to receive(:hive).with(hash_including(variables: { 'YEAR' => '2015', 'MONTH' => '1'})).once.and_return(mock_success)
|
80
|
+
expect_any_instance_of(described_class).to receive(:hive).with(hash_including(variables: { 'YEAR' => '2015', 'MONTH' => '1' })).once.and_return(mock_success)
|
81
81
|
cli_invocation
|
82
82
|
end
|
83
83
|
end
|
@@ -40,7 +40,7 @@ describe Masamune::Template do
|
|
40
40
|
|
41
41
|
context 'with simple template' do
|
42
42
|
let(:template) { File.expand_path('../../fixtures/simple.sql.erb', __FILE__) }
|
43
|
-
let(:parameters) { {table: 'zombo'} }
|
43
|
+
let(:parameters) { { table: 'zombo' } }
|
44
44
|
|
45
45
|
it { is_expected.to eq("SELECT * FROM zombo;\n") }
|
46
46
|
end
|
@@ -59,7 +59,8 @@ describe Masamune::Template do
|
|
59
59
|
context 'with aggregate template' do
|
60
60
|
let(:template) { File.expand_path('../../fixtures/aggregate.sql.erb', __FILE__) }
|
61
61
|
|
62
|
-
it do
|
62
|
+
it do
|
63
|
+
is_expected.to eq <<-EOS.gsub(/^\s*/, '')
|
63
64
|
SHOW TABLES;
|
64
65
|
SELECT * FROM foo;
|
65
66
|
SELECT * FROM bar;
|
data/spec/masamune/thor_spec.rb
CHANGED
@@ -29,8 +29,8 @@ describe Masamune::Thor do
|
|
29
29
|
namespace :example
|
30
30
|
|
31
31
|
desc 'command', 'command'
|
32
|
-
target path: fs.path(:tmp_dir,
|
33
|
-
source path: fs.path(:tmp_dir,
|
32
|
+
target path: fs.path(:tmp_dir, 'target/%Y-%m-%d')
|
33
|
+
source path: fs.path(:tmp_dir, 'source/%Y%m%d*.log')
|
34
34
|
def command_task
|
35
35
|
# NOP
|
36
36
|
end
|
@@ -48,8 +48,8 @@ describe Masamune::Thor do
|
|
48
48
|
end
|
49
49
|
|
50
50
|
desc 'unknown', 'unknown'
|
51
|
-
target path: fs.path(:unknown_dir,
|
52
|
-
source path: fs.path(:unknown_dir,
|
51
|
+
target path: fs.path(:unknown_dir, 'target/%Y-%m-%d')
|
52
|
+
source path: fs.path(:unknown_dir, 'source/%Y%m%d*.log')
|
53
53
|
def unknown_task
|
54
54
|
# NOP
|
55
55
|
end
|
@@ -188,7 +188,7 @@ describe Masamune::Thor do
|
|
188
188
|
expect_any_instance_of(Logger).to receive(:error).with(/random exception/)
|
189
189
|
allow(thor_class).to receive(:dispatch).and_raise('random exception')
|
190
190
|
end
|
191
|
-
it { expect { cli_invocation }.to raise_error
|
191
|
+
it { expect { cli_invocation }.to raise_error(/random exception/) }
|
192
192
|
end
|
193
193
|
|
194
194
|
context 'with command that raises exception after initialization' do
|
@@ -198,7 +198,7 @@ describe Masamune::Thor do
|
|
198
198
|
expect_any_instance_of(Logger).to receive(:error).with(/random exception/)
|
199
199
|
allow(thor_class).to receive(:after_initialize_invoke).and_raise('random exception')
|
200
200
|
end
|
201
|
-
it { expect { cli_invocation }.to raise_error
|
201
|
+
it { expect { cli_invocation }.to raise_error(/random exception/) }
|
202
202
|
end
|
203
203
|
|
204
204
|
context 'with command that raises exception during execution' do
|
@@ -243,12 +243,12 @@ describe Masamune::Thor do
|
|
243
243
|
|
244
244
|
context 'without --' do
|
245
245
|
let(:argv) { ['--flag', 'true'] }
|
246
|
-
it { is_expected.to eq([['--flag', 'true'],[]]) }
|
246
|
+
it { is_expected.to eq([['--flag', 'true'], []]) }
|
247
247
|
end
|
248
248
|
|
249
249
|
context 'with -- and no following arguments' do
|
250
250
|
let(:argv) { ['--flag', 'true', '--'] }
|
251
|
-
it { is_expected.to eq([['--flag', 'true'],[]]) }
|
251
|
+
it { is_expected.to eq([['--flag', 'true'], []]) }
|
252
252
|
end
|
253
253
|
|
254
254
|
context 'with -- and a single extra argument' do
|
@@ -28,14 +28,14 @@ describe Masamune::Transform::BulkUpsert do
|
|
28
28
|
dimension 'cluster', type: :mini do
|
29
29
|
column 'id', type: :integer, surrogate_key: true, auto: true
|
30
30
|
column 'name', type: :string, unique: true
|
31
|
-
row name: 'default', attributes: {default: true}
|
31
|
+
row name: 'default', attributes: { default: true }
|
32
32
|
end
|
33
33
|
|
34
34
|
dimension 'user_account_state', type: :mini do
|
35
35
|
column 'name', type: :string, unique: true
|
36
36
|
column 'description', type: :string
|
37
37
|
row name: 'registered', description: 'Registered'
|
38
|
-
row name: 'active', description: 'Active', attributes: {default: true}
|
38
|
+
row name: 'active', description: 'Active', attributes: { default: true }
|
39
39
|
row name: 'inactive', description: 'Inactive'
|
40
40
|
end
|
41
41
|
|
@@ -43,7 +43,7 @@ describe Masamune::Transform::BulkUpsert do
|
|
43
43
|
references :cluster
|
44
44
|
column 'tenant_id', type: :integer, unique: true, natural_key: true
|
45
45
|
column 'department_id', type: :integer, unique: true, natural_key: true
|
46
|
-
row tenant_id: -1, department_id: -1, attributes: {default: true}
|
46
|
+
row tenant_id: -1, department_id: -1, attributes: { default: true }
|
47
47
|
end
|
48
48
|
|
49
49
|
dimension 'user', type: :four do
|
@@ -239,13 +239,13 @@ describe Masamune::Transform::DefineTable do
|
|
239
239
|
dimension 'cluster', type: :mini do
|
240
240
|
column 'id', type: :integer, surrogate_key: true, auto: true
|
241
241
|
column 'name', type: :string, unique: true
|
242
|
-
row name: 'default', attributes: {default: true}
|
242
|
+
row name: 'default', attributes: { default: true }
|
243
243
|
end
|
244
244
|
|
245
245
|
dimension 'user_account_state', type: :mini do
|
246
246
|
column 'name', type: :string, unique: true
|
247
247
|
column 'description', type: :string
|
248
|
-
row name: 'active', description: 'Active', attributes: {default: true}
|
248
|
+
row name: 'active', description: 'Active', attributes: { default: true }
|
249
249
|
end
|
250
250
|
|
251
251
|
dimension 'user', type: :four do
|
@@ -380,7 +380,7 @@ describe Masamune::Transform::DefineTable do
|
|
380
380
|
dimension 'user_account_state', type: :mini do
|
381
381
|
column 'name', type: :string, unique: true
|
382
382
|
column 'description', type: :string
|
383
|
-
row name: 'active', description: 'Active', attributes: {default: true}
|
383
|
+
row name: 'active', description: 'Active', attributes: { default: true }
|
384
384
|
end
|
385
385
|
|
386
386
|
dimension 'user', type: :four do
|
@@ -27,7 +27,7 @@ describe Masamune::Transform::DefineTable do
|
|
27
27
|
column 'id', type: :sequence, surrogate_key: true, auto: true
|
28
28
|
column 'name', type: :string
|
29
29
|
|
30
|
-
row name: 'current_database()', attributes: {default: true}
|
30
|
+
row name: 'current_database()', attributes: { default: true }
|
31
31
|
end
|
32
32
|
|
33
33
|
dimension 'date', type: :date do
|
@@ -150,11 +150,11 @@ describe Masamune::Transform::DefineTable do
|
|
150
150
|
context 'for postgres fact partition with :post' do
|
151
151
|
let(:target) { catalog.postgres.visits_fact.partition_table(Date.civil(2015, 01, 01)) }
|
152
152
|
|
153
|
-
let(:options) { {section: :post} }
|
153
|
+
let(:options) { { section: :post } }
|
154
154
|
|
155
155
|
it 'should eq render table template' do
|
156
|
-
is_expected.to match
|
157
|
-
is_expected.to match
|
156
|
+
is_expected.to match(/ALTER TABLE visits_fact_y2015m01 INHERIT visits_fact;/)
|
157
|
+
is_expected.to match(/ALTER TABLE visits_fact_y2015m01 ADD CONSTRAINT visits_fact_y2015m01_time_key_check CHECK \(time_key >= 1420070400 AND time_key < 1422748800\);/)
|
158
158
|
end
|
159
159
|
end
|
160
160
|
|
@@ -163,7 +163,7 @@ describe Masamune::Transform::DefineTable do
|
|
163
163
|
let(:intermediate) { catalog.postgres.visits_fact }
|
164
164
|
let(:source) { catalog.postgres.visits_file }
|
165
165
|
let(:target) { source.stage_table(suffix: 'file', table: intermediate, inherit: false) }
|
166
|
-
let(:options) { { files: files} }
|
166
|
+
let(:options) { { files: files } }
|
167
167
|
|
168
168
|
it 'should eq render table template' do
|
169
169
|
is_expected.to eq <<-EOS.strip_heredoc
|
@@ -101,8 +101,8 @@ describe Masamune::Transform::DefineTable do
|
|
101
101
|
before do
|
102
102
|
catalog.schema :postgres do
|
103
103
|
table 'user' do
|
104
|
-
column 'tenant_id', index:
|
105
|
-
column 'user_id', index:
|
104
|
+
column 'tenant_id', index: %w(tenant_id shared)
|
105
|
+
column 'user_id', index: %w(user_id shared)
|
106
106
|
end
|
107
107
|
end
|
108
108
|
end
|
@@ -146,7 +146,7 @@ describe Masamune::Transform::DefineTable do
|
|
146
146
|
catalog.schema :postgres do
|
147
147
|
table 'user' do
|
148
148
|
column 'tenant_id', unique: ['shared']
|
149
|
-
column 'user_id', unique:
|
149
|
+
column 'user_id', unique: %w(user_id shared)
|
150
150
|
end
|
151
151
|
end
|
152
152
|
end
|
@@ -525,8 +525,8 @@ describe Masamune::Transform::DefineTable do
|
|
525
525
|
table 'user' do
|
526
526
|
column 'tenant_id', type: :integer, natural_key: true
|
527
527
|
column 'user_id', type: :integer, natural_key: true
|
528
|
-
row tenant_id: 'default_tenant_id()', user_id: -1, attributes: {default: true}
|
529
|
-
row tenant_id: 'default_tenant_id()', user_id: -2, attributes: {id: 'unknown'}
|
528
|
+
row tenant_id: 'default_tenant_id()', user_id: -1, attributes: { default: true }
|
529
|
+
row tenant_id: 'default_tenant_id()', user_id: -2, attributes: { id: 'unknown' }
|
530
530
|
end
|
531
531
|
end
|
532
532
|
end
|
@@ -885,7 +885,7 @@ describe Masamune::Transform::DefineTable do
|
|
885
885
|
column 'name', type: :string, unique: true
|
886
886
|
column 'description', type: :string
|
887
887
|
row name: 'registered', description: 'Registered'
|
888
|
-
row name: 'active', description: 'Active', attributes: {default: true}
|
888
|
+
row name: 'active', description: 'Active', attributes: { default: true }
|
889
889
|
row name: 'inactive', description: 'Inactive'
|
890
890
|
end
|
891
891
|
end
|
@@ -27,7 +27,7 @@ describe Masamune::Transform::DenormalizeTable do
|
|
27
27
|
column 'id', type: :sequence, surrogate_key: true, auto: true
|
28
28
|
column 'name', type: :string
|
29
29
|
|
30
|
-
row name: 'current_database()', attributes: {default: true}
|
30
|
+
row name: 'current_database()', attributes: { default: true }
|
31
31
|
end
|
32
32
|
|
33
33
|
dimension 'date', type: :date do
|
@@ -73,7 +73,7 @@ describe Masamune::Transform::DenormalizeTable do
|
|
73
73
|
|
74
74
|
context 'with postgres dimension' do
|
75
75
|
let(:target) { catalog.postgres.user_dimension }
|
76
|
-
let(:options) { {
|
76
|
+
let(:options) { {} }
|
77
77
|
|
78
78
|
it 'should eq render denormalize_table template' do
|
79
79
|
is_expected.to eq <<-EOS.strip_heredoc
|
@@ -106,7 +106,7 @@ describe Masamune::Transform::DenormalizeTable do
|
|
106
106
|
|
107
107
|
context 'with postgres fact without :columns' do
|
108
108
|
let(:target) { catalog.postgres.visits_fact }
|
109
|
-
let(:options) { {
|
109
|
+
let(:options) { {} }
|
110
110
|
|
111
111
|
it 'should eq render denormalize_table template' do
|
112
112
|
is_expected.to eq <<-EOS.strip_heredoc
|
@@ -322,18 +322,18 @@ describe Masamune::Transform::DenormalizeTable do
|
|
322
322
|
|
323
323
|
let(:options) do
|
324
324
|
{
|
325
|
-
columns:
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
order:
|
334
|
-
|
335
|
-
|
336
|
-
|
325
|
+
columns: %w(
|
326
|
+
tenant_id
|
327
|
+
tenant_account_state
|
328
|
+
tenant_premium_state
|
329
|
+
preferences
|
330
|
+
y
|
331
|
+
m
|
332
|
+
),
|
333
|
+
order: %w(
|
334
|
+
tenant_id
|
335
|
+
start_at
|
336
|
+
)
|
337
337
|
}
|
338
338
|
end
|
339
339
|
|
@@ -28,7 +28,7 @@ describe Masamune::Transform::InsertReferenceValues do
|
|
28
28
|
dimension 'department', type: :mini do
|
29
29
|
column 'tenant_id', type: :integer, unique: true, natural_key: true
|
30
30
|
column 'department_id', type: :integer, unique: true, natural_key: true
|
31
|
-
row tenant_id: -1, department_id: -1, attributes: {default: true}
|
31
|
+
row tenant_id: -1, department_id: -1, attributes: { default: true }
|
32
32
|
end
|
33
33
|
|
34
34
|
dimension 'user', type: :four do
|
@@ -31,7 +31,7 @@ describe Masamune::Transform::LoadDimension do
|
|
31
31
|
dimension 'department', type: :mini do
|
32
32
|
column 'tenant_id', type: :integer, unique: true, natural_key: true
|
33
33
|
column 'department_id', type: :integer, unique: true, natural_key: true
|
34
|
-
row tenant_id: -1, department_id: -1, attributes: {default: true}
|
34
|
+
row tenant_id: -1, department_id: -1, attributes: { default: true }
|
35
35
|
end
|
36
36
|
|
37
37
|
dimension 'user', type: :four do
|