Commit Graph

154 Commits

Author SHA1 Message Date
Arthur Schiwon ec0f80fee9 Split mapping from Access and Helper classes into it's own. Fully test them, too.
remove unused methods

split mapping methods off from Access class

fix DB query handling

move 'clear mapping' methods from static helper to new mapping class

add tests

test directly with DB

finishing tests and fix return value from setDNbyUUID

add corresponding class for groups and make abstract test class neutral. helper tests is now obsolete as the tested functions were moved to the new mapper class.

add missing info to PHPDoc

add unmap method

fix namespaces

fix test inheritance

PHPDoc and a small code restructure for scrutinizer, no effective changes

PostgreSQL does not accept LIMIT in DELETE queries

phpdoc fixes, no code changes
2014-12-19 18:26:12 +01:00
Robin Appelman 6984fa8a19 Quote identifiers for oracle 2014-12-09 17:26:53 +01:00
Robin Appelman 778d8dbafd Add tableExists to public db api 2014-12-09 17:26:53 +01:00
Robin Appelman 8af3991d0c Add dropTable to IDBConnection 2014-12-09 17:26:53 +01:00
Morris Jobke 50c2a819a0 Extract interaction with config.php into SystemConfig
* introduce SystemConfig to avoid DI circle (used by database connection which is itself needed by AllConfig that itself contains the methods to access the config.php which then would need the database connection - did you get it? ;))
* use DI container and use that method in legacy code paths (for easier refactoring later)
* create and use getSystemConfig instead of query() in DI container
2014-12-08 22:29:42 +01:00
Thomas Müller a6c088a1ef adding new config parameter for sqlite to specify the journal mode 2014-11-25 16:29:06 +01:00
Morris Jobke 8ae8eb4734 drop dependency of some commands on old config object 2014-11-20 15:03:16 +01:00
Lukas Reschke 0b9dffa828 Make declaration compatible
Fixes #12236
2014-11-17 18:30:17 +01:00
Arthur Schiwon 74ffda8261 do not output DB information, and do not set header 2014-11-14 17:43:22 +01:00
Arthur Schiwon 08205c63f9 errors are already logged 2014-11-14 16:59:54 +01:00
Arthur Schiwon 7ed678b04d eliminate OC_Template::printErrorPage in database classes, fixes #12182 2014-11-14 15:48:55 +01:00
Jörn Friedrich Dreyer e16a58220d allow passing driver options, fixes #11718 2014-10-27 12:30:29 +01:00
Lukas Reschke f901c5ff08 Fix PHPDoc and remove explicit type hint 2014-10-24 15:49:55 +02:00
Lukas Reschke b3a04840b5 Add type hinting to functions
It's only reasonable to have proper type hinting here which might even help us to catch bugs.
2014-10-24 14:13:40 +02:00
Lukas Reschke d060180140 Use function outside of loop
Otherwise the function is executed n times which is a lot of overhead
2014-10-24 12:27:53 +02:00
Thomas Müller 6c1871da06 Merge pull request #10985 from owncloud/db-cleanup
Cleanup database handling
2014-10-23 13:48:33 +02:00
Jörn Friedrich Dreyer b7fa644a54 Merge pull request #9586 from owncloud/enhanced-sql-script-generation-oracle-master
Special treatment for Oracle
2014-10-22 14:54:42 +02:00
Robin Appelman e6f6cdd19f Bit more cleanup 2014-10-22 12:29:53 +02:00
Robin Appelman 2ae6a0d96d Move creating the database connection to the server container 2014-10-22 12:29:53 +02:00
Robin Appelman d4e929c37a Remove implicit prepared statement cache and get the connection from the server container in \OC_DB 2014-10-22 12:26:43 +02:00
Robin Appelman 72f99f5041 Remove \OC\DB\ConnectionWrapper, have \OC\DB\Connection implement \OCP\IDBConnection directly instead 2014-10-22 12:26:43 +02:00
Lukas Reschke af335a39f1 Add PHPDoc about sanitization of "insertIfNotExist"
Let's document this potential pitfall properly.
2014-10-17 11:06:49 +02:00
Thomas Müller f7097faf82 Special treatment for Oracle 2014-10-16 17:02:15 +02:00
Thomas Müller 7537d405e3 adding 'smallint unsigned' to type mapping for sqlite 2014-09-20 20:06:44 +02:00
Robin Appelman a85f0ae2da Fix ILIKE without wildcards for oracle 2014-09-18 15:09:57 +02:00
Robin Appelman 67b1ec1faf Implement ILIKE for sqlite 2014-09-17 13:47:55 +02:00
Robin Appelman 60587e9dcd Make sqlite LIKE case sensitive on default 2014-09-17 13:47:33 +02:00
Thomas Müller ca35d86c5a adding ILIKE to AdapterSQLSrv 2014-09-16 15:44:21 +02:00
Robin Appelman 1771bfc2f2 Introduce cross-db ILIKE 2014-09-16 15:32:34 +02:00
Thomas Müller d824d03fe1 Disable database migrations for MSSQL - scripts have to be applied manually 2014-09-15 15:00:32 +02:00
Lukas Reschke 353155b516 Merge pull request #7323 from owncloud/Jonny007-MKD-master
Update adapter.php
2014-09-09 11:31:50 +02:00
Thomas Müller b8b2ef8748 no statement caching for Oracle 2014-08-22 12:06:36 +02:00
Thomas Müller 58472a2660 migration test for sqlite - adding type mapping for 'tinyint unsigned' 2014-07-29 09:18:37 +02:00
Thomas Müller c87f425fe7 generate copy of sqlite database file in data directory 2014-07-28 10:29:39 +02:00
Thomas Müller 7d60f7a222 register type mappings for unknown/unsupported mysql types 2014-07-24 12:17:26 +02:00
Thomas Müller 363ba04f5e only commit in case a transaction is active 2014-07-23 20:13:19 +02:00
Andreas Fischer d8bd8c4b66 Document why we have to check with defined() first. 2014-07-16 15:13:35 +02:00
Andreas Fischer e26612244a Make MySQL return "number of found rows" instead of number of "affected rows". 2014-07-16 14:35:47 +02:00
Vincent Petry 10a29556b0 - Added test to trigger index id error
- re-enable encryption migration tests
- sqlite requires reconnect after schema changes
2014-07-14 16:20:09 +02:00
Robin Appelman 76c709d7de Add repair step to set MySQL collation to utf8_bin
Set default collation of mysql connection to utf8_bin
Set utf_bin as default collation for new tables
2014-07-08 15:12:07 +02:00
Robin Appelman c4fa07d7cf Also update sqliteadapter 2014-07-02 15:27:27 +02:00
Jonny007-MKD 4161fd2408 Update adapter.php
Modified insertIfNotExist() to support NULL values
2014-07-01 17:47:27 +02:00
Vincent Petry b752aff51d Fix migrator tests to use the correct migrator instances 2014-07-01 12:54:35 +02:00
Joas Schilling 0c711e1cfa Use get random bytes as uniqeid() is not unique in some cases
Fix #9161
2014-06-30 11:10:10 +02:00
Vincent Petry 7aa11b4361 Do not rename primary key index when renaming table
When the migrator renames a table, for example for upgrade simulation,
it should not rename the primary key to avoid messing up with the diff
because the MySQL Doctrine code expects that index to always be called
"primary".
2014-06-17 15:23:18 +02:00
Thomas Müller fe8bae31dc adding PK to table encryption
adding auto increment/PK to table files_trash

