[feat] Adding support for PostgreSQL storage via SQLAlchemy #3567
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR introduces SQLAlchemy Core to abstract database interactions in Reframe's storage backend, adding support for PostgreSQL alongside SQLite. It serves as a proof-of-concept to gather feedback on this approach before adding comprehensive tests and documentation. I have manually tested PostgreSQL with
psycopg2
for schema creation, storage, and CLI output. Full PostgreSQL tests intest_storage.py
will follow approval.Motivation
Supporting multiple SQL dialects (SQLite, PostgreSQL, MySQL) is complex due to differences in:
psycopg2
orpg8000
)SQLAlchemy Core unifies these interactions, improving maintainability and extensibility.
Next Steps (pending feedback)
Note Users can replace
psycopg2
with their preferred PostgreSQL driver (e.g.,pg8000
) by updatingrequirements.txt
andpostgresql_driver
in the system configuration. Suggestions on test cases or PostgreSQL edge cases are welcome.