def type_cast(value)
return nil if value.nil? || value == "(null)" || value == "(NULL)"
case type
when :string then unquote_string value
when :integer then unquote(value).to_i rescue value ? 1 : 0
when :primary_key then value == true || value == false ? value == true ? 1 : 0 : value.to_i
when :decimal then self.class.value_to_decimal(unquote(value))
when :datetime then cast_to_datetime(value)
when :timestamp then cast_to_time(value)
when :time then cast_to_time(value)
when :date then cast_to_datetime(value)
when :boolean then value == true or (value =~ /^t(rue)?$/i) == 0 or unquote(value)=="1"
when :binary then unquote value
else value
end
end