From 0d7204cd851af77db342c626a7a07684e3185cca Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Fri, 14 Mar 2014 20:53:10 +0100 Subject: [PATCH] [spatialite] Update layer statistics after adding new columns Fix #8923 --- cmake/FindSPATIALITE.cmake | 1 + src/providers/spatialite/CMakeLists.txt | 3 +++ src/providers/spatialite/qgsspatialiteprovider.cpp | 10 ++++++++++ 3 files changed, 14 insertions(+) diff --git a/cmake/FindSPATIALITE.cmake b/cmake/FindSPATIALITE.cmake index 697b617a55e..a35926738df 100644 --- a/cmake/FindSPATIALITE.cmake +++ b/cmake/FindSPATIALITE.cmake @@ -69,6 +69,7 @@ IF (SPATIALITE_FOUND) SET(CMAKE_REQUIRED_LIBRARIES "-F/Library/Frameworks" ${CMAKE_REQUIRED_LIBRARIES}) ENDIF(APPLE) check_library_exists("${SPATIALITE_LIBRARY}" gaiaDropTable "" SPATIALITE_VERSION_GE_4_0_0) + check_library_exists("${SPATIALITE_LIBRARY}" gaiaStatisticsInvalidate "" SPATIALITE_VERSION_G_4_1_1) ELSE (SPATIALITE_FOUND) diff --git a/src/providers/spatialite/CMakeLists.txt b/src/providers/spatialite/CMakeLists.txt index 60baf54de5e..0df0a45d7a9 100644 --- a/src/providers/spatialite/CMakeLists.txt +++ b/src/providers/spatialite/CMakeLists.txt @@ -33,6 +33,9 @@ QT4_WRAP_CPP(SPATIALITE_MOC_SRCS ${SPATIALITE_MOC_HDRS}) IF(SPATIALITE_VERSION_GE_4_0_0) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSPATIALITE_VERSION_GE_4_0_0") ENDIF(SPATIALITE_VERSION_GE_4_0_0) +IF(SPATIALITE_VERSION_G_4_1_1) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSPATIALITE_VERSION_G_4_1_1") +ENDIF(SPATIALITE_VERSION_G_4_1_1) INCLUDE_DIRECTORIES( diff --git a/src/providers/spatialite/qgsspatialiteprovider.cpp b/src/providers/spatialite/qgsspatialiteprovider.cpp index ed8522013d4..d10a8ad5fae 100644 --- a/src/providers/spatialite/qgsspatialiteprovider.cpp +++ b/src/providers/spatialite/qgsspatialiteprovider.cpp @@ -3825,6 +3825,16 @@ bool QgsSpatiaLiteProvider::addAttributes( const QList &attributes ) // some error occurred goto abort; } +#ifdef SPATIALITE_VERSION_GE_4_0_0 + sql = QString( "UPDATE geometry_columns_statistics set last_verified = 0 WHERE f_table_name=\"%1\" AND f_geometry_column=\"%2\";" ) + .arg( mTableName ) + .arg( mGeometryColumn ); + ret = sqlite3_exec( sqliteHandle, sql.toUtf8().constData(), NULL, NULL, &errMsg ); + update_layer_statistics( sqliteHandle, mTableName.toUtf8().constData(), mGeometryColumn.toUtf8().constData() ); +#elif SPATIALITE_VERSION_G_4_1_1 + gaiaStatisticsInvalidate( sqliteHandle, tableName.toUtf8().constData(), mGeometryColumn.toUtf8().constData() ); + update_layer_statistics( sqliteHandle, mTableName.toUtf8().constData(), mGeometryColumn.toUtf8().constData() ); +#endif // reload columns loadFields();