Generic

Trino supports lots of different connectors and we cannot cover all the available connectors. In case the Stackable operator for Trino does not support a specific connector you can use this connector to pull in any connector Trino supports.

This is how you can e.g. use the PostgreSQL connector:

Example generic catalog properties

apiVersion: trino.stackable.tech/v1alpha1
kind: TrinoCatalog
metadata:
  # The name of the catalog as it appears in Trino
  name: postgres
  # TrinoCluster can use these labels to select which catalogs to include
  labels:
    trino: simple-trino
spec:
  connector:
    generic:
      connectorName: postgresql
      properties: # optional
        connection-url:
          value: jdbc:postgresql://example.net:5432/database
        connection-user:
          valueFromSecret:
            name: my-postgresql-credentials-secret
            key: user
        connection-password:
          valueFromSecret:
            name: my-postgresql-credentials-secret
            key: password
#         extra-property-from-configmap:
#           valueFromConfigMap:
#             name: my-configmap
#             key: my-key
---
apiVersion: v1
kind: Secret
metadata:
  name: my-postgresql-credentials-secret
stringData:
  user: root
  password: rootroot

Add contents from Secrets or ConfigMaps

In some cases you don’t want to add sensitive data (such as PostgreSQL credentials) to a TrinoCatalog. You can then use valueFromSecret or valueFromSecret to pull in properties securely. An entry must be an valid SecretKeySelector or ConfigMapKeySelector.

Add additional contents

In case you need more contents, such as the need to mount Secrets — containing e.g. certificates or keytabs — refer to the documentation on podOverrides.

Troubleshoot

Capitalized or upper case table names with PostgreSQL / MySQL

If table names are capitalized or upper case in PostgreSQL / MySQL, Trino can list the tables contained in a schema (lower case) but cannot access any data due to the error:

Table '<catalog>.<schema>.<table>' does not exist io.trino.spi.TrinoException: line 2:6: Table '<catalog>.<schema>.<table>' does not exist

This is fixed by setting the case-insensitive-name-matching connector property which works for both PostgreSQL connector and MySQL Connector.

This can be added to the generic connector as follows:

spec:
  connector:
    generic:
      ...
      properties:
        case-insensitive-name-matching:
          value: "true"
      ...