Commit graph

424 commits

Author SHA1 Message Date
Ferdinand Thiessen
832f79ac93
chore: apply code style
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-30 19:04:59 +02:00
Robin Appelman
2708a2b622 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 12:52:40 +00:00
Robin Appelman
bcb13b1295 feat: log query for dbal exceptions
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-03-05 22:52:28 +01:00
Louis Chemineau
d3b4b21e29 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-25 11:07:34 +00:00
Nils Wenninghoff
b21070090b
fix(ConvertType): Read dbtype in createConnectionParams and remove safeguard
Signed-off-by: Nils Wenninghoff <nils@ungemein.cool>
2025-01-30 12:19:39 +01:00
Robin Appelman
68db21f829 fix: improve logic for ensuring join columns are selected for partitioned queries
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-12-12 21:44:05 +00:00
Robin Appelman
f333fbb8f5 fix: handle calling select on partitioned queries with an array of columns
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-12-12 21:44:05 +00:00
Benjamin Gaussorgues
0cd1eeb509
fix(sharding): typo in addOrderBy
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2024-10-30 11:43:38 +01:00
provokateurin
aab30afc25 fix(QueryBuilder): Account for aliases in output columns
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-10-03 13:49:00 +00:00
Benjamin Gaussorgues
8290de3b93
Merge pull request #48077 from nextcloud/backport/47852/stable30 2024-10-02 10:43:41 +02:00
provokateurin
bbeda126cc fix(QueryBuilder): Restrict identifier length to 30 characters due to Oracle limitations
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-09-26 13:16:02 +00:00
Robin Appelman
914e8f9ce2 fix: misc code fixes around db sharding
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-09-16 12:19:20 +02:00
Ferdinand Thiessen
a8ae2f9755
fix: Adjust types of IQueryBuilder to properly allow joining with sub-query
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-09-11 15:20:42 +02:00
Julius Härtl
332b7a43a4 fix: Run migration sql as statement so that the primary db node is used
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2024-09-09 09:38:13 +00:00
Arthur Schiwon
1b89323703
fix(DB): do not assume sharding is always enabled
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-29 20:06:33 +02:00
Arthur Schiwon
e9dcfbcfb7
fix(DB): set sharding parameters only when intended
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-29 20:06:31 +02:00
Andy Scherzinger
656fdef932
Merge pull request #47528 from nextcloud/backport/47510/stable30
[stable30] fix(db): Increase log level for very slow transactions
2024-08-29 00:19:20 +02:00
Joas Schilling
8894747257 fix(migration): Correctly sort migrations by version number
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-28 18:49:09 +00:00
Louis Chemineau
140b36fcea fix: Backport to 30
Signed-off-by: Louis Chemineau <louis@chmn.me>
2024-08-28 14:54:14 +02:00
Louis Chemineau
e5a8f996bd chore: Apply php:cs recommendations
Signed-off-by: Louis Chemineau <louis@chmn.me>

[skip ci]
2024-08-28 14:54:14 +02:00
Robin Appelman
b2645590ce fix: implement sharding compatible cleanup for various bits
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Robin Appelman
3e5193957b fix: only allow pre-defined shards
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Robin Appelman
82d7eaf80a feat: implement distributing partitioned queries over multiple shards
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Robin Appelman
4ec53e723e feat: add option to automatically partition queries by specific tables
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Robin Appelman
8eaddbc038 feat: track expected output columns in query builder
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-28 14:54:14 +02:00
Christoph Wurst
6d2394680c fix(db): Increase log level for very slow transactions
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2024-08-27 13:24:08 +00:00
Robin Appelman
5654799cb4
fix: fix passing additional db connection parameters in factory
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-07-31 18:53:42 +02:00
Stephan Orbaugh
65941811b3
Merge pull request #44788 from nextcloud/db-error-logging
feat: add additional logging for database errors
2024-07-25 09:09:57 +02:00
Robin Appelman
7fbb981877
feat: add additional logging for database errors
including the stack trace of the current database transaction

Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-07-24 15:35:07 +02:00
Robin Appelman
16c184e2cb
fix: cast to bigint on postgresql
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-07-23 14:41:13 +02:00
Joas Schilling
b656edc47c
fix(db): Fix md5 for oracle >= 20
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-07-19 14:13:56 +02:00
Joas Schilling
e1e4ee4d67
fix(db): Manually track if where() is called when not empty to avoid recursion
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-07-19 11:21:16 +02:00
Joas Schilling
eeb6ddb176
fix(db): Deprecate IExpressionBuilder::or() and IExpressionBuilder::and() without parameters
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-07-19 11:21:16 +02:00
Joas Schilling
e45465781f
fix(db): Deprecate getState() as per upstream
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-07-19 11:21:15 +02:00
Joas Schilling
829f2b9bc7
fix(db): Promote the use of getDatabaseProvider to reduce the impage of removed upstream platforms
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-07-19 11:21:14 +02:00
Joas Schilling
bd383627a7
fix(db): Deprecate using table alias for DELETE and UPDATE
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-07-19 11:21:13 +02:00
Joas Schilling
c84580d53a
fix(db): Doctrine\DBAL\Connection::executeUpdate() is deprecated
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-07-19 11:21:12 +02:00
Joas Schilling
11e84b8968
fix(db): Fix internal calls to doctrine's fetch() methods
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-07-19 11:21:12 +02:00
Joas Schilling
a4c1d7291f
fix(db): Use createSchemaManager() method as getSchemaManager() is deprecated
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-07-19 11:21:11 +02:00
Joas Schilling
f92352eda4
fix(db): Deprecate getQueryPart() and resetQueryPart() methods that will be removed with Doctrine/DBAL 4
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-07-19 11:21:10 +02:00
Robin Appelman
9de6190ec4
feat: allow running QueryBuilder queries on different connections
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-07-15 22:41:04 +02:00
Robin Appelman
f94b0c3f55
Merge pull request #46397 from nextcloud/extended-query-builder-base
feat: add base class for extending the query builder
2024-07-15 14:53:22 +02:00
Robin Appelman
c82d382a20 feat: add base class for extending the query builder
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-07-12 17:01:39 +02:00
Robin Appelman
d81d59e9c3 feat: allow inspecting the parts of the composite expression builder
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-07-12 17:01:36 +02:00
Robin Appelman
4f01486da0
feat: add commands for exporting current and expected database schema
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-07-02 13:45:12 +02:00
Benjamin Gaussorgues
b7243681dd
feat(dbal): add proper insert ignore conflict method for SQLite
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2024-06-25 16:21:01 +02:00
Benjamin Gaussorgues
1e19566aa4
feat(dbal): add proper insert ignore conflict method for MySQL
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2024-06-25 11:28:37 +02:00
Daniel Kesselberg
cac6443cbb
feat(db): remove workaround for pqsql 9.4 and older
The workaround was required because "ON CONFLICT DO NOTHING" was added with pqsql 9.5.

PostgreSQL 9.4 is eol since 2020-02-13 and thus everyone should use a version with upsert support nowadays.

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-06-03 12:47:31 +02:00
John Molakvoæ
258bb03cf5
Merge branch 'master' into refactor/OC-Server-getSecureRandom
Signed-off-by: John Molakvoæ <skjnldsv@users.noreply.github.com>
2024-05-30 14:24:22 +02:00
Daniel Kesselberg
3fb0aa40cd
feat(db): add mapping for lock wait timeout
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-05-29 11:10:43 +02:00