Skip to content

Commit

Permalink
Merge pull request #361 from bareos/dev/franku/master/sql-find
Browse files Browse the repository at this point in the history
dev/franku/master/sql find
  • Loading branch information
franku committed Dec 14, 2019
2 parents e23fd57 + 33fc397 commit ab2c85f
Show file tree
Hide file tree
Showing 108 changed files with 1,177 additions and 310 deletions.
2 changes: 1 addition & 1 deletion .cmake-format.py
Expand Up @@ -57,7 +57,7 @@
"bareos_add_test": {
"pargs": 1,
"flags": [
"",
"SKIP_GTEST",
""
],
"kwargs": {
Expand Down
4 changes: 1 addition & 3 deletions core/CMakeLists.txt
Expand Up @@ -155,7 +155,7 @@ set(BUILDNAME
CACHE STRING "site name variable for CDash"
)
set(SITE
"${CMAKE_SYSTEM_NAME}-${DISTVER}-${CMAKE_HOST_SYSTEM_PROCESSOR}"
"${CMAKE_SYSTEM_NAME}-${DISTVER}-${CMAKE_HOST_SYSTEM_PROCESSOR}"
CACHE STRING "build name variable for CDash"
)
# enable "make test"
Expand Down Expand Up @@ -337,7 +337,6 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "AIX")
endif()
include(BareosFindStaticCodeAnalysisTools)


include(BareosGenerateDebianInfo)
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
add_definitions(
Expand Down Expand Up @@ -585,7 +584,6 @@ message(STATUS "CMAKE_RANLIB: " ${CMAKE_RANLIB})

message(STATUS "CMAKE_INSTALL_PREFIX: " ${CMAKE_INSTALL_PREFIX})


if(HAVE_DYNAMIC_SD_BACKENDS)
set(UNCOMMENT_SD_BACKEND_DIRECTORY "")
else()
Expand Down
80 changes: 42 additions & 38 deletions core/platforms/debian/CMakeLists.txt
Expand Up @@ -87,9 +87,7 @@ macro(bareos_install_sql_files_to_dbconfig_common)
)
foreach(SQLFILE ${SQLFILES})
get_filename_component(BASENAME ${SQLFILE} NAME)
string(
REGEX MATCH "([0-9]*)_([0-9]*)" DUMMMY ${SQLFILE}
) # match the regex, we only are interested in submatch in parentheses
string(REGEX MATCH "([0-9]*)_([0-9]*)" DUMMMY ${SQLFILE})
set(FROM_VERSION ${CMAKE_MATCH_1})
set(TO_VERSION ${CMAKE_MATCH_2})
# file(CREATE_LINK ${NAME} ${UPGRADE_DIR}/${TO_VERSION} SYMBOLIC)
Expand Down Expand Up @@ -121,77 +119,83 @@ macro(bareos_install_sql_files_to_dbconfig_common)
DESTINATION
"${CMAKE_INSTALL_FULL_DATAROOTDIR}/dbconfig-common/scripts/bareos-database-common/upgrade/${DB_CONFIG_COMMON_DEBIAN_DB_NAME}"
RENAME 2170
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
WORLD_READ
)
install(
FILES
"${CMAKE_CURRENT_LIST_DIR}/dbconfig-common/scripts/bareos-database-common/upgrade/pgsql/2170"
DESTINATION
"${CMAKE_INSTALL_FULL_DATAROOTDIR}/dbconfig-common/scripts/bareos-database-common/upgrade/${DB_CONFIG_COMMON_DEBIAN_DB_NAME}"
RENAME 2003
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
WORLD_READ
)
install(
FILES
"${CMAKE_CURRENT_LIST_DIR}/dbconfig-common/scripts/bareos-database-common/upgrade/pgsql/2170"
DESTINATION
"${CMAKE_INSTALL_FULL_DATAROOTDIR}/dbconfig-common/scripts/bareos-database-common/upgrade/${DB_CONFIG_COMMON_DEBIAN_DB_NAME}"
RENAME 2004
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
WORLD_READ
)



