[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: koffice/kexi/kexidb
From: Jaroslaw Staniek <js () iidea ! pl>
Date: 2004-11-02 14:41:54
Message-ID: 20041102144154.2526E16BD7 () office ! kde ! org
[Download RAW message or body]
CVS commit by staniek:
KexiDB
- DriverBehaviour: SELECT_1_SUBQUERY_SUPPORTED added,
used in Connection::resultExists()
--this fixes mysql (and probably pgsql)
M +8 -1 connection.cpp 1.106
M +1 -0 driver.cpp 1.33
M +4 -0 driver_p.h 1.15
M +1 -0 drivers/sqlite/sqliteconnection.cpp 1.23
M +1 -0 drivers/sqlite/sqlitedriver.cpp 1.21
--- koffice/kexi/kexidb/connection.cpp #1.105:1.106
@@ -1782,5 +1782,12 @@ bool Connection::resultExists(const QStr
{
KexiDB::Cursor *cursor;
+ //optimization
+ if (m_driver->beh->SELECT_1_SUBQUERY_SUPPORTED) {
+ //this is at least for sqlite
m_sql = QString("SELECT 1 FROM (") + sql + ") LIMIT 1"; // is this safe?;
+ }
+ else {
+ m_sql = sql + " LIMIT 1"; //not always safe!
+ }
if (!(cursor = executeQuery( m_sql ))) {
KexiDBDbg << "Connection::querySingleRecord(): !executeQuery()" << endl;
--- koffice/kexi/kexidb/driver.cpp #1.32:1.33
@@ -90,4 +90,5 @@ DriverBehaviour::DriverBehaviour()
, USING_DATABASE_REQUIRED_TO_CONNECT(true)
, _1ST_ROW_READ_AHEAD_REQUIRED_TO_KNOW_IF_THE_RESULT_IS_EMPTY(false)
+ , SELECT_1_SUBQUERY_SUPPORTED(false)
{
}
--- koffice/kexi/kexidb/driver_p.h #1.14:1.15
@@ -105,4 +105,8 @@ class KEXI_DB_EXPORT DriverBehaviour
The flag is used in Cursor::open(). By default this flag is false. */
bool _1ST_ROW_READ_AHEAD_REQUIRED_TO_KNOW_IF_THE_RESULT_IS_EMPTY : 1;
+
+ /*! True if "SELECT 1 from (subquery)" is supported. False by default.
+ Used in Connection::resultExists() for optimization. It's set to true for SQLite driver. */
+ bool SELECT_1_SUBQUERY_SUPPORTED : 1;
};
--- koffice/kexi/kexidb/drivers/sqlite/sqliteconnection.cpp #1.22:1.23
@@ -122,4 +122,5 @@ bool SQLiteConnection::drv_createDatabas
bool SQLiteConnection::drv_useDatabase( const QString &/*dbName*/ )
{
+ KexiDBDrvDbg << "drv_useDatabase(): " << m_data->fileName() << endl;
#ifdef SQLITE2
d->data = sqlite_open( QFile::encodeName( m_data->fileName() ), 0/*mode: unused*/,
--- koffice/kexi/kexidb/drivers/sqlite/sqlitedriver.cpp #1.20:1.21
@@ -62,4 +62,5 @@ SQLiteDriver::SQLiteDriver( QObject *par
beh->_1ST_ROW_READ_AHEAD_REQUIRED_TO_KNOW_IF_THE_RESULT_IS_EMPTY=true;
beh->QUOTATION_MARKS_FOR_IDENTIFIER='"';
+ beh->SELECT_1_SUBQUERY_SUPPORTED = true;
//predefined properties
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic