Can not insert auto increment on oracle

Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
Joas Schilling 2017-07-22 12:21:00 +02:00
parent 18ba973c13
commit d6b888461d
No known key found for this signature in database
GPG Key ID: E166FD8976B3BAC8
5 changed files with 53 additions and 46 deletions

View File

@ -411,7 +411,7 @@ class Manager implements ICommentsManager {
*/
public function getNumberOfUnreadCommentsForFolder($folderId, IUser $user) {
$qb = $this->dbConn->getQueryBuilder();
$query = $qb->select('fileid')
$query = $qb->select('f.fileid')
->selectAlias(
$qb->createFunction('COUNT(' . $qb->getColumnName('c.id') . ')'),
'num_ids'

View File

@ -23,6 +23,7 @@
namespace OC\Repair\NC12;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\Migration\IOutput;
@ -80,7 +81,7 @@ class UpdateLanguageCodes implements IRepairStep {
->set('configvalue', $qb->createNamedParameter($newCode))
->where($qb->expr()->eq('appid', $qb->createNamedParameter('core')))
->andWhere($qb->expr()->eq('configkey', $qb->createNamedParameter('lang')))
->andWhere($qb->expr()->eq('configvalue', $qb->createNamedParameter($oldCode)))
->andWhere($qb->expr()->eq('configvalue', $qb->createNamedParameter($oldCode), IQueryBuilder::PARAM_STR))
->execute();
$output->info('Changed ' . $affectedRows . ' setting(s) from "' . $oldCode . '" to "' . $newCode . '" in preferences table.');

View File

@ -34,6 +34,7 @@
namespace OC\User;
use OC\Hooks\PublicEmitter;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IUser;
use OCP\IUserBackend;
use OCP\IUserManager;
@ -436,7 +437,7 @@ class Manager extends PublicEmitter implements IUserManager {
->from('preferences')
->where($queryBuilder->expr()->eq('appid', $queryBuilder->createNamedParameter('core')))
->andWhere($queryBuilder->expr()->eq('configkey', $queryBuilder->createNamedParameter('enabled')))
->andWhere($queryBuilder->expr()->eq('configvalue', $queryBuilder->createNamedParameter('false')));
->andWhere($queryBuilder->expr()->eq('configvalue', $queryBuilder->createNamedParameter('false'), IQueryBuilder::PARAM_STR));
$query = $queryBuilder->execute();

View File

@ -307,29 +307,9 @@ class ManagerTest extends TestCase {
}
public function testGetNumberOfUnreadCommentsForFolder() {
// 2 comment for 1111 with 1 before read marker
// 2 comments for 1112 with no read marker
// 1 comment for 1113 before read marker
// 1 comment for 1114 with no read marker
$this->addDatabaseEntry(0, 0, null, null, '1112');
for ($i = 1; $i < 5; $i++) {
$this->addDatabaseEntry(0, 0, null, null, '111' . $i);
}
$this->addDatabaseEntry(0, 0, (new \DateTime())->modify('-2 days'), null, '1111');
$user = $this->createMock(IUser::class);
$user->expects($this->any())
->method('getUID')
->will($this->returnValue('comment_test'));
$manager = $this->getManager();
$manager->setReadMark('files', '1111', (new \DateTime())->modify('-1 days'), $user);
$manager->setReadMark('files', '1113', (new \DateTime()), $user);
$query = $this->connection->getQueryBuilder();
$query->insert('filecache')
->values([
'fileid' => $query->createParameter('fileid'),
'parent' => $query->createNamedParameter(1000),
'size' => $query->createNamedParameter(10),
'mtime' => $query->createNamedParameter(10),
@ -338,17 +318,37 @@ class ManagerTest extends TestCase {
'path_hash' => $query->createParameter('path'),
]);
for ($i = 1111; $i < 1115; $i++) {
$fileIds = [];
for ($i = 0; $i < 4; $i++) {
$query->setParameter('path', 'path_' . $i);
$query->setParameter('fileid', $i);
$query->execute();
$fileIds[] = $query->getLastInsertId();
}
// 2 comment for 1111 with 1 before read marker
// 2 comments for 1112 with no read marker
// 1 comment for 1113 before read marker
// 1 comment for 1114 with no read marker
$this->addDatabaseEntry(0, 0, null, null, $fileIds[1]);
for ($i = 0; $i < 4; $i++) {
$this->addDatabaseEntry(0, 0, null, null, $fileIds[$i]);
}
$this->addDatabaseEntry(0, 0, (new \DateTime())->modify('-2 days'), null, $fileIds[0]);
$user = $this->createMock(IUser::class);
$user->expects($this->any())
->method('getUID')
->will($this->returnValue('comment_test'));
$manager = $this->getManager();
$manager->setReadMark('files', (string) $fileIds[0], (new \DateTime())->modify('-1 days'), $user);
$manager->setReadMark('files', (string) $fileIds[2], (new \DateTime()), $user);
$amount = $manager->getNumberOfUnreadCommentsForFolder(1000, $user);
$this->assertEquals([
'1111' => 1,
'1112' => 2,
'1114' => 1,
$fileIds[0] => 1,
$fileIds[1] => 2,
$fileIds[3] => 1,
], $amount);
}

View File

@ -129,6 +129,8 @@ class QuerySearchHelperTest extends TestCase {
$builder->insert('filecache')
->values($values)
->execute();
return $builder->getLastInsertId();
}
private function search(ISearchOperator $operator) {
@ -139,34 +141,34 @@ class QuerySearchHelperTest extends TestCase {
public function comparisonProvider() {
return [
[new SearchComparison(ISearchComparison::COMPARE_GREATER_THAN, 'mtime', 125), [1002]],
[new SearchComparison(ISearchComparison::COMPARE_LESS_THAN, 'mtime', 125), [1001]],
[new SearchComparison(ISearchComparison::COMPARE_GREATER_THAN, 'mtime', 125), [1]],
[new SearchComparison(ISearchComparison::COMPARE_LESS_THAN, 'mtime', 125), [0]],
[new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'size', 125), []],
[new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'size', 50), [1001, 1002]],
[new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'name', 'foobar'), [1001]],
[new SearchComparison(ISearchComparison::COMPARE_LIKE, 'name', 'foo%'), [1001, 1002]],
[new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'mimetype', 'image/jpg'), [1001]],
[new SearchComparison(ISearchComparison::COMPARE_LIKE, 'mimetype', 'image/%'), [1001, 1002]],
[new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'size', 50), [0, 1]],
[new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'name', 'foobar'), [0]],
[new SearchComparison(ISearchComparison::COMPARE_LIKE, 'name', 'foo%'), [0, 1]],
[new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'mimetype', 'image/jpg'), [0]],
[new SearchComparison(ISearchComparison::COMPARE_LIKE, 'mimetype', 'image/%'), [0, 1]],
[new SearchBinaryOperator(ISearchBinaryOperator::OPERATOR_AND, [
new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'size', 50),
new SearchComparison(ISearchComparison::COMPARE_LESS_THAN, 'mtime', 125), [1001]
]), [1001]],
new SearchComparison(ISearchComparison::COMPARE_LESS_THAN, 'mtime', 125), [0]
]), [0]],
[new SearchBinaryOperator(ISearchBinaryOperator::OPERATOR_OR, [
new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'mtime', 100),
new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'mtime', 150),
]), [1001, 1002]],
]), [0, 1]],
[new SearchBinaryOperator(ISearchBinaryOperator::OPERATOR_NOT, [
new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'mtime', 150),
]), [1001]],
]), [0]],
[new SearchBinaryOperator(ISearchBinaryOperator::OPERATOR_NOT, [
new SearchComparison(ISearchComparison::COMPARE_GREATER_THAN, 'mtime', 125),
]), [1001]],
]), [0]],
[new SearchBinaryOperator(ISearchBinaryOperator::OPERATOR_NOT, [
new SearchComparison(ISearchComparison::COMPARE_LESS_THAN, 'mtime', 125),
]), [1002]],
]), [1]],
[new SearchBinaryOperator(ISearchBinaryOperator::OPERATOR_NOT, [
new SearchComparison(ISearchComparison::COMPARE_LIKE, 'name', '%bar'),
]), [1002]],
]), [1]],
];
}
@ -178,22 +180,25 @@ class QuerySearchHelperTest extends TestCase {
* @param array $fileIds
*/
public function testComparison(ISearchOperator $operator, array $fileIds) {
$this->addCacheEntry([
$fileId = [];
$fileId[] = $this->addCacheEntry([
'path' => 'foobar',
'fileid' => 1001,
'mtime' => 100,
'size' => 50,
'mimetype' => 'image/jpg'
]);
$this->addCacheEntry([
$fileId[] = $this->addCacheEntry([
'path' => 'fooasd',
'fileid' => 1002,
'mtime' => 150,
'size' => 50,
'mimetype' => 'image/png'
]);
$fileIds = array_map(function($i) use ($fileId) {
return $fileId[$i];
}, $fileIds);
$results = $this->search($operator);
sort($fileIds);