Class: ClickhouseRuby::ActiveRecord::ArelVisitor

Inherits:
Arel::Visitors::ToSql
  • Object
show all
Defined in:
lib/clickhouse_ruby/active_record/arel_visitor.rb

Overview

Custom Arel visitor for generating ClickHouse-specific SQL

ClickHouse has unique requirements for certain SQL operations:

  • DELETE: Uses ALTER TABLE … DELETE WHERE syntax

  • UPDATE: Uses ALTER TABLE … UPDATE … WHERE syntax

  • LIMIT: Must come after ORDER BY

  • No OFFSET without LIMIT (use LIMIT n, m syntax)

Examples:

DELETE conversion

# Standard SQL: DELETE FROM events WHERE id = 1
# ClickHouse:   ALTER TABLE events DELETE WHERE id = 1

UPDATE conversion

# Standard SQL: UPDATE events SET status = 'done' WHERE id = 1
# ClickHouse:   ALTER TABLE events UPDATE status = 'done' WHERE id = 1

Instance Method Summary collapse

Constructor Details

#initialize(connection) ⇒ ArelVisitor

Initialize the visitor

Parameters:



27
28
29
30
# File 'lib/clickhouse_ruby/active_record/arel_visitor.rb', line 27

def initialize(connection)
  super(connection)
  @connection = connection
end