Commit Graph

163 Commits

Author SHA1 Message Date
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