" VALUES(?101, ?103);";
const char *DB_CMD_SCHEMA_GET =
- "SELECT * FROM SCHEMA_INFO WHERE name=?101;";
+ "SELECT * FROM SCHEMA_INFO WHERE name IS ?101;";
const char *DB_SCHEMA_VERSION_FIELD = "schema_version";
" VALUES(?101, ?102);";
const char *DB_CMD_NAME_COUNT_ROWS =
- "SELECT COUNT(idx) FROM NAMES WHERE name=?101 AND label=?102;";
+ "SELECT COUNT(idx) FROM NAMES WHERE name IS ?101 AND label IS ?102;";
const char *DB_CMD_NAME_DELETE =
- "DELETE FROM NAMES WHERE name=?101 AND label=?102;";
+ "DELETE FROM NAMES WHERE name IS ?101 AND label IS ?102;";
const char *DB_CMD_NAME_DELETE_BY_LABEL =
- "DELETE FROM NAMES WHERE label=?102;";
+ "DELETE FROM NAMES WHERE label IS ?102;";
const char *DB_CMD_OBJECT_INSERT =
" iv, dataSize, data, tag, idx) "
" VALUES(?001, ?002, ?003, ?004, ?005, "
" ?006, ?007, ?008,"
- " (SELECT idx FROM NAMES WHERE name=?101 and label=?102)"
+ " (SELECT idx FROM NAMES WHERE name IS ?101 and label IS ?102)"
" );";
const char *DB_CMD_OBJECT_SELECT_BY_NAME_AND_LABEL =
"SELECT * FROM [join_name_object_tables] "
" WHERE (dataType BETWEEN ?001 AND ?002) "
- " AND name=?101 and label=?102;";
+ " AND name IS ?101 and label IS ?102;";
const char *DB_CMD_KEY_INSERT =
"INSERT INTO KEYS(label, key) VALUES (?, ?);";
const char *DB_CMD_KEY_SELECT =
- "SELECT key FROM KEYS WHERE label=?;";
+ "SELECT key FROM KEYS WHERE label IS ?;";
const char *DB_CMD_KEY_DELETE =
- "DELETE FROM KEYS WHERE label=?";
+ "DELETE FROM KEYS WHERE label IS ?;";
const char *DB_CMD_PERMISSION_SET = // SQLite does not support updating views
"REPLACE INTO PERMISSIONS(permissionLabel, permissionMask, idx) "
- " VALUES (?104, ?105, (SELECT idx FROM NAMES WHERE name=?101 and label=?102));";
+ " VALUES (?104, ?105, (SELECT idx FROM NAMES WHERE name IS ?101 and label IS ?102));";
const char *DB_CMD_PERMISSION_SELECT =
"SELECT permissionMask FROM [join_name_permission_tables] "
- " WHERE permissionLabel=?104 "
- " AND name=?101 and label=?102;";
+ " WHERE permissionLabel IS ?104 "
+ " AND name IS ?101 AND label IS ?102;";
const char *DB_CMD_PERMISSION_DELETE = // SQLite does not support updating views
- "DELETE FROM PERMISSIONS WHERE permissionLabel=?104 AND "
- " idx=(SELECT idx FROM NAMES WHERE name=?101 and label=?102);";
+ "DELETE FROM PERMISSIONS WHERE permissionLabel IS ?104 AND "
+ " idx IS (SELECT idx FROM NAMES WHERE name IS ?101 AND label IS ?102);";
/*
*/
const char *DB_CMD_NAME_SELECT_BY_TYPE_AND_PERMISSION =
"SELECT label, name FROM [join_all_tables] "
- " WHERE dataType>=?001 AND dataType<=?002 "
- " AND permissionLabel=?104 AND permissionMask&?004!=0 GROUP BY idx;";
+ " WHERE (dataType BETWEEN ?001 AND ?002) "
+ " AND permissionLabel IS ?104 AND permissionMask&?004 IS NOT 0 GROUP BY idx;";
}
namespace CKM {
bool Crypto::getDBVersion(int & schemaVersion)
{
SchemaInfo SchemaInfo(this);
- if(SchemaInfo.getVersionInfo(schemaVersion)) {
+
+ /*
+ * SCHEMA_INFO (o)
+ * SCHEMA_INFO exists from schema version 3
+ */
+ if (m_connection->CheckTableExist("SCHEMA_INFO")
+ && SchemaInfo.getVersionInfo(schemaVersion)) {
LogDebug("Current DB version: " << schemaVersion);
return true;
}
- else
- {
- LogDebug("No DB version known or DB not present");
- // special case: old CKM_TABLE exists
- if(m_connection->CheckTableExist("CKM_TABLE")) {
- schemaVersion = DB_VERSION_1;
- return true;
- }
+ /*
+ * SCHEMA_INFO (x) / CKM_TABLE (o)
+ * CKM_TABLE exists only in schema version 1
+ * -> schema version 1
+ */
+ if (m_connection->CheckTableExist("CKM_TABLE")) {
+ schemaVersion = DB_VERSION_1;
+ return true;
+ }
- // special case: new scheme exists, but no SCHEMA_INFO table present
- else if(m_connection->CheckTableExist("NAME_TABLE")) {
- schemaVersion = DB_VERSION_2;
- return true;
- }
+ /*
+ * SCHEMA_INFO (x) / CKM_TABLE (x) / NAME_TABLE (o)
+ * NAME_TABLE exists only in schema version 2
+ * -> schema version 2
+ */
+ if (m_connection->CheckTableExist("NAME_TABLE")) {
+ schemaVersion = DB_VERSION_2;
+ return true;
}
+
// not recognized - proceed with an empty DBs
return false;
}