prestodb/presto · error · PrestoException

QUERY_TEXT_TOO_LARGE

QUERY_TEXT_TOO_LARGE

Error message

Query text length (%s) exceeds the maximum length (%s)

What it means

DispatchManager.createQueryInternal refuses to accept a query whose text exceeds the configured maximum query length; the actual and maximum lengths are shown. The guard prevents oversized queries from entering dispatch and resource group selection.

Source

Thrown at presto-main-base/src/main/java/com/facebook/presto/dispatcher/DispatchManager.java:267

            }
        });
        return queryCreationFuture;
    }

    /**
     * Creates and registers a dispatch query with the query tracker.  This method will never fail to register a query with the query
     * tracker. If an error occurs while creating a dispatch query, a failed dispatch will be created and registered.
     */
    private <C> void createQueryInternal(QueryId queryId, String slug, int retryCount, SessionContext sessionContext, String query, ResourceGroupManager<C> resourceGroupManager)
    {
        Session session = null;
        SessionBuilder sessionBuilder = null;
        PreparedQuery preparedQuery;
        try {
            if (query.length() > maxQueryLength) {
                int queryLength = query.length();
                query = query.substring(0, maxQueryLength);
                throw new PrestoException(QUERY_TEXT_TOO_LARGE, format("Query text length (%s) exceeds the maximum length (%s)", queryLength, maxQueryLength));
            }

            // decode session
            sessionBuilder = sessionSupplier.createSessionBuilder(queryId, sessionContext, warningCollectorFactory);
            session = sessionBuilder.build();

            // prepare query
            AnalyzerOptions analyzerOptions = createAnalyzerOptions(session, sessionBuilder.getWarningCollector());
            QueryPreparerProvider queryPreparerProvider = queryPreparerProviderManager.getQueryPreparerProvider(getAnalyzerType(session));
            preparedQuery = queryPreparerProvider.getQueryPreparer().prepareQuery(analyzerOptions, query, sessionBuilder.getPreparedStatements(), sessionBuilder.getWarningCollector());
            query = preparedQuery.getFormattedQuery().orElse(query);

            // select resource group
            Optional<QueryType> queryType = preparedQuery.getQueryType();
            sessionBuilder.setQueryType(queryType);
            SelectionContext<C> selectionContext = resourceGroupManager.selectGroup(new SelectionCriteria(
                    sessionContext.getIdentity().getPrincipal().isPresent(),
                    sessionContext.getIdentity().getUser(),

View on GitHub (pinned to 55bb57d202)

Solutions

  1. Shorten the query text or split the work into smaller statements
  2. Raise query.max-length in config if genuinely needed
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at presto-main-base/src/main/java/com/facebook/presto/dispatcher/DispatchManager.java:267 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04). Data as JSON: /api/errors/b4d2ccb9475c593e. Report an issue: GitHub.