Module: ClickhouseRuby

Defined in:
lib/clickhouse_ruby.rb,
lib/clickhouse_ruby/types.rb,
lib/clickhouse_ruby/client.rb,
lib/clickhouse_ruby/errors.rb,
lib/clickhouse_ruby/result.rb,
lib/clickhouse_ruby/version.rb,
lib/clickhouse_ruby/types/map.rb,
lib/clickhouse_ruby/connection.rb,
lib/clickhouse_ruby/types/base.rb,
lib/clickhouse_ruby/types/enum.rb,
lib/clickhouse_ruby/types/uuid.rb,
lib/clickhouse_ruby/types/array.rb,
lib/clickhouse_ruby/types/float.rb,
lib/clickhouse_ruby/types/tuple.rb,
lib/clickhouse_ruby/types/parser.rb,
lib/clickhouse_ruby/types/string.rb,
lib/clickhouse_ruby/active_record.rb,
lib/clickhouse_ruby/configuration.rb,
lib/clickhouse_ruby/retry_handler.rb,
lib/clickhouse_ruby/types/boolean.rb,
lib/clickhouse_ruby/types/decimal.rb,
lib/clickhouse_ruby/types/integer.rb,
lib/clickhouse_ruby/types/nullable.rb,
lib/clickhouse_ruby/types/registry.rb,
lib/clickhouse_ruby/connection_pool.rb,
lib/clickhouse_ruby/instrumentation.rb,
lib/clickhouse_ruby/types/date_time.rb,
lib/clickhouse_ruby/types/null_safe.rb,
lib/clickhouse_ruby/streaming_result.rb,
lib/clickhouse_ruby/types/string_parser.rb,
lib/clickhouse_ruby/active_record/railtie.rb,
lib/clickhouse_ruby/types/low_cardinality.rb,
lib/clickhouse_ruby/active_record/arel_visitor.rb,
lib/clickhouse_ruby/active_record/schema_dumper.rb,
lib/clickhouse_ruby/active_record/schema_dumper.rb,
lib/clickhouse_ruby/active_record/schema_statements.rb,
lib/clickhouse_ruby/active_record/connection_adapter.rb,
lib/clickhouse_ruby/active_record/relation_extensions.rb,
lib/clickhouse_ruby/active_record/generators/migration_generator.rb

Overview

Override the default dumper for ClickHouse connections

Defined Under Namespace

Modules: ActiveRecord, Generators, Instrumentation, Types Classes: Client, Configuration, ConfigurationError, Connection, ConnectionError, ConnectionNotEstablished, ConnectionPool, ConnectionTimeout, Error, PoolError, PoolExhausted, PoolTimeout, QueryError, QueryTimeout, Result, RetryHandler, SSLError, StatementInvalid, StreamingResult, SyntaxError, TypeCastError, UnknownColumn, UnknownDatabase, UnknownTable

Constant Summary collapse

ERROR_CODE_MAPPING =

Maps ClickHouse error codes to exception classes See: github.com/ClickHouse/ClickHouse/blob/master/src/Common/ErrorCodes.cpp

{
  60 => UnknownTable,        # UNKNOWN_TABLE
  16 => UnknownColumn,       # NO_SUCH_COLUMN_IN_TABLE
  81 => UnknownDatabase,     # UNKNOWN_DATABASE
  62 => SyntaxError,         # SYNTAX_ERROR
  159 => QueryTimeout,       # TIMEOUT_EXCEEDED
}.freeze
VERSION =
"0.3.0"

Class Method Summary collapse

Class Method Details

.clientClient

Creates a new client with the global configuration

Returns:

  • (Client)

    a new client instance



76
77
78
# File 'lib/clickhouse_ruby.rb', line 76

def client
  Client.new(configuration)
end

.configurationConfiguration

Returns the global configuration instance

Returns:



45
46
47
# File 'lib/clickhouse_ruby.rb', line 45

def configuration
  @configuration ||= Configuration.new
end

.configure {|Configuration| ... } ⇒ Configuration

Allows configuration via a block

Examples:

ClickhouseRuby.configure do |config|
  config.host = 'clickhouse.example.com'
  config.port = 8443
  config.ssl = true
end

Yields:

Returns:



60
61
62
63
# File 'lib/clickhouse_ruby.rb', line 60

def configure
  yield(configuration)
  configuration
end

.error_class_for_code(code) ⇒ Class

Maps a ClickHouse error code to the appropriate exception class

Parameters:

  • code (Integer)

    the ClickHouse error code

Returns:

  • (Class)

    the exception class to use



140
141
142
# File 'lib/clickhouse_ruby/errors.rb', line 140

def error_class_for_code(code)
  ERROR_CODE_MAPPING.fetch(code, QueryError)
end

.execute(sql, **options) ⇒ Result

Convenience method to execute a query using global configuration

Parameters:

  • sql (String)

    the SQL query to execute

  • options (Hash)

    query options

Returns:

  • (Result)

    the query result



85
86
87
# File 'lib/clickhouse_ruby.rb', line 85

def execute(sql, **options)
  client.execute(sql, **options)
end

.insert(table, rows, **options) ⇒ Result

Convenience method to insert data using global configuration

Parameters:

  • table (String)

    the table name

  • rows (Array<Hash>)

    the rows to insert

  • options (Hash)

    insert options

Returns:

  • (Result)

    the insert result



95
96
97
# File 'lib/clickhouse_ruby.rb', line 95

def insert(table, rows, **options)
  client.insert(table, rows, **options)
end

.reset_configuration!Configuration

Resets the configuration to defaults Primarily useful for testing

Returns:



69
70
71
# File 'lib/clickhouse_ruby.rb', line 69

def reset_configuration!
  @configuration = Configuration.new
end

.sanitize_message(message, config) ⇒ String

Sanitizes a message to prevent credential leakage

Parameters:

  • message (String)

    the message to sanitize

  • config (Configuration, nil)

    the configuration containing credentials

Returns:

  • (String)

    the sanitized message



149
150
151
152
153
154
# File 'lib/clickhouse_ruby/errors.rb', line 149

def sanitize_message(message, config)
  return message unless config.respond_to?(:password) && config&.password
  return message if config.password.to_s.empty?

  message.gsub(config.password.to_s, "[REDACTED]")
end