From 664f45f641ee1dd2e0c5f73b0b723a4e6411e9f7 Mon Sep 17 00:00:00 2001 From: Tim Stack Date: Sat, 10 Sep 2022 10:37:04 -0700 Subject: [PATCH] [build] check for sqlite3_drop_modules Fixes #1053 --- aminclude_static.am | 2 +- m4/lnav_with_sqlite3.m4 | 9 +++++++++ src/config.cmake.h.in | 6 ++++-- src/lnav.cc | 3 ++- src/sql_util.cc | 2 ++ src/string-extension-functions.cc | 6 +++--- 6 files changed, 21 insertions(+), 7 deletions(-) diff --git a/aminclude_static.am b/aminclude_static.am index d89dbbd7..cefa385d 100644 --- a/aminclude_static.am +++ b/aminclude_static.am @@ -1,6 +1,6 @@ # aminclude_static.am generated automatically by Autoconf -# from AX_AM_MACROS_STATIC on Sat Sep 10 09:23:23 PDT 2022 +# from AX_AM_MACROS_STATIC on Sat Sep 10 10:36:17 PDT 2022 # Code coverage diff --git a/m4/lnav_with_sqlite3.m4 b/m4/lnav_with_sqlite3.m4 index 371ae635..6eaa9fa6 100644 --- a/m4/lnav_with_sqlite3.m4 +++ b/m4/lnav_with_sqlite3.m4 @@ -106,6 +106,15 @@ AC_DEFUN([LNAV_WITH_SQLITE3], AC_SUBST(HAVE_SQLITE3_ERROR_OFFSET) + AC_CHECK_FUNC(sqlite3_drop_modules, + HAVE_SQLITE3_DROP_MODULES=1 + AC_DEFINE([HAVE_SQLITE3_DROP_MODULES], [1], + [Have the sqlite3_drop_modules function] + ) + ) + + AC_SUBST(HAVE_SQLITE3_DROP_MODULES) + AS_VAR_SET(CFLAGS, $saved_CFLAGS) AS_VAR_SET(CPPFLAGS, $saved_CPPFLAGS) AS_VAR_SET(LDFLAGS, $saved_LDFLAGS) diff --git a/src/config.cmake.h.in b/src/config.cmake.h.in index 271d5184..5e307909 100644 --- a/src/config.cmake.h.in +++ b/src/config.cmake.h.in @@ -2,11 +2,11 @@ #define HAVE_PCRE_H #define HAVE_NCURSESW_CURSES_H #define HAVE_ARCHIVE_H 1 -#define HAVE_BZLIB_H 1 +#define HAVE_BZLIB_H 1 #define HAVE_LIBCURL -#cmakedefine SIZEOF_OFF_T @SIZEOF_OFF_T@ +#cmakedefine SIZEOF_OFF_T @SIZEOF_OFF_T @ #cmakedefine VCS_PACKAGE_STRING "@VCS_PACKAGE_STRING@" @@ -24,6 +24,8 @@ #define HAVE_SQLITE3_ERROR_OFFSET +#define HAVE_SQLITE3_DROP_MODULES + #define _XOPEN_SOURCE_EXTENDED 1 #define PACKAGE_BUGREPORT "lnav@googlegroups.com" diff --git a/src/lnav.cc b/src/lnav.cc index 12eeb592..f1d26eaf 100644 --- a/src/lnav.cc +++ b/src/lnav.cc @@ -2116,8 +2116,9 @@ SELECT tbl_name FROM sqlite_master WHERE sql LIKE 'CREATE VIRTUAL TABLE%' nullptr, nullptr); } - +#if defined(HAVE_SQLITE3_DROP_MODULES) sqlite3_drop_modules(lnav_data.ld_db.in(), nullptr); +#endif lnav_data.ld_db.reset(); }); diff --git a/src/sql_util.cc b/src/sql_util.cc index 7469c5d5..c48b72fc 100644 --- a/src/sql_util.cc +++ b/src/sql_util.cc @@ -282,7 +282,9 @@ const std::unordered_map sql_constraint_names = { {SQLITE_INDEX_CONSTRAINT_LIMIT, "LIMIT"}, {SQLITE_INDEX_CONSTRAINT_OFFSET, "OFFSET"}, #endif +#if defined(SQLITE_INDEX_CONSTRAINT_FUNCTION) {SQLITE_INDEX_CONSTRAINT_FUNCTION, "function"}, +#endif }; std::multimap sqlite_function_help; diff --git a/src/string-extension-functions.cc b/src/string-extension-functions.cc index 799aa18b..90e7c4ef 100644 --- a/src/string-extension-functions.cc +++ b/src/string-extension-functions.cc @@ -524,7 +524,7 @@ sql_encode(sqlite3_value* value, encode_algo algo) auto_mem retval(curl_free); retval = curl_easy_escape(get_curl_easy(), blob, blob_len); - return retval; + return std::move(retval); } #endif } @@ -558,7 +558,7 @@ sql_encode(sqlite3_value* value, encode_algo algo) auto_mem retval(curl_free); retval = curl_easy_escape(get_curl_easy(), text, text_len); - return retval; + return std::move(retval); } #endif } @@ -604,7 +604,7 @@ sql_decode(string_fragment str, encode_algo algo) retval = curl_easy_unescape( get_curl_easy(), str.data(), str.length(), nullptr); - return retval; + return std::move(retval); } #endif }