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/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/types/boolean.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/types/date_time.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_statements.rb,
lib/clickhouse_ruby/active_record/connection_adapter.rb
Overview
ClickhouseRuby - Ruby/ActiveRecord integration for ClickHouse
A robust, reliable ClickHouse client for Ruby that prioritizes:
-
No silent failures (proper error handling)
-
Correct type handling (AST-based parser for complex types)
-
Performance (bulk operations, connection pooling)
-
Security (SSL verification enabled by default)
Defined Under Namespace
Modules: ActiveRecord, Types Classes: Client, Configuration, ConfigurationError, Connection, ConnectionError, ConnectionNotEstablished, ConnectionPool, ConnectionTimeout, Error, PoolError, PoolExhausted, PoolTimeout, QueryError, QueryTimeout, Result, SSLError, StatementInvalid, 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.1.0'
Class Method Summary collapse
-
.client ⇒ Client
Creates a new client with the global configuration.
-
.configuration ⇒ Configuration
Returns the global configuration instance.
-
.configure {|Configuration| ... } ⇒ Configuration
Allows configuration via a block.
-
.error_class_for_code(code) ⇒ Class
Maps a ClickHouse error code to the appropriate exception class.
-
.execute(sql, **options) ⇒ Result
Convenience method to execute a query using global configuration.
-
.insert(table, rows, **options) ⇒ Result
Convenience method to insert data using global configuration.
-
.reset_configuration! ⇒ Configuration
Resets the configuration to defaults Primarily useful for testing.
Class Method Details
.client ⇒ Client
Creates a new client with the global configuration
73 74 75 |
# File 'lib/clickhouse_ruby.rb', line 73 def client Client.new(configuration) end |
.configuration ⇒ Configuration
Returns the global configuration instance
42 43 44 |
# File 'lib/clickhouse_ruby.rb', line 42 def configuration @configuration ||= Configuration.new end |
.configure {|Configuration| ... } ⇒ Configuration
Allows configuration via a block
57 58 59 60 |
# File 'lib/clickhouse_ruby.rb', line 57 def configure yield(configuration) configuration end |
.error_class_for_code(code) ⇒ Class
Maps a ClickHouse error code to the appropriate exception class
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
82 83 84 |
# File 'lib/clickhouse_ruby.rb', line 82 def execute(sql, **) client.execute(sql, **) end |
.insert(table, rows, **options) ⇒ Result
Convenience method to insert data using global configuration
92 93 94 |
# File 'lib/clickhouse_ruby.rb', line 92 def insert(table, rows, **) client.insert(table, rows, **) end |
.reset_configuration! ⇒ Configuration
Resets the configuration to defaults Primarily useful for testing
66 67 68 |
# File 'lib/clickhouse_ruby.rb', line 66 def reset_configuration! @configuration = Configuration.new end |