From a308f430f694423064ebc86fd0506c8c6fdb3d93 Mon Sep 17 00:00:00 2001 From: Unit 193 Date: Sun, 19 Apr 2015 22:30:21 -0400 Subject: Imported Upstream version 3.0.5 --- SQLiteStudio3/coreSQLiteStudio/schemaresolver.h | 28 +++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'SQLiteStudio3/coreSQLiteStudio/schemaresolver.h') diff --git a/SQLiteStudio3/coreSQLiteStudio/schemaresolver.h b/SQLiteStudio3/coreSQLiteStudio/schemaresolver.h index 5316f5a..5d325d8 100644 --- a/SQLiteStudio3/coreSQLiteStudio/schemaresolver.h +++ b/SQLiteStudio3/coreSQLiteStudio/schemaresolver.h @@ -14,6 +14,7 @@ #include "db/sqlquery.h" #include "db/db.h" #include "common/strhash.h" +#include "common/expiringcache.h" #include class SqliteCreateTable; @@ -38,6 +39,24 @@ class API_EXPORT SchemaResolver QString ddl; }; + struct ObjectCacheKey + { + enum Type + { + OBJECT_NAMES, + OBJECT_DETAILS, + OBJECT_DDL + }; + + ObjectCacheKey(Type type, Db* db, const QString& value1 = QString(), const QString& value2 = QString(), const QString& value3 = QString()); + + Type type; + Db* db; + QString value1; + QString value2; + QString value3; + }; + explicit SchemaResolver(Db* db); virtual ~SchemaResolver(); @@ -164,8 +183,12 @@ class API_EXPORT SchemaResolver static QString objectTypeToString(ObjectType type); static ObjectType stringToObjectType(const QString& type); + static void staticInit(); + + static_char* USE_SCHEMA_CACHING = "useSchemaCaching"; private: + bool usesCache(); SqliteQueryPtr getParsedDdl(const QString& ddl); SqliteCreateTablePtr virtualTableAsRegularTable(const QString& database, const QString& table); StrHash< QStringList> getGroupedObjects(const QString &database, const QStringList& inputList, SqliteQueryType type); @@ -180,8 +203,13 @@ class API_EXPORT SchemaResolver Parser* parser = nullptr; bool ignoreSystemObjects = false; Db::Flags dbFlags; + + static ExpiringCache cache; }; +int qHash(const SchemaResolver::ObjectCacheKey& key); +int operator==(const SchemaResolver::ObjectCacheKey& k1, const SchemaResolver::ObjectCacheKey& k2); + template StrHash> SchemaResolver::getAllParsedObjectsForType(const QString& database, const QString& type) { -- cgit v1.2.3