failure to start picture-worker on 2.11 with pictures.geom geometry type issue

probably somehow linked to !466 (merged), deploying 2.11 on a fresh db, i fail to start the picture worker:

2025-12-26 10:19:14,037 [MainThread][INFO] geovisio.picture_grid: Refreshing database
2025-12-26 10:19:14,074 [MainThread][ERROR] geovisio.runner_pictures: Exiting thread
Traceback (most recent call last):
  File "/home/panoramax/pano-api/geovisio/workers/runner_pictures.py", line 328, in process_jobs
    self.check_periodic_tasks()
    ~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/home/panoramax/pano-api/geovisio/workers/runner_pictures.py", line 366, in check_periodic_tasks
    if not self.refresh_database():
           ~~~~~~~~~~~~~~~~~~~~~^^
  File "/home/panoramax/pano-api/geovisio/workers/runner_pictures.py", line 392, in refresh_database
    return utils.sequences.update_pictures_grid()
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/home/panoramax/pano-api/geovisio/utils/sequences.py", line 713, in update_pictures_grid
    conn.execute("REFRESH MATERIALIZED VIEW CONCURRENTLY pictures_grid")
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/panoramax/pano_venv/lib/python3.13/site-packages/psycopg/connection.py", line 299, in execute
    raise ex.with_traceback(None)
psycopg.errors.InternalError_: column "public"."pictures"."geom" must be a geometry or geography

it reproduced with the sql query on the db itself, so its not a python issue:

panoramax=> refresh materialized view concurrently pictures_grid;
ERROR:  column "public"."pictures"."geom" must be a geometry or geography

i've tried various things (removing/adding the public param from the MV creation query) and now i can manually run the refresh materialized view in a psql shell, but the picture worker still fails to start with the same traceback. i've tried fiddling with search_path but that didnt help:

conn.execute("SET search_path='public'; REFRESH MATERIALIZED VIEW CONCURRENTLY pictures_grid")

that's on psql 17/postgis 3.5.2 from debian 13. istr there was a default schema behaviour change in a major psql version, but i cant recall right now.

the query on the extent estimate also manually works:

panoramax=> select st_estimatedextent('public','pictures','geom');
                             st_estimatedextent                              
-----------------------------------------------------------------------------
 BOX(2.803513050079346 45.72449493408203,2.803513288497925 45.7244987487793)

the db url is set in the flask env, without a specific schema:

DB_URL="postgres://panoramax:panoramax@localhost/panoramax" 

the panoramax db user can access the geometry_columns table (which belongs to postgres db user):

panoramax=> select * from geometry_columns ;
 f_table_catalog | f_table_schema |  f_table_name  | f_geometry_column | coord_dimension | srid |      type       
-----------------+----------------+----------------+-------------------+-----------------+------+-----------------
 panoramax       | public         | pictures_grid  | geom              |               2 |    0 | GEOMETRY
 panoramax       | public         | pictures       | geom              |               2 | 4326 | POINT
 panoramax       | public         | sequences      | geom              |               2 | 4326 | MULTILINESTRING
 panoramax       | public         | excluded_areas | geom              |               2 | 4326 | MULTIPOLYGON
Assignee Loading
Time tracking Loading