Module: Vertica

Defined in:
lib/vertica.rb,
lib/vertica/column.rb,
lib/vertica/messages/message.rb,
lib/vertica/messages/frontend_messages/bind.rb,
lib/vertica/messages/frontend_messages/sync.rb,
lib/vertica/messages/frontend_messages/close.rb,
lib/vertica/messages/frontend_messages/flush.rb,
lib/vertica/messages/frontend_messages/parse.rb,
lib/vertica/messages/frontend_messages/query.rb,
lib/vertica/messages/backend_messages/no_data.rb,
lib/vertica/messages/backend_messages/unknown.rb,
lib/vertica/messages/backend_messages/data_row.rb,
lib/vertica/messages/frontend_messages/execute.rb,
lib/vertica/messages/frontend_messages/startup.rb,
lib/vertica/messages/frontend_messages/describe.rb,
lib/vertica/messages/frontend_messages/password.rb,
lib/vertica/messages/frontend_messages/copy_data.rb,
lib/vertica/messages/frontend_messages/copy_done.rb,
lib/vertica/messages/frontend_messages/copy_fail.rb,
lib/vertica/messages/frontend_messages/terminate.rb,
lib/vertica/messages/frontend_messages/ssl_request.rb,
lib/vertica/messages/backend_messages/bind_complete.rb,
lib/vertica/messages/backend_messages/authentication.rb,
lib/vertica/messages/backend_messages/close_complete.rb,
lib/vertica/messages/backend_messages/error_response.rb,
lib/vertica/messages/backend_messages/parse_complete.rb,
lib/vertica/messages/backend_messages/notice_response.rb,
lib/vertica/messages/backend_messages/ready_for_query.rb,
lib/vertica/messages/backend_messages/row_description.rb,
lib/vertica/messages/frontend_messages/cancel_request.rb,
lib/vertica/messages/backend_messages/backend_key_data.rb,
lib/vertica/messages/backend_messages/command_complete.rb,
lib/vertica/messages/backend_messages/copy_in_response.rb,
lib/vertica/messages/backend_messages/parameter_status.rb,
lib/vertica/messages/backend_messages/portal_suspended.rb,
lib/vertica/messages/backend_messages/empty_query_response.rb,
lib/vertica/messages/backend_messages/parameter_description.rb

Overview

Main module for this library. It contains the Vertica.connect method to return a Connection instance, and methods to quote values (Vertica.quote) and identifiers (Vertica.quote_identifier) to safely include those in SQL strings to prevent SQL injection.

Defined Under Namespace

Modules: Messages Classes: Column, Connection, Error, Query, Result

Constant Summary collapse

VERSION =

The version number of this library.

File.read(File.join(File.dirname(__FILE__), *%w[.. VERSION])).strip
PROTOCOL_VERSION =

The protocol version (3.0.0) implemented in this library.

3 << 16

Class Method Summary collapse

Class Method Details

.connect(options) ⇒ Vertica::Connection

Opens a new connection to a Vertica database.

Parameters:

  • options (Hash)

    The connection options to use.

Returns:



19
20
21
# File 'lib/vertica.rb', line 19

def self.connect(options)
  Vertica::Connection.new(options)
end

.quote(value) ⇒ String

Properly quotes a value for safe usage in SQL queries.

This method has quoting rules for common types. Any other object will be converted to a string using :to_s and then quoted as a string.

Parameters:

  • value (Object)

    The value to quote.

Returns:

  • (String)

    The quoted value that can be safely included in SQL queries.



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/vertica.rb', line 30

def self.quote(value)
  case value
    when nil        then 'NULL'
    when false      then 'FALSE'
    when true       then 'TRUE'
    when DateTime   then value.strftime("'%Y-%m-%d %H:%M:%S'::timestamp")
    when Time       then value.strftime("'%Y-%m-%d %H:%M:%S'::timestamp")
    when Date       then value.strftime("'%Y-%m-%d'::date")
    when String     then "'#{value.gsub(/'/, "''")}'"
    when BigDecimal then value.to_s('F')
    when Numeric    then value.to_s
    when Array      then value.map { |v| self.quote(v) }.join(', ')
    else self.quote(value.to_s)
  end
end

.quote_identifier(identifier) ⇒ String

Quotes an identifier for safe use within SQL queries, using double quotes.

Parameters:

  • identifier (:to_s)

    The identifier to quote.

Returns:

  • (String)

    The quoted identifier that can be safely included in SQL queries.



49
50
51
# File 'lib/vertica.rb', line 49

def self.quote_identifier(identifier)
  "\"#{identifier.to_s.gsub(/"/, '""')}\""
end