Open
Description
When running the Janitor against a PostgreSQL database, objects with dependencies (e.g., views built on tables) aren’t dropped first, causing the subsequent DROP TABLE
operation to fail due to those existing dependencies.
Traceback
2025-06-19 15:41:06,011 - MainThread - sqlmesh.cli - ERROR - Unhandled exception (__init__.py:53)
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/sqlmesh/utils/concurrency.py", line 69, in _process_node
self.fn(node)
File "/usr/local/lib/python3.12/site-packages/sqlmesh/utils/concurrency.py", line 172, in <lambda>
lambda s_id: fn(snapshots_by_id[s_id]),
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlmesh/core/snapshot/evaluator.py", line 474, in <lambda>
lambda s: self._cleanup_snapshot(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlmesh/core/snapshot/evaluator.py", line 1038, in _cleanup_snapshot
evaluation_strategy.delete(
File "/usr/local/lib/python3.12/site-packages/sqlmesh/core/snapshot/evaluator.py", line 1535, in delete
self.adapter.drop_table(name)
File "/usr/local/lib/python3.12/site-packages/sqlmesh/core/engine_adapter/shared.py", line 334, in internal_wrapper
return func(*list_args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlmesh/core/engine_adapter/base.py", line 931, in drop_table
self._drop_object(name=table_name, exists=exists)
File "/usr/local/lib/python3.12/site-packages/sqlmesh/core/engine_adapter/base.py", line 959, in _drop_object
self.execute(exp.Drop(this=exp.to_table(name), kind=kind, exists=exists, **drop_args))
File "/usr/local/lib/python3.12/site-packages/sqlmesh/core/engine_adapter/base.py", line 2166, in execute
self._execute(sql, **kwargs)
File "/usr/local/lib/python3.12/site-packages/sqlmesh/core/engine_adapter/base.py", line 2187, in _execute
self.cursor.execute(sql, **kwargs)
psycopg2.errors.DependentObjectsStillExist: cannot drop table sqlmesh__intermediate.intermediate__int_lesson_events__extracted__2348405816 because other objects depend on it
DETAIL: view sqlmesh__intermediate.intermediate__int_lessons__unioned__2208384159 depends on table sqlmesh__intermediate.intermediate__int_lesson_events__extracted__2348405816
HINT: Use DROP ... CASCADE to drop the dependent objects too.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/sqlmesh/cli/__init__.py", line 51, in _debug_exception_handler
return func()
^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlmesh/cli/__init__.py", line 29, in <lambda>
return handler(sqlmesh_context, lambda: func(*args, **kwargs))
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlmesh/core/analytics/__init__.py", line 82, in wrapper
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlmesh/cli/main.py", line 570, in janitor
ctx.obj.run_janitor(ignore_ttl, **kwargs)
File "/usr/local/lib/python3.12/site-packages/sqlmesh/core/analytics/__init__.py", line 110, in wrapper
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlmesh/core/context.py", line 820, in run_janitor
self._run_janitor(ignore_ttl)
File "/usr/local/lib/python3.12/site-packages/sqlmesh/core/context.py", line 2691, in _run_janitor
self.snapshot_evaluator.cleanup(
File "/usr/local/lib/python3.12/site-packages/sqlmesh/core/snapshot/evaluator.py", line 472, in cleanup
concurrent_apply_to_snapshots(
File "/usr/local/lib/python3.12/site-packages/sqlmesh/utils/concurrency.py", line 170, in concurrent_apply_to_snapshots
return concurrent_apply_to_dag(
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlmesh/utils/concurrency.py", line 212, in concurrent_apply_to_dag
).run()
^^^^^
File "/usr/local/lib/python3.12/site-packages/sqlmesh/utils/concurrency.py", line 64, in run
self._finished_future.result()
File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 456, in result
return self.__get_result()
^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result
raise self._exception
sqlmesh.utils.concurrency.NodeExecutionFailedError: Execution failed for node SnapshotId<"dwh"."intermediate"."int_lesson_events__extracted": 172656272>
sqlmesh v0.192.2, dialect postgres, database postgres
Metadata
Metadata
Assignees
Labels
No labels