0
@@ -126,7 +126,7 @@ module DataMapper
0
- attr_reader :conditions, :database_context, :options
0
+ attr_reader :conditions, :database_context, :options
, :select, :from, :joins0
def initialize(adapter, database_context, primary_class, options = {})
0
@adapter, @database_context, @primary_class = adapter, database_context, primary_class
0
@@ -146,8 +146,12 @@ module DataMapper
0
+ @select = @options[:select] if @options[:select].is_a?(String)
0
+ @from = @options[:from]
0
+ @group = @options[:group]
0
@order = @options[:order]
0
@limit = @options[:limit]
0
+ @joins = @options[:joins]
0
@offset = @options[:offset]
0
@reload = @options[:reload]
0
@instance_id = conditions_hash[:id]
0
@@ -161,6 +165,9 @@ module DataMapper
0
#<#{self.class.name}:0x%x
0
@database=#{@adapter.name}
0
@reload=#{@reload.inspect}
0
+ @from=#{@from.inspect}
0
+ @select=#{@select.inspect}
0
+ @joins=#{@joins.inspect}
0
@order=#{@order.inspect}
0
@limit=#{@limit.inspect}
0
@offset=#{@offset.inspect}
0
@@ -261,8 +268,19 @@ module DataMapper
0
def to_parameterized_sql
0
- sql = 'SELECT ' << columns_for_select.join(', ')
0
- sql << ' FROM ' << from_table_name
0
+ cfs = columns_for_select
0
+ sql = 'SELECT ' << cfs.join(', ')
0
+ sql = 'SELECT ' << @select.to_s
0
+ sql << ' FROM ' << from_table_name
0
+ sql << ' FROM ' << @from.to_s
0
included_associations.each do |association|
0
sql << ' ' << association.to_sql
0
@@ -271,6 +289,10 @@ module DataMapper
0
shallow_included_associations.each do |association|
0
sql << ' ' << association.to_shallow_sql
0
unless conditions_empty?
0
@@ -296,6 +318,10 @@ module DataMapper
0
end # unless conditions_empty?
0
+ sql << 'GROUP BY ' << @group.to_s
0
sql << ' ORDER BY ' << @order.to_s
0
@@ -421,6 +447,8 @@ module DataMapper
0
case x = @options[:select]
0
+ primary_class_table.columns.reject { |column| column.lazy? }
0
else raise ':select option must be a Symbol, or an Array of Symbols'
0
end.map { |name| primary_class_table[name] }