Method: PgQuery.parse

Defined in:
lib/pg_query/parse.rb

.parse(query) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/pg_query/parse.rb', line 2

def self.parse(query)
  result, stderr = parse_protobuf(query)

  begin
    result = PgQuery::ParseResult.decode(result)
  rescue Google::Protobuf::ParseError => e
    raise PgQuery::ParseError.new(format('Failed to parse tree: %s', e.message), __FILE__, __LINE__, -1)
  end

  warnings = []
  stderr.each_line do |line|
    next unless line[/^WARNING/]
    warnings << line.strip
  end

  PgQuery::ParserResult.new(query, result, warnings)
end