Using IntelliJ/DataGrip with  Presto JDBC
Tags: intellij, presto, database
Published: 2020-11-18 17:46:22

**Presto** is a cool technology that works with everything (within reason). So it should be totally well documented how to set it up with IntelliJ, right??  ***Not so fast***...  #googlefail

#UPDATE - IntelliJ and DataGrip now have drivers for presto and trino right out of the oven, so no need to read on!

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jhdjyb94pjgqqb80bxjp.png)

If you like ancient history, feel free to keep reading :)  Happy coding!

----- 

While it's not totally un-intuitive, many people trying to set it up might not see the options and give up.  **Don't give up, here's the coolness!**

## Step 1 - Download the JDBC Driver

If you don't know by now, there's two forks of presto in the universe. Not surprisingly there is a JDBC driver for each and mostly they seem to be nearly identical, however at the time of writing, PrestoSQL's driver performed a bit faster for me.  I encourage folks to follow their releases for more critical information.

***PrestoDB***, the original project by Facebook.

- https://prestodb.io/download.html

***Trino***, the rename of the fork PrestoSQL the fork of the project in the community

- https://trino.io/download
- https://trino.io/blog/2020/12/27/announcing-trino.html

So just click the link under "JDBC Driver" and download it..

To a personal location:
`~/Documents/jdbc-drivers`

Or copy it to intellij's location:
`~/Library/Application\ Support/JetBrains/IntelliJIdea2020.2/jdbc-drivers/`

## Step 2 - Add IntelliJ Driver

1. In "Database" panel click `+` or right click and select New  -> "Driver"
2. Enter "PrestoSQL" or "PrestoDB" in the name (whichever driver you chose.
3. Under the "Driver Files" box, click the `+` and browse to the downloaded jdbc jar.
3. Pick the driver class (facebook or prestosql)
4. Add the Datasource and use the Driver (and click "Test connection".)
    `jdbc:presto://<host>:<port>`
5. Right click on new Datasource->Database Tools->Manage Shown Schemas... select "All Databases" and also select "All Schemas".

The last step is particularly helpful if you presto is hosting multiple catalogs across database instances.  If you're dealing with particularly large amount of tables, this step could take a while.

### Driver File
![Add IntelliJ Driver](https://dev-to-uploads.s3.amazonaws.com/i/g4nznj9p4c6370yxo0in.png)

### Driver Class
![Driver Class](https://dev-to-uploads.s3.amazonaws.com/i/9k1kltaansm4pyimtp1y.png)

### Datasource
*NOTE* : make sure to use full url with jdbc protocol and port
```
jdbc:presto://<host>:<port>
```
![IntelliJ Presto Datasource](https://dev-to-uploads.s3.amazonaws.com/i/n6cc66kyzx2u1gvx1m1z.png)

### Shown Schemas
![IntelliJ Shown Schemas](https://dev-to-uploads.s3.amazonaws.com/i/w8u3nl41k5uki8tq4d5e.png)

## Step 3 - Profit!

Hopefully this will unlock all the presto possibilities for you!   

1. Queries across database instances.
2. Single SQL syntax.
3. Schema explorer and keyboard completion.

![Demonstration](https://dev-to-uploads.s3.amazonaws.com/i/gvf4s9e11yif10b257y8.png)

On the way, there could be a few "gotchas" so here's a quick list of things that could trip you up.

#### 1. Connection URL

Make sure the protocols, address, and ports are correct.  By default, presto runs on 8080 but if your team set it up with ssl 443 might be the right setup, or it could even be a custom port.  You may also have basic networking issues, so test if you can even connect to the host/port (maybe through the ui if permitted by your systems team).

https://prestodb.io/docs/current/installation/jdbc.html

#### 2. Credentials

By default presto doesn't require credentials, so even though it shows username and password, you might be able to just put in "presto" and either blank or some garbage into password.  On the other hand if presto is secured with file based store or LDAP you'll need to be granted credentials.

#### 3. Catalogs

If presto is missing or has catalog access restrictions, you may not be able to see or query all of the datasources and schemas that presto is attached to.

#### 4. Driver Updates

Since IntelliJ isn't managing the driver, you'll be responsible for your own updates... Small price to pay, or we can all keep voting for this feature and maybe someday IntelliJ will add it.

#### 5. DBeaver

If you don't like this, then have a look at DBeaver which supports PrestoDB and PrestoSQL without downloading the driver.  Same caveats apply

## Summary

IntelliJ's database explorer is slick and integrated experience and you can easily use any JDBC Driver.  Presto in particular is one that is especially powerful.

Let me know if you have any comments or feedback.  Enjoy!