cube-js/cube · error

The query limit has been exceeded.

Error message

The query limit has been exceeded.

What it means

Resource guard in normalizeQuery: for non-persistent queries the requested `limit` exceeds the CUBEJS_DB_QUERY_LIMIT environment cap. Unlike UserError-based validations, this throws a plain Error, signaling a hard server-side limit rather than a client input mistake.

Source

Thrown at packages/cubejs-api-gateway/src/query.js:468

  }

  const regularToTimeDimension = (query.dimensions || []).filter(d => typeof d === 'string' && d.split('.').length === 3).map(d => ({
    dimension: d.split('.').slice(0, 2).join('.'),
    granularity: d.split('.')[2]
  }));
  const timezone = value.timezone || 'UTC';

  const def = getEnv('dbQueryDefaultLimit') <= getEnv('dbQueryLimit')
    ? getEnv('dbQueryDefaultLimit')
    : getEnv('dbQueryLimit');

  let newLimit;
  if (!persistent) {
    if (
      typeof query.limit === 'number' &&
      query.limit > getEnv('dbQueryLimit')
    ) {
      throw new Error('The query limit has been exceeded.');
    }
    newLimit = typeof query.limit === 'number'
      ? query.limit
      : def;
  } else {
    newLimit = query.limit;
  }

  return {
    ...query,
    ...(query.order ? { order: normalizeQueryOrder(query.order) } : {}),
    limit: newLimit,
    timezone,
    filters: normalizeQueryFilters(query.filters || [], timezone),
    dimensions: (query.dimensions || []).filter(d => typeof d !== 'string' || d.split('.').length !== 3),
    timeDimensions: (query.timeDimensions || []).map(td => {
      const compareDateRange = td.compareDateRange ? td.compareDateRange.map((currentDateRange) => (typeof currentDateRange === 'string' ? dateParser(currentDateRange, timezone) : currentDateRange)) : null;

View on GitHub (pinned to 7d981676b3)

Solutions

  1. Reduce the query `limit` to at most the value of CUBEJS_DB_QUERY_LIMIT (default 10000).
  2. If a higher limit is genuinely needed, raise CUBEJS_DB_QUERY_LIMIT in the orchestrator configuration.
  3. For exports or large result sets, use the download/export API instead of a huge single-query limit.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at packages/cubejs-api-gateway/src/query.js:468 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of cube-js/cube@7d981676b3 (2026-09-02). Data as JSON: /api/errors/1fa47a1653869444. Report an issue: GitHub.