install(
DIRECTORY
DESTINATION
"${CMAKE_INSTALL_FULL_DATAROOTDIR}/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/${DB_CONFIG_COMMON_DEBIAN_DB_NAME}"
)
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/share/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/${DB_CONFIG_COMMON_DEBIAN_DB_NAME}/2170")
)
if(EXISTS
"${CMAKE_CURRENT_LIST_DIR}/share/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/${DB_CONFIG_COMMON_DEBIAN_DB_NAME}/2170"
)
install(
FILES
"${CMAKE_CURRENT_LIST_DIR}/share/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/${DB_CONFIG_COMMON_DEBIAN_DB_NAME}/2170"
"${CMAKE_CURRENT_LIST_DIR}/share/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/${DB_CONFIG_COMMON_DEBIAN_DB_NAME}/2170"
DESTINATION
"${CMAKE_INSTALL_FULL_DATAROOTDIR}/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/${DB_CONFIG_COMMON_DEBIAN_DB_NAME}"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ
)
"${CMAKE_INSTALL_FULL_DATAROOTDIR}/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/${DB_CONFIG_COMMON_DEBIAN_DB_NAME}"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
WORLD_READ
)
install(
FILES
"${CMAKE_CURRENT_LIST_DIR}/share/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/${DB_CONFIG_COMMON_DEBIAN_DB_NAME}/2170"
"${CMAKE_CURRENT_LIST_DIR}/share/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/${DB_CONFIG_COMMON_DEBIAN_DB_NAME}/2170"
DESTINATION
"${CMAKE_INSTALL_FULL_DATAROOTDIR}/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/${DB_CONFIG_COMMON_DEBIAN_DB_NAME}"
"${CMAKE_INSTALL_FULL_DATAROOTDIR}/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/${DB_CONFIG_COMMON_DEBIAN_DB_NAME}"
RENAME 2003
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ
)
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
WORLD_READ
)
install(
FILES
"${CMAKE_CURRENT_LIST_DIR}/share/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/${DB_CONFIG_COMMON_DEBIAN_DB_NAME}/2170"
"${CMAKE_CURRENT_LIST_DIR}/share/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/${DB_CONFIG_COMMON_DEBIAN_DB_NAME}/2170"
DESTINATION
"${CMAKE_INSTALL_FULL_DATAROOTDIR}/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/${DB_CONFIG_COMMON_DEBIAN_DB_NAME}"
"${CMAKE_INSTALL_FULL_DATAROOTDIR}/dbconfig-common/data/bareos-database-common/upgrade-dbadmin/${DB_CONFIG_COMMON_DEBIAN_DB_NAME}"
RENAME 2004
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ
)
endif()
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE
WORLD_READ
)
endif()

endmacro()

list (FIND db_backends "postgresql" _index)
if (${_index} GREATER -1)
bareos_install_sql_files_to_dbconfig_common(
BAREOS_DB_NAME postgresql DEBIAN_DB_NAME pgsql
)
list(FIND db_backends "postgresql" _index)
if(${_index} GREATER -1)
bareos_install_sql_files_to_dbconfig_common(
BAREOS_DB_NAME postgresql DEBIAN_DB_NAME pgsql
)
endif()

list (FIND db_backends "sqlite3" _index)
if (${_index} GREATER -1)
bareos_install_sql_files_to_dbconfig_common(
BAREOS_DB_NAME sqlite3 DEBIAN_DB_NAME sqlite3
)
list(FIND db_backends "sqlite3" _index)
if(${_index} GREATER -1)
bareos_install_sql_files_to_dbconfig_common(
BAREOS_DB_NAME sqlite3 DEBIAN_DB_NAME sqlite3
)
endif()

