prestodb/presto · error · TableNotFoundException
Table not found
Error message
Table not found
What it means
metadataDelete resolves the table from the handle before performing a metadata-only delete; this guard fires when the table backing the handle is no longer present in the metastore (concurrently dropped) — a NOT_FOUND condition.
Source
Thrown at presto-hive/src/main/java/com/facebook/presto/hive/HiveMetadata.java:2749
throw new PrestoException(NOT_SUPPORTED, "This connector only supports delete where one or more partitions are deleted entirely");
}
@Override
public Optional<ColumnHandle> getDeleteRowIdColumn(ConnectorSession session, ConnectorTableHandle tableHandle)
{
return Optional.of(updateRowIdHandle());
}
@Override
public OptionalLong metadataDelete(ConnectorSession session, ConnectorTableHandle tableHandle, ConnectorTableLayoutHandle tableLayoutHandle)
{
HiveTableHandle handle = (HiveTableHandle) tableHandle;
HiveTableLayoutHandle layoutHandle = (HiveTableLayoutHandle) tableLayoutHandle;
MetastoreContext metastoreContext = getMetastoreContext(session);
Optional<Table> table = metastore.getTable(metastoreContext, handle);
if (!table.isPresent()) {
throw new TableNotFoundException(handle.getSchemaTableName());
}
if (table.get().getPartitionColumns().isEmpty()) {
metastore.truncateUnpartitionedTable(session, handle.getSchemaName(), handle.getTableName());
}
else {
for (HivePartition hivePartition : getOrComputePartitions(layoutHandle, session, tableHandle)) {
metastore.dropPartition(session, handle.getSchemaName(), handle.getTableName(), table.get().getStorage().getLocation(), toPartitionValues(hivePartition.getPartitionId().getPartitionName()));
}
}
// it is too expensive to determine the exact number of deleted rows
return OptionalLong.empty();
}
private List<HivePartition> getOrComputePartitions(HiveTableLayoutHandle layoutHandle, ConnectorSession session, ConnectorTableHandle tableHandle)
{
if (layoutHandle.getPartitions().isPresent()) {
return layoutHandle.getPartitions().map(PartitionSet::getFullyLoadedPartitions).get();View on GitHub (pinned to 55bb57d202)
Solutions
- Confirm the table still exists (SHOW TABLES)
- Retry the DELETE after refreshing metadata
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at presto-hive/src/main/java/com/facebook/presto/hive/HiveMetadata.java:2749 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/8803823f2f372743.
Report an issue: GitHub.