Changeset: 3fc32e309cdc for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/3fc32e309cdc
Modified Files:
gdk/gdk_bbp.c
Branch: string_imprints
Log Message:
Merge with default
diffs (truncated from 2202 to 300 lines):
diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -53,8 +53,7 @@ test_big_endian(IS_BIG_ENDIAN)
include(monetdb-functions)
include(monetdb-findpackages)
include(monetdb-toolchain)
-monetdb_default_toolchain()
-#monetdb_default_compiler_options()
+monetdb_default_compiler_options()
include(monetdb-defines)
monetdb_hg_revision()
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -382,15 +382,16 @@ dump_foreign_keys(Mapi mid, const char *
if (tname != NULL) {
char *s = sescape(schema);
char *t = sescape(tname);
+ if (s == NULL || t == NULL) {
+ free(s);
+ free(t);
+ goto bailout;
+ }
maxquerylen = 1024 + strlen(t) + strlen(s);
query = malloc(maxquerylen);
- if (s == NULL || t == NULL || query == NULL) {
- if (s)
- free(s);
- if (t)
- free(t);
- if (query)
- free(query);
+ if (query == NULL) {
+ free(s);
+ free(t);
goto bailout;
}
snprintf(query, maxquerylen,
diff --git a/clients/odbc/driver/ODBCUtil.c b/clients/odbc/driver/ODBCUtil.c
--- a/clients/odbc/driver/ODBCUtil.c
+++ b/clients/odbc/driver/ODBCUtil.c
@@ -1255,6 +1255,7 @@ ODBCTranslateSQL(ODBCDbc *dbc, const SQL
strncpy(q, nquery, pr);
for (r = func->repl; *r; r++) {
if (*r == '\1' || *r ==
'\2' || *r == '\3' || *r == '\4') {
+ assert(*r <=
func->nargs);
if (args[*r -
1].argstart[0] == '\'')
q[pr++]
= 'r';
strncpy(q + pr,
args[*r - 1].argstart, args[*r - 1].arglen);
diff --git a/clients/odbc/driver/SQLTables.c b/clients/odbc/driver/SQLTables.c
--- a/clients/odbc/driver/SQLTables.c
+++ b/clients/odbc/driver/SQLTables.c
@@ -82,6 +82,8 @@ MNDBTables(ODBCStmt *stmt,
"cast(null as varchar(1)) as remarks "
"from sys.env() e "
"where e.name = 'gdk_dbname'");
+ if (query == NULL)
+ goto nomem;
} else if (NameLength1 == 0 &&
NameLength3 == 0 &&
SchemaName &&
@@ -96,6 +98,8 @@ MNDBTables(ODBCStmt *stmt,
* schema remarks */
"cast(null as varchar(1)) as remarks "
"from sys.schemas order by table_schem");
+ if (query == NULL)
+ goto nomem;
} else if (NameLength1 == 0 &&
NameLength2 == 0 &&
NameLength3 == 0 &&
@@ -108,6 +112,8 @@ MNDBTables(ODBCStmt *stmt,
"table_type_name as table_type, "
"cast(null as varchar(1)) as remarks "
"from sys.table_types order by table_type");
+ if (query == NULL)
+ goto nomem;
} else {
/* no special case argument values */
size_t querylen;
@@ -241,8 +247,6 @@ MNDBTables(ODBCStmt *stmt,
free(sch);
if (tab)
free(tab);
- if (query)
- free(query);
/* Memory allocation error */
addStmtError(stmt, "HY001", NULL, 0);
return SQL_ERROR;
diff --git a/cmake/monetdb-functions.cmake b/cmake/monetdb-functions.cmake
--- a/cmake/monetdb-functions.cmake
+++ b/cmake/monetdb-functions.cmake
@@ -9,73 +9,60 @@
function(monetdb_hg_revision)
# Get the current version control revision
if(EXISTS "${CMAKE_SOURCE_DIR}/.hg_archival.txt")
- execute_process(COMMAND "sed" "-n" "s/^node:
\\([0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]\\).*/\\1/p"
".hg_archival.txt" WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" RESULT_VARIABLE
HG_RETURN_CODE
- OUTPUT_VARIABLE HG_OUPUT_RES OUTPUT_STRIP_TRAILING_WHITESPACE)
- if(HG_RETURN_CODE EQUAL 0 AND HG_OUPUT_RES)
- set(MERCURIAL_ID "${HG_OUPUT_RES}" PARENT_SCOPE)
+ file(READ "${CMAKE_SOURCE_DIR}/.hg_archival.txt" HG_ARCHIVAL)
+ if(HG_ARCHIVAL MATCHES ".*node:.*")
+ string(REGEX REPLACE ".*node:
([0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]).*"
"\\1" HG_NODE "${HG_ARCHIVAL}")
+ if(HG_ARCHIVAL MATCHES ".*local:.*")
+ string(REGEX REPLACE ".*local: ([0-9][0-9]*).*" "\\1" HG_LOCAL
"${HG_ARCHIVAL}")
+ set(MERCURIAL_ID "${HG_NODE} ${HG_LOCAL}" PARENT_SCOPE)
+ else()
+ set(MERCURIAL_ID "${HG_NODE}" PARENT_SCOPE)
+ endif()
else()
- message(FATAL_ERROR "Failed to find mercurial ID")
+ message(WARNING "Failed to find mercurial ID")
+ set(MERCURIAL_ID "Unknown" PARENT_SCOPE)
endif()
elseif(EXISTS "${CMAKE_SOURCE_DIR}/.hg")
find_package(Hg)
if(HG_FOUND)
message("hg found: ${HG_EXECUTABLE}")
else()
- message(FATAL_ERROR "Failed to find mercurial")
+ message(WARNING "Failed to find mercurial")
+ set(MERCURIAL_ID "Unknown" PARENT_SCOPE)
endif()
execute_process(COMMAND "${HG_EXECUTABLE}" "id" "-i" WORKING_DIRECTORY
"${CMAKE_SOURCE_DIR}" RESULT_VARIABLE HG_RETURN_CODE
OUTPUT_VARIABLE HG_OUPUT_RES OUTPUT_STRIP_TRAILING_WHITESPACE)
if(HG_RETURN_CODE EQUAL 0 AND HG_OUPUT_RES)
set(MERCURIAL_ID "${HG_OUPUT_RES}" PARENT_SCOPE)
else()
- message(FATAL_ERROR "Failed to find mercurial ID")
+ message(WARNING "Failed to find mercurial ID")
+ set(MERCURIAL_ID "Unknown" PARENT_SCOPE)
endif()
elseif(EXISTS "${CMAKE_SOURCE_DIR}/.git")
find_package(Git)
if(GIT_FOUND)
message("git found: ${GIT_EXECUTABLE}")
else()
- message(FATAL_ERROR "Failed to find git")
+ message(WARNING "Failed to find git")
+ set(MERCURIAL_ID "Unknown" PARENT_SCOPE)
endif()
execute_process(COMMAND "${GIT_EXECUTABLE}" "rev-parse" "--short" "HEAD"
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
RESULT_VARIABLE GIT_RETURN_CODE OUTPUT_VARIABLE GIT_OUPUT_RES
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(GIT_RETURN_CODE EQUAL 0 AND GIT_OUPUT_RES)
set(MERCURIAL_ID "${GIT_OUPUT_RES}" PARENT_SCOPE)
else()
- message(FATAL_ERROR "Failed to find git ID")
+ message(WARNING "Failed to find git ID")
+ set(MERCURIAL_ID "Unknown" PARENT_SCOPE)
endif()
else()
set(MERCURIAL_ID "Unknown" PARENT_SCOPE)
endif()
endfunction()
-function(MT_addCompilerFlag REGEX_EXPRESSION FLAG_TO_ADD OLD_FLAGS BUILD
NEW_FLAGS)
- if(NOT "${OLD_FLAGS}" MATCHES "${REGEX_EXPRESSION}")
- set(${NEW_FLAGS} "${OLD_FLAGS} ${FLAG_TO_ADD}" PARENT_SCOPE)
- message(STATUS "Added ${FLAG_TO_ADD} flag for ${BUILD} build(s)")
- endif()
-endfunction()
-
-function(MT_checkCompilerFlag Flag)
- # WARNING this doesn't work with LINK_OPTIONS yet!
- if(NOT "${CMAKE_C_FLAGS}" MATCHES "${Flag}")
- # cmake will get confused if we don't remove - / = ,
- string(REGEX REPLACE "[-/=,]" "" FLAG_TEST "${Flag}")
- cmake_push_check_state()
- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${Flag}")
- check_c_source_compiles("int main(int argc,char**
argv){(void)argc;(void)argv;return 0;}" COMPILER_${FLAG_TEST})
- cmake_pop_check_state()
- if(COMPILER_${FLAG_TEST})
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${Flag}" PARENT_SCOPE)
- message(STATUS "Added ${Flag} flag for all build(s)")
- endif()
- endif()
-endfunction()
-
function(add_option_if_available Flag)
string(REGEX REPLACE "[-/=,]" "" FLAG_TEST "${Flag}")
check_c_compiler_flag(${Flag} ${FLAG_TEST}_FOUND)
- set(ISFOUND "${${FLAG_TEST}_FOUND}}")
+ set(ISFOUND "${${FLAG_TEST}_FOUND}")
if(ISFOUND)
add_compile_options("${Flag}")
endif()
diff --git a/cmake/monetdb-toolchain.cmake b/cmake/monetdb-toolchain.cmake
--- a/cmake/monetdb-toolchain.cmake
+++ b/cmake/monetdb-toolchain.cmake
@@ -6,108 +6,6 @@
# Copyright 1997 - July 2008 CWI, August 2008 - 2021 MonetDB B.V.
#]]
-function(monetdb_default_toolchain)
- if (${FORCE_COLORED_OUTPUT})
- if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
- MT_addCompilerFlag("-fdiagnostics-color=always"
"-fdiagnostics-color=always" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS)
- elseif ("${CMAKE_C_COMPILER_ID}" MATCHES "^(Clang|AppleClang)$")
- MT_addCompilerFlag("-fcolor-diagnostics" "-fcolor-diagnostics"
"${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS)
- endif ()
- endif ()
-
- if(SANITIZER)
- if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU")
- MT_addCompilerFlag("-fsanitize=address" "-fsanitize=address"
"${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS)
- MT_addCompilerFlag("-fno-omit-frame-pointer" "-fno-omit-frame-pointer"
"${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS)
- add_definitions(-DNO_ATOMIC_INSTRUCTIONS)
- else()
- message(FATAL_ERROR "Sanitizer only supported with GCC")
- endif()
- endif()
-
- if(STRICT)
- if(${CMAKE_C_COMPILER_ID} MATCHES "^(GNU|Clang|AppleClang)$")
- MT_addCompilerFlag("-Werror" "-Werror" "${CMAKE_C_FLAGS}" "all"
CMAKE_C_FLAGS)
- MT_addCompilerFlag("-Wall" "-Wall" "${CMAKE_C_FLAGS}" "all"
CMAKE_C_FLAGS)
- MT_addCompilerFlag("-Wextra" "-Wextra" "${CMAKE_C_FLAGS}" "all"
CMAKE_C_FLAGS)
- MT_addCompilerFlag("-W" "-W" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS)
- MT_checkCompilerFlag("-Werror-implicit-function-declaration")
-
- MT_checkCompilerFlag("-Wpointer-arith")
- MT_checkCompilerFlag("-Wundef")
- MT_checkCompilerFlag("-Wformat=2")
- MT_checkCompilerFlag("-Wformat-overflow=1")
- MT_checkCompilerFlag("-Wno-format-truncation")
- MT_checkCompilerFlag("-Wno-format-nonliteral")
- #MT_checkCompilerFlag("-Wformat-signedness") -- numpy messes this up
- MT_checkCompilerFlag("-Wno-cast-function-type")
- MT_checkCompilerFlag("-Winit-self")
- MT_checkCompilerFlag("-Winvalid-pch")
- MT_checkCompilerFlag("-Wmissing-declarations")
- MT_checkCompilerFlag("-Wmissing-format-attribute")
- MT_checkCompilerFlag("-Wmissing-prototypes")
- # need this for clang 9.1.0 on Darwin:
- MT_checkCompilerFlag("-Wno-missing-field-initializers")
- MT_checkCompilerFlag("-Wold-style-definition")
- MT_checkCompilerFlag("-Wpacked")
- MT_checkCompilerFlag("-Wunknown-pragmas")
- MT_checkCompilerFlag("-Wvariadic-macros")
- MT_checkCompilerFlag("-Wstack-protector")
- MT_checkCompilerFlag("-fstack-protector-all")
- MT_checkCompilerFlag("-Wpacked-bitfield-compat")
- MT_checkCompilerFlag("-Wsync-nand")
- MT_checkCompilerFlag("-Wjump-misses-init")
- MT_checkCompilerFlag("-Wmissing-include-dirs")
- MT_checkCompilerFlag("-Wlogical-op")
- MT_checkCompilerFlag("-Wduplicated-cond")
- MT_checkCompilerFlag("-Wduplicated-branches")
- MT_checkCompilerFlag("-Wrestrict")
- MT_checkCompilerFlag("-Wnested-externs")
- MT_checkCompilerFlag("-Wmissing-noreturn")
- MT_checkCompilerFlag("-Wuninitialized")
-
- # since we use values of type "int8_t" as subscript,
- # and int8_t may be defined as plain "char", we cannot
- # allow this warning (part of -Wall)
- MT_checkCompilerFlag("-Wno-char-subscripts")
-
- MT_checkCompilerFlag("-Wunreachable-code")
-
- elseif(${CMAKE_C_COMPILER_ID} STREQUAL "Intel")
- if(WIN32)
- set(COMPILER_OPTION "/")
- MT_addCompilerFlag("${COMPILER_OPTION}W3" "${COMPILER_OPTION}W3"
"${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS)
- MT_addCompilerFlag("${COMPILER_OPTION}Qdiag-disable:11074"
"${COMPILER_OPTION}Qdiag-disable:11074" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS)
- MT_addCompilerFlag("${COMPILER_OPTION}Qdiag-disable:11075"
"${COMPILER_OPTION}Qdiag-disable:11075" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS)
- else()
- set(COMPILER_OPTION "-")
- MT_addCompilerFlag("${COMPILER_OPTION}Wall" "${COMPILER_OPTION}Wall"
"${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS)
- endif()
- MT_addCompilerFlag("${COMPILER_OPTION}Wcheck" "${COMPILER_OPTION}Wcheck"
"${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS)
- MT_addCompilerFlag("${COMPILER_OPTION}Werror-all"
"${COMPILER_OPTION}Werror-all" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS)
- MT_addCompilerFlag("${COMPILER_OPTION}${INTEL_OPTION_EXTRA}wd2259"
"${COMPILER_OPTION}${INTEL_OPTION_EXTRA}wd2259" "${CMAKE_C_FLAGS}" "all"
CMAKE_C_FLAGS)
- elseif(MSVC)
- MT_addCompilerFlag("/WX" "/WX" "${CMAKE_C_FLAGS}" "all" CMAKE_C_FLAGS)
- endif()
- endif()
-
- if(NOT MSVC)
- cmake_push_check_state()
- set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS};-Wno-unreachable-code")
- # Warning don't add '-' or '/' to the output variable!
- check_c_source_compiles("int main(int argc,char**
argv){(void)argc;(void)argv;return 0;}"
- COMPILER_Wnounreachablecode)
- cmake_pop_check_state()
- endif()
-
- if(NOT ASSERT)
- MT_checkCompilerFlag("-DNDEBUG=1")
- endif()
-
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" PARENT_SCOPE)
-
-endfunction()
-
function(monetdb_default_compiler_options)
if (${FORCE_COLORED_OUTPUT})
if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
@@ -121,7 +19,12 @@ function(monetdb_default_compiler_option
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list