From a638c469e08fd9e60541f0a2414e637579dc832b Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Fri, 15 May 2026 15:48:29 -0400 Subject: [PATCH] feat(fc2c-i): migration 0004 enables tsm_system_rows --- .../versions/0004_fc2c_i_tsm_system_rows.py | 23 ++++++++++++++++ tests/test_migration_0004.py | 27 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 alembic/versions/0004_fc2c_i_tsm_system_rows.py create mode 100644 tests/test_migration_0004.py diff --git a/alembic/versions/0004_fc2c_i_tsm_system_rows.py b/alembic/versions/0004_fc2c_i_tsm_system_rows.py new file mode 100644 index 0000000..e8bd920 --- /dev/null +++ b/alembic/versions/0004_fc2c_i_tsm_system_rows.py @@ -0,0 +1,23 @@ +"""fc2c-i: enable tsm_system_rows for scalable random sampling + +Revision ID: 0004 +Revises: 0003 +Create Date: 2026-05-15 + +""" +from typing import Sequence, Union + +from alembic import op + +revision: str = "0004" +down_revision: Union[str, None] = "0003" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + op.execute("CREATE EXTENSION IF NOT EXISTS tsm_system_rows") + + +def downgrade() -> None: + op.execute("DROP EXTENSION IF EXISTS tsm_system_rows") diff --git a/tests/test_migration_0004.py b/tests/test_migration_0004.py new file mode 100644 index 0000000..7975d0c --- /dev/null +++ b/tests/test_migration_0004.py @@ -0,0 +1,27 @@ +"""Integration: the tsm_system_rows extension is installed by migration 0004. + +Needs a real Postgres (CI does not provision one), so integration-marked. +""" + +import pytest +from sqlalchemy import text + +pytestmark = pytest.mark.integration + + +@pytest.mark.asyncio +async def test_tsm_system_rows_extension_present(db): + row = ( + await db.execute( + text("SELECT 1 FROM pg_extension WHERE extname = 'tsm_system_rows'") + ) + ).first() + assert row is not None + + +@pytest.mark.asyncio +async def test_system_rows_sampling_is_usable(db): + # Should parse and execute even on an empty table. + await db.execute( + text("SELECT * FROM image_record TABLESAMPLE SYSTEM_ROWS(1)") + )