Class: Arel::Visitors::Clickhouse
- Inherits:
-
ToSql
- Object
- ToSql
- Arel::Visitors::Clickhouse
- Defined in:
- lib/arel/visitors/clickhouse.rb
Instance Method Summary collapse
- #aggregate(name, o, collector) ⇒ Object
- #sanitize_as_setting_name(value) ⇒ Object
- #sanitize_as_setting_value(value) ⇒ Object
- #visit_Arel_Nodes_SelectOptions(o, collector) ⇒ Object
- #visit_Arel_Nodes_Settings(o, collector) ⇒ Object
- #visit_Arel_Table(o, collector) ⇒ Object
Instance Method Details
#aggregate(name, o, collector) ⇒ Object
7 8 9 10 11 12 13 14 |
# File 'lib/arel/visitors/clickhouse.rb', line 7 def aggregate(name, o, collector) # replacing function name for materialized view if o.expressions.first && o.expressions.first != '*' && !o.expressions.first.is_a?(String) && o.expressions.first.relation&.is_view super("#{name.downcase}Merge", o, collector) else super end end |
#sanitize_as_setting_name(value) ⇒ Object
47 48 49 50 |
# File 'lib/arel/visitors/clickhouse.rb', line 47 def sanitize_as_setting_name(value) return value if Arel::Nodes::SqlLiteral === value @connection.sanitize_as_setting_name(value) end |
#sanitize_as_setting_value(value) ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/arel/visitors/clickhouse.rb', line 39 def sanitize_as_setting_value(value) if value == :default 'DEFAULT' else quote(value) end end |
#visit_Arel_Nodes_SelectOptions(o, collector) ⇒ Object
22 23 24 |
# File 'lib/arel/visitors/clickhouse.rb', line 22 def visit_Arel_Nodes_SelectOptions(o, collector) maybe_visit o.settings, super end |
#visit_Arel_Nodes_Settings(o, collector) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/arel/visitors/clickhouse.rb', line 26 def visit_Arel_Nodes_Settings(o, collector) return collector if o.expr.empty? collector << "SETTINGS " o.expr.each_with_index do |(key, value), i| collector << ", " if i > 0 collector << key.to_s.gsub(/\W+/, "") collector << " = " collector << sanitize_as_setting_value(value) end collector end |
#visit_Arel_Table(o, collector) ⇒ Object
16 17 18 19 20 |
# File 'lib/arel/visitors/clickhouse.rb', line 16 def visit_Arel_Table o, collector collector = super collector << ' FINAL ' if o.final collector end |