zero copy ok for phrases

This commit is contained in:
Hamed Masafi 2018-03-13 11:29:11 +03:30
parent 244778eb50
commit 23bc60e3cd
5 changed files with 20 additions and 19 deletions

View File

@ -190,6 +190,7 @@ bool DatabasePrivate::getCurrectScheema()
// TODO: change logs must not be in model // TODO: change logs must not be in model
int changeLogTypeId = qRegisterMetaType<ChangeLogTable*>(); int changeLogTypeId = qRegisterMetaType<ChangeLogTable*>();
currentModel.append( currentModel.append(
new TableModel(changeLogTypeId, __CHANGE_LOG_TABLE_NAME)); new TableModel(changeLogTypeId, __CHANGE_LOG_TABLE_NAME));
tables.insert(ChangeLogTable::staticMetaObject.className(), tables.insert(ChangeLogTable::staticMetaObject.className(),

View File

@ -229,7 +229,13 @@ DatabaseModel *DatabaseModel::modelByName(const QString &name)
void DatabaseModel::deleteAllModels() void DatabaseModel::deleteAllModels()
{ {
qDeleteAll(_models.values()); QMapIterator<QString, DatabaseModel*> i(_models);
while (i.hasNext()) {
i.next();
// cout << i.key() << ": " << i.value() << endl;
delete i.value();
}
// qDeleteAll(_models.values());
_models.clear(); _models.clear();
} }

View File

@ -73,9 +73,6 @@ public:
Query<T> *where(const ConditionalPhrase &ph); Query<T> *where(const ConditionalPhrase &ph);
Query<T> *setWhere(const ConditionalPhrase &ph); Query<T> *setWhere(const ConditionalPhrase &ph);
Query<T> *include(TableSetBase *t);
Query<T> *include(Table *t);
//data selecting //data selecting
T *first(); T *first();
QList<T*> toList(int count = -1); QList<T*> toList(int count = -1);
@ -496,20 +493,6 @@ Q_OUTOFLINE_TEMPLATE Query<T> *Query<T>::orderBy(const PhraseList &ph)
return this; return this;
} }
template <class T>
Q_OUTOFLINE_TEMPLATE Query<T> *Query<T>::include(TableSetBase *t)
{
Q_D(Query);
return this;
}
template <class T>
Q_OUTOFLINE_TEMPLATE Query<T> *Query<T>::include(Table *t)
{
Q_D(Query);
return this;
}
template <class T> template <class T>
Q_OUTOFLINE_TEMPLATE int Query<T>::update(const AssignmentPhraseList &ph) Q_OUTOFLINE_TEMPLATE int Query<T>::update(const AssignmentPhraseList &ph)
{ {

View File

@ -209,7 +209,7 @@ void MainTest::testDate()
db.postTable()->append(newPost); db.postTable()->append(newPost);
db.saveChanges(); db.saveChanges(true);
auto q = db.postTable()->query() auto q = db.postTable()->query()
->setWhere(Post::idField() == newPost->id()) ->setWhere(Post::idField() == newPost->id())
@ -269,4 +269,13 @@ void MainTest::emptyDatabase()
QTEST_ASSERT(commentsCount == 6); QTEST_ASSERT(commentsCount == 6);
} }
void MainTest::cleanupTestCase()
{
post->deleteLater();
user->deleteLater();
qDeleteAll(TableModel::allModels());
DatabaseModel::deleteAllModels();
}
QTEST_MAIN(MainTest) QTEST_MAIN(MainTest)

View File

@ -39,6 +39,8 @@ private slots:
void selectWithInvalidRelation(); void selectWithInvalidRelation();
void modifyPost(); void modifyPost();
void emptyDatabase(); void emptyDatabase();
void cleanupTestCase();
}; };
#endif // MAINTEST_H #endif // MAINTEST_H