Class: ClickHouse::SQL::SelectItem

Inherits:
Struct
  • Object
show all
Includes:
Part
Defined in:
lib/clickhouse/sql/select_item.rb

Overview

A SELECT expression with an optional validated alias.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#alias_nameString, ...

Returns Optional output alias.

Returns:

  • (String, Symbol, nil)

    Optional output alias.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/clickhouse/sql/select_item.rb', line 11

SelectItem = Struct.new(:expression, :alias_name, keyword_init: true) do
  include Part

  # Renders the SELECT expression.
  #
  # @return [String] SQL select item.
  def to_sql
    return expression.to_sql unless alias_name

    "#{expression.to_sql} AS #{ClickHouse::SQL.validate_alias!(alias_name)}"
  end

  # Renders the SELECT expression with typed placeholders redacted.
  #
  # @param bind_index_manager [ClickHouse::SQL::BindIndexManager] Redacted bind index state.
  # @return [String] Redacted SQL select item.
  def to_redacted_sql(bind_index_manager)
    return expression.to_redacted_sql(bind_index_manager) unless alias_name

    "#{expression.to_redacted_sql(bind_index_manager)} AS #{ClickHouse::SQL.validate_alias!(alias_name)}"
  end

  # Returns typed placeholder values used by the SELECT expression.
  #
  # @return [Hash{Symbol=>Object}] Placeholder values keyed by name.
  def placeholders
    expression.placeholders
  end

  # Returns ClickHouse placeholder types used by the SELECT expression.
  #
  # @return [Hash{Symbol=>String}] Placeholder types keyed by name.
  def placeholder_types
    expression.placeholder_types
  end
end

#expressionClickHouse::SQL::Part

Returns SQL expression to select.

Returns:



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/clickhouse/sql/select_item.rb', line 11

SelectItem = Struct.new(:expression, :alias_name, keyword_init: true) do
  include Part

  # Renders the SELECT expression.
  #
  # @return [String] SQL select item.
  def to_sql
    return expression.to_sql unless alias_name

    "#{expression.to_sql} AS #{ClickHouse::SQL.validate_alias!(alias_name)}"
  end

  # Renders the SELECT expression with typed placeholders redacted.
  #
  # @param bind_index_manager [ClickHouse::SQL::BindIndexManager] Redacted bind index state.
  # @return [String] Redacted SQL select item.
  def to_redacted_sql(bind_index_manager)
    return expression.to_redacted_sql(bind_index_manager) unless alias_name

    "#{expression.to_redacted_sql(bind_index_manager)} AS #{ClickHouse::SQL.validate_alias!(alias_name)}"
  end

  # Returns typed placeholder values used by the SELECT expression.
  #
  # @return [Hash{Symbol=>Object}] Placeholder values keyed by name.
  def placeholders
    expression.placeholders
  end

  # Returns ClickHouse placeholder types used by the SELECT expression.
  #
  # @return [Hash{Symbol=>String}] Placeholder types keyed by name.
  def placeholder_types
    expression.placeholder_types
  end
end

Instance Method Details

#placeholder_typesHash{Symbol=>String}

Returns ClickHouse placeholder types used by the SELECT expression.

Returns:

  • (Hash{Symbol=>String})

    Placeholder types keyed by name.



43
44
45
# File 'lib/clickhouse/sql/select_item.rb', line 43

def placeholder_types
  expression.placeholder_types
end

#placeholdersHash{Symbol=>Object}

Returns typed placeholder values used by the SELECT expression.

Returns:

  • (Hash{Symbol=>Object})

    Placeholder values keyed by name.



36
37
38
# File 'lib/clickhouse/sql/select_item.rb', line 36

def placeholders
  expression.placeholders
end

#to_redacted_sql(bind_index_manager) ⇒ String

Renders the SELECT expression with typed placeholders redacted.

Parameters:

Returns:

  • (String)

    Redacted SQL select item.



27
28
29
30
31
# File 'lib/clickhouse/sql/select_item.rb', line 27

def to_redacted_sql(bind_index_manager)
  return expression.to_redacted_sql(bind_index_manager) unless alias_name

  "#{expression.to_redacted_sql(bind_index_manager)} AS #{ClickHouse::SQL.validate_alias!(alias_name)}"
end

#to_sqlString

Renders the SELECT expression.

Returns:

  • (String)

    SQL select item.



17
18
19
20
21
# File 'lib/clickhouse/sql/select_item.rb', line 17

def to_sql
  return expression.to_sql unless alias_name

  "#{expression.to_sql} AS #{ClickHouse::SQL.validate_alias!(alias_name)}"
end