PostgreSQL permissions and user privileges

I am attempting to set-up PostgreSQL role with ready-only access to the prodigy tables to avoid accidental writes while learning to use prodigy better. I followed the instructions on Permissions and user privileges.

Unfortunately, when running prodigy stats while using SELECT-only research_reader user in my prodigy.json configuration, I get the following error: peewee.ProgrammingError: must be owner of table link. Any suggestions to work around this issue?

The full traceback indicates that peewee is trying to create the indexes again even though
safe=True is specified:

Traceback (most recent call last):
  File "/opt/homebrew/Caskroom/mambaforge/base/envs/research/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/opt/homebrew/Caskroom/mambaforge/base/envs/research/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/opt/homebrew/Caskroom/mambaforge/base/envs/research/lib/python3.10/site-packages/prodigy/__main__.py", line 61, in <module>
    controller = recipe(*args, use_plac=True)
  File "cython_src/prodigy/core.pyx", line 329, in prodigy.core.recipe.recipe_decorator.recipe_proxy
  File "/opt/homebrew/Caskroom/mambaforge/base/envs/research/lib/python3.10/site-packages/plac_core.py", line 367, in call
    cmd, result = parser.consume(arglist)
  File "/opt/homebrew/Caskroom/mambaforge/base/envs/research/lib/python3.10/site-packages/plac_core.py", line 232, in consume
    return cmd, self.func(*(args + varargs + extraopts), **kwargs)
  File "/opt/homebrew/Caskroom/mambaforge/base/envs/research/lib/python3.10/site-packages/prodigy/recipes/commands.py", line 36, in stats
    DB = connect()
  File "/opt/homebrew/Caskroom/mambaforge/base/envs/research/lib/python3.10/site-packages/prodigy/components/db.py", line 86, in connect
    _DB = Database(db, db_id, db_name)
  File "/opt/homebrew/Caskroom/mambaforge/base/envs/research/lib/python3.10/site-packages/prodigy/components/db.py", line 201, in __init__
    DB_PROXY.create_tables(DB_TABLES, safe=True)
  File "/opt/homebrew/Caskroom/mambaforge/base/envs/research/lib/python3.10/site-packages/peewee.py", line 3369, in create_tables
    model.create_table(**options)
  File "/opt/homebrew/Caskroom/mambaforge/base/envs/research/lib/python3.10/site-packages/peewee.py", line 6758, in create_table
    cls._schema.create_all(safe, **options)
  File "/opt/homebrew/Caskroom/mambaforge/base/envs/research/lib/python3.10/site-packages/peewee.py", line 5862, in create_all
    self.create_indexes(safe=safe)
  File "/opt/homebrew/Caskroom/mambaforge/base/envs/research/lib/python3.10/site-packages/peewee.py", line 5776, in create_indexes
    self.database.execute(query)
  File "/opt/homebrew/Caskroom/mambaforge/base/envs/research/lib/python3.10/site-packages/peewee.py", line 3190, in execute
    return self.execute_sql(sql, params, commit=commit)
  File "/opt/homebrew/Caskroom/mambaforge/base/envs/research/lib/python3.10/site-packages/peewee.py", line 3174, in execute_sql
    with __exception_wrapper__:
  File "/opt/homebrew/Caskroom/mambaforge/base/envs/research/lib/python3.10/site-packages/peewee.py", line 2950, in __exit__
    reraise(new_type, new_type(exc_value, *exc_args), traceback)
  File "/opt/homebrew/Caskroom/mambaforge/base/envs/research/lib/python3.10/site-packages/peewee.py", line 191, in reraise
    raise value.with_traceback(tb)
  File "/opt/homebrew/Caskroom/mambaforge/base/envs/research/lib/python3.10/site-packages/peewee.py", line 3177, in execute_sql
    cursor.execute(sql, params or ())
peewee.ProgrammingError: must be owner of table link

The grants for the tables are:

SELECT grantee, privilege_type, table_name, table_schema
FROM information_schema.role_table_grants
ORDER BY grantee;

research_reader,SELECT,example,public
research_reader,SELECT,dataset,public
research_reader,SELECT,link,public
research_writer,DELETE,dataset,public
research_writer,TRUNCATE,dataset,public
research_writer,REFERENCES,dataset,public
research_writer,TRIGGER,dataset,public
research_writer,INSERT,example,public
research_writer,SELECT,example,public
research_writer,UPDATE,example,public
research_writer,DELETE,example,public
research_writer,INSERT,dataset,public
research_writer,REFERENCES,example,public
research_writer,TRIGGER,example,public
research_writer,INSERT,link,public
research_writer,SELECT,link,public
research_writer,UPDATE,link,public
research_writer,DELETE,link,public
research_writer,TRUNCATE,link,public
research_writer,REFERENCES,link,public
research_writer,TRIGGER,link,public
research_writer,TRUNCATE,example,public
research_writer,SELECT,dataset,public
research_writer,UPDATE,dataset,public