class ThinkingSphinx::ActiveRecord::SQLBuilder

Attributes

source[R]

Public Class Methods

new(source) click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 6
def initialize(source)
  @source = source
end

Public Instance Methods

sql_query() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 10
def sql_query
  statement.to_relation.to_sql.gsub(/\n/, "\\\n")
end
sql_query_info() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 19
def sql_query_info
  statement.to_query_info_relation.to_sql
end
sql_query_post_index() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 27
def sql_query_post_index
  return [] unless delta_processor && !source.delta?

  [delta_processor.reset_query]
end
sql_query_pre() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 23
def sql_query_pre
  query.to_query
end
sql_query_range() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 14
def sql_query_range
  return nil if source.disable_range?
  statement.to_query_range_relation.to_sql
end

Private Instance Methods

associations() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 55
def associations
  @associations ||= begin
    joins = Joiner::Joins.new model
    if joins.respond_to?(:join_association_class)
      joins.join_association_class = ThinkingSphinx::ActiveRecord::JoinAssociation
    end

    source.associations.reject(&:string?).each do |association|
      joins.add_join_to association.stack
    end

    joins
  end
end
big_document_ids?() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 86
def big_document_ids?
  source.options[:big_document_ids] || config.settings['big_document_ids']
end
config() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 47
def config
  ThinkingSphinx::Configuration.instance
end
document_id() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 90
def document_id
  quoted_alias = quote_column source.primary_key
  column = quoted_primary_key
  column = cast_to_bigint column if big_document_ids?
  column = "#{column} * #{config.indices.count} + #{source.offset}"

  "#{column} AS #{quoted_alias}"
end
groupings() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 110
def groupings
  groupings = source.groupings
  if model.column_names.include?(model.inheritance_column)
    groupings << quoted_inheritance_column
  end
  groupings
end
model_name() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 118
def model_name
  klass = model.name
  klass = klass.demodulize unless model.store_full_sti_class
  klass
end
pre_select() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 82
def pre_select
  ('SQL_NO_CACHE ' if source.type == 'mysql').to_s
end
query() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 39
def query
  Query.new(self)
end
quote_column(column) click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 70
def quote_column(column)
  model.connection.quote_column_name(column)
end
quoted_inheritance_column() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 78
def quoted_inheritance_column
  "#{model.quoted_table_name}.#{quote_column(model.inheritance_column)}"
end
quoted_primary_key() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 74
def quoted_primary_key
  "#{model.quoted_table_name}.#{quote_column(source.primary_key)}"
end
range_condition() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 103
def range_condition
  condition = []
  condition << "#{quoted_primary_key} BETWEEN $start AND $end" unless source.disable_range?
  condition += source.conditions
  condition
end
relation() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 51
def relation
  model.unscoped
end
reversed_document_id() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 99
def reversed_document_id
  "($id - #{source.offset}) / #{config.indices.count}"
end
statement() click to toggle source
# File lib/thinking_sphinx/active_record/sql_builder.rb, line 43
def statement
  Statement.new(self)
end