adding PK to table ldap_user_mapping and ldap_group_members

adding PK to table ldap_group_mapping

truncate permissions table to allow smooth creation of primary key

adding unit test for creating an auto increment column on a table which already contains data

remove unneeded table files_trashsizes

fix unit test

no need to truncate *PREFIX*permissions

On Oracle adding auto increment columns is not working out of the box - Oracle migrations are to be done manually
2014-06-06 13:33:56 +02:00
Vincent Petry d4ffafe467 Removed simulate db update flag and split into separate methods 2014-06-04 18:17:46 +02:00
Vincent Petry 5b97369b00 Simulate apps database schema update on upgrade
When upgrade, also simulate the database schema update for apps before
doing the actual upgrade.
2014-06-04 17:16:44 +02:00
icewind1991 68b15f3282 Merge pull request #7015 from owncloud/db-migration-check-copy
Check database migration on a copy of the table first
2014-06-03 16:27:06 +02:00
Thomas Müller 2b1a7a76c3 Merge pull request #8425 from owncloud/columns_should_be_nullable_by_default
columns should be nullable by default
2014-06-03 12:55:42 +02:00
Robin Appelman 4429b54ce4 Fix typo 2014-06-03 12:00:39 +02:00
Robin Appelman 82b982a4eb Better unique names for temporary tables 2014-06-03 11:24:31 +02:00
Robin Appelman 3be2643168 Add `generateChangeScript()` back 2014-06-03 11:19:58 +02:00
Robin Appelman 397a763c49 add a getter for the table 2014-06-03 11:18:46 +02:00
Robin Appelman c6053b2830 Quote identifiers on mysql 2014-06-03 11:18:45 +02:00
Robin Appelman 6f71419f2b Skip migration checks for all sql backends besides mysql, postgres and sqlite 2014-06-03 11:18:45 +02:00
Robin Appelman a59f6818eb Only quote identifiers for oracle during migration 2014-06-03 11:18:45 +02:00
Robin Appelman 3b4555ca91 Try and check migration before applying it 2014-06-03 11:18:17 +02:00
Robin Appelman adeac7aa39 Check sqlite migration on a copy of the database file 2014-06-03 11:17:21 +02:00
Robin Appelman 35550e8d9a Fix migrator for postgres 2014-06-03 11:17:21 +02:00
Robin Appelman be80dce585 Fix temporary schema creation 2014-06-03 11:17:21 +02:00
Robin Appelman 58c61c8336 Fix generating migration test schemas 2014-06-03 11:17:21 +02:00
Robin Appelman 0035147be9 Create unique names for temporary indexes 2014-06-03 11:17:21 +02:00
Robin Appelman 9c6a93a87c Add a mechanism to try the database migration on a copy of the tables before running it on the "real" data 2014-06-03 11:17:21 +02:00
Thomas Müller 999f6216dc - fix dropTable() and introduce tableExists()
- kill replaceDB() - this function is unused and it's implementation obviously wrong
- add method annotation OC_DB_StatementWrapper::fetchAll
- remove duplicate code in Test_DBSchema and reuse OC_DB::tableExists
- remove unused variables
2014-05-30 23:34:42 +02:00
Thomas Müller b6d2d6329d Merge pull request #8639 from owncloud/drop-brief
Remove all occurences of @brief and @returns from PHPDoc
2014-05-19 20:18:32 +02:00
Morris Jobke dc36d30953 Remove all occurences of @brief and @returns from PHPDoc
* test case added to avoid adding them later
2014-05-19 17:50:53 +02:00
Frank Karlitschek 090d127050 Merge pull request #6457 from owncloud/db-convert-tool
Command line tool to convert current database to others, except sqlite
2014-05-19 16:41:31 +01:00
Robin McCorkell 87b548ed91 Fix all PHPDoc types and variable names, in /lib 2014-05-13 19:08:14 +01:00
Robin McCorkell a7ae2e874a Squash 'a | b' into 'a|b', in /lib 2014-05-13 19:08:14 +01:00
Thomas Müller 8314e5f4d1 fixing typos and adding PHPDoc 2014-05-12 21:58:09 +02:00
Jörn Friedrich Dreyer 6694129cbc columns should be nullable by default 2014-05-01 23:03:45 +02:00
Andreas Fischer 714343cd74 Add Bart to PgSqlTools copyright. 2014-04-15 16:29:43 +02:00
Andreas Fischer 9cc41a2460 Move PostgreSQL sequence resynchronisation out into PgSqlTools class. 2014-04-14 18:37:47 +02:00
Andreas Fischer f9853b253c Deduplicate connection handling code into \OC\DB\ConnectionFactory 2014-03-31 20:09:07 +02:00
Thomas Müller f1b085df01 adding @method annotation to declare methods which can be called on the wrapped statement object 2014-03-28 12:57:27 +01:00
Vincent Petry 79ae3c4527 Allow XML entity loader for MDB2 schema loader
Forward port of 762b0d9 from stable6 to master
2014-03-03 14:17:51 +01:00
Vincent Petry 22adc397de Also quote old column name during DB migration
This fixes alter table commands that didn't quote the old column name
2014-02-27 09:09:16 +01:00
Scrutinizer Auto-Fixer adaee6a5a1 Scrutinizer Auto-Fixes
This patch was automatically generated as part of the following inspection:
https://scrutinizer-ci.com/g/owncloud/core/inspections/cdfecc4e-a37e-4233-8025-f0d7252a8720

Enabled analysis tools:
 - PHP Analyzer
 - JSHint
 - PHP Copy/Paste Detector
 - PHP PDepend
2014-02-19 09:31:54 +01:00
Thomas Müller c6f4f85e27 Merge branch 'master' into scrutinizer_documentation_patches
Conflicts:
	lib/private/migration/content.php
2014-02-18 18:31:33 +01:00
Thomas Müller 8991e4505a Merge pull request #6796 from owncloud/statementwrapper-bindparam
Add bindParam to the database statement wrapper
2014-02-18 18:13:57 +01:00
Lukas Reschke 3b1083f46e Merge pull request #7176 from owncloud/style
Some style fixes
2014-02-18 17:30:26 +01:00
Thomas Müller 9fac95c2ab Merge branch 'master' into scrutinizer_documentation_patches
Conflicts:
	lib/private/appconfig.php
2014-02-14 23:03:27 +01:00
Bart Visscher 1fb5f96c37 Style fixes 2014-02-12 09:09:51 +01:00
Robin Appelman cd3ef0bb9d Add caching to appconfig 2014-02-07 14:03:39 +01:00
Jörn Friedrich Dreyer 2a6a9a8cef polish documentation based on scrutinizer patches 2014-02-06 17:02:21 +01:00
Robin Appelman 504645cf00 Add bindParam to statement wrapper 2014-01-16 14:07:16 +01:00
Andreas Fischer 63a2bea7ec Remove OC_DB_StatementWrapper::numRows().
Using this method will result in an unneccesary extra SQL query (which also may
return an incorrect result because the underlying table changed in the
meantime).

In general:

If you are performing an UPDATE, DELETE or equivalent query,
OC_DB_StatementWrapper::execute() will already give you the number of
"affected rows" via \Doctrine\DBAL\Driver\Statement::rowCount(). This will
not work for SELECT queries, however.

If you want to know whether a table contains any rows matching your condition,
use "SELECT id FROM ... WHERE ... LIMIT 1".

If you want to know whether a table contains any rows matching your condition
and you also need the data, use "SELECT ... FROM ... WHERE ...", then use
one of the fetch() methods.

If you want to count the number of rows matching your condition, use use
"SELECT COUNT(...) AS number_of_rows FROM ... WHERE ...", then use one of the
fetch() methods.
2013-12-21 19:36:14 +01:00
Oliver Gasser 3b0d0e2b1f DB: Support DECIMAL(precision,scale) syntax in XML
Add support for specifying the precision and scale of a decimal data
type to the XML description language.

See owncloud/core#6475
2013-12-17 22:46:45 +01:00
Thomas Mueller 4fbc2774ef on mssql the schema migration sometimes fails due to an already existing transaction - error: 'New transaction is not allowed because there are other threads running in the session.'
The solution is to simple reconnect to the database to start with a fresh connection
2013-11-26 22:39:01 +01:00
Bart Visscher 630e46f60a Merge pull request #5789 from ogasser/db_fix_default_for_numeric
DB: Set correct default value for numeric types
2013-11-15 04:19:33 -08:00
Oliver Gasser 53f17a71d1 treat numeric as an alias for decimal 2013-11-12 13:55:20 +01:00
Oliver Gasser 4b01eaf6cc changed type to decimal 2013-11-12 13:47:47 +01:00
Bart Visscher dcca887f18 Don't set a default value when there isn't a default specified 2013-11-11 17:58:25 +01:00
Oliver Gasser b278356eb9 DB: Set correct default value for numeric types
Set 0 as default value for columns with numeric data type instead of the
empty string ''. Otherwise the database complains about an invalid
default value for this column.

To reproduce put the following in your ````appinfo/database.xml````:

````
<field>
        <name>modified</name>
        <type>decimal</type>
        <default/>
        <notnull>true</notnull>
        <length>15</length>
</field>
````

See owncloud/mozilla_sync#14
2013-11-10 14:15:33 +01:00
Andreas Fischer 8274d9f91c Inherit lastInsertId() from Adapter. 2013-11-04 22:28:41 +01:00
Thomas Mueller 5ecebe211b mssql: fixing lastInsertId() implementation 2013-11-02 20:21:19 +01:00
VicDeo 959b0f9125 Merge pull request #5458 from owncloud/fixing-5222-master
php 5.3 compatibility regarding OC\DB\Connection fixed
2013-10-23 05:35:33 -07:00
Thomas Müller 3c710696e8 add missing file header 2013-10-23 12:27:54 +02:00
Thomas Müller e30e4ea1cc php 5.3 compatibility regarding OC\DB\Connection fixed 2013-10-21 22:51:56 +02:00