Morris Jobke
5273639d0e
Add deprecation message ofr insertIfNotExist
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-11-09 12:13:30 +01:00
Morris Jobke
230e93f575
Catch UniqueConstraintViolationException inside insertIfNotExist
...
This is the most common case for the usage of this method.
See also https://github.com/nextcloud/server/issues/12369 and the linked tickets.
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-11-09 10:38:20 +01:00
Joas Schilling
bb352fb667
Use the defined func()->count() instead of manual counting
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2018-11-08 15:44:45 +01:00
Daniel Kesselberg
0ee191bf44
Use const for dbname and dbtableprefix defaults
...
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2018-09-23 18:15:57 +02:00
Joas Schilling
f5c63d7a6e
Disable Oracle enforcement for now until the following issues are solved:
...
* Only apps should be checked which say they support oracle
* Only check newly added items, to allow forward migration from an existing database structure
Signed-off-by: Joas Schilling <coding@schilljs.com>
2018-08-06 17:34:40 +02:00
Joas Schilling
ef5074adaa
Fix primary key handling on postgres
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2018-07-27 14:45:22 +02:00
Joas Schilling
008c8dde1a
Ignore custom prefixes which are longer
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2018-07-27 14:45:22 +02:00
Joas Schilling
5e0bfe5c16
Ignore automatic generated sequences
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2018-07-27 14:45:21 +02:00
Joas Schilling
960961148e
Fix calculation of default name
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2018-07-27 14:45:21 +02:00
Joas Schilling
8a45cb1d20
Prevent too long identifier names
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2018-07-27 14:45:21 +02:00
Joas Schilling
891de38080
Only create the schema when moving between databases
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2018-07-19 15:32:36 +02:00
Joas Schilling
011fe9e0f9
MySQL 8.0+ and MariaDB 10.3+ are large prefix and barracuda by default
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2018-07-09 15:37:22 +02:00
Robin Appelman
3047ef31bd
Add count to function builder
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-06-14 14:32:22 +02:00
Morris Jobke
624d191ef6
Fix wrong hint about missing indexes
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-06-13 11:56:43 +02:00
Morris Jobke
393d9aae74
Add a hint that some indexes are not added yet
...
* gives the admin a chance to discover the missing indexes and improve the performance of the instance without digging through the manual
* nicely integrated in the setup checks where this kind of hints belong to
* also adds an option to integrate this from an app based on events
* fix style of setting warnings
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-06-06 16:55:01 +02:00
Morris Jobke
367b1be15c
Merge pull request #9425 from nextcloud/db-reconnect-timeout
...
Check connection status and attempt to reconnect each each minute
2018-06-04 10:40:12 +02:00
Robin Appelman
b40629ac8c
Add human readable description to migration steps
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-05-30 21:28:05 +02:00
Robin Appelman
335619f6a4
Check connection status and attempt to reconnect each each minute
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-05-08 19:25:58 +02:00
Joas Schilling
78ee3abb78
Move regex to a function and add tests
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2018-04-19 12:49:36 +02:00
Joas Schilling
8f7a0af951
Allow IPv6 database hosts
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2018-04-18 14:48:21 +02:00
Robin Appelman
89a9d35d90
dont keep shared database locks when running cli scripts
...
For cli scripts we don't have the assumption that the universe will be cleaned up soon
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-04-11 19:21:45 +02:00
Roeland Jago Douma
ab04f3cb19
Fix Array to String conversion in QueryBuilder
...
Fixes #9080
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-04-05 09:08:32 +02:00
Roeland Jago Douma
46c195b58b
Made IExpressionBuilder varadic
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-03-13 09:35:09 +01:00
Roeland Jago Douma
0009358c17
Made orHaving varadic
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-03-13 09:32:31 +01:00
Roeland Jago Douma
408c2103db
Made addHaving varadic
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-03-13 09:31:33 +01:00
Roeland Jago Douma
2c585afea1
Make having varadic
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-03-13 09:31:04 +01:00
Roeland Jago Douma
c6eba3c925
Made addGroupBy varadic
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-03-13 09:30:14 +01:00
Roeland Jago Douma
afbad7e15e
Made groupBy varadic
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-03-13 09:29:36 +01:00
Roeland Jago Douma
d6b93e6620
Made orWhere varadic
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-03-13 09:28:27 +01:00
Roeland Jago Douma
07cb6aaeff
Made andWhere varadic
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-03-13 09:27:43 +01:00
Roeland Jago Douma
222dbb7bc9
Made where varadic
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-03-13 09:27:11 +01:00
Roeland Jago Douma
2976b39102
Made AddSelect varadic
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-03-13 09:25:32 +01:00
Roeland Jago Douma
c8aee70a0b
Made select varadic
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-03-13 08:07:08 +01:00
Morris Jobke
de56915605
Merge pull request #7419 from Abijeet/feature-7175
...
Fixes #7175 - Allow to search for email address in user management
2018-03-06 21:53:37 +01:00
Morris Jobke
d3d045dd5c
Remove unused import statements
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-02-14 16:55:43 +01:00
Joas Schilling
352a48e273
Create the migrations table also with the UTF8mb4 collation
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2018-01-31 13:15:00 +01:00
Morris Jobke
eb51f06a3b
Use ::class statement instead of string
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-01-29 12:03:47 +01:00
Morris Jobke
a661f043e1
Remove unneeded semicolon and parentheses
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-01-26 23:46:40 +01:00
Morris Jobke
e6efa755c9
Use short for of substr to not need strlen()
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-01-25 22:23:48 +01:00
Morris Jobke
24c58d39f4
Merge pull request #7909 from nextcloud/fix-migration-type-hints
...
Fix the type hints of migrations and correctly inject the wrapped sch…
2018-01-17 13:47:58 +01:00
Joas Schilling
0d37d24b4b
Correctly drop the ownCloud migrations table
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2018-01-17 12:17:41 +01:00
Joas Schilling
4a5282ba21
Fix the type hints of migrations and correctly inject the wrapped schema into migrations
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2018-01-17 11:37:36 +01:00
Morris Jobke
1efde41333
Check if realpath() returns false
...
realpath() returns false in case the directory does not exist. Found it while preparing strict_typing for PHP7+.
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-01-12 19:40:25 +01:00
Robin Appelman
42b3aa3a0a
reuse query builder
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2018-01-12 13:57:55 +01:00
Joas Schilling
7154050201
Drop the ownCloud migration table instead of reusing it
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2018-01-04 14:58:01 +01:00
Robin Appelman
aad01894e3
refactor user searching
...
add additional user searching tests
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-12-20 15:51:37 +01:00
Robin Appelman
da3004b8f5
add postgresql10 compatibility to dbal
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-11-22 17:57:17 +01:00
Morris Jobke
0eebff152a
Update license headers
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-11-06 16:56:19 +01:00
Victor Dubiniuk
9f16468789
Die NoCheckMigrator
2017-10-30 18:59:24 +01:00
Piotr Mrowczynski
6a51c1bc4f
Add foreign key support to OC
2017-10-30 18:57:19 +01:00
Jörn Friedrich Dreyer
d081a1a5ad
quote index columns on oracle, handle all index changes, minor phpdoc cleanup
2017-10-30 18:54:31 +01:00
Joas Schilling
a3bdb318e9
Fix bigint handling on postgres
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-09-29 11:10:57 +02:00
Joas Schilling
78412fda9c
Add a method to compare empty strings with an expression
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-08-02 09:50:41 +02:00
Joas Schilling
bb58667511
Fix ILIKE regex for oracle
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-08-02 09:48:16 +02:00
Joas Schilling
8ec6c1f259
Quote aliases as well
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-08-02 09:48:15 +02:00
Lukas Reschke
66b8208791
Function also accepts ints
...
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2017-08-01 08:20:16 +02:00
Joas Schilling
50912fb94f
Add brackets around concat statements so comparing the result works as intended
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-07-28 15:36:26 +02:00
Joas Schilling
41fca6c852
"Only variables must be passed by reference"
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-07-25 12:49:16 +02:00
Joas Schilling
10d7cbb71f
Use order by to avoid problems when chunking finds a same item again...
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-07-25 12:49:12 +02:00
Lukas Reschke
3d2600b039
Add Phan plugin to check for SQL injections
...
This adds a phan plugin which checks for SQL injections on code using our QueryBuilder, while it isn't perfect it should already catch most potential issues.
As always, static analysis will sometimes have false positives and this is also here the case. So in some cases the analyzer just doesn't know if something is potential user input or not, thus I had to add some `@suppress SqlInjectionChecker` in front of those potential injections.
The Phan plugin hasn't the most awesome code but it works and I also added a file with test cases.
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2017-07-20 22:48:13 +02:00
Joas Schilling
0f275b1550
Only create the migration directory when necessary
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-07-06 09:58:39 +02:00
Joas Schilling
bbfc044ac5
Add migration for personal settings stuff
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-07-05 14:58:20 +02:00
Joas Schilling
0bff4f3f07
Fix the installer tests
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-07-05 13:02:16 +02:00
Joas Schilling
4e5cd1efea
Fix tests of CodeChecker and MigrationService
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-07-05 13:02:16 +02:00
Joas Schilling
fe6e8c2710
Fix dropping tables and handle the prefix automatically
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-07-05 13:02:16 +02:00
Joas Schilling
5d9d1b1cb5
Allow to check the schema in pre and post as well
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-07-05 13:01:19 +02:00
Joas Schilling
817783e4c7
Add a version to migrations, so parallel legacy branches can also have migrations
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-07-05 13:01:19 +02:00
Joas Schilling
df6b839b23
Add author and copyright
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-07-05 13:01:19 +02:00
Joas Schilling
2875b79c61
Fix code issues
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-07-05 13:01:19 +02:00
Joas Schilling
3969a6b1eb
Use autoloading instead of require_once from a different dir
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-07-05 13:01:19 +02:00
Joas Schilling
194ef1a171
Adjust the code to use our interface and abstract
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-07-05 13:01:19 +02:00
Joas Schilling
15eec7b83c
Start migrations
...
Fixme:
- Install and update of apps
- No revert on live systems (debug only)
- Service adjustment to our interface
- Loading via autoloader
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-07-05 13:01:19 +02:00
Thomas Müller
43427e26d7
Add console command to migrate the charset
2017-04-28 09:35:36 +02:00
Piotr Mrówczyński
9fec4031b3
Adjust query/event logging code in favour of more complex owncloud/diagnostics ( #27643 )
...
* Adjust query/event logging code in favour of more complex owncloud/diagnostics
* Add descriptions to IQueryLogger and IEventLogger interfaces
2017-04-26 13:19:43 +02:00
Morris Jobke
c54a59d51e
Remove unused use statements
...
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-04-22 19:23:31 -05:00
Morris Jobke
a7da2ef977
Merge pull request #4282 from nextcloud/oci-connect-string
...
use the same oci connectstring in all code paths
2017-04-12 13:11:00 -05:00
Morris Jobke
124fdf8062
Merge pull request #4331 from nextcloud/query-builder-sum
...
Add sum() to the query function builder
2017-04-12 12:55:09 -05:00
Robin Appelman
ac45af68cd
Add sub() to the query function builder
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-04-12 16:09:35 +02:00
Morris Jobke
a045f3c4d7
Merge pull request #4146 from nextcloud/unread-comments-folder
...
Allow getting the unread comment count for an entire folder at once
2017-04-10 13:21:39 -05:00
Robin Appelman
421ca6439f
use the same oci connectstring in all code paths
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-04-10 17:58:52 +02:00
Robin Appelman
429f8ae011
Allow getting the unread comment count for an entire folder at once
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-03-30 12:48:24 +02:00
Robin Appelman
d4a7cfec7c
rename fun to func
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-03-30 11:15:06 +02:00
Robin Appelman
3355fd549f
dont double escape
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-03-30 11:14:59 +02:00
Robin Appelman
4125bdeb93
fix licence headers
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-03-30 11:14:52 +02:00
Robin Appelman
4279b13270
Add function builder to the query builder
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-03-30 11:09:26 +02:00
Robin Appelman
a65652fc1e
add support for escaping like parameters when using the query builder
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-03-30 11:09:22 +02:00
Robin Appelman
83f3990e06
Add MD5() to sqlite
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2017-03-30 11:09:19 +02:00
Morris Jobke
3329f44a76
Address comments
...
* fix URL to documentation
* improve logic of UTF8mb4 check
* fix connection parameter creation - it's done already in ConnectionFactory::createConnectionParams
* remove unused attributes of MDB2SchemaReader
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-03-21 16:42:42 -06:00
Morris Jobke
713f684a8b
Adding tests for 4 byte unicode characters
...
* success on SQLite and Postgres
* failure on MySQL due to the limited charset that only supports up to 3 bytes
Add config option to update charset of mysql to utf8mb4
* fully optional
* requires additional options set in the database
only disable unicode test on mysql
Fixing ctor call
Adding docker based unit test execution for mysql utf8mb4
Add mysqlmb4 test configuration to Jenkinsfile
fix collation on utf8mb4
Properly setup charset and collation in the doctrine connection
Allow files containing 4-byte chars in case the database supports it
During setup of a mysql database we try to detect if charset 'utf8mb4' can be used
Fix mysql settings
Add console command to migrate the charset
Set ROW_FORMAT before setting collation to mb4
Also select tables with wrong collation
Faster MySQL docker
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-03-21 16:42:12 -06:00
Morris Jobke
edd55b0ea9
Use SystemConfig instead of AllConfig for DB stuff
...
* preparation for followup PRs to clean up the DB bootstrapping
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-03-19 15:53:49 -06:00
Morris Jobke
d99ce3971b
Namespace and array syntax fixes
...
* minor fixes in preparation of a bigger DB and config PR
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-03-19 14:52:54 -06:00
Philipp Schaffrath
2ccf544ad7
Fixed failing test which was ignoring a required (not null) column ( #26303 )
...
* Fixed failing test which was ignoring a required (not null) column
* restored test to original, catching DriverException which also catches ConstraintViolationException
* catch ConstraintViolationException again
* removed unnecessary field from this test
* clobfield should be nullable
* clobfield now is nullable
* removed autoincrement since whenever this strategy is enabled, oracle would not throw constraint violation exceptions (needed for setValues), which mysql still does
* this field does not auto increment anymore
* mark integerfield as primary, since it is not getting marked as such through auto increment anymore,
integerfield default always has been 0 instead of null
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-03-17 00:09:07 -06:00
Joas Schilling
4128a08333
Add bitwise AND and OR to the expression builder
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-01-05 14:30:25 +01:00
Robin Appelman
07e51a719a
Allow aliasing columns when using the query builder
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2016-11-17 18:48:35 +01:00
Roeland Jago Douma
f07d75a4dd
@since 9.2.0 to @since 11.0.0
...
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2016-11-15 18:51:52 +01:00
Joas Schilling
2c4035e806
Inject config and logger
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-11-02 20:30:37 +01:00
Joas Schilling
cd13f50a3f
Log the queries of the QueryBuilder as well
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-11-02 20:30:36 +01:00
Robin Appelman
3a8e75a814
Allow 4byte unicode filenames on supported platforms
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2016-10-20 14:26:09 +02:00
Joas Schilling
64c9ef96c4
Fix like queries in the QueryBuilder
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-19 00:15:01 +02:00
Joas Schilling
9356a0e583
Correctly save and pass on the charset
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-19 00:15:01 +02:00
Thomas Müller
a7245ea082
Fixing ctor call
2016-10-19 00:15:01 +02:00
Morris Jobke
cc28f82b36
Add config option to update charset of mysql to utf8mb4
...
* fully optional
* requires additional options set in the database
2016-10-19 00:15:01 +02:00
Vincent Petry
da0cea404d
Kill update simulation
...
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2016-09-27 18:43:53 +02:00
Joas Schilling
0215b004da
Update with robin
2016-07-21 18:13:58 +02:00
Joas Schilling
ba87db3fcc
Fix others
2016-07-21 18:13:57 +02:00
Thomas Müller
b55ab6d22a
Various database migration fixes ( #25209 )
...
* String columns with a length higher then 4000 are converted into a CLOB columns automagically - we have to respect this when migrating
* Adding schema migration tests to prevent unnecessary and non-sense migration steps
Fix Oracle autoincrement and unsigned handling
* Fix sqlite integer type for autoincrement
* Use lower case table names - fixes pg
* Fix postgres with default -1 - this only affect pg 9.4 servers - 9.5 seems to work fine
2016-06-29 14:54:41 +02:00
Jörn Friedrich Dreyer
c668588e17
map oracle driver options to params ( #23938 )
2016-06-10 14:07:31 +02:00
Lukas Reschke
aba539703c
Update license headers
2016-05-26 19:57:24 +02:00
Victor Dubiniuk
01aedbe506
Speedup schema cloning for MySQL
2016-05-23 20:52:40 +03:00
Joas Schilling
7e3ce83526
Add a method to lock a table
2016-05-21 01:59:03 +02:00
Roeland Jago Douma
893204ef4a
Fix broken exception naming
2016-05-19 10:05:53 +02:00
Robin Appelman
dbfdc6282a
do propagation in a single query
2016-04-25 16:18:59 +02:00
Roeland Jago Douma
d09f835dca
Move \OC\DB to PSR-4
...
Besides the statement wrapper that is moved to the legacy folder
(namepsace of shame folder)
2016-04-15 19:46:34 +02:00