1.1 --- a/extensions/clientprefs/extension.cpp Sat Oct 04 12:59:21 2008 -0700
1.2 +++ b/extensions/clientprefs/extension.cpp Sun Oct 05 01:09:58 2008 -0500
1.3 @@ -224,33 +224,20 @@
1.4 {
1.5 driver = DRIVER_SQLITE;
1.6
1.7 - TQueryOp *op = new TQueryOp(Query_CreateTable, 0);
1.8 -
1.9 - op->SetDatabase(Database);
1.10 - IPreparedQuery *pQuery = Database->PrepareQuery(
1.11 + if (!Database->DoSimpleQuery(
1.12 "CREATE TABLE IF NOT EXISTS sm_cookies \
1.13 ( \
1.14 id INTEGER PRIMARY KEY AUTOINCREMENT, \
1.15 name varchar(30) NOT NULL UNIQUE, \
1.16 description varchar(255), \
1.17 access INTEGER \
1.18 - )",
1.19 - error, sizeof(error), &errCode);
1.20 -
1.21 - if (pQuery == NULL)
1.22 + )"))
1.23 {
1.24 - g_pSM->LogMessage(myself, "Failed to prepare query CreateTable sm_cookies: %s (%i)", error, errCode);
1.25 - return;
1.26 + g_pSM->LogMessage(myself, "Failed to CreateTable sm_cookies: %s", Database->GetError());
1.27 + goto fatal_fail;
1.28 }
1.29
1.30 - op->SetCustomPreparedQuery(pQuery);
1.31 -
1.32 - dbi->AddToThreadQueue(op, PrioQueue_High);
1.33 -
1.34 - op = new TQueryOp(Query_CreateTable, 0);
1.35 - op->SetDatabase(Database);
1.36 -
1.37 - pQuery = Database->PrepareQuery(
1.38 + if (!Database->DoSimpleQuery(
1.39 "CREATE TABLE IF NOT EXISTS sm_cookie_cache \
1.40 ( \
1.41 player varchar(65) NOT NULL, \
1.42 @@ -258,27 +245,17 @@
1.43 value varchar(100), \
1.44 timestamp int, \
1.45 PRIMARY KEY (player, cookie_id) \
1.46 - )",
1.47 - error, sizeof(error), &errCode);
1.48 -
1.49 - if (pQuery == NULL)
1.50 + )"))
1.51 {
1.52 - g_pSM->LogMessage(myself, "Failed to prepare query CreateTable sm_cookie_cache: %s (%i)", error, errCode);
1.53 - return;
1.54 + g_pSM->LogMessage(myself, "Failed to CreateTable sm_cookie_cache: %s", Database->GetError());
1.55 + goto fatal_fail;
1.56 }
1.57 -
1.58 - op->SetCustomPreparedQuery(pQuery);
1.59 -
1.60 - dbi->AddToThreadQueue(op, PrioQueue_High);
1.61 }
1.62 else if (strcmp(identifier, "mysql") == 0)
1.63 {
1.64 driver = DRIVER_MYSQL;
1.65
1.66 - TQueryOp *op = new TQueryOp(Query_CreateTable, 0);
1.67 - op->SetDatabase(Database);
1.68 -
1.69 - IPreparedQuery *pQuery = Database->PrepareQuery(
1.70 + if (!Database->DoSimpleQuery(
1.71 "CREATE TABLE IF NOT EXISTS sm_cookies \
1.72 ( \
1.73 id INTEGER unsigned NOT NULL auto_increment, \
1.74 @@ -286,23 +263,13 @@
1.75 description varchar(255), \
1.76 access INTEGER, \
1.77 PRIMARY KEY (id) \
1.78 - )",
1.79 - error, sizeof(error), &errCode);
1.80 -
1.81 - if (pQuery == NULL)
1.82 + )"))
1.83 {
1.84 - g_pSM->LogMessage(myself, "Failed to prepare query CreateTable sm_cookies: %s (%i)", error, errCode);
1.85 - return;
1.86 + g_pSM->LogMessage(myself, "Failed to CreateTable sm_cookies: %s", Database->GetError());
1.87 + goto fatal_fail;
1.88 }
1.89
1.90 - op->SetCustomPreparedQuery(pQuery);
1.91 -
1.92 - dbi->AddToThreadQueue(op, PrioQueue_High);
1.93 -
1.94 - op = new TQueryOp(Query_CreateTable, 0);
1.95 - op->SetDatabase(Database);
1.96 -
1.97 - pQuery = Database->PrepareQuery(
1.98 + if (!Database->DoSimpleQuery(
1.99 "CREATE TABLE IF NOT EXISTS sm_cookie_cache \
1.100 ( \
1.101 player varchar(65) NOT NULL, \
1.102 @@ -310,27 +277,16 @@
1.103 value varchar(100), \
1.104 timestamp int NOT NULL, \
1.105 PRIMARY KEY (player, cookie_id) \
1.106 - )",
1.107 - error, sizeof(error), &errCode);
1.108 -
1.109 - if (pQuery == NULL)
1.110 + )"))
1.111 {
1.112 - g_pSM->LogMessage(myself, "Failed to prepare query CreateTable sm_cookie_cache: %s (%i)", error, errCode);
1.113 - return;
1.114 + g_pSM->LogMessage(myself, "Failed to CreateTable sm_cookie_cache: %s", Database->GetError());
1.115 + goto fatal_fail;
1.116 }
1.117 -
1.118 - op->SetCustomPreparedQuery(pQuery);
1.119 -
1.120 - dbi->AddToThreadQueue(op, PrioQueue_High);
1.121 }
1.122 else
1.123 {
1.124 g_pSM->LogError(myself, "Unsupported driver \"%s\"", identifier);
1.125 - Database->Close();
1.126 - Database = NULL;
1.127 - databaseLoading = false;
1.128 - ProcessQueryCache();
1.129 - return;
1.130 + goto fatal_fail;
1.131 }
1.132
1.133 if (driver == DRIVER_MYSQL)
1.134 @@ -343,7 +299,7 @@
1.135 if (InsertCookieQuery == NULL)
1.136 {
1.137 g_pSM->LogMessage(myself, "Failed to prepare query InsertCookie: %s (%i)", error, errCode);
1.138 - return;
1.139 + goto fatal_fail;
1.140 }
1.141
1.142 InsertDataQuery = Database->PrepareQuery(
1.143 @@ -355,7 +311,7 @@
1.144 if (InsertDataQuery == NULL)
1.145 {
1.146 g_pSM->LogMessage(myself, "Failed to prepare query InsertData: %s (%i)", error, errCode);
1.147 - return;
1.148 + goto fatal_fail;
1.149 }
1.150 }
1.151 else
1.152 @@ -368,7 +324,7 @@
1.153 if (InsertCookieQuery == NULL)
1.154 {
1.155 g_pSM->LogMessage(myself, "Failed to prepare query InsertCookie: %s (%i)", error, errCode);
1.156 - return;
1.157 + goto fatal_fail;
1.158 }
1.159
1.160 InsertDataQuery = Database->PrepareQuery(
1.161 @@ -379,7 +335,7 @@
1.162 if (InsertDataQuery == NULL)
1.163 {
1.164 g_pSM->LogMessage(myself, "Failed to prepare query InsertData: %s (%i)", error, errCode);
1.165 - return;
1.166 + goto fatal_fail;
1.167 }
1.168 }
1.169
1.170 @@ -394,7 +350,7 @@
1.171 if (SelectDataQuery == NULL)
1.172 {
1.173 g_pSM->LogMessage(myself, "Failed to prepare query SelectData: %s (%i)", error, errCode);
1.174 - return;
1.175 + goto fatal_fail;
1.176 }
1.177
1.178 SelectIdQuery = Database->PrepareQuery(
1.179 @@ -406,15 +362,40 @@
1.180 if (SelectIdQuery == NULL)
1.181 {
1.182 g_pSM->LogMessage(myself, "Failed to prepare query SelectId: %s (%i)", error, errCode);
1.183 - return;
1.184 + goto fatal_fail;
1.185 }
1.186
1.187 databaseLoading = false;
1.188 - cell_t result = 0;
1.189
1.190 ProcessQueryCache();
1.191
1.192 return;
1.193 +
1.194 +fatal_fail:
1.195 + if (SelectIdQuery != NULL)
1.196 + {
1.197 + SelectIdQuery->Destroy();
1.198 + SelectIdQuery = NULL;
1.199 + }
1.200 + if (SelectDataQuery != NULL)
1.201 + {
1.202 + SelectDataQuery->Destroy();
1.203 + SelectDataQuery = NULL;
1.204 + }
1.205 + if (InsertCookieQuery != NULL)
1.206 + {
1.207 + InsertCookieQuery->Destroy();
1.208 + InsertCookieQuery = NULL;
1.209 + }
1.210 + if (InsertDataQuery != NULL)
1.211 + {
1.212 + InsertDataQuery->Destroy();
1.213 + InsertDataQuery = NULL;
1.214 + }
1.215 + Database->Close();
1.216 + Database = NULL;
1.217 + databaseLoading = false;
1.218 + ProcessQueryCache();
1.219 }
1.220
1.221 bool ClientPrefs::AddQueryToQueue( TQueryOp *query )