Trino Reference
Authentication options and data type handling for Trino connections.
Authentication
| Variable | Example | Description |
|---|---|---|
DATACONTRACT_TRINO_USERNAME | trino | Username for basic auth |
DATACONTRACT_TRINO_PASSWORD | mysecretpassword | Password for basic auth |
DATACONTRACT_TRINO_AUTHENTICATION | oauth2 | basic (default), jwt, or oauth2 |
DATACONTRACT_TRINO_JWT_TOKEN | eyJhbGciOi... | JWT bearer token for jwt auth |
host, port, catalog, and schema come from the contract's servers block.
Data types
Importing
There is no direct Trino importer. Import a SHOW CREATE TABLE DDL with datacontract import sql --dialect postgres (Trino's ANSI-style DDL generally parses with the postgres dialect): VARCHAR/CHAR → string, INTEGER/BIGINT/SMALLINT/TINYINT → integer, DECIMAL/DOUBLE/REAL → number, BOOLEAN → boolean, DATE → date, TIME → time, TIMESTAMP → timestamp, ARRAY(...) → array, JSON → object.
Testing
Trino supports native type introspection: the declared physicalType is checked against information_schema.columns. Length/precision is only enforced when the contract declares it (varchar matches varchar(10)); timezone variants of timestamps are interchangeable. A physicalType that isn't valid Trino SQL falls back to the logical type category comparison.
Logical type mapping
When no physicalType is declared, the CLI derives the native type from the logicalType — for example in datacontract export sql and the dbt exports. This table is generated from the converter in the CLI's code:
logicalType | Trino type |
|---|---|
string | varchar |
integer | integer |
number | decimal |
boolean | boolean |
date | date |
timestamp | timestamp(3) with time zone |
time | time |
object | json |
array | json |