Changeset View
Changeset View
Standalone View
Standalone View
src/drivers/postgresql/PostgresqlConnection.cpp
Show First 20 Lines • Show All 107 Lines • ▼ Show 20 Line(s) | |||||
108 | 108 | | |||
109 | bool PostgresqlConnection::drv_getDatabasesList(QStringList* list) | 109 | bool PostgresqlConnection::drv_getDatabasesList(QStringList* list) | ||
110 | { | 110 | { | ||
111 | return queryStringList(KDbEscapedString("SELECT datname FROM pg_database WHERE datallowconn = TRUE"), list); | 111 | return queryStringList(KDbEscapedString("SELECT datname FROM pg_database WHERE datallowconn = TRUE"), list); | ||
112 | } | 112 | } | ||
113 | 113 | | |||
114 | bool PostgresqlConnection::drv_createDatabase(const QString &dbName) | 114 | bool PostgresqlConnection::drv_createDatabase(const QString &dbName) | ||
115 | { | 115 | { | ||
116 | return executeVoidSQL(KDbEscapedString("CREATE DATABASE ") + escapeIdentifier(dbName)); | 116 | return executeSql(KDbEscapedString("CREATE DATABASE ") + escapeIdentifier(dbName)); | ||
117 | } | 117 | } | ||
118 | 118 | | |||
119 | QByteArray buildConnParameter(const QByteArray& key, const QVariant& value) | 119 | QByteArray buildConnParameter(const QByteArray& key, const QVariant& value) | ||
120 | { | 120 | { | ||
121 | QByteArray result = key; | 121 | QByteArray result = key; | ||
122 | //! @todo optimize | 122 | //! @todo optimize | ||
123 | result.replace('\\', "\\\\").replace('\'', "\\'"); | 123 | result.replace('\\', "\\\\").replace('\'', "\\'"); | ||
124 | return key + "='" + value.toString().toUtf8() + "' "; | 124 | return key + "='" + value.toString().toUtf8() + "' "; | ||
▲ Show 20 Lines • Show All 70 Lines • ▼ Show 20 Line(s) | 129 | { | |||
195 | status = PQresultStatus(result); | 195 | status = PQresultStatus(result); | ||
196 | if (status != PGRES_COMMAND_OK) { | 196 | if (status != PGRES_COMMAND_OK) { | ||
197 | postgresqlWarning() << "Failed to set DATESTYLE to 'ISO':" << PQerrorMessage(d->conn); | 197 | postgresqlWarning() << "Failed to set DATESTYLE to 'ISO':" << PQerrorMessage(d->conn); | ||
198 | } | 198 | } | ||
199 | //! @todo call on first use of SOUNDEX(), etc.; | 199 | //! @todo call on first use of SOUNDEX(), etc.; | ||
200 | //! it's not possible now because we don't have connection context in KDbFunctionExpressionData | 200 | //! it's not possible now because we don't have connection context in KDbFunctionExpressionData | ||
201 | if (!d->fuzzystrmatchExtensionCreated) { | 201 | if (!d->fuzzystrmatchExtensionCreated) { | ||
202 | d->fuzzystrmatchExtensionCreated | 202 | d->fuzzystrmatchExtensionCreated | ||
203 | = drv_executeVoidSQL(KDbEscapedString("CREATE EXTENSION IF NOT EXISTS fuzzystrmatch")); | 203 | = drv_executeSql(KDbEscapedString("CREATE EXTENSION IF NOT EXISTS fuzzystrmatch")); | ||
204 | } | 204 | } | ||
205 | PQclear(result); | 205 | PQclear(result); | ||
206 | return true; | 206 | return true; | ||
207 | } | 207 | } | ||
208 | 208 | | |||
209 | bool PostgresqlConnection::drv_closeDatabase() | 209 | bool PostgresqlConnection::drv_closeDatabase() | ||
210 | { | 210 | { | ||
211 | PQfinish(d->conn); | 211 | PQfinish(d->conn); | ||
212 | d->conn = nullptr; | 212 | d->conn = nullptr; | ||
213 | return true; | 213 | return true; | ||
214 | } | 214 | } | ||
215 | 215 | | |||
216 | bool PostgresqlConnection::drv_dropDatabase(const QString &dbName) | 216 | bool PostgresqlConnection::drv_dropDatabase(const QString &dbName) | ||
217 | { | 217 | { | ||
218 | //postgresqlDebug() << dbName; | 218 | //postgresqlDebug() << dbName; | ||
219 | 219 | | |||
220 | //! @todo Maybe should check that dbname is no the currentdb | 220 | //! @todo Maybe should check that dbname is no the currentdb | ||
221 | if (executeVoidSQL(KDbEscapedString("DROP DATABASE ") + escapeIdentifier(dbName))) | 221 | if (executeSql(KDbEscapedString("DROP DATABASE ") + escapeIdentifier(dbName))) | ||
222 | return true; | 222 | return true; | ||
223 | 223 | | |||
224 | return false; | 224 | return false; | ||
225 | } | 225 | } | ||
226 | 226 | | |||
227 | KDbSqlResult* PostgresqlConnection::drv_executeSQL(const KDbEscapedString& sql) | 227 | KDbSqlResult* PostgresqlConnection::drv_prepareSql(const KDbEscapedString& sql) | ||
228 | { | 228 | { | ||
229 | PGresult* result = d->executeSQL(sql); | 229 | PGresult* result = d->executeSql(sql); | ||
230 | const ExecStatusType status = PQresultStatus(result); | 230 | const ExecStatusType status = PQresultStatus(result); | ||
231 | if (status == PGRES_TUPLES_OK || status == PGRES_COMMAND_OK) { | 231 | if (status == PGRES_TUPLES_OK || status == PGRES_COMMAND_OK) { | ||
232 | return new PostgresqlSqlResult(this, result, status); | 232 | return new PostgresqlSqlResult(this, result, status); | ||
233 | } | 233 | } | ||
234 | storeResult(result, status); | 234 | storeResult(result, status); | ||
235 | return nullptr; | 235 | return nullptr; | ||
236 | } | 236 | } | ||
237 | 237 | | |||
238 | bool PostgresqlConnection::drv_executeVoidSQL(const KDbEscapedString& sql) | 238 | bool PostgresqlConnection::drv_executeSql(const KDbEscapedString& sql) | ||
239 | { | 239 | { | ||
240 | PGresult* result = d->executeSQL(sql); | 240 | PGresult* result = d->executeSql(sql); | ||
241 | const ExecStatusType status = PQresultStatus(result); | 241 | const ExecStatusType status = PQresultStatus(result); | ||
242 | d->storeResultAndClear(&m_result, &result, status); | 242 | d->storeResultAndClear(&m_result, &result, status); | ||
243 | return status == PGRES_TUPLES_OK || status == PGRES_COMMAND_OK; | 243 | return status == PGRES_TUPLES_OK || status == PGRES_COMMAND_OK; | ||
244 | } | 244 | } | ||
245 | 245 | | |||
246 | bool PostgresqlConnection::drv_isDatabaseUsed() const | 246 | bool PostgresqlConnection::drv_isDatabaseUsed() const | ||
247 | { | 247 | { | ||
248 | return d->conn; | 248 | return d->conn; | ||
▲ Show 20 Lines • Show All 48 Lines • Show Last 20 Lines |