chicagowarehouse 0.4.2 → 0.4.3
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/chicagowarehouse.gemspec +1 -1
- data/lib/chicago/database/schema_generator.rb +1 -1
- data/lib/chicago/database/type_converters.rb +0 -1
- data/lib/chicago/schema/column.rb +5 -4
- data/spec/database/db_type_converter_spec.rb +0 -5
- data/spec/database/schema_generator_spec.rb +2 -2
- data/spec/query_spec.rb +8 -8
- data/spec/schema/column_spec.rb +8 -7
- metadata +39 -39
data/Rakefile
CHANGED
@@ -14,7 +14,7 @@ require 'rake'
|
|
14
14
|
require 'jeweler'
|
15
15
|
Jeweler::Tasks.new do |gem|
|
16
16
|
gem.name = "chicagowarehouse"
|
17
|
-
gem.version = "0.4.
|
17
|
+
gem.version = "0.4.3"
|
18
18
|
gem.summary = "Ruby Data Warehousing"
|
19
19
|
gem.description = "Simple Data Warehouse toolkit for ruby"
|
20
20
|
gem.author = "Roland Swingler"
|
data/chicagowarehouse.gemspec
CHANGED
@@ -89,7 +89,7 @@ module Chicago
|
|
89
89
|
indexes = @table.columns.select(&:indexed?).inject({}) do |hsh, d|
|
90
90
|
hsh.merge("#{d.name}_idx".to_sym => {
|
91
91
|
:columns => d.database_name,
|
92
|
-
:unique =>
|
92
|
+
:unique => d.unique?})
|
93
93
|
end
|
94
94
|
indexes.merge!(natural_key_index) if @table.natural_key
|
95
95
|
indexes
|
@@ -53,8 +53,9 @@ module Chicago
|
|
53
53
|
@default = @opts[:default]
|
54
54
|
@descriptive = !! @opts[:descriptive]
|
55
55
|
@internal = @opts.has_key?(:internal) ? !! @opts[:internal] :
|
56
|
-
column_type == :
|
57
|
-
@unique = !! @opts[:unique]
|
56
|
+
column_type == :binary
|
57
|
+
@unique = @opts.has_key?(:unique) ? !! @opts[:unique] :
|
58
|
+
column_type == :binary
|
58
59
|
@optional = !! (@opts.has_key?(:optional) ? @opts[:optional] :
|
59
60
|
@opts[:null])
|
60
61
|
end
|
@@ -161,7 +162,7 @@ module Chicago
|
|
161
162
|
|
162
163
|
# Returns true if the column stores a binary value.
|
163
164
|
def binary?
|
164
|
-
@binary ||=
|
165
|
+
@binary ||= :binary == column_type
|
165
166
|
end
|
166
167
|
|
167
168
|
def hash #:nodoc:
|
@@ -208,7 +209,7 @@ module Chicago
|
|
208
209
|
[12,2]
|
209
210
|
elsif column_type == :percent
|
210
211
|
[6,3]
|
211
|
-
elsif column_type == :
|
212
|
+
elsif column_type == :binary
|
212
213
|
16
|
213
214
|
end
|
214
215
|
end
|
@@ -31,11 +31,6 @@ shared_examples_for "All DB type converters" do
|
|
31
31
|
@tc.db_type(column).should == :decimal
|
32
32
|
end
|
33
33
|
|
34
|
-
it "should return :binary for a hash column type" do
|
35
|
-
column = Schema::Column.new(:id, :hash)
|
36
|
-
@tc.db_type(column).should == :binary
|
37
|
-
end
|
38
|
-
|
39
34
|
it "should assume any other type is a database type and return it" do
|
40
35
|
column = Schema::Column.new(:id, :foo)
|
41
36
|
@tc.db_type(column).should == :foo
|
@@ -120,13 +120,13 @@ describe Chicago::Database::SchemaGenerator do
|
|
120
120
|
columns do
|
121
121
|
string :foo, :descriptive => true
|
122
122
|
string :bar
|
123
|
-
string :baz
|
123
|
+
string :baz, :unique => true
|
124
124
|
end
|
125
125
|
end
|
126
126
|
|
127
127
|
expected = {
|
128
128
|
:bar_idx => {:columns => :bar, :unique => false},
|
129
|
-
:baz_idx => {:columns => :baz, :unique =>
|
129
|
+
:baz_idx => {:columns => :baz, :unique => true}
|
130
130
|
}
|
131
131
|
subject.visit_dimension(@dimension)[:dimension_user][:indexes].should == expected
|
132
132
|
end
|
data/spec/query_spec.rb
CHANGED
@@ -423,35 +423,35 @@ describe Chicago::Query do
|
|
423
423
|
end
|
424
424
|
|
425
425
|
it "can filter based on starts with" do
|
426
|
-
@q.filter({:column => "sales.product.sku", :value => "123", :op => :sw}).dataset.sql.should =~ /WHERE \(`product`\.`sku` LIKE '123%'
|
426
|
+
@q.filter({:column => "sales.product.sku", :value => "123", :op => :sw}).dataset.sql.should =~ /WHERE \(`product`\.`sku` LIKE '123%'( ESCAPE '.+')?\)/
|
427
427
|
end
|
428
428
|
|
429
429
|
it "can filter based on 'starts with' with multiple values" do
|
430
|
-
@q.filter({:column => "sales.product.sku", :value => ["123","AB"], :op => :sw}).dataset.sql.should =~ /WHERE \(\(`product`\.`sku` LIKE '123%'
|
430
|
+
@q.filter({:column => "sales.product.sku", :value => ["123","AB"], :op => :sw}).dataset.sql.should =~ /WHERE \(\(`product`\.`sku` LIKE '123%'( ESCAPE '.+')?\) OR \(`product`\.`sku` LIKE 'AB%'( ESCAPE '.+')?\)\)/
|
431
431
|
end
|
432
432
|
|
433
433
|
it "can filter based on not starts with" do
|
434
|
-
@q.filter({:column => "sales.product.sku", :value => "123", :op => :nsw}).dataset.sql.should =~ /WHERE \(`product`\.`sku` NOT LIKE '123%'
|
434
|
+
@q.filter({:column => "sales.product.sku", :value => "123", :op => :nsw}).dataset.sql.should =~ /WHERE \(`product`\.`sku` NOT LIKE '123%'( ESCAPE '.+')?\)/
|
435
435
|
end
|
436
436
|
|
437
437
|
it "can filter based on 'not starts with' with multiple values" do
|
438
|
-
@q.filter({:column => "sales.product.sku", :value => ["123","AB"], :op => :nsw}).dataset.sql.should =~ /WHERE \(\(`product`\.`sku` NOT LIKE '123%'
|
438
|
+
@q.filter({:column => "sales.product.sku", :value => ["123","AB"], :op => :nsw}).dataset.sql.should =~ /WHERE \(\(`product`\.`sku` NOT LIKE '123%'( ESCAPE '.+')?\) AND \(`product`\.`sku` NOT LIKE 'AB%'( ESCAPE '.+')?\)\)/
|
439
439
|
end
|
440
440
|
|
441
441
|
it "can filter based on contains" do
|
442
|
-
@q.filter({:column => "sales.product.sku", :value => "123", :op => :con}).dataset.sql.should =~ /WHERE \(`product`\.`sku` LIKE '%123%'
|
442
|
+
@q.filter({:column => "sales.product.sku", :value => "123", :op => :con}).dataset.sql.should =~ /WHERE \(`product`\.`sku` LIKE '%123%'( ESCAPE '.+')?\)/
|
443
443
|
end
|
444
444
|
|
445
445
|
it "can filter based on not contains" do
|
446
|
-
@q.filter({:column => "sales.product.sku", :value => "123", :op => :ncon}).dataset.sql.should =~ /WHERE \(`product`\.`sku` NOT LIKE '%123%'
|
446
|
+
@q.filter({:column => "sales.product.sku", :value => "123", :op => :ncon}).dataset.sql.should =~ /WHERE \(`product`\.`sku` NOT LIKE '%123%'( ESCAPE '.+')?\)/
|
447
447
|
end
|
448
448
|
|
449
449
|
it "can filter based on multiple contains" do
|
450
|
-
@q.filter({:column => "sales.product.sku", :value => ["123", "AB", "foo"], :op => :con}).dataset.sql.should =~ /WHERE \(\(`product`\.`sku` LIKE '%123%'
|
450
|
+
@q.filter({:column => "sales.product.sku", :value => ["123", "AB", "foo"], :op => :con}).dataset.sql.should =~ /WHERE \(\(`product`\.`sku` LIKE '%123%'( ESCAPE '.+')?\) OR \(`product`\.`sku` LIKE '%AB%'( ESCAPE '.+')?\) OR \(`product`\.`sku` LIKE '%foo%'( ESCAPE '.+')?\)\)/
|
451
451
|
end
|
452
452
|
|
453
453
|
it "can filter based on multiple contains" do
|
454
|
-
@q.filter({:column => "sales.product.sku", :value => ["123", "AB", "foo"], :op => :ncon}).dataset.sql.should =~ /WHERE \(\(`product`\.`sku` NOT LIKE '%123%'
|
454
|
+
@q.filter({:column => "sales.product.sku", :value => ["123", "AB", "foo"], :op => :ncon}).dataset.sql.should =~ /WHERE \(\(`product`\.`sku` NOT LIKE '%123%'( ESCAPE '.+')?\) AND \(`product`\.`sku` NOT LIKE '%AB%'( ESCAPE '.+')?\) AND \(`product`\.`sku` NOT LIKE '%foo%'( ESCAPE '.+')?\)\)/
|
455
455
|
end
|
456
456
|
|
457
457
|
it "does not join the base table when filtering" do
|
data/spec/schema/column_spec.rb
CHANGED
@@ -158,15 +158,15 @@ describe Chicago::Schema::Column do
|
|
158
158
|
end
|
159
159
|
|
160
160
|
it "is binary if a hash" do
|
161
|
-
described_class.new(:foo, :
|
161
|
+
described_class.new(:foo, :binary).should be_binary
|
162
162
|
end
|
163
163
|
|
164
|
-
it "is nullable by default if
|
165
|
-
described_class.new(:foo, :
|
164
|
+
it "is nullable by default if binary" do
|
165
|
+
described_class.new(:foo, :binary).should be_null
|
166
166
|
end
|
167
167
|
|
168
|
-
it "is internal by default if
|
169
|
-
described_class.new(:foo, :
|
168
|
+
it "is internal by default if binary" do
|
169
|
+
described_class.new(:foo, :binary).should be_internal
|
170
170
|
end
|
171
171
|
|
172
172
|
it "is visitable" do
|
@@ -214,8 +214,9 @@ describe "Chicago::Schema::Column#to_hash" do
|
|
214
214
|
Chicago::Schema::Column.new(:some_value, :money).to_hash[:size].should == [12,2]
|
215
215
|
end
|
216
216
|
|
217
|
-
it "should have a default :size of 16 for
|
218
|
-
Chicago::Schema::Column.new(:some_value, :
|
217
|
+
it "should have a default :size of 16 for binary types" do
|
218
|
+
Chicago::Schema::Column.new(:some_value, :binary).
|
219
|
+
to_hash[:size].should == 16
|
219
220
|
end
|
220
221
|
|
221
222
|
it "should be unsigned by default if a percentage" do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chicagowarehouse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 9
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 0.4.
|
9
|
+
- 3
|
10
|
+
version: 0.4.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Roland Swingler
|
@@ -28,10 +28,10 @@ dependencies:
|
|
28
28
|
- 3
|
29
29
|
- 0
|
30
30
|
version: "3.0"
|
31
|
-
requirement: *id001
|
32
|
-
type: :runtime
|
33
|
-
prerelease: false
|
34
31
|
name: sequel
|
32
|
+
prerelease: false
|
33
|
+
type: :runtime
|
34
|
+
requirement: *id001
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
version_requirements: &id002 !ruby/object:Gem::Requirement
|
37
37
|
none: false
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
- 3
|
45
45
|
- 2
|
46
46
|
version: 0.3.2
|
47
|
-
requirement: *id002
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
47
|
name: sequel_migration_builder
|
48
|
+
prerelease: false
|
49
|
+
type: :runtime
|
50
|
+
requirement: *id002
|
51
51
|
- !ruby/object:Gem::Dependency
|
52
52
|
version_requirements: &id003 !ruby/object:Gem::Requirement
|
53
53
|
none: false
|
@@ -60,10 +60,10 @@ dependencies:
|
|
60
60
|
- 8
|
61
61
|
- 1
|
62
62
|
version: 2.8.1
|
63
|
-
requirement: *id003
|
64
|
-
type: :runtime
|
65
|
-
prerelease: false
|
66
63
|
name: mysql
|
64
|
+
prerelease: false
|
65
|
+
type: :runtime
|
66
|
+
requirement: *id003
|
67
67
|
- !ruby/object:Gem::Dependency
|
68
68
|
version_requirements: &id004 !ruby/object:Gem::Requirement
|
69
69
|
none: false
|
@@ -74,10 +74,10 @@ dependencies:
|
|
74
74
|
segments:
|
75
75
|
- 0
|
76
76
|
version: "0"
|
77
|
-
requirement: *id004
|
78
|
-
type: :runtime
|
79
|
-
prerelease: false
|
80
77
|
name: chronic
|
78
|
+
prerelease: false
|
79
|
+
type: :runtime
|
80
|
+
requirement: *id004
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
version_requirements: &id005 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
@@ -88,10 +88,10 @@ dependencies:
|
|
88
88
|
segments:
|
89
89
|
- 0
|
90
90
|
version: "0"
|
91
|
-
requirement: *id005
|
92
|
-
type: :development
|
93
|
-
prerelease: false
|
94
91
|
name: yard
|
92
|
+
prerelease: false
|
93
|
+
type: :development
|
94
|
+
requirement: *id005
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
96
|
version_requirements: &id006 !ruby/object:Gem::Requirement
|
97
97
|
none: false
|
@@ -103,10 +103,10 @@ dependencies:
|
|
103
103
|
- 2
|
104
104
|
- 0
|
105
105
|
version: "2.0"
|
106
|
-
requirement: *id006
|
107
|
-
type: :development
|
108
|
-
prerelease: false
|
109
106
|
name: rspec
|
107
|
+
prerelease: false
|
108
|
+
type: :development
|
109
|
+
requirement: *id006
|
110
110
|
- !ruby/object:Gem::Dependency
|
111
111
|
version_requirements: &id007 !ruby/object:Gem::Requirement
|
112
112
|
none: false
|
@@ -117,10 +117,10 @@ dependencies:
|
|
117
117
|
segments:
|
118
118
|
- 0
|
119
119
|
version: "0"
|
120
|
-
requirement: *id007
|
121
|
-
type: :development
|
122
|
-
prerelease: false
|
123
120
|
name: bundler
|
121
|
+
prerelease: false
|
122
|
+
type: :development
|
123
|
+
requirement: *id007
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
version_requirements: &id008 !ruby/object:Gem::Requirement
|
126
126
|
none: false
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
segments:
|
132
132
|
- 0
|
133
133
|
version: "0"
|
134
|
-
requirement: *id008
|
135
|
-
type: :development
|
136
|
-
prerelease: false
|
137
134
|
name: jeweler
|
135
|
+
prerelease: false
|
136
|
+
type: :development
|
137
|
+
requirement: *id008
|
138
138
|
- !ruby/object:Gem::Dependency
|
139
139
|
version_requirements: &id009 !ruby/object:Gem::Requirement
|
140
140
|
none: false
|
@@ -145,10 +145,10 @@ dependencies:
|
|
145
145
|
segments:
|
146
146
|
- 0
|
147
147
|
version: "0"
|
148
|
-
requirement: *id009
|
149
|
-
type: :development
|
150
|
-
prerelease: false
|
151
148
|
name: rcov
|
149
|
+
prerelease: false
|
150
|
+
type: :development
|
151
|
+
requirement: *id009
|
152
152
|
- !ruby/object:Gem::Dependency
|
153
153
|
version_requirements: &id010 !ruby/object:Gem::Requirement
|
154
154
|
none: false
|
@@ -159,10 +159,10 @@ dependencies:
|
|
159
159
|
segments:
|
160
160
|
- 0
|
161
161
|
version: "0"
|
162
|
-
requirement: *id010
|
163
|
-
type: :development
|
164
|
-
prerelease: false
|
165
162
|
name: flog
|
163
|
+
prerelease: false
|
164
|
+
type: :development
|
165
|
+
requirement: *id010
|
166
166
|
- !ruby/object:Gem::Dependency
|
167
167
|
version_requirements: &id011 !ruby/object:Gem::Requirement
|
168
168
|
none: false
|
@@ -173,10 +173,10 @@ dependencies:
|
|
173
173
|
segments:
|
174
174
|
- 0
|
175
175
|
version: "0"
|
176
|
-
requirement: *id011
|
177
|
-
type: :development
|
178
|
-
prerelease: false
|
179
176
|
name: ZenTest
|
177
|
+
prerelease: false
|
178
|
+
type: :development
|
179
|
+
requirement: *id011
|
180
180
|
- !ruby/object:Gem::Dependency
|
181
181
|
version_requirements: &id012 !ruby/object:Gem::Requirement
|
182
182
|
none: false
|
@@ -187,10 +187,10 @@ dependencies:
|
|
187
187
|
segments:
|
188
188
|
- 0
|
189
189
|
version: "0"
|
190
|
-
requirement: *id012
|
191
|
-
type: :development
|
192
|
-
prerelease: false
|
193
190
|
name: timecop
|
191
|
+
prerelease: false
|
192
|
+
type: :development
|
193
|
+
requirement: *id012
|
194
194
|
description: Simple Data Warehouse toolkit for ruby
|
195
195
|
email: roland.swingler@gmail.com
|
196
196
|
executables: []
|