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