|
|
@ -713,7 +713,7 @@ static PEP_STATUS _create_core_tables(PEP_SESSION session) { |
|
|
|
" timestamp integer default (datetime('now')),\n" |
|
|
|
" primary key (address, user_id)\n" |
|
|
|
");\n" |
|
|
|
"create index if not exists identity_userid_addr on identity(address, user_id);\n" |
|
|
|
"create index if not exists identity_userid on identity (user_id);\n" |
|
|
|
"create table if not exists trust (\n" |
|
|
|
" user_id text not null\n" |
|
|
|
" references person (id)\n" |
|
|
@ -1548,6 +1548,27 @@ static PEP_STATUS _upgrade_DB_to_ver_18(PEP_SESSION session) { |
|
|
|
return _force_upgrade_own_latest_message_version(session); |
|
|
|
} |
|
|
|
|
|
|
|
static PEP_STATUS _upgrade_DB_to_ver_19(PEP_SESSION session) { |
|
|
|
int int_result = sqlite3_exec( |
|
|
|
session->db, |
|
|
|
/* This index was useless: it was an index on the (multi-column) |
|
|
|
primary key, always implemented using an index which gets also |
|
|
|
used in queries. */ |
|
|
|
"drop index if exists identity_userid_addr;\n" |
|
|
|
"\n" |
|
|
|
"create index if not exists identity_userid on identity (user_id);\n", |
|
|
|
NULL, |
|
|
|
NULL, |
|
|
|
NULL |
|
|
|
); |
|
|
|
assert(int_result == SQLITE_OK); |
|
|
|
|
|
|
|
if (int_result != SQLITE_OK) |
|
|
|
return PEP_UNKNOWN_DB_ERROR; |
|
|
|
|
|
|
|
return PEP_STATUS_OK; |
|
|
|
} |
|
|
|
|
|
|
|
// Honestly, the upgrades should be redone in a transaction IMHO. |
|
|
|
static PEP_STATUS _check_and_execute_upgrades(PEP_SESSION session, int version) { |
|
|
|
PEP_STATUS status = PEP_STATUS_OK; |
|
|
@ -1620,6 +1641,10 @@ static PEP_STATUS _check_and_execute_upgrades(PEP_SESSION session, int version) |
|
|
|
if (status != PEP_STATUS_OK) |
|
|
|
return status; |
|
|
|
case 18: |
|
|
|
status = _upgrade_DB_to_ver_19(session); |
|
|
|
if (status != PEP_STATUS_OK) |
|
|
|
return status; |
|
|
|
case 19: |
|
|
|
break; |
|
|
|
default: |
|
|
|
return PEP_ILLEGAL_VALUE; |
|
|
|