feat(pg): support PostgreSQL materialized views#2279
Conversation
There was a problem hiding this comment.
Pull Request Overview
This PR adds support for PostgreSQL materialized views in Martin tile server by treating them as discoverable objects alongside regular tables and views. The change enables materialized views to be included in server listings and accessible via the API.
Key Changes:
- Modified SQL query to include materialized views (relkind = 'm') in database object discovery
- Added test fixtures and validation for materialized view functionality
- Expanded test coverage for cross-schema object handling
Reviewed Changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
martin/src/config/file/postgres/resolver/scripts/query_available_tables.sql |
Updated WHERE clause to include materialized views in database object queries |
tests/fixtures/tables/materialized_view.sql |
Added test fixture with materialized view creation and sample data |
tests/test.sh |
Added test cases for materialized view JSON and PBF response validation |
for more information, see https://pre-commit.ci
CommanderStorm
left a comment
There was a problem hiding this comment.
Two requests:
Please run just bless to bless the tests snapshots.
Below, there is is_view. It is used to give debug information like here:
https://github.com/maplibre/martin/blob/c16ceabed73ff66fe8d55452341fe01b5f64681f/martin/src/config/file/postgres/builder.rs#L500C4-L500C11
Let's change this to relkind and give more accurate error messages in the usages.
I have run do you want me to change it to an |
|
Yes |
|
I have added the Some trait bounds are not satisfied |
72fe68c to
729108e
Compare
for more information, see https://pre-commit.ci
CommanderStorm
left a comment
There was a problem hiding this comment.
I have added the Option but it breaks the code.
Some trait bounds are not satisfied
I changed this to i8 as Char gets translated this way.
I have not investigated all testcase fails, the code might not be entirely sound.
martin/src/config/file/tiles/postgres/resolver/scripts/query_available_tables.sql
Outdated
Show resolved
Hide resolved
…vailable_tables.sql
Signed-off-by: Kunal Singh Dadhwal <kunalsinghdadhwal@gmail.com>
|
Kindly review @CommanderStorm |
nyurik
left a comment
There was a problem hiding this comment.
great work! one minor thing, and i think ok to merge, but I will let @CommanderStorm drive this. Thanks!
I seem to have missed this, sorry |
## 🤖 New release * `martin-tile-utils`: 0.6.8 -> 0.6.9 (✓ API compatible changes) * `mbtiles`: 0.15.0 -> 0.15.1 (✓ API compatible changes) * `martin-core`: 0.2.5 -> 0.2.6 (✓ API compatible changes) * `martin`: 1.2.0 -> 1.3.0 <details><summary><i><b>Changelog</b></i></summary><p> ## `mbtiles` <blockquote> ## [0.15.1](mbtiles-v0.15.0...mbtiles-v0.15.1) - 2026-01-27 ### Added - add MLT decoding support ([#2512](#2512)) - migrate our log library to tracing ([#2494](#2494)) ### Other - unignore `diff_and_patch_bsdiff` test with unique SQLite database names ([#2480](#2480)) - *(mbtiles)* remove the prefix-ism around how files are named for binary diff copy and simpify their naming ([#2478](#2478)) - *(mbtiles)* add assertion messages what we are checking to the copy tests ([#2477](#2477)) </blockquote> ## `martin-core` <blockquote> ## [0.2.6](martin-core-v0.2.5...martin-core-v0.2.6) - 2026-01-27 ### Added - migrate our log library to tracing ([#2494](#2494)) - *(martin-core)* Allow glyph ranges more than 0xFFFF ([#2438](#2438)) ### Fixed - *(perf)* Remove FontSources.masks as they were consuming large amounts of memory even when no font sources were set ([#2519](#2519)) - improve error message if no SVG sprite files are present ([#2516](#2516)) ### Other - move our imports to tracing ([#2500](#2500)) - *(deps)* shear our dependencys ([#2497](#2497)) </blockquote> ## `martin` <blockquote> ## [1.3.0](martin-v1.2.0...martin-v1.3.0) - 2026-01-27 ### Added - *(srv)* Add `route_prefix` configuration for native subpath support without the need of a reverse proxy override ([#2523](#2523)) - add MLT decoding support ([#2512](#2512)) - migrate our log library to tracing ([#2494](#2494)) - improve martin-cp progress output time estimate ([#2491](#2491)) - *(pg)* include ID column info for tables ([#2485](#2485)) - *(pg)* support PostgreSQL materialized views ([#2279](#2279)) - *(martin-core)* Allow glyph ranges more than 0xFFFF ([#2438](#2438)) ### Fixed - *(ui)* clipboard copy for http://0.0.0.0:3000 and unify implementations ([#2487](#2487)) - the `Copy` icon displaying nicely, next to the text and with enough padding ot all items ([#2483](#2483)) - update copy text to include icon for better visibility ([#2482](#2482)) - *(perf)* Remove FontSources.masks as they were consuming large amounts of memory even when no font sources were set ([#2519](#2519)) - improve error message if no SVG sprite files are present ([#2516](#2516)) ### Other - move our request logging to tracing ([#2508](#2508)) - move our imports to tracing ([#2500](#2500)) - *(deps)* shear our dependencys ([#2497](#2497)) - *(ui)* adjust margin for copy icon in URL component ([#2489](#2489)) - unignore `diff_and_patch_bsdiff` test with unique SQLite database names ([#2480](#2480)) - *(mbtiles)* remove the prefix-ism around how files are named for binary diff copy and simpify their naming ([#2478](#2478)) - *(mbtiles)* add assertion messages what we are checking to the copy tests ([#2477](#2477)) </blockquote> </p></details> --- This PR was generated with [release-plz](https://github.com/release-plz/release-plz/). --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Fixes #2267
New Features
Tests