module ODBCAdapter::Quoting

Public Instance Methods

quote_column_name(name) click to toggle source

Returns a quoted form of the column name.

# File lib/odbc_adapter/quoting.rb, line 9
def quote_column_name(name)
  name = name.to_s
  quote_char = database_metadata.identifier_quote_char.to_s.strip

  return name if quote_char.length.zero?
  quote_char = quote_char[0]

  # Avoid quoting any already quoted name
  return name if name[0] == quote_char && name[-1] == quote_char

  # If upcase identifiers, only quote mixed case names.
  if database_metadata.upcase_identifiers?
    return name unless name =~ /([A-Z]+[a-z])|([a-z]+[A-Z])/
  end

  "#{quote_char.chr}#{name}#{quote_char.chr}"
end
quote_string(string) click to toggle source

Quotes a string, escaping any ' (single quote) characters.

# File lib/odbc_adapter/quoting.rb, line 4
def quote_string(string)
  string.gsub(/\'/, "''")
end
quoted_date(value) click to toggle source

Ideally, we'd return an ODBC date or timestamp literal escape sequence, but not all ODBC drivers support them.

# File lib/odbc_adapter/quoting.rb, line 29
def quoted_date(value)
  if value.acts_like?(:time)
    zone_conversion_method = ActiveRecord::Base.default_timezone == :utc ? :getutc : :getlocal

    if value.respond_to?(zone_conversion_method)
      value = value.send(zone_conversion_method)
    end
    value.strftime('%Y-%m-%d %H:%M:%S') # Time, DateTime
  else
    value.strftime('%Y-%m-%d') # Date
  end
end