Commit graph

454 commits

Author SHA1 Message Date
Carl Schwan
837fe3586d feat(db): Restaure support for non-nullable boolean column
We disabled them because they are not supported on Oracle DB and it is
still the case for OCI < 23. But instead of disabling the support
completely for every database types, mark non-nullable boolean column as
actually nullable when using Oracle.

This allow to use some slighly lighter schema on normal databases who
support natively booleans wheen we don't need to store 3 states
true|false|null.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-09-17 14:45:48 +02:00
Carl Schwan
c21b8169ff refactor(querybuilder): Port away from qb::execute() in lib/
Replace by either executeStatement or executeQuery

Signed-off-by: Carl Schwan <carl.schwan@nextclound.com>
2025-09-02 11:55:56 +02:00
Côme Chilliet
b7c15949ce
chore: Get rid of AppLocator helper
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-08-18 17:09:40 +02:00
Varun Patil
5ecd3c4b49
feat(database): Add option to test for mariadb
There are some behavioral differences that apps may need to check for.
See discussion on #51175 for more info.

This preserves the existing behavior of getDatabaseProvider()

Signed-off-by: Varun Patil <varunpatil@ucla.edu>
2025-08-08 07:50:51 +02:00
Joas Schilling
c9fa1db925
Merge pull request #54230 from nextcloud/bugfix/spreed-15625/log-query-with-immutable-dates
fix(logging): Fix query logging with DateTimeImmutable parameters
2025-08-05 12:29:04 +02:00
Joas Schilling
c722f8c88b
fix(logging): Fix query logging with DateTimeImmutable parameters
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-08-04 08:47:55 +02:00
Robin Appelman
222cbd0af6
fix: fix oci string length with empty strings
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-08-01 17:45:35 +02:00
Marcel Klehr
8589debf6d fix(ConnectionFactory): Apply Oracle connection fix to primary and replica params as well
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-07-21 15:49:40 +02:00
Ferdinand Thiessen
5981b7eb51
chore: apply new CSFixer rules
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>

# Conflicts:
#	apps/settings/lib/SetupChecks/PhpOpcacheSetup.php
2025-07-01 16:26:50 +02:00
Robin Appelman
26903926a2
fix: allow hinting the shard keys for joined tables
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-06-10 16:15:05 +02:00
Joas Schilling
ad7a050f96
fix: Revert "fix(db): Store last insert id before reconnect"
This reverts commit df94cceb7b.
There were records of some old IDs being read which is much worse

Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-21 07:55:42 +02:00
Joas Schilling
df94cceb7b
fix(db): Store last insert id before reconnect
During a reconnect we are losing the connection and when the
realLastInsertId call is the one triggering the reconnect, it
does not return the ID. But inside the reconnect, we were able
to save the last insert id, so calling it a second time is going
to be successful.
We can not return the result on the initial call, as we are already
way deeper in the stack performing the actual database query on
the doctrine driver.

Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-14 10:27:00 +02:00
Marcel Müller
0955b0a39d feat: Add option to also log parameters to query log
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2025-04-19 21:29:26 +02:00
Robin Appelman
fc2cda12b5
fix: use proper migration sorting when checking if a migration needs to be executed
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-04-02 14:29:08 +02:00
Robin Appelman
9bbe8c59d7
Merge pull request #51073 from nextcloud/dbal-exception-query
feat: log query for dbal exceptions
2025-03-04 16:32:55 +01:00
Varun Patil
c414ddee54 feat(db): add truncateTable method
Signed-off-by: Varun Patil <varunpatil@ucla.edu>
2025-03-02 10:36:13 -08:00
Robin Appelman
f3bd4a79d9
feat: log query for dbal exceptions
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-02-26 17:37:13 +01:00
Andy Scherzinger
48d69c727a
fix(lint): correct comment identation
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2025-02-25 22:35:50 +01:00
Andy Scherzinger
388301275b
Merge pull request #50764 from p1gp1g/patch-1
Update doc comment for prefixTableName
2025-02-25 22:16:04 +01:00
Robin Appelman
0a77ba99a2
feat: support migrating an instance to sharding
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-02-25 17:52:40 +01:00
Louis Chemineau
066c92f7b0 fix: Initialize lastConnectionCheck after first connection
We are checking whether the DB connection is alive once every 30 seconds. But when we are lacking the last check time, we are skipping the check and reconnect logic. This is causing the reconnect logic to never fire in those cases.

It seems to me that "those cases", are actually always the case, as upon initialization, we are not using the proper connection name to store the time.

In the `connect()` logic, when `$this->_conn` is null, `$this->getConnectionName()` is returning `replica`, so `$this->lastConnectionCheck` will be equal to `['replica' => time()];`

60711ea4cf/lib/private/DB/Connection.php (L215-L221)

60711ea4cf/lib/private/DB/Connection.php (L891-L893)

2b6d7bf65f/doctrine/dbal/src/Connections/PrimaryReadReplicaConnection.php (L136-L139)

