Sha256: c461721547f202140504792bc7c41a14af039f5a71f41c0e2e558e24cc931b9b

Contents?: true

Size: 1.27 KB

Versions: 17

Compression:

Stored size: 1.27 KB

Contents

module Blazer
  module Adapters
    class PrestoAdapter < BaseAdapter
      def run_statement(statement, comment)
        columns = []
        rows = []
        error = nil

        begin
          columns, rows = client.run("#{statement} /*#{comment}*/")
          columns = columns.map(&:name)
        rescue => e
          error = e.message
        end

        [columns, rows, error]
      end

      def tables
        _, rows = client.run("SHOW TABLES")
        rows.map(&:first)
      end

      def preview_statement
        "SELECT * FROM {table} LIMIT 10"
      end

      def quoting
        :single_quote_escape
      end

      # TODO support prepared statements - https://prestodb.io/docs/current/sql/prepare.html
      # feature request for variables - https://github.com/prestodb/presto/issues/5918
      def parameter_binding
      end

      protected

      def client
        @client ||= begin
          uri = URI.parse(settings["url"])
          query = uri.query ? CGI::parse(uri.query) : {}
          Presto::Client.new(
            server: "#{uri.host}:#{uri.port}",
            catalog: uri.path.to_s.sub(/\A\//, ""),
            schema: query["schema"] || "public",
            user: uri.user,
            http_debug: false
          )
        end
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 3 rubygems

Version Path
blazer_xlsx-3.0.7 lib/blazer/adapters/presto_adapter.rb
blazer_xlsx-3.0.6 lib/blazer/adapters/presto_adapter.rb
blazer_xlsx-3.0.5 lib/blazer/adapters/presto_adapter.rb
blazer-3.0.3 lib/blazer/adapters/presto_adapter.rb
blazer-3.0.2 lib/blazer/adapters/presto_adapter.rb
finery-3.0.3 lib/blazer/adapters/presto_adapter.rb
finery-3.0.2 lib/blazer/adapters/presto_adapter.rb
blazer-3.0.1 lib/blazer/adapters/presto_adapter.rb
finery-3.0.1 lib/blazer/adapters/presto_adapter.rb
finery-3.0.0 lib/blazer/adapters/presto_adapter.rb
blazer-3.0.0 lib/blazer/adapters/presto_adapter.rb
blazer-2.6.5 lib/blazer/adapters/presto_adapter.rb
blazer-2.6.4 lib/blazer/adapters/presto_adapter.rb
blazer-2.6.3 lib/blazer/adapters/presto_adapter.rb
blazer-2.6.2 lib/blazer/adapters/presto_adapter.rb
blazer-2.6.1 lib/blazer/adapters/presto_adapter.rb
blazer-2.6.0 lib/blazer/adapters/presto_adapter.rb