list (FIND db_backends "mysql" _index)
if (${_index} GREATER -1)
bareos_install_sql_files_to_dbconfig_common(
BAREOS_DB_NAME mysql DEBIAN_DB_NAME mysql
)
list(FIND db_backends "mysql" _index)
if(${_index} GREATER -1)
bareos_install_sql_files_to_dbconfig_common(
BAREOS_DB_NAME mysql DEBIAN_DB_NAME mysql
)
endif()
5 changes: 3 additions & 2 deletions core/platforms/univention/CMakeLists.txt
Expand Up @@ -59,8 +59,9 @@ install(
install(
# This file contains the Bareos repository signature public.
# During the automatic build process, It will be added.
# For manual builds, download the file from
# http://download.bareos.org/bareos/release/<RELEASE>/<DISTRIBUTION>/Release.key
# For manual builds, download the file from
# http://download.bareos.org/bareos/release/<RELEASE>/<DISTRIBUTION>/Release.k
# ey
FILES "bareos-release.key"
DESTINATION "${confdir}"
)
Expand Down
2 changes: 1 addition & 1 deletion core/src/CMakeLists.txt
Expand Up @@ -31,7 +31,7 @@ if(GTEST_FOUND)
add_subdirectory(tests)
endif()

add_subdirectory(console)
add_subdirectory(console)
if(${HAVE_LMDB})
add_subdirectory(lmdb)
endif()
Expand Down
10 changes: 6 additions & 4 deletions core/src/cats/CMakeLists.txt
Expand Up @@ -45,8 +45,9 @@ set(POSTGRESQL_SRCS postgresql.cc ${LIBBAREOSCATS_SRCS})
add_library(bareossql SHARED ${LIBBAREOSSQL_SRCS})

set_target_properties(
bareossql PROPERTIES VERSION "${BAREOS_NUMERIC_VERSION}" SOVERSION
"${BAREOS_VERSION_MAJOR}"
bareossql
PROPERTIES VERSION "${BAREOS_NUMERIC_VERSION}" SOVERSION
"${BAREOS_VERSION_MAJOR}"
)
target_link_libraries(bareossql bareoscats bareos)

Expand All @@ -60,8 +61,9 @@ list(LENGTH db_backends nr_db_backends)
add_library(bareoscats SHARED ${LIBBAREOSCATS_SRCS})
target_link_libraries(bareoscats bareos)
set_target_properties(
bareoscats PROPERTIES VERSION ${BAREOS_NUMERIC_VERSION} SOVERSION
"${BAREOS_VERSION_MAJOR}"
bareoscats
PROPERTIES VERSION ${BAREOS_NUMERIC_VERSION} SOVERSION
"${BAREOS_VERSION_MAJOR}"
)
install(TARGETS bareoscats DESTINATION ${libdir})

Expand Down
2 changes: 1 addition & 1 deletion core/src/cats/cats.h
Expand Up @@ -761,7 +761,7 @@ class BareosDb : public BareosDbQueryEnum {
JobControlRecord* jcr,
std::string job_basename,
std::string client_name,
char* stime);
std::vector<char>& stime_out);

