# NAME

Net::Presto - Presto client library for Perl

# SYNOPSIS

   use Net::Presto;

   my $presto = Net::Presto->new(
       server    => 'localhost:8080',
       catalog   => 'hive',
       schema    => 'mydb',
       user      => 'scott',
       source    => 'myscript',   # defaults to Net::Presto/$VERSION
       time_zone => 'US/Pacific', # optional
       language  => 'English',    # optional
   );

   # easy to use interfaces
   my $rows = $presto->select_all('SELECT * FROM ...');
   my $row = $presto->select_row('SELECT * FROM ... LIMIT 1');
   my $col = $presto->select_one('SELECT COUNT(1) FROM ...');

   $presto->do('CREATE TABLE ...');

   # See Net::Presto::Statament for more details of low level interfaces
   my $sth = $presto->execute('SELECT * FROM ...');
   while (my $rows = $sth->fetch_hashref) {
       for my $row (@$rows) {
           $row->{column_name};
       }
   }

# DESCRIPTION

Presto is a distributed SQL query engine for big data.

[https://prestodb.io/](https://prestodb.io/)

Net::Presto is a client library for Perl to run queries on Presto.

# CONSTRUCTOR

## `Net::Presto->new(%options) :Net::Presto`

Creates and return a new Net::Presto instance with options.

_%options_ might be:

- server

   address\[:port\] to a Presto coordinator

- catalog

   Catalog (connector) name of Presto such as \`hive-cdh4\`, \`hive-hadoop1\`, etc.

- schema

   Default schema name of Presto. You can read other schemas by qualified name like \`FROM myschema.table1\`.

- user

   User name to connect to a Presto

- source

   Source name to connect to a Presto. This name is shown on Presto web interface.

- time\_zone

   Time zone of the query. Time zone affects some functions such as \`format\_datetime\`.

- language

   Language of the query. Language affects some functions such as \`format\_datetime\`.

- properties

   Session properties.

# METHODS

## `$presto->select_all($query) :ArrayRef[HashRef[Str]]`

Shortcut for execute and fetchrow\_hashref

## `$presto->select_row($query) :HashRef[Str]`

Shortcut for execute and fetchrow\_hashref->\[0\]

## `$presto->select_one($query) :Str`

Shortcut for execute and fetch->\[0\]

## `$presto->do($query) :Int`

Execute a single statement.

## `$presto->execute($query) :Net::Presto::Statement`

Execute a statement and returns a [Net::Presto::Statement](https://metacpan.org/pod/Net::Presto::Statement) object.

# LICENSE

Copyright (C) Jiro Nishiguchi.

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

# AUTHOR

Jiro Nishiguchi <[email protected]>