From kde-commits Fri Jan 29 20:48:30 2010 From: Adam Pigg Date: Fri, 29 Jan 2010 20:48:30 +0000 To: kde-commits Subject: koffice/kexi/kexidb/drivers Message-Id: <1264798110.230997.13040.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=126479813109163 SVN commit 1082151 by piggz: Make the sqlite driver use the system install libsqlite3. Added an initial version check for 3.6.20...feel free to change Still some TODOs for some commented out sections. CCMAIL: staniek@kde.org M +8 -2 CMakeLists.txt M +2 -2 sqlite/CMakeLists.txt M +15 -8 sqlite/sqliteconnection.cpp M +1 -1 sqlite/sqliteconnection_p.h M +1 -1 sqlite/sqlitedriver.cpp --- trunk/koffice/kexi/kexidb/drivers/CMakeLists.txt #1082150:1082151 @@ -2,8 +2,14 @@ # drivers will be moved out of this dir in Predicate, and then area will be redefined #remove_definitions(-DKDE_DEFAULT_DEBUG_AREA) #add_definitions(-DKDE_DEFAULT_DEBUG_AREA=44001) +INCLUDE (FindPkgConfig) -add_subdirectory( sqlite ) +pkg_check_modules (SQLITE3 REQUIRED sqlite3>=3.6.20) + +IF (SQLITE3_FOUND) + add_subdirectory( sqlite ) +ENDIF (SQLITE3_FOUND) + #ancient add_subdirectory( sqlite2 ) INCLUDE (FindMySQL) @@ -11,7 +17,7 @@ add_subdirectory( mySQL ) ENDIF (MYSQL_FOUND) -INCLUDE (FindPkgConfig) + INCLUDE (FindPostgreSQL) set (PQXX_MIN_VERSION "3.0.0") --- trunk/koffice/kexi/kexidb/drivers/sqlite/CMakeLists.txt #1082150:1082151 @@ -1,6 +1,6 @@ -include_directories( ${CMAKE_SOURCE_DIR}/kexi/3rdparty/kexisql3/src ${CMAKE_SOURCE_DIR}/kexi ${CMAKE_SOURCE_DIR}/kexi/kexidb ${KDE4_INCLUDES} ) +include_directories( ${CMAKE_SOURCE_DIR}/kexi ${CMAKE_SOURCE_DIR}/kexi/kexidb ${KDE4_INCLUDES} ) ADD_DEFINITIONS( -D__KEXIDB__= ) @@ -22,7 +22,7 @@ -target_link_libraries(kexidb_sqlite3driver ${QT_QT3SUPPORT_LIBRARY} ${KDE4_KPARTS_LIBS} kexisql3 kexidb kexiutils ) +target_link_libraries(kexidb_sqlite3driver ${QT_QT3SUPPORT_LIBRARY} ${KDE4_KPARTS_LIBS} sqlite3 kexidb kexiutils ) install(TARGETS kexidb_sqlite3driver DESTINATION ${PLUGIN_INSTALL_DIR}) --- trunk/koffice/kexi/kexidb/drivers/sqlite/sqliteconnection.cpp #1082150:1082151 @@ -22,9 +22,9 @@ #include "sqlitecursor.h" #include "sqlitepreparedstatement.h" -#include "sqlite.h" +#include "sqlite3.h" -#include "kexisql.h" //for isReadOnly() +//#include "kexisql.h" //for isReadOnly() #include #include @@ -166,17 +166,19 @@ // KexiDBDrvDbg << "drv_useDatabase(): " << data()->fileName(); //TODO: perhaps allow to use sqlite3_open16() as well for SQLite ~ 3.3 ? //! @todo add option (command line or in kexirc?) - int exclusiveFlag = Connection::isReadOnly() ? SQLITE_OPEN_READONLY : SQLITE_OPEN_WRITE_LOCKED; // <-- shared read + (if !r/o): exclusive write +//!TODO int exclusiveFlag = Connection::isReadOnly() ? SQLITE_OPEN_READONLY : SQLITE_OPEN_WRITE_LOCKED; // <-- shared read + (if !r/o): exclusive write +int exclusiveFlag = 1; //! @todo add option int allowReadonly = 1; const bool wasReadOnly = Connection::isReadOnly(); - d->res = sqlite3_open( + d->res = sqlite3_open_v2( //QFile::encodeName( data()->fileName() ), data()->fileName().toUtf8().constData(), /* unicode expected since SQLite 3.1 */ &d->data, - exclusiveFlag, - allowReadonly /* If 1 and locking fails, try opening in read-only mode */ + SQLITE_OPEN_READWRITE, /*exclusiveFlag, + allowReadonly *//* If 1 and locking fails, try opening in read-only mode */ + 0 ); d->storeResult(); @@ -199,7 +201,8 @@ return false; } } - +//!TODO +/* if (d->res == SQLITE_CANTOPEN_WITH_LOCKED_READWRITE) { setError(ERR_ACCESS_RIGHTS, i18n("The file is probably already open on this or another computer.") + "\n\n" @@ -211,6 +214,7 @@ + i18n("Could not gain exclusive access for writing the file.") + " " + i18n("Check the file's permissions and whether it is already opened and locked by another application.")); } + */ return d->res == SQLITE_OK; } @@ -357,8 +361,11 @@ bool SQLiteConnection::isReadOnly() const { + //!TODO + /* return (d->data ? sqlite3_is_readonly(d->data) : false) - || Connection::isReadOnly(); + || Connection::isReadOnly();*/ + return false; } #include "sqliteconnection.moc" --- trunk/koffice/kexi/kexidb/drivers/sqlite/sqliteconnection_p.h #1082150:1082151 @@ -22,7 +22,7 @@ #include -#include "sqlite.h" +#include "sqlite3.h" //for compatibility #ifdef _SQLITE3_H_ --- trunk/koffice/kexi/kexidb/drivers/sqlite/sqlitedriver.cpp #1082150:1082151 @@ -22,7 +22,7 @@ #include #include -#include "sqlite.h" +#include "sqlite3.h" #include "sqlitedriver.h" #include "sqliteconnection.h" #include "sqliteconnection_p.h"