Class: Arel::SqlToArel::PgQueryVisitor

Inherits:
Object
  • Object
show all
Defined in:
lib/arel/sql_to_arel/pg_query_visitor.rb,
lib/arel/sql_to_arel/pg_query_visitor/frame_options.rb

Defined Under Namespace

Classes: FrameOptions

Constant Summary collapse

PG_CATALOG =
'pg_catalog'.freeze
MIN_MAX_EXPR =
'MinMaxExpr'.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#bindsObject (readonly)

Returns the value of attribute binds.



16
17
18
# File 'lib/arel/sql_to_arel/pg_query_visitor.rb', line 16

def binds
  @binds
end

#objectObject (readonly)

Returns the value of attribute object.



15
16
17
# File 'lib/arel/sql_to_arel/pg_query_visitor.rb', line 15

def object
  @object
end

#sqlObject (readonly)

Returns the value of attribute sql.



17
18
19
# File 'lib/arel/sql_to_arel/pg_query_visitor.rb', line 17

def sql
  @sql
end

Instance Method Details

#accept(sql, binds = []) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/arel/sql_to_arel/pg_query_visitor.rb', line 19

def accept(sql, binds = [])
  tree = PgQuery.parse(sql).tree

  @object = tree
  @binds = binds
  @sql = sql

  Result.new visit(object.stmts, :top)
rescue ::PgQuery::ParseError => e
  new_error = ::PgQuery::ParseError.new(e.message, __FILE__, __LINE__, -1)
  raise new_error, e.message, e.backtrace
rescue ::StandardError => e
  raise e.class, e.message, e.backtrace if e.is_a?(Arel::SqlToArel::Error)

  boom e.message, e.backtrace
end