bool FindLastJobStartTime(JobControlRecord* jcr,
JobDbRecord* jr,
Expand Down
15 changes: 7 additions & 8 deletions core/src/cats/cats_backends.cc
Expand Up @@ -61,11 +61,11 @@ static struct backend_interface_mapping_t {
* All loaded backends.
*/
static alist* loaded_backends = NULL;
static alist* backend_dirs = NULL;
static std::vector<std::string> backend_dirs;

void DbSetBackendDirs(alist* new_backend_dirs)
void DbSetBackendDirs(std::vector<std::string>&& new_backend_dirs)
{
backend_dirs = new_backend_dirs;
backend_dirs = std::move(new_backend_dirs);
}

static inline backend_interface_mapping_t* lookup_backend_interface_mapping(
Expand Down Expand Up @@ -116,7 +116,6 @@ BareosDb* db_init_database(JobControlRecord* jcr,
bool exit_on_fatal,
bool need_private)
{
char* backend_dir = nullptr;
void* dl_handle = NULL;
PoolMem shared_library_name(PM_FNAME);
PoolMem error(PM_FNAME);
Expand All @@ -129,7 +128,7 @@ BareosDb* db_init_database(JobControlRecord* jcr,
* For dynamic loading catalog backends there must be a list of backend dirs
* set.
*/
if (!backend_dirs) {
if (backend_dirs.empty()) {
Jmsg(jcr, M_ERROR_TERM, 0, _("Catalog Backends Dir not configured.\n"));
}

Expand Down Expand Up @@ -170,12 +169,12 @@ BareosDb* db_init_database(JobControlRecord* jcr,
* This is a new backend try to use dynamic loading to load the backend
* library.
*/
foreach_alist (backend_dir, backend_dirs) {
for (const auto& backend_dir : backend_dirs) {
#ifndef HAVE_WIN32
Mmsg(shared_library_name, "%s/libbareoscats-%s%s", backend_dir,
Mmsg(shared_library_name, "%s/libbareoscats-%s%s", backend_dir.c_str(),
backend_interface_mapping->interface_name, DYN_LIB_EXTENSION);
Dmsg3(100, "db_init_database: testing backend %s/libbareoscats-%s%s\n",
backend_dir, backend_interface_mapping->interface_name,
backend_dir.c_str(), backend_interface_mapping->interface_name,
DYN_LIB_EXTENSION);

/*
Expand Down
3 changes: 1 addition & 2 deletions core/src/cats/cats_backends.h
Expand Up @@ -74,8 +74,7 @@ struct backend_shared_library_t {
#endif

#if defined(HAVE_DYNAMIC_CATS_BACKENDS)
class alist;
void DbSetBackendDirs(alist* new_backend_dirs);
void DbSetBackendDirs(std::vector<std::string>&& new_backend_dirs);
#endif
void DbFlushBackends(void);
BareosDb* db_init_database(JobControlRecord* jcr,
Expand Down
27 changes: 17 additions & 10 deletions core/src/cats/sql_find.cc
Expand Up @@ -151,7 +151,7 @@ BareosDb::SqlFindResult BareosDb::FindLastJobStartTimeForJobAndClient(
JobControlRecord* jcr,
std::string job_basename,
std::string client_name,
char* stime)
std::vector<char>& stime_out)
{
auto retval = SqlFindResult::kError;

Expand All @@ -164,16 +164,18 @@ BareosDb::SqlFindResult BareosDb::FindLastJobStartTimeForJobAndClient(
EscapeString(nullptr, esc_clientname.data(), client_name.c_str(),
client_name.size());

PmStrcpy(stime, "0000-00-00 00:00:00"); /* default */
constexpr const char* default_time{"0000-00-00 00:00:00"};
stime_out.resize(strlen(default_time));
strcpy(stime_out.data(), default_time);

Mmsg(cmd,
"SELECT starttime"
" FROM job"
" WHERE job.name='%s'"
" AND (job.jobstatus='T' OR job.jobstatus='W')"
" AND job.clientid=(SELECT clientid"
" FROM client WHERE client.name='%s')"
" ORDER BY starttime DESC LIMIT 1",
"SELECT StartTime"
" FROM Job"
" WHERE Job.Name='%s'"
" AND (Job.JobStatus='T' OR Job.JobStatus='W')"
" AND Job.ClientId=(SELECT ClientId"
" FROM Client WHERE Client.Name='%s')"
" ORDER BY StartTime DESC LIMIT 1",
esc_jobname.data(), esc_clientname.data());

if (!QUERY_DB(jcr, cmd)) {
Expand All @@ -193,7 +195,12 @@ BareosDb::SqlFindResult BareosDb::FindLastJobStartTimeForJobAndClient(
}

Dmsg2(100, "Got start time: %s\n", row[0]);
PmStrcpy(stime, row[0]);

{
std::size_t len = strlen(row[0]);
stime_out.resize(len + 1);
strcpy(stime_out.data(), row[0]);
}

SqlFreeResult();

Expand Down
12 changes: 10 additions & 2 deletions core/src/console/CMakeLists.txt
Expand Up @@ -45,8 +45,16 @@ endif()

target_link_libraries(bconsole ${CONSOLE_LINK_LIBRARIES})

install(TARGETS bconsole DESTINATION "${bindir}" COMPONENT bconsole)
install(TARGETS bconsole DESTINATION "${sbindir}" COMPONENT bconsole)
install(
TARGETS bconsole
DESTINATION "${bindir}"
COMPONENT bconsole
)
install(
TARGETS bconsole
DESTINATION "${sbindir}"
COMPONENT bconsole
)
install(
FILES bconsole.conf
DESTINATION "${configtemplatedir}"
Expand Down
10 changes: 4 additions & 6 deletions core/src/dird/dbcheck.cc
Expand Up @@ -988,7 +988,7 @@ int main(int argc, char* argv[])
char* catalogname = NULL;
char* endptr;
#if defined(HAVE_DYNAMIC_CATS_BACKENDS)
alist* backend_directories = NULL;
std::vector<std::string> backend_directories;
#endif

setlocale(LC_ALL, "");
Expand Down Expand Up @@ -1089,7 +1089,7 @@ int main(int argc, char* argv[])

SetWorkingDirectory(me->working_directory);
#if defined(HAVE_DYNAMIC_CATS_BACKENDS)
DbSetBackendDirs(me->backend_directories);
DbSetBackendDirs(std::move(me->backend_directories));
#endif

/*
Expand Down Expand Up @@ -1155,10 +1155,8 @@ int main(int argc, char* argv[])
}

#if defined(HAVE_DYNAMIC_CATS_BACKENDS)
backend_directories = new alist(10, owned_by_alist);
backend_directories->append((char*)backend_directory);

DbSetBackendDirs(backend_directories);
backend_directories.emplace_back(backend_directory);
DbSetBackendDirs(std::move(backend_directories));
#endif
}

Expand Down

0 comments on commit ab2c85f

Please sign in to comment.