From 6431fb859c6d91df9f9c793afd25f026144046dc Mon Sep 17 00:00:00 2001 From: Henry Su Date: Mon, 24 Aug 2026 11:55:47 -0500 Subject: [PATCH] fix: do not paginate columns when listing materialized views limit/offset apply to the matview CTE only, matching tables/views/foreign tables. --- src/lib/PostgresMetaMaterializedViews.ts | 2 +- test/server/materialized-views.ts | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/lib/PostgresMetaMaterializedViews.ts b/src/lib/PostgresMetaMaterializedViews.ts index 0a32793a3..3c4806239 100644 --- a/src/lib/PostgresMetaMaterializedViews.ts +++ b/src/lib/PostgresMetaMaterializedViews.ts @@ -98,7 +98,7 @@ const generateEnrichedMaterializedViewsSql = ({ offset?: number }) => ` with materialized_views as (${MATERIALIZED_VIEWS_SQL({ schemaFilter, limit, offset, materializedViewIdentifierFilter, idsFilter })}) - ${includeColumns ? `, columns as (${COLUMNS_SQL({ schemaFilter, limit, offset, tableIdentifierFilter: materializedViewIdentifierFilter, tableIdFilter: idsFilter })})` : ''} + ${includeColumns ? `, columns as (${COLUMNS_SQL({ schemaFilter, tableIdentifierFilter: materializedViewIdentifierFilter, tableIdFilter: idsFilter })})` : ''} select * ${ diff --git a/test/server/materialized-views.ts b/test/server/materialized-views.ts index 8799a6a94..4a1dc7e69 100644 --- a/test/server/materialized-views.ts +++ b/test/server/materialized-views.ts @@ -100,3 +100,19 @@ test('materialized views with columns', async () => { ] `) }) + +test('materialized views with columns keep every column when listing with limit', async () => { + const { body } = await app.inject({ + method: 'GET', + path: '/materialized-views', + query: { include_columns: 'true', limit: '1' }, + }) + const data = JSON.parse(body) + expect(data).toHaveLength(1) + expect(data[0].name).toBe('todos_matview') + expect(data[0].columns.map((column: { name: string }) => column.name)).toEqual([ + 'id', + 'details', + 'user-id', + ]) +})