From 09c84c6f21232f56aaa818480afe69ad5688e0e8 Mon Sep 17 00:00:00 2001 From: Merkushin Date: Sun, 28 Apr 2013 13:17:55 +0600 Subject: [PATCH] fix transmitter replace if no data --- lib/sphinx/integration/transmitter.rb | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/lib/sphinx/integration/transmitter.rb b/lib/sphinx/integration/transmitter.rb index 88c8e3e..ca4ddc6 100644 --- a/lib/sphinx/integration/transmitter.rb +++ b/lib/sphinx/integration/transmitter.rb @@ -12,17 +12,17 @@ def initialize(record) # Обновляет запись в сфинксе def replace self.class.rt_indexes(record.class) do |index| - data = transmitted_data(index) - - query = Riddle::Query::Insert.new(index.rt_name, data.keys, data.values).replace!.to_sql - self.class.execute(query) - - query = "UPDATE #{index.core_name} SET sphinx_deleted = 1 WHERE id = #{record.sphinx_document_id}" - self.class.execute(query) + if (data = transmitted_data(index)) + query = Riddle::Query::Insert.new(index.rt_name, data.keys, data.values).replace!.to_sql + self.class.execute(query) - if Redis::Mutex.new(:full_reindex).locked? - query = Riddle::Query::Insert.new(index.delta_rt_name, data.keys, data.values).replace!.to_sql + query = "UPDATE #{index.core_name} SET sphinx_deleted = 1 WHERE id = #{record.sphinx_document_id}" self.class.execute(query) + + if Redis::Mutex.new(:full_reindex).locked? + query = Riddle::Query::Insert.new(index.delta_rt_name, data.keys, data.values).replace!.to_sql + self.class.execute(query) + end end end end @@ -99,6 +99,7 @@ def self.execute(query) def transmitted_data(index) sql = index.single_query_sql.gsub('%{ID}', record.id.to_s) row = record.class.connection.execute(sql).first + return unless row row.merge!(mva_attributes(index)) row.each do |key, value|