lib/thinking_sphinx/adapters/postgresql_adapter.rb in warp-thinking-sphinx-1.2.12 vs lib/thinking_sphinx/adapters/postgresql_adapter.rb in warp-thinking-sphinx-1.3.10
- old
+ new
@@ -8,22 +8,21 @@
def sphinx_identifier
"pgsql"
end
def concatenate(clause, separator = ' ')
- clause.split(', ').collect { |field|
- case field
- when /COALESCE/, "'')"
- field
- else
- "COALESCE(CAST(#{field} as varchar), '')"
- end
- }.join(" || '#{separator}' || ")
+ if clause[/^COALESCE/]
+ clause.split('), ').join(") || '#{separator}' || ")
+ else
+ clause.split(', ').collect { |field|
+ "CAST(COALESCE(#{field}, '') as varchar)"
+ }.join(" || '#{separator}' || ")
+ end
end
def group_concatenate(clause, separator = ' ')
- "array_to_string(array_accum(#{clause}), '#{separator}')"
+ "array_to_string(array_accum(COALESCE(#{clause}, '0')), '#{separator}')"
end
def cast_to_string(clause)
clause
end
@@ -35,11 +34,19 @@
def cast_to_unsigned(clause)
clause
end
def convert_nulls(clause, default = '')
- default = "'#{default}'" if default.is_a?(String)
- default = 'NULL' if default.nil?
+ default = case default
+ when String
+ "'#{default}'"
+ when NilClass
+ 'NULL'
+ when Fixnum
+ "#{default}::bigint"
+ else
+ default
+ end
"COALESCE(#{clause}, #{default})"
end
def boolean(value)