Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add support for PgSQL #3985

Merged
merged 30 commits into from
Jun 22, 2024
Merged

feat: add support for PgSQL #3985

merged 30 commits into from
Jun 22, 2024

Conversation

SychO9
Copy link
Member

@SychO9 SychO9 commented May 5, 2024

Part of the roadmap

Changes proposed in this pull request:
Postgres was trickier than SQLite, but that was mostly due to having some code that dates back years ago when eloquent/ the laravel schema builder was less flexible.

In most cases there should be no need to add any custum handling for the database driver when building queries. But that does become a necessity when writing more complex / larger queries. Example: fulltext search and statistics.

The easiest instance extension devs will run into when wanting to support PgSQL is the loose group by.

// Allowed in mysql
->select('col', 'col2', ..)
->groupBy('col')
->orderBy(..)

// must be done this way in pgsql
->select('col', 'col2', ..)
->distinct('col')
->orderBy('col')
->orderBy(..)

// can be simplified to
->select('col', 'col2', ..)
->whenMySql(fn (Builder $query) => $query->groupBy('col'))
->whenPgSql(fn (Builder $query) => $query->distinct('col')->orderBy('col'))
->orderBy(..)

Screenshot
image
image

Necessity

  • Has the problem that is being solved here been clearly explained?
  • If applicable, have various options for solving this problem been considered?
  • For core PRs, does this need to be in core, or could it be in an extension?
  • Are we willing to maintain this for years / potentially forever?

Confirmed

  • Frontend changes: tested on a local Flarum installation.
  • Backend changes: tests are green (run composer test).
  • Core developer confirmed locally this works as intended.
  • Tests have been added, or are not appropriate here.

Required changes:

  • Related documentation PR: (Remove if irrelevant)
  • Related core extension PRs: (Remove if irrelevant)

@SychO9 SychO9 added this to the 2.0 milestone May 5, 2024
@SychO9 SychO9 self-assigned this May 5, 2024
@SychO9 SychO9 marked this pull request as ready for review May 9, 2024 12:23
@SychO9 SychO9 requested a review from a team as a code owner May 9, 2024 12:23
@SychO9 SychO9 mentioned this pull request Jun 1, 2024
10 tasks
@SychO9
Copy link
Member Author

SychO9 commented Jun 6, 2024

Added support for defining supported databases

image
image

Copy link
Member

@askvortsov1 askvortsov1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome work! Should we show a warning in the extension UI and/or when enabling extensions if they don't specify compatibility with the current db driver?

Base automatically changed from sm/sqlite- to 2.x June 21, 2024 06:25
@SychO9
Copy link
Member Author

SychO9 commented Jun 21, 2024

Awesome work! Should we show a warning in the extension UI and/or when enabling extensions if they don't specify compatibility with the current db driver?

image

@SychO9
Copy link
Member Author

SychO9 commented Jun 21, 2024

@askvortsov1

ff96395

image

SychO9 added 3 commits June 21, 2024 10:55
# Conflicts:
#	extensions/flags/src/Api/Controller/ListFlagsController.php
#	extensions/flags/tests/integration/api/flags/ListTest.php
#	extensions/flags/tests/integration/api/flags/ListWithTagsTest.php
#	extensions/likes/src/Api/LoadLikesRelationship.php
#	extensions/mentions/tests/integration/api/ListPostsTest.php
#	extensions/sticky/tests/integration/api/ListDiscussionsTest.php
#	framework/core/src/Foundation/ErrorServiceProvider.php
#	framework/core/tests/integration/api/access_tokens/CreateTest.php
#	framework/core/tests/integration/api/notifications/ListTest.php
#	framework/core/tests/integration/api/users/GroupSearchTest.php
@SychO9 SychO9 requested a review from askvortsov1 June 21, 2024 12:15
@SychO9 SychO9 merged commit 379298a into 2.x Jun 22, 2024
26 of 27 checks passed
@SychO9 SychO9 deleted the sm/pgsql branch June 22, 2024 07:03
@luceos luceos mentioned this pull request Aug 3, 2024
10 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants