datastax_rails 1.0.5 → 1.0.6
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/README.rdoc +23 -14
- data/lib/datastax_rails/base.rb +1 -1
- data/lib/datastax_rails/callbacks.rb +2 -2
- data/lib/datastax_rails/connection.rb +2 -1
- data/lib/datastax_rails/persistence.rb +28 -21
- data/lib/datastax_rails/relation/search_methods.rb +5 -3
- data/lib/datastax_rails/relation.rb +5 -5
- data/lib/datastax_rails/tasks/column_family.rb +7 -6
- data/lib/datastax_rails/tasks/ds.rake +8 -14
- data/lib/datastax_rails/version.rb +1 -1
- data/spec/datastax_rails/relation/search_methods_spec.rb +12 -1
- data/spec/dummy/log/development.log +95 -0
- data/spec/dummy/log/test.log +1956 -20256
- metadata +4 -5
- data/config/schema.xml +0 -266
data/README.rdoc
CHANGED
@@ -28,25 +28,29 @@ First add it to your Gemfile:
|
|
28
28
|
|
29
29
|
Configure the config/datastax.yml file:
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
31
|
+
development:
|
32
|
+
servers: ["localhost:9160"]
|
33
|
+
keyspace: "<my_app>_development"
|
34
|
+
strategy_class: "org.apache.cassandra.locator.NetworkTopologyStrategy"
|
35
|
+
strategy_options: {"DC1": "1"}
|
36
|
+
connection_options:
|
37
|
+
timeout: 2
|
38
|
+
solr:
|
39
|
+
url: http://localhost:8983/solr
|
38
40
|
|
39
41
|
The above is configured to use NetworkTopologyStrategy. If you go with this, you'll need to configure Datastax to use the
|
40
42
|
NetworkTopologySnitch and set up the cassandra-topology.properties file. See the Datastax documentation for more information.
|
41
43
|
For a more simple, single datacenter setup, something like this should probably work:
|
42
44
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
45
|
+
development:
|
46
|
+
servers: ["localhost:9160"]
|
47
|
+
keyspace: "<my_app>_development"
|
48
|
+
strategy_class: "org.apache.cassandra.locator.SimpleStrategy"
|
49
|
+
strategy_options: {"replication_factor": "1"}
|
50
|
+
connection_options:
|
51
|
+
timeout: 2
|
52
|
+
solr:
|
53
|
+
url: http://localhost:8983/solr
|
50
54
|
|
51
55
|
Create your keyspace:
|
52
56
|
|
@@ -60,3 +64,8 @@ Once you've created some models, the following will upload the solr schemas and
|
|
60
64
|
|
61
65
|
It is safe to run ds:schema over and over. In fact, it is necessary to re-run it any time you change the
|
62
66
|
attributes on any model. DSR will only upload schema files if they have changed.
|
67
|
+
|
68
|
+
=== Known issues
|
69
|
+
|
70
|
+
Calling :find on a model with a bogus ID returns an empty model instead of RecordNotFound. This is due to a bug
|
71
|
+
in DSE that is supposedly fixed in the upcoming 2.2 release.
|
data/lib/datastax_rails/base.rb
CHANGED
@@ -414,7 +414,7 @@ module DatastaxRails #:nodoc:
|
|
414
414
|
|
415
415
|
class << self
|
416
416
|
delegate :find, :first, :all, :exists?, :any?, :many?, :to => :scoped
|
417
|
-
delegate :destroy, :destroy_all, :delete, :
|
417
|
+
delegate :destroy, :destroy_all, :delete, :update, :update_all, :to => :scoped
|
418
418
|
# delegate :find_each, :find_in_batches, :to => :scoped
|
419
419
|
delegate :order, :limit, :where, :where_not, :page, :paginate, :select, :to => :scoped
|
420
420
|
delegate :per_page, :each, :group, :total_pages, :search, :fulltext, :to => :scoped
|
@@ -22,11 +22,11 @@ module DatastaxRails
|
|
22
22
|
end
|
23
23
|
|
24
24
|
private
|
25
|
-
def create_or_update #:nodoc:
|
25
|
+
def create_or_update(*) #:nodoc:
|
26
26
|
_run_save_callbacks { super }
|
27
27
|
end
|
28
28
|
|
29
|
-
def create #:nodoc:
|
29
|
+
def create(*) #:nodoc:
|
30
30
|
_run_create_callbacks { super }
|
31
31
|
end
|
32
32
|
|
@@ -14,7 +14,8 @@ module DatastaxRails
|
|
14
14
|
def establish_connection(spec)
|
15
15
|
DatastaxRails::Base.config = spec.with_indifferent_access
|
16
16
|
spec.reverse_merge!(DEFAULT_OPTIONS)
|
17
|
-
|
17
|
+
connection_options = spec[:connection_options] || {}
|
18
|
+
self.connection = CassandraCQL::Database.new(spec[:servers], {:keyspace => spec[:keyspace]}, connection_options.symbolize_keys)
|
18
19
|
end
|
19
20
|
end
|
20
21
|
end
|
@@ -2,25 +2,32 @@ module DatastaxRails
|
|
2
2
|
module Persistence
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
|
+
included do
|
6
|
+
attr_accessor :ds_consistency_level
|
7
|
+
end
|
8
|
+
|
5
9
|
module ClassMethods
|
10
|
+
# Removes one or more records with corresponding keys
|
6
11
|
def remove(*keys)
|
7
12
|
ActiveSupport::Notifications.instrument("remove.datastax_rails", :column_family => column_family, :key => key) do
|
8
13
|
cql.delete(keys).using(thrift_write_consistency).execute
|
9
14
|
end
|
10
15
|
end
|
11
16
|
|
17
|
+
# Truncates the column_family associated with this class
|
12
18
|
def delete_all
|
13
19
|
ActiveSupport::Notifications.instrument("truncate.datastax_rails", :column_family => column_family) do
|
14
20
|
cql.truncate.execute
|
15
21
|
end
|
16
22
|
end
|
23
|
+
alias :truncate :delete_all
|
17
24
|
|
18
|
-
def create(attributes = {})
|
19
|
-
new(attributes).tap do |object|
|
20
|
-
object.save
|
25
|
+
def create(attributes = {}, options = {}, &block)
|
26
|
+
new(attributes, &block).tap do |object|
|
27
|
+
object.save(options)
|
21
28
|
end
|
22
29
|
end
|
23
|
-
|
30
|
+
|
24
31
|
def write(key, attributes, schema_version)
|
25
32
|
key.tap do |key|
|
26
33
|
attributes = encode_attributes(attributes, schema_version)
|
@@ -70,16 +77,16 @@ module DatastaxRails
|
|
70
77
|
!(new_record? || destroyed?)
|
71
78
|
end
|
72
79
|
|
73
|
-
def save(
|
80
|
+
def save(options = {})
|
74
81
|
begin
|
75
|
-
create_or_update
|
82
|
+
create_or_update(options)
|
76
83
|
rescue DatastaxRails::RecordInvalid
|
77
84
|
false
|
78
85
|
end
|
79
86
|
end
|
80
87
|
|
81
|
-
def save!
|
82
|
-
create_or_update || raise(RecordNotSaved)
|
88
|
+
def save!(options = {})
|
89
|
+
create_or_update(options) || raise(RecordNotSaved)
|
83
90
|
end
|
84
91
|
|
85
92
|
def destroy
|
@@ -88,20 +95,20 @@ module DatastaxRails
|
|
88
95
|
freeze
|
89
96
|
end
|
90
97
|
|
91
|
-
def update_attribute(name, value)
|
98
|
+
def update_attribute(name, value, options = {})
|
92
99
|
name = name.to_s
|
93
100
|
send("#{name}=", value)
|
94
|
-
save(:validate => false)
|
101
|
+
save(options.merge(:validate => false))
|
95
102
|
end
|
96
103
|
|
97
|
-
def update_attributes(attributes)
|
104
|
+
def update_attributes(attributes, options = {})
|
98
105
|
self.attributes = attributes
|
99
|
-
save
|
106
|
+
save(options)
|
100
107
|
end
|
101
108
|
|
102
|
-
def update_attributes!(attributes)
|
109
|
+
def update_attributes!(attributes, options = {})
|
103
110
|
self.attributes = attributes
|
104
|
-
save!
|
111
|
+
save!(options)
|
105
112
|
end
|
106
113
|
|
107
114
|
def reload
|
@@ -109,23 +116,23 @@ module DatastaxRails
|
|
109
116
|
end
|
110
117
|
|
111
118
|
private
|
112
|
-
def create_or_update
|
113
|
-
result = new_record? ? create : update
|
119
|
+
def create_or_update(options)
|
120
|
+
result = new_record? ? create(options) : update(options)
|
114
121
|
result != false
|
115
122
|
end
|
116
123
|
|
117
|
-
def create
|
124
|
+
def create(options)
|
118
125
|
@key ||= self.class.next_key(self)
|
119
|
-
write
|
126
|
+
write(options)
|
120
127
|
@new_record = false
|
121
128
|
@key
|
122
129
|
end
|
123
130
|
|
124
|
-
def update
|
125
|
-
write
|
131
|
+
def update(options)
|
132
|
+
write(options)
|
126
133
|
end
|
127
134
|
|
128
|
-
def write #:nodoc:
|
135
|
+
def write(options) #:nodoc:
|
129
136
|
changed_attributes = changed.inject({}) { |h, n| h[n] = read_attribute(n); h }
|
130
137
|
self.class.write(key, changed_attributes, schema_version)
|
131
138
|
end
|
@@ -277,7 +277,7 @@ module DatastaxRails
|
|
277
277
|
def fulltext(query, opts = {})
|
278
278
|
return self if query.blank?
|
279
279
|
|
280
|
-
opts[:query] = query
|
280
|
+
opts[:query] = downcase_query(query)
|
281
281
|
|
282
282
|
clone.tap do |r|
|
283
283
|
r.fulltext_values << opts
|
@@ -297,13 +297,15 @@ module DatastaxRails
|
|
297
297
|
def solr_format(value)
|
298
298
|
case
|
299
299
|
when value.is_a?(Date), value.is_a?(Time)
|
300
|
-
value.strftime('%Y-%m-%dT%H
|
300
|
+
value.strftime('%Y-%m-%dT%H:%M:%SZ')
|
301
301
|
when value.is_a?(Array)
|
302
302
|
value.collect {|v| v.gsub(/ /,"\\ ") }.join(" OR ")
|
303
303
|
when value.is_a?(Fixnum)
|
304
304
|
value < 0 ? "\\#{value}" : value
|
305
|
+
when value.is_a?(Range)
|
306
|
+
"[#{solr_format(value.first)} TO #{solr_format(value.last)}]"
|
305
307
|
when value.is_a?(String)
|
306
|
-
value.gsub(/ /,"\\ ")
|
308
|
+
solr_escape(downcase_query(value.gsub(/ /,"\\ ")))
|
307
309
|
else
|
308
310
|
value
|
309
311
|
end
|
@@ -261,26 +261,26 @@ module DatastaxRails
|
|
261
261
|
@where_values.each do |wv|
|
262
262
|
wv.each do |k,v|
|
263
263
|
# If v is blank, check that there is no value for the field in the document
|
264
|
-
filter_queries << (v.blank? ? "-#{k}:[* TO *]" : "#{k}:(#{
|
264
|
+
filter_queries << (v.blank? ? "-#{k}:[* TO *]" : "#{k}:(#{v})")
|
265
265
|
end
|
266
266
|
end
|
267
267
|
|
268
268
|
@where_not_values.each do |wnv|
|
269
269
|
wnv.each do |k,v|
|
270
270
|
# If v is blank, check for any value for the field in document
|
271
|
-
filter_queries << (v.blank? ? "#{k}:[* TO *]" : "-#{k}:(#{
|
271
|
+
filter_queries << (v.blank? ? "#{k}:[* TO *]" : "-#{k}:(#{v})")
|
272
272
|
end
|
273
273
|
end
|
274
274
|
|
275
275
|
@greater_than_values.each do |gtv|
|
276
276
|
gtv.each do |k,v|
|
277
|
-
filter_queries << "#{k}:[#{
|
277
|
+
filter_queries << "#{k}:[#{v} TO *]"
|
278
278
|
end
|
279
279
|
end
|
280
280
|
|
281
281
|
@less_than_values.each do |ltv|
|
282
282
|
ltv.each do |k,v|
|
283
|
-
filter_queries << "#{k}:[* TO #{
|
283
|
+
filter_queries << "#{k}:[* TO #{v}]"
|
284
284
|
end
|
285
285
|
end
|
286
286
|
|
@@ -360,7 +360,7 @@ module DatastaxRails
|
|
360
360
|
# then analysis isn't performed. This means that the query does not get downcased.
|
361
361
|
# We therefore need to perform the downcasing ourselves. This does it while still
|
362
362
|
# leaving boolean operations (AND, OR, NOT) upcased.
|
363
|
-
def
|
363
|
+
def downcase_query(value)
|
364
364
|
if(value.is_a?(String))
|
365
365
|
value.split(/\bAND\b/).collect do |a|
|
366
366
|
a.split(/\bOR\b/).collect do |o|
|
@@ -77,7 +77,9 @@ module DatastaxRails
|
|
77
77
|
return ERB.new(File.read(File.join(File.dirname(__FILE__),"..","..","..","config","schema.xml.erb"))).result(binding)
|
78
78
|
end
|
79
79
|
|
80
|
-
def upload_solr_schemas(column_family
|
80
|
+
def upload_solr_schemas(column_family)
|
81
|
+
force = !column_family.nil?
|
82
|
+
column_family ||= :all
|
81
83
|
# Ensure schema migrations CF exists
|
82
84
|
unless connection.schema.column_families['schema_migrations']
|
83
85
|
connection.execute_cql_query(DatastaxRails::Cql::CreateColumnFamily.new('schema_migrations').key_type(:text).to_cql)
|
@@ -90,7 +92,7 @@ module DatastaxRails
|
|
90
92
|
|
91
93
|
models_to_upload = []
|
92
94
|
|
93
|
-
if column_family == :all
|
95
|
+
if column_family.to_sym == :all
|
94
96
|
# Ensure all models are loaded
|
95
97
|
Dir[Rails.root.join("app","models",'*.rb').to_s].each do |file|
|
96
98
|
require File.basename(file, File.extname(file))
|
@@ -113,23 +115,22 @@ module DatastaxRails
|
|
113
115
|
solr_url = "#{DatastaxRails::Base.config[:solr][:url]}/resource/#{DatastaxRails::Base.config[:keyspace]}.#{model.column_family}"
|
114
116
|
uri = URI.parse(solr_url)
|
115
117
|
Net::HTTP.start(uri.host, uri.port) do |http|
|
116
|
-
if solrconfig_digest != sm_digests['solrconfig']
|
118
|
+
if force || solrconfig_digest != sm_digests['solrconfig']
|
117
119
|
puts "Posting Solr Config file to '#{uri.path}/solrconfig.xml'"
|
118
120
|
http.post(uri.path+"/solrconfig.xml", solrconfig)
|
119
121
|
DatastaxRails::Cql::Update.new(SchemaMigration, model.column_family).columns(:solrconfig => solrconfig_digest).execute
|
120
122
|
end
|
121
|
-
if stopwords_digest != sm_digests['stopwords']
|
123
|
+
if force || stopwords_digest != sm_digests['stopwords']
|
122
124
|
puts "Posting Solr Stopwords file to '#{uri.path}/stopwords.txt'"
|
123
125
|
http.post(uri.path+"/stopwords.txt", stopwords)
|
124
126
|
DatastaxRails::Cql::Update.new(SchemaMigration, model.column_family).columns(:stopwords => stopwords_digest).execute
|
125
127
|
end
|
126
|
-
if schema_digest != sm_digests['digest']
|
128
|
+
if force || schema_digest != sm_digests['digest']
|
127
129
|
puts "Posting Solr Schema file to '#{uri.path}/schema.xml'"
|
128
130
|
http.post(uri.path+"/schema.xml", schema)
|
129
131
|
DatastaxRails::Cql::Update.new(SchemaMigration, model.column_family).columns(:digest => schema_digest).execute
|
130
132
|
end
|
131
133
|
end
|
132
|
-
|
133
134
|
end
|
134
135
|
end
|
135
136
|
|
@@ -4,7 +4,7 @@ namespace :ds do
|
|
4
4
|
@config = @configs[Rails.env || 'development']
|
5
5
|
end
|
6
6
|
|
7
|
-
desc 'Create the keyspace in config/
|
7
|
+
desc 'Create the keyspace in config/datastax.yml for the current environment'
|
8
8
|
task :create do
|
9
9
|
@configs = YAML.load_file(Rails.root.join("config", "datastax.yml"))
|
10
10
|
@config = @configs[Rails.env || 'development']
|
@@ -13,7 +13,7 @@ namespace :ds do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
namespace :create do
|
16
|
-
desc 'Create keyspaces in config/
|
16
|
+
desc 'Create keyspaces in config/datastax.yml for all environments'
|
17
17
|
task :all => :configure do
|
18
18
|
created = []
|
19
19
|
@configs.values.each do |config|
|
@@ -24,14 +24,14 @@ namespace :ds do
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
desc 'Drop keyspace in config/
|
27
|
+
desc 'Drop keyspace in config/datastax.yml for the current environment'
|
28
28
|
task :drop => :configure do
|
29
29
|
DatastaxRails::Tasks::Keyspace.drop @config['keyspace']
|
30
30
|
puts "Dropped keyspace: #{@config['keyspace']}"
|
31
31
|
end
|
32
32
|
|
33
33
|
namespace :drop do
|
34
|
-
desc 'Drop keyspaces in config/
|
34
|
+
desc 'Drop keyspaces in config/datastax.yml for all environments'
|
35
35
|
task :all => :configure do
|
36
36
|
dropped = []
|
37
37
|
@configs.values.each do |config|
|
@@ -42,19 +42,13 @@ namespace :ds do
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
-
|
45
|
+
desc 'Upload SOLR schemas -- pass in CF name to force an upload (all uploads everything).'
|
46
|
+
task :schema, [:force_cf] => :configure do |t, args|
|
46
47
|
cf = DatastaxRails::Tasks::ColumnFamily.new(@config['keyspace'])
|
47
|
-
cf.upload_solr_schemas
|
48
|
+
cf.upload_solr_schemas(args[:force_cf])
|
48
49
|
end
|
49
50
|
|
50
|
-
desc '
|
51
|
-
task :migrate => :configure do
|
52
|
-
version = ( ENV['VERSION'] ? ENV['VERSION'].to_i : nil )
|
53
|
-
DatastaxRails::Schema::Migrator.migrate DatastaxRails::Schema::Migrator.migrations_path, version
|
54
|
-
schema_dump
|
55
|
-
end
|
56
|
-
|
57
|
-
desc 'Load the seed data from ks/seeds.rb'
|
51
|
+
desc 'Load the seed data from ds/seeds.rb'
|
58
52
|
task :seed => :environment do
|
59
53
|
seed_file = Rails.root.join("ks","seeds.rb")
|
60
54
|
load(seed_file) if seed_file.exist?
|
@@ -94,6 +94,13 @@ describe DatastaxRails::Relation do
|
|
94
94
|
@relation.commit_solr
|
95
95
|
@relation.where(:name => ['horseback riding', 'some other hobby']).should_not be_empty
|
96
96
|
end
|
97
|
+
|
98
|
+
it "should search for values within a range" do
|
99
|
+
Hobby.create(:name => 'jobbing', :complexity => 1.2)
|
100
|
+
@relation.commit_solr
|
101
|
+
@relation.where(:complexity => 1..2).should_not be_empty
|
102
|
+
@relation.where(:complexity => 2..3).should be_empty
|
103
|
+
end
|
97
104
|
end
|
98
105
|
|
99
106
|
describe "#where_not" do
|
@@ -112,6 +119,10 @@ describe DatastaxRails::Relation do
|
|
112
119
|
end
|
113
120
|
|
114
121
|
describe "#fulltext" do
|
115
|
-
|
122
|
+
it "should allow case-insensitive wildcard searches" do
|
123
|
+
Hobby.create(:name => "Swimming")
|
124
|
+
@relation.commit_solr
|
125
|
+
@relation.fulltext("swimming").should_not be_empty
|
126
|
+
end
|
116
127
|
end
|
117
128
|
end
|
@@ -296,3 +296,98 @@ SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'cars'
|
|
296
296
|
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'jobs'
|
297
297
|
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'boats'
|
298
298
|
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'hobbies'
|
299
|
+
TRUNCATE hobbies
|
300
|
+
hobbies truncate (1006.5ms) hobbies
|
301
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'people'
|
302
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'cars'
|
303
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'jobs'
|
304
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'boats'
|
305
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'hobbies'
|
306
|
+
update people using consistency QUORUM SET nickname = 'Frank' , updated_at = '2012-07-25T13:44:02Z' , schema_version = '0' WHERE KEY IN ('7c572fcc-bbeb-11e1-915e-ca3273ab35b9')
|
307
|
+
people insert (4.2ms) 7c572fcc-bbeb-11e1-915e-ca3273ab35b9 {"updated_at"=>"2012-07-25T13:44:02Z", "nickname"=>"Frank", "schema_version"=>"0"}
|
308
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'people'
|
309
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'cars'
|
310
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'jobs'
|
311
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'boats'
|
312
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'hobbies'
|
313
|
+
update schema_migrations using consistency QUORUM SET digest = '4dfb82012726f11f7a92bf1140b8694f70f4534b' WHERE KEY IN ('hobbies')
|
314
|
+
update hobbies using consistency QUORUM SET name = 'Swimming' , created_at = '2012-07-25T14:32:26Z' , updated_at = '2012-07-25T14:32:26Z' , schema_version = '0' WHERE KEY IN ('8e10a45c-d665-11e1-8431-1cdaf435f81b')
|
315
|
+
hobbies insert (4.2ms) 8e10a45c-d665-11e1-8431-1cdaf435f81b {"name"=>"Swimming", "created_at"=>"2012-07-25T14:32:26Z", "updated_at"=>"2012-07-25T14:32:26Z", "schema_version"=>"0"}
|
316
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'people'
|
317
|
+
update schema_migrations using consistency QUORUM SET digest = '4fe800b7b84bd0b91df4ee6fd4ccef51ce4fbdc8' WHERE KEY IN ('people')
|
318
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'cars'
|
319
|
+
update schema_migrations using consistency QUORUM SET digest = '96576c08f1dc61a956f4561906258c0a0dbe9673' WHERE KEY IN ('cars')
|
320
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'jobs'
|
321
|
+
update schema_migrations using consistency QUORUM SET digest = 'f2ed01083dec2d627152b04cddd1e179b9075981' WHERE KEY IN ('jobs')
|
322
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'boats'
|
323
|
+
update schema_migrations using consistency QUORUM SET digest = '460ce3b1231945a4eb5c508cfac911d71f57d7a9' WHERE KEY IN ('boats')
|
324
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'hobbies'
|
325
|
+
update schema_migrations using consistency QUORUM SET digest = '12a4309ee59ebbec92d77f8293fcf1059af271c5' WHERE KEY IN ('hobbies')
|
326
|
+
update hobbies using consistency QUORUM SET name = 'Swimming' , created_at = '2012-07-25T16:53:49Z' , updated_at = '2012-07-25T16:53:49Z' , schema_version = '0' WHERE KEY IN ('4eac7fe8-d679-11e1-9064-e7bcad210add')
|
327
|
+
hobbies insert (12.2ms) 4eac7fe8-d679-11e1-9064-e7bcad210add {"name"=>"Swimming", "created_at"=>"2012-07-25T16:53:49Z", "updated_at"=>"2012-07-25T16:53:49Z", "schema_version"=>"0"}
|
328
|
+
update people using consistency QUORUM SET name = 'Steve' , created_at = '2012-07-25T16:58:10Z' , nickname = 'Dog' , updated_at = '2012-07-25T16:58:10Z' , schema_version = '0' WHERE KEY IN ('ea5d4cec-d679-11e1-90fc-d988657988ea')
|
329
|
+
people insert (3.3ms) ea5d4cec-d679-11e1-90fc-d988657988ea {"name"=>"Steve", "created_at"=>"2012-07-25T16:58:10Z", "updated_at"=>"2012-07-25T16:58:10Z", "nickname"=>"Dog", "schema_version"=>"0"}
|
330
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'people'
|
331
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'people'
|
332
|
+
update schema_migrations using consistency QUORUM SET digest = '666e0279b6183050f309749cd8fe0e38b6d82b61' WHERE KEY IN ('people')
|
333
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'cars'
|
334
|
+
update schema_migrations using consistency QUORUM SET digest = '8619c47fab2965bc608bb9d3d4f2655a140c0d5d' WHERE KEY IN ('cars')
|
335
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'jobs'
|
336
|
+
update schema_migrations using consistency QUORUM SET digest = '9777c0692dbdd644fb8079c2150cbcd4d391f25e' WHERE KEY IN ('jobs')
|
337
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'boats'
|
338
|
+
update schema_migrations using consistency QUORUM SET digest = '03a6047584d53e522041515b7c34ef6e227625da' WHERE KEY IN ('boats')
|
339
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'hobbies'
|
340
|
+
update schema_migrations using consistency QUORUM SET digest = '4dfb82012726f11f7a92bf1140b8694f70f4534b' WHERE KEY IN ('hobbies')
|
341
|
+
update people using consistency QUORUM SET name = 'James' , created_at = '2012-07-25T18:41:32Z' , nickname = 'Jim' , updated_at = '2012-07-25T18:41:32Z' , schema_version = '0' WHERE KEY IN ('5affdbaa-d688-11e1-81c2-85b55974dfa6')
|
342
|
+
people insert (5.7ms) 5affdbaa-d688-11e1-81c2-85b55974dfa6 {"name"=>"James", "created_at"=>"2012-07-25T18:41:32Z", "updated_at"=>"2012-07-25T18:41:32Z", "nickname"=>"Jim", "schema_version"=>"0"}
|
343
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'people'
|
344
|
+
update schema_migrations using consistency QUORUM SET digest = 'd5d2d3dfc09623df745d2c4dbbecfdf28bb4ea54' WHERE KEY IN ('people')
|
345
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'cars'
|
346
|
+
update schema_migrations using consistency QUORUM SET digest = 'c83a31e72b8fa195c9e6a71d525a294990baf9b5' WHERE KEY IN ('cars')
|
347
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'jobs'
|
348
|
+
update schema_migrations using consistency QUORUM SET digest = '01481ebbdd1fd1aa83f5fa175831b5859a09e2f6' WHERE KEY IN ('jobs')
|
349
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'boats'
|
350
|
+
update schema_migrations using consistency QUORUM SET digest = '4e7a6d352ae0c202107288be18b40c17608435b5' WHERE KEY IN ('boats')
|
351
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'hobbies'
|
352
|
+
update schema_migrations using consistency QUORUM SET digest = '0dd6ac4b4bfab2d16d88d16d4b49240b398b0665' WHERE KEY IN ('hobbies')
|
353
|
+
update people using consistency QUORUM SET name = 'Roosevelt' , created_at = '2012-07-25T19:08:24Z' , nickname = 'Rose' , updated_at = '2012-07-25T19:08:24Z' , schema_version = '0' WHERE KEY IN ('1bb7274c-d68c-11e1-80d1-d8ed5f7e57ea')
|
354
|
+
people insert (4.3ms) 1bb7274c-d68c-11e1-80d1-d8ed5f7e57ea {"name"=>"Roosevelt", "created_at"=>"2012-07-25T19:08:24Z", "updated_at"=>"2012-07-25T19:08:24Z", "nickname"=>"Rose", "schema_version"=>"0"}
|
355
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'people'
|
356
|
+
update schema_migrations using consistency QUORUM SET digest = '666e0279b6183050f309749cd8fe0e38b6d82b61' WHERE KEY IN ('people')
|
357
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'cars'
|
358
|
+
update schema_migrations using consistency QUORUM SET digest = '8619c47fab2965bc608bb9d3d4f2655a140c0d5d' WHERE KEY IN ('cars')
|
359
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'jobs'
|
360
|
+
update schema_migrations using consistency QUORUM SET digest = '9777c0692dbdd644fb8079c2150cbcd4d391f25e' WHERE KEY IN ('jobs')
|
361
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'boats'
|
362
|
+
update schema_migrations using consistency QUORUM SET digest = '03a6047584d53e522041515b7c34ef6e227625da' WHERE KEY IN ('boats')
|
363
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'hobbies'
|
364
|
+
update schema_migrations using consistency QUORUM SET digest = '125644e38ff34a0c370d7d73610e20d7814de405' WHERE KEY IN ('hobbies')
|
365
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'people'
|
366
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'cars'
|
367
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'jobs'
|
368
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'boats'
|
369
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'hobbies'
|
370
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'hobbies'
|
371
|
+
update schema_migrations using consistency QUORUM SET solrconfig = 'f62b77622d5d27f14d3a5fba40a5b07713b76edc' WHERE KEY IN ('hobbies')
|
372
|
+
update schema_migrations using consistency QUORUM SET stopwords = 'ec75bf81ff3d3196ff4667d16f3ba46fc1b4ac76' WHERE KEY IN ('hobbies')
|
373
|
+
update schema_migrations using consistency QUORUM SET digest = '125644e38ff34a0c370d7d73610e20d7814de405' WHERE KEY IN ('hobbies')
|
374
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'people'
|
375
|
+
update schema_migrations using consistency QUORUM SET solrconfig = 'f62b77622d5d27f14d3a5fba40a5b07713b76edc' WHERE KEY IN ('people')
|
376
|
+
update schema_migrations using consistency QUORUM SET stopwords = 'ec75bf81ff3d3196ff4667d16f3ba46fc1b4ac76' WHERE KEY IN ('people')
|
377
|
+
update schema_migrations using consistency QUORUM SET digest = '666e0279b6183050f309749cd8fe0e38b6d82b61' WHERE KEY IN ('people')
|
378
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'cars'
|
379
|
+
update schema_migrations using consistency QUORUM SET solrconfig = 'f62b77622d5d27f14d3a5fba40a5b07713b76edc' WHERE KEY IN ('cars')
|
380
|
+
update schema_migrations using consistency QUORUM SET stopwords = 'ec75bf81ff3d3196ff4667d16f3ba46fc1b4ac76' WHERE KEY IN ('cars')
|
381
|
+
update schema_migrations using consistency QUORUM SET digest = '8619c47fab2965bc608bb9d3d4f2655a140c0d5d' WHERE KEY IN ('cars')
|
382
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'jobs'
|
383
|
+
update schema_migrations using consistency QUORUM SET solrconfig = 'f62b77622d5d27f14d3a5fba40a5b07713b76edc' WHERE KEY IN ('jobs')
|
384
|
+
update schema_migrations using consistency QUORUM SET stopwords = 'ec75bf81ff3d3196ff4667d16f3ba46fc1b4ac76' WHERE KEY IN ('jobs')
|
385
|
+
update schema_migrations using consistency QUORUM SET digest = '9777c0692dbdd644fb8079c2150cbcd4d391f25e' WHERE KEY IN ('jobs')
|
386
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'boats'
|
387
|
+
update schema_migrations using consistency QUORUM SET solrconfig = 'f62b77622d5d27f14d3a5fba40a5b07713b76edc' WHERE KEY IN ('boats')
|
388
|
+
update schema_migrations using consistency QUORUM SET stopwords = 'ec75bf81ff3d3196ff4667d16f3ba46fc1b4ac76' WHERE KEY IN ('boats')
|
389
|
+
update schema_migrations using consistency QUORUM SET digest = '03a6047584d53e522041515b7c34ef6e227625da' WHERE KEY IN ('boats')
|
390
|
+
SELECT * FROM schema_migrations USING CONSISTENCY QUORUM WHERE key = 'hobbies'
|
391
|
+
update schema_migrations using consistency QUORUM SET solrconfig = 'f62b77622d5d27f14d3a5fba40a5b07713b76edc' WHERE KEY IN ('hobbies')
|
392
|
+
update schema_migrations using consistency QUORUM SET stopwords = 'ec75bf81ff3d3196ff4667d16f3ba46fc1b4ac76' WHERE KEY IN ('hobbies')
|
393
|
+
update schema_migrations using consistency QUORUM SET digest = '125644e38ff34a0c370d7d73610e20d7814de405' WHERE KEY IN ('hobbies')
|