Module: Alf::Sql::SelectExp

Includes:
Expr
Defined in:
lib/alf/sql/nodes/select_exp.rb

Constant Summary collapse

SELECT_DISTINCT =
"SELECT DISTINCT".freeze
SELECT =
"SELECT".freeze

Constants included from Expr

Expr::AND, Expr::AS, Expr::COMMA, Expr::DOT, Expr::EQUAL, Expr::EXISTS, Expr::FALSE, Expr::GREATER, Expr::GREATER_OR_EQUAL, Expr::IN, Expr::LEFT_PARENTHESE, Expr::LESS, Expr::LESS_OR_EQUAL, Expr::NOT, Expr::NOT_EQUAL, Expr::OR, Expr::QUOTE, Expr::RIGHT_PARENTHESE, Expr::SPACE, Expr::TRUE

Instance Method Summary collapse

Methods included from Expr

#each_child, #limit_or_offset?, #ordering, #set_operator?, #with_insert, #with_push, #with_update

Instance Method Details

#all?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/alf/sql/nodes/select_exp.rb', line 26

def all?
  set_quantifier.all?
end

#complex_clause?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/alf/sql/nodes/select_exp.rb', line 38

def complex_clause?
  where_clause or order_by_clause or limit_clause or offset_clause
end

#desaliaserObject



78
79
80
# File 'lib/alf/sql/nodes/select_exp.rb', line 78

def desaliaser
  select_list.desaliaser
end

#distinct?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/alf/sql/nodes/select_exp.rb', line 22

def distinct?
  set_quantifier.distinct?
end

#from_clauseObject



58
59
60
# File 'lib/alf/sql/nodes/select_exp.rb', line 58

def from_clause
  find_child(:from_clause)
end

#is_table_dee?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/alf/sql/nodes/select_exp.rb', line 18

def is_table_dee?
  from_clause.nil? && select_list.is_table_dee?
end

#join?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/alf/sql/nodes/select_exp.rb', line 30

def join?
  from_clause && from_clause.join?
end

#limit_clauseObject



70
71
72
# File 'lib/alf/sql/nodes/select_exp.rb', line 70

def limit_clause
  find_child(:limit_clause)
end

#offset_clauseObject



74
75
76
# File 'lib/alf/sql/nodes/select_exp.rb', line 74

def offset_clause
  find_child(:offset_clause)
end

#order_by_clauseObject



66
67
68
# File 'lib/alf/sql/nodes/select_exp.rb', line 66

def order_by_clause
  find_child(:order_by_clause)
end

#predicateObject



54
55
56
# File 'lib/alf/sql/nodes/select_exp.rb', line 54

def predicate
  where_clause && where_clause.predicate
end

#select_expObject



42
43
44
# File 'lib/alf/sql/nodes/select_exp.rb', line 42

def select_exp
  self
end

#select_listObject



46
47
48
# File 'lib/alf/sql/nodes/select_exp.rb', line 46

def select_list
  self[2]
end

#set_quantifierObject



10
11
12
# File 'lib/alf/sql/nodes/select_exp.rb', line 10

def set_quantifier
  self[1]
end

#should_be_reused?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/alf/sql/nodes/select_exp.rb', line 34

def should_be_reused?
  join? or distinct? or complex_clause?
end

#table_specObject



62
63
64
# File 'lib/alf/sql/nodes/select_exp.rb', line 62

def table_spec
  from_clause.table_spec
end

#to_attr_listObject

to_xxx



84
85
86
# File 'lib/alf/sql/nodes/select_exp.rb', line 84

def to_attr_list
  select_list.to_attr_list
end

#to_sql(buffer = "", parenthesize = !buffer.empty?)) ⇒ Object

to_sql



90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/alf/sql/nodes/select_exp.rb', line 90

def to_sql(buffer = "", parenthesize = !buffer.empty?)
  if parenthesize
    sql_parenthesized(buffer){|b| to_sql(b, false) }
  else
    buffer << (distinct? ? SELECT_DISTINCT : SELECT)
    each_child(1) do |elm,i|
      buffer << SPACE
      elm.to_sql(buffer)
    end
    buffer
  end
end

#where_clauseObject



50
51
52
# File 'lib/alf/sql/nodes/select_exp.rb', line 50

def where_clause
  find_child(:where_clause)
end

#with_exp?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/alf/sql/nodes/select_exp.rb', line 14

def with_exp?
  false
end