Then, if the connection name ends up as being 'primary', the reconnect logic is skipped:

60711ea4cf/lib/private/DB/Connection.php (L874-L880)

Follow-up of https://github.com/nextcloud/server/pull/41819

Signed-off-by: Louis Chemineau <louis@chmn.me>
2025-02-19 12:25:12 +01:00
S1m
da090c7a7a
Update doc comment for prefixTableName
Signed-off-by: S1m <31284753+p1gp1g@users.noreply.github.com>
2025-02-11 17:44:39 +01:00
Nils Wenninghoff
cf5d55edb7
fix(ConvertType): Read dbtype in createConnectionParams and remove safeguard
Signed-off-by: Nils Wenninghoff <nils@ungemein.cool>
2025-01-30 09:24:58 +01:00
Robin Appelman
0f55a589ba
fix: improve logic for ensuring join columns are selected for partitioned queries
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-12-12 17:39:04 +01:00
Robin Appelman
c3930163a2
fix: handle calling select on partitioned queries with an array of columns
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-12-12 17:38:21 +01:00
Benjamin Gaussorgues
49bd1754d4 fix(sharding): typo in addOrderBy
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2024-10-30 07:53:10 +01:00
dependabot[bot]
bb598c8451
chore(deps): Bump nextcloud/coding-standard in /vendor-bin/cs-fixer
Bumps [nextcloud/coding-standard](https://github.com/nextcloud/coding-standard) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/nextcloud/coding-standard/releases)
- [Changelog](https://github.com/nextcloud/coding-standard/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/coding-standard/compare/v1.3.1...v1.3.2)

---
updated-dependencies:
- dependency-name: nextcloud/coding-standard
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-10-19 07:57:35 +02:00
Ferdinand Thiessen
db94e10af0
fix: Prevent breaking change in IQueryBuilder
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-10-17 18:31:44 +02:00
Ferdinand Thiessen
e314d52118
fix: Adjust parameter type usage and add SQLite support
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-10-17 18:31:44 +02:00
provokateurin
e445be1202
fix(QueryBuilder): Account for aliases in output columns
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-10-02 11:55:27 +02:00
provokateurin
35dfc639b3
fix(QueryBuilder): Restrict identifier length to 30 characters due to Oracle limitations
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-26 08:57:06 +02:00
Ferdinand Thiessen
a8f46af20f
chore: Add proper deprecation dates where missing
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-20 00:46:03 +02:00
provokateurin
9836e9b164
chore(deps): Update nextcloud/coding-standard to v1.3.1
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-19 14:21:20 +02:00
John Molakvoæ
ff0cab5956
Merge pull request #47852 from nextcloud/sharding-code-fixes 2024-09-16 11:39:58 +02:00
Ferdinand Thiessen
027fc052e7
fix: Adjust types of IQueryBuilder to properly allow joining with sub-query
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-10 17:51:27 +02:00
Robin Appelman
da59fd4389
fix: misc code fixes around db sharding
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-09-09 16:59:59 +02:00
Anna Larch
8af7ecb257 chore: adjust code to adhere to coding standard
Signed-off-by: Anna Larch <anna@nextcloud.com>
2024-09-05 21:23:38 +02:00
John Molakvoæ
7efd244956
Merge pull request #47675 from nextcloud/adapterQueryOpti 2024-09-04 09:15:52 +02:00
Julius Härtl
7f0d0cf03c
Merge pull request #47640 from nextcloud/fix/migrator-replica
fix: Run migration sql as statement so that the primary db node is used
2024-09-02 10:46:24 +02:00
Git'Fellow
8e6e7976d2
fix: psalm
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2024-09-02 10:19:25 +02:00
Git'Fellow
388f2973b9
fix: psalm
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2024-09-02 10:08:08 +02:00
Git'Fellow
dfcf3132dd
chore(db): Make the query more simpler to read
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2024-09-02 09:57:48 +02:00
Julius Härtl
c3fa25a16e
fix: Run migration sql as statement so that the primary db node is used
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-08-30 15:45:50 +02:00
Arthur Schiwon
edaa4d1432
fix(DB): do not assume sharding is always enabled
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-29 19:55:10 +02:00
Arthur Schiwon
381e922085
fix(DB): set sharding parameters only when intended
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-29 19:12:44 +02:00
Andy Scherzinger
d404998157
Merge pull request #47515 from nextcloud/bugfix/noid/fix-migration-sorting
fix(migration): Correctly sort migrations by version number
2024-08-28 20:46:24 +02:00
Louis Chemineau
2574cbfa61
chore: Apply php:cs recommendations
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-08-28 10:44:18 +02:00
Robin Appelman
b21a399d1a
fix: implement sharding compatible cleanup for various bits
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:27:14 +02:00
Robin Appelman
fc05a67f19
fix: only allow pre-defined shards
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:21:19 +02:00
Robin Appelman
62f8b6517f
feat: implement distributing partitioned queries over multiple shards
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 10:21:19 +02:00