Presto Module

Note

This module is deprecated, use Trino module.

See Database containers for documentation and usage that is common to all database container types.

Usage example

Running Presto as a stand-in for in a test:

public class SomeTest {

    @Rule
    public PrestoContainer presto = new PrestoContainer();

    @Test
    public void someTestMethod() {
        String url = presto.getJdbcUrl();

        ... create a connection and run test as normal

Presto comes with several catalogs preconfigured. Most useful ones for testing are

  • tpch catalog using the Presto TPCH Connector. This is a read-only catalog that defines standard TPCH schema, so is available for querying without a need to create any tables.
  • memory catalog using the Presto Memory Connector. This catalog can be used for creating schemas and tables and does not require any storage, as everything is stored fully in-memory.

Example test using the tpch and memory catalogs:

public class SomeTest {
    @Rule
    public PrestoContainer prestoSql = new PrestoContainer();

    @Test
    public void queryMemoryAndTpchConnectors() throws SQLException {
        try (Connection connection = prestoSql.createConnection();
             Statement statement = connection.createStatement()) {
            // Prepare data
            statement.execute("CREATE TABLE memory.default.table_with_array AS SELECT 1 id, ARRAY[1, 42, 2, 42, 4, 42] my_array");

            // Query Presto using newly created table and a builtin connector
            try (ResultSet resultSet = statement.executeQuery("" +
                "SELECT nationkey, element " +
                "FROM tpch.tiny.nation " +
                "JOIN memory.default.table_with_array twa ON nationkey = twa.id " +
                "LEFT JOIN UNNEST(my_array) a(element) ON true " +
                "ORDER BY element OFFSET 1 FETCH NEXT 3 ROWS WITH TIES ")) {
                List<Integer> actualElements = new ArrayList<>();
                while (resultSet.next()) {
                    actualElements.add(resultSet.getInt("element"));
                }
                Assert.assertEquals(Arrays.asList(2, 4, 42, 42, 42), actualElements);
            }
        }
    }
}

Adding this module to your project dependencies

Add the following dependency to your pom.xml/build.gradle file:

testImplementation "org.testcontainers:presto:1.16.0"
<dependency>
    <groupId>org.testcontainers</groupId>
    <artifactId>presto</artifactId>
    <version>1.16.0</version>
    <scope>test</scope>
</dependency>

Hint

Adding this Testcontainers library JAR will not automatically add the Presto JDBC driver JAR to your project. You should ensure that your project has the Presto JDBC driver as a dependency, if you plan on using it. Refer to Presto project download page for instructions.