Commit graph

160 commits

Author SHA1 Message Date
Robin Appelman
3356308594 Prevent leaking db connection info in the stacktrace 2015-01-06 16:54:41 +01:00
Morris Jobke
95374e1404 add default for dbtableprefix 2014-12-23 13:32:25 +01:00
Morris Jobke
dbc465de97 use injected config object and fix typos 2014-12-22 10:55:52 +01:00
Morris Jobke
de25084def inject \OCP\IConfig instance in migrator 2014-12-22 10:47:10 +01:00
tbelau666
ad8d55c327 Use Doctrines filter by table name
Doctrine's SchemaManager can filter table names by regular expression.
On this way it picks up only ownClouds's tables in a database.

by tbelau666
2014-12-22 10:45:32 +01:00
Morris Jobke
5383d83f9e Change support message to be more explicit about the enterprise edition 2014-12-20 11:57:15 +01:00
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