class TrinoSqlParser
Constants
- VERSION
Public Class Methods
new(with_tokens: false)
click to toggle source
# File lib/trino_sql_parser.rb, line 38 def initialize(with_tokens: false) @support_process = SupportProcess.new(with_tokens: with_tokens) end
Public Instance Methods
parse(sql)
click to toggle source
# File lib/trino_sql_parser.rb, line 42 def parse(sql) unless sql.is_a?(String) raise ArgumentError, "SQL must be a String but got #{sql.class}" end request_line = JSON.dump({"sql" => sql}) success = false begin @support_process.send_line(request_line) response_line = @support_process.receive_line raise "Process crashed" unless response_line response = JSON.parse(response_line) statements = response['statements'] errors = response['errors'] success = true rescue => e raise "Support process failed with an error: #{e}" ensure @support_process.kill! unless success end if errors raise ParseError.new(errors) end statements.map do |h| h.reject! {|k, v| v == nil } end statements end