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

Refactor OC\DB\QueryBuilder::execute #40157

Conversation

summersab
Copy link
Contributor

This PR refactors the deprecated method OC\DB\QueryBuilder::execute and replaces it with either

  • OC\DB\QueryBuilder::executeQuery (when actual results are desired) or
  • OC\DB\QueryBuilder::executeStatement (when a count of rows is desired or the operation is an insert / update / delete)

throughout the entire NC codebase (excluding ./apps and ./3rdparty).

Care was taken to not change execute methods that are NOT deprecated such as:

  • OC\Files\Cache\CacheQueryBuilder::execute
  • OC\DB\QueryBuilder\QueryBuilder::execute
  • OCP\DB\IPreparedStatement::execute

However, please be advised that since this PR is rather extensive, it is possible that a query method NOT part of the OC\DB\QueryBuilder could have been updated.

@solracsf solracsf added the 3. to review Waiting for reviews label Aug 30, 2023
@solracsf solracsf added this to the Nextcloud 28 milestone Aug 30, 2023
$sql = $this->adapter->fixupStatement($sql);
$this->queriesExecuted++;
$this->logQueryToFile($sql);
return parent::executeUpdate($sql, $params, $types);
return parent::executeStatement($sql, $params, $types);

Check failure

Code scanning / Psalm

InvalidReturnStatement Error

The inferred type 'int|string' does not match the declared return type 'int' for OC\DB\Connection::executeUpdate
@solracsf
Copy link
Member

solracsf commented Sep 9, 2023

CI is failing 🟥 and there are conflicts ⚔️

Signed-off-by: Andrew Summers <[email protected]>

Fix CI errors
@summersab summersab force-pushed the refactor/OC-DB-QueryBuilder_execute branch from f488610 to ba25b00 Compare September 18, 2023 16:05
@@ -277,7 +277,12 @@ public function execute() {
]);
}

$result = $this->queryBuilder->execute();
if ($this->queryBuilder->getType() === $this->queryBuilder::SELECT) {
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
if ($this->queryBuilder->getType() === $this->queryBuilder::SELECT) {
if ($this->getType() !== \Doctrine\DBAL\Query\QueryBuilder::SELECT) {

As per lines below

@skjnldsv skjnldsv mentioned this pull request Nov 1, 2023
This was referenced Nov 6, 2023
This was referenced Nov 14, 2023
@blizzz blizzz modified the milestones: Nextcloud 28, Nextcloud 29 Nov 23, 2023
@skjnldsv
Copy link
Member

conflicts

@skjnldsv skjnldsv added 2. developing Work in progress and removed 3. to review Waiting for reviews labels Feb 23, 2024
This was referenced Mar 12, 2024
This was referenced Mar 20, 2024
@skjnldsv skjnldsv mentioned this pull request Mar 28, 2024
81 tasks
@skjnldsv skjnldsv modified the milestones: Nextcloud 29, Nextcloud 30 Mar 28, 2024
@skjnldsv skjnldsv closed this May 30, 2024
@skjnldsv skjnldsv removed this from the Nextcloud 30 milestone Aug 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants