MATIH Platform is in active MVP development. Documentation reflects current implementation status.
9. Query Engine & SQL
Configuration

Trino Configuration

The Query Engine connects to Trino through a configurable connection layer that manages JDBC connections, session properties, resource groups, and query timeouts. Configuration is managed through environment variables and application properties.


Connection Settings

PropertyDefaultDescription
trino.hosttrino-coordinatorTrino coordinator hostname
trino.port8080Trino coordinator port
trino.catalogdeltaDefault catalog for queries
trino.schemadefaultDefault schema for queries
trino.sourcematih-query-engineSource identifier for query tracking

Connection Pool

The JDBC connection pool is configured for high-concurrency query workloads:

PropertyDefaultDescription
trino.pool.maxConnections50Maximum connections in the pool
trino.pool.minIdle10Minimum idle connections
trino.pool.connectionTimeout30000Connection timeout in milliseconds
trino.pool.idleTimeout600000Idle connection timeout

Session Properties

Per-query session properties control Trino's execution behavior:

sessionProperties.put("query_max_run_time", "5m");
sessionProperties.put("query_max_memory", "1GB");
sessionProperties.put("join_distribution_type", "AUTOMATIC");
sessionProperties.put("enable_dynamic_filtering", "true");

Tenant-specific session properties are applied based on the tenant's tier:

TierMax Run TimeMax MemoryMax Concurrent
FREE2 min256MB2
STARTER5 min512MB5
PROFESSIONAL15 min2GB20
ENTERPRISE60 min8GB50

Resource Groups

Trino resource groups enforce concurrency and memory limits per tenant:

{
  "rootGroups": [
    {
      "name": "tenant_${TENANT_ID}",
      "softMemoryLimit": "20%",
      "maxQueued": 100,
      "softConcurrencyLimit": 10,
      "hardConcurrencyLimit": 20,
      "schedulingPolicy": "fair"
    }
  ]
}

Health Checks

The Query Engine monitors Trino availability through periodic health checks against the coordinator's /v1/info endpoint. If Trino becomes unavailable, queries are queued until connectivity is restored.