t8y2/dbx · error

execution plans are not supported by Cassandra

Error message

execution plans are not supported by Cassandra

What it means

Returned by the cassandra-go dispatch handler when a client requests an execution plan. Cassandra/CQL has no EXPLAIN facility, so this capability is explicitly unsupported by the driver and the request is rejected with a permanent capability error rather than attempted.

Source

Thrown at agents/drivers/cassandra-go/main.go:369

		return result, false, err
	case "get_columns":
		result, err := s.getColumns(stringParam(params, "schema"), stringParam(params, "table"))
		return result, false, err
	case "list_indexes":
		result, err := s.listIndexes(stringParam(params, "schema"), stringParam(params, "table"))
		return result, false, err
	case "list_foreign_keys":
		return []foreignKeyInfo{}, false, nil
	case "list_triggers":
		result, err := s.listTriggers(stringParam(params, "schema"), stringParam(params, "table"))
		return result, false, err
	case "get_object_source":
		return nil, false, errors.New("object source is not supported by Cassandra")
	case "get_table_ddl":
		result, err := s.getTableDDL(stringParam(params, "schema"), stringParam(params, "table"))
		return result, false, err
	case "get_explain_info":
		return nil, false, errors.New("execution plans are not supported by Cassandra")
	case "execute_query":
		result, err := s.executeQuery(queryOptionsFromParams(params))
		return result, false, err
	case "execute_query_page", "start_table_read":
		result, err := s.executeQueryPage(queryOptionsFromParams(params), intParam(params, "pageSize"))
		return result, false, err
	case "fetch_query_page", "fetch_table_read_page":
		result, err := s.fetchQueryPage(stringParam(params, "sessionId"), intParam(params, "pageSize"))
		return result, false, err
	case "close_query_session", "close_table_read_session":
		return s.closeQuerySession(stringParam(params, "sessionId")), false, nil
	case "execute_transaction":
		result, err := s.executeStatements(params, true)
		return result, false, err
	case "execute_batch":
		result, err := s.executeStatements(params, false)
		return result, false, err
	case "disconnect":

View on GitHub (pinned to c0390bff16)

Solutions

  1. Do not call get_explain_info against Cassandra; guard the call by backend type
  2. Use query tracing instead: enable tracing on the CQL statement (TRACING ON / gocql Query.Trace())
  3. Inspect system_traces.sessions and system_traces.events after executing a traced query
  4. Treat the error as a capability signal and disable plan viewing in the UI

Example fix

// before
// const plan = await rpc("get_explain_info", {query})
// after
// if (backend !== "cassandra") plan = await rpc("get_explain_info", {query})
// else plan = await traceQuery(query) // uses CQL tracing
Defensive patterns

Strategy: fallback

Type guard

const supportsExplain = (backend) => backend !== "cassandra";

Try / catch

try { plan = await rpc("get_explain_info", params) }
catch (e) {
  if (e.message.includes("execution plans are not supported")) {
    plan = await traceViaCql(params.query); // fallback to CQL tracing
  }
}

Prevention

When it happens

Trigger: Any client call invoking get_explain_info against the Cassandra driver agent.

Common situations: Query-analysis tools that EXPLAIN every query before running it; generic SQL IDE features applied to Cassandra connections; automated query-optimizer workflows assuming relational backends.

Related errors


AI-assisted analysis of t8y2/dbx@c0390bff16 (2026-09-05). Data as JSON: /api/errors/6d5a60bfa195579e. Report an issue: GitHub.