From a9718a6449343a330e0647d706154abf4987ef39 Mon Sep 17 00:00:00 2001 From: Anton Adamansky Date: Mon, 2 Mar 2015 16:58:08 +0600 Subject: [PATCH] #115 --- .gitignore | 8 - tcejdb/.gitignore | 7 + tcejdb/CMakeLists.txt | 70 +++-- tcejdb/CTestConfig.cmake | 3 + tcejdb/CTestCustom.cmake | 0 tcejdb/cmake/Modules/EjdbUtils.cmake | 10 + tcejdb/ctest.cmake | 37 +++ tcejdb/src/CMakeFiles/progress.marks | 1 - tcejdb/src/Makefile | 126 -------- tcejdb/src/bson/nxjson.c | 1 + tcejdb/src/cmake_install.cmake | 34 -- tcejdb/src/ejdb/ejdb.c | 159 +++++----- tcejdb/src/ejdb/ejdb_private.h | 8 +- tcejdb/src/generated/basedefs.h | 66 ---- tcejdb/src/generated/myconf.h | 552 --------------------------------- tcejdb/src/myconf.h.in | 17 +- tcejdb/src/tcbdb/tcbdb.c | 4 +- tcejdb/src/tcbdb/tests/CMakeLists.txt | 304 ++++++++++++++++++ tcejdb/src/tcbdb/tools/CMakeLists.txt | 2 + tcejdb/src/tcfdb/tests/CMakeLists.txt | 194 ++++++++++++ tcejdb/src/tcfdb/tools/CMakeLists.txt | 2 + tcejdb/src/tchdb/tchdb.c | 9 +- tcejdb/src/tchdb/tests/CMakeLists.txt | 245 +++++++++++++++ tcejdb/src/tchdb/tools/CMakeLists.txt | 2 + tcejdb/src/tctdb/tests/CMakeLists.txt | 257 +++++++++++++++ tcejdb/src/tctdb/tools/CMakeLists.txt | 2 + tcejdb/src/tcutil/tests/CMakeLists.txt | 4 +- tcejdb/tcejdb.project | 11 + 28 files changed, 1221 insertions(+), 914 deletions(-) create mode 100644 tcejdb/.gitignore create mode 100644 tcejdb/CTestConfig.cmake create mode 100644 tcejdb/CTestCustom.cmake create mode 100644 tcejdb/cmake/Modules/EjdbUtils.cmake create mode 100644 tcejdb/ctest.cmake delete mode 100644 tcejdb/src/CMakeFiles/progress.marks delete mode 100644 tcejdb/src/Makefile delete mode 100644 tcejdb/src/cmake_install.cmake delete mode 100644 tcejdb/src/generated/basedefs.h delete mode 100644 tcejdb/src/generated/myconf.h create mode 100644 tcejdb/src/tcbdb/tests/CMakeLists.txt create mode 100644 tcejdb/src/tcbdb/tools/CMakeLists.txt create mode 100644 tcejdb/src/tcfdb/tests/CMakeLists.txt create mode 100644 tcejdb/src/tcfdb/tools/CMakeLists.txt create mode 100644 tcejdb/src/tchdb/tests/CMakeLists.txt create mode 100644 tcejdb/src/tchdb/tools/CMakeLists.txt create mode 100644 tcejdb/src/tctdb/tests/CMakeLists.txt create mode 100644 tcejdb/src/tctdb/tools/CMakeLists.txt diff --git a/.gitignore b/.gitignore index e66c9f4..3fd592e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,3 @@ -Makefile -tcejdb/src/*/tests/*test -tcejdb/generated/ -tcejdb/Testing/ CMakeCache.txt CMakeFiles @@ -15,9 +11,6 @@ compilation.db .dep.inc *.iml -*.o -*.vlog -*.log *.status *.dylib *.upload @@ -38,4 +31,3 @@ compilation.db *.pyc *.tags - diff --git a/tcejdb/.gitignore b/tcejdb/.gitignore new file mode 100644 index 0000000..7e47b9d --- /dev/null +++ b/tcejdb/.gitignore @@ -0,0 +1,7 @@ +Makefile +build/* +Testing/* +src/old/* + +DartConfiguration.tcl + diff --git a/tcejdb/CMakeLists.txt b/tcejdb/CMakeLists.txt index a6648ed..5b26e42 100644 --- a/tcejdb/CMakeLists.txt +++ b/tcejdb/CMakeLists.txt @@ -1,8 +1,25 @@ cmake_minimum_required(VERSION 3.1) set(PROJECT_NAME "ejdb") + +option(WITH_TESTS "Build EJDB test cases" OFF) +option(ENABLE_STATIC_LIB "Build ejdb static library" OFF) + project(${PROJECT_NAME} VERSION 1.2.0 LANGUAGES C) + +if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") + if (CMAKE_C_COMPILER_VERSION VERSION_LESS 4.7) + message(FATAL_ERROR "GCC version must be at least 4.7!") + endif() +elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") + if (CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4) + message(FATAL_ERROR "Clang version must be at least 3.4!") + endif() +else() + message(FATAL_ERROR "You are using an unsupported compiler! EJDB has only been tested \ + with Clang >= 3.4 and GCC >= 4.7") +endif() set(EJDB_LLIBRARIES) set(EJDB_INCLUDE_DIRS) @@ -10,14 +27,16 @@ set(ALL_SRC) set(ALL_HDRS) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") - +include(EjdbUtils) + +macro_ensure_out_of_source_build( + "${CMAKE_PROJECT_NAME} requires an out of source build." +) + if (NOT CMAKE_BUILD_TYPE) message(FATAL_ERROR "Please specify the build type -DCMAKE_BUILD_TYPE=Debug|Release|RelWithDebInfo") endif(NOT CMAKE_BUILD_TYPE) -option(WITH_TESTS "Build EJDB test cases" OFF) -option(ENABLE_STATIC_LIB "Build ejdb static library" OFF) -option(WITH_VALGRIND_CHECK "Build EJDB test cases with valgrind check support" OFF) set(MODULES tcutil tchdb tcbdb tctdb tcfdb bson ejdb) @@ -25,10 +44,9 @@ set(EJDB_GENERATED_DIR ${CMAKE_CURRENT_BINARY_DIR}/src/generated) list(APPEND EJDB_INCLUDE_DIRS "${EJDB_GENERATED_DIR}") foreach(MODULE IN LISTS MODULES) - #include_directories(src/${MODULE}) - list(APPEND EJDB_INCLUDE_DIRS "${CMAKE_CURRENT_BINARY_DIR}/src/${MODULE}") - file(GLOB MODULE_SRC src/${MODULE}/*.c) - file(GLOB MODULE_HDRS src/${MODULE}/*.h) + list(APPEND EJDB_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src/${MODULE}") + file(GLOB MODULE_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/${MODULE}/*.c) + file(GLOB MODULE_HDRS ${CMAKE_CURRENT_SOURCE_DIR}/src/${MODULE}/*.h) list(APPEND ALL_SRC ${MODULE_SRC}) list(APPEND ALL_HDRS ${MODULE_HDRS}) endforeach(MODULE) @@ -39,6 +57,11 @@ else() add_library(ejdb SHARED ${ALL_SRC}) endif(ENABLE_STATIC_LIB) +set_target_properties(ejdb PROPERTIES + VERSION ${ejdb_VERSION} + SOVERSION ${ejdb_VERSION_MAJOR}) + + find_package(Threads REQUIRED CMAKE_THREAD_PREFER_PTHREAD) if (CMAKE_USE_WIN32_THREADS_INIT) add_definitions(-D_TC_WIN32_THREADS) @@ -96,37 +119,29 @@ target_link_libraries(ejdb ${EJDB_LLIBRARIES}) #todo check the host system! set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99 -fsigned-char -Wall -pedantic") -set(CMAKE_C_FLAGS_DEBUG "-O0 -Wfatal-errors -DDEBUG -D_DEBUG -UNDEBUG") -set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG") +set(CMAKE_C_FLAGS_DEBUG "-O0 -Wfatal-errors -Werror -DDEBUG -D_DEBUG -UNDEBUG") +set(CMAKE_C_FLAGS_RELEASE "-O3 -Wfatal-errors -DNDEBUG") set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2") -configure_file(src/basedefs.h.in ${EJDB_GENERATED_DIR}/basedefs.h) -configure_file(src/myconf.h.in ${EJDB_GENERATED_DIR}/myconf.h) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/basedefs.h.in ${EJDB_GENERATED_DIR}/basedefs.h) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/myconf.h.in ${EJDB_GENERATED_DIR}/myconf.h) file(GLOB GENERATED_HDRS ${EJDB_GENERATED_DIR}/*.h) list(APPEND ALL_HDRS ${GENERATED_HDRS}) if (WITH_TESTS) - #Valgrind staff - if (WITH_VALGRIND_CHECK) - find_program(VALGRIND_FOUND valgrind) - if (NOT VALGRIND_FOUND) - message(FATAL_ERROR "'valgrind' executable not found") - endif(NOT VALGRIND_FOUND) - set(TEST_TOOL_CMD valgrind --tool=memcheck --leak-check=full --error-exitcode=1) - endif(WITH_VALGRIND_CHECK) - enable_testing() + include(CTest) find_package(CUnit REQUIRED) endif(WITH_TESTS) foreach(MODULE IN LISTS MODULES) - if (EXISTS src/${MODULE}/CMakeLists.txt) - add_subdirectory(src/${MODULE}) + if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/${MODULE}/CMakeLists.txt) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src/${MODULE}) endif() - if (EXISTS src/${MODULE}/tools/CMakeLists.txt) - add_subdirectory(src/${MODULE}/tools) + if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/${MODULE}/tools/CMakeLists.txt) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src/${MODULE}/tools) endif() - if (WITH_TESTS AND EXISTS src/${MODULE}/tests/CMakeLists.txt) - add_subdirectory(src/${MODULE}/tests) + if (WITH_TESTS AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/src/${MODULE}/tests/CMakeLists.txt) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src/${MODULE}/tests) endif() endforeach(MODULE) @@ -134,7 +149,6 @@ message("") message("#############################################") message(" ENABLE_STATIC_LIB: ${ENABLE_STATIC_LIB}") message(" WITH_TESTS: ${WITH_TESTS}") -message(" WITH_VALGRIND_CHECK: ${WITH_VALGRIND_CHECK}") message(" LINK LIBS: ${EJDB_LLIBRARIES}") message(" INCLUDE DIRS: ${EJDB_INCLUDE_DIRS}") message(" SOURCES: ${ALL_SRC}") diff --git a/tcejdb/CTestConfig.cmake b/tcejdb/CTestConfig.cmake new file mode 100644 index 0000000..9979dad --- /dev/null +++ b/tcejdb/CTestConfig.cmake @@ -0,0 +1,3 @@ +set(CTEST_PROJECT_NAME "ejdb") +set(CTEST_NIGHTLY_START_TIME "01:00:00 UTC") + diff --git a/tcejdb/CTestCustom.cmake b/tcejdb/CTestCustom.cmake new file mode 100644 index 0000000..e69de29 diff --git a/tcejdb/cmake/Modules/EjdbUtils.cmake b/tcejdb/cmake/Modules/EjdbUtils.cmake new file mode 100644 index 0000000..91a7d38 --- /dev/null +++ b/tcejdb/cmake/Modules/EjdbUtils.cmake @@ -0,0 +1,10 @@ + + +macro(MACRO_ENSURE_OUT_OF_SOURCE_BUILD MSG) + string(COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" insource) + get_filename_component(PARENTDIR ${CMAKE_SOURCE_DIR} PATH) + string(COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${PARENTDIR}" insourcesubdir) + if(insource OR insourcesubdir) + message(FATAL_ERROR "${MSG}") + endif(insource OR insourcesubdir) +endmacro(MACRO_ENSURE_OUT_OF_SOURCE_BUILD) diff --git a/tcejdb/ctest.cmake b/tcejdb/ctest.cmake new file mode 100644 index 0000000..cf6a08f --- /dev/null +++ b/tcejdb/ctest.cmake @@ -0,0 +1,37 @@ +# Source directory: /home/adam/Projects/softmotions/ejdb/tcejdb +# Build directory: /home/adam/Projects/softmotions/ejdb/tcejdb + +set(CTEST_SOURCE_DIRECTORY /home/adam/Projects/softmotions/ejdb/tcejdb) +set(CTEST_BINARY_DIRECTORY /home/adam/Projects/softmotions/ejdb/tcejdb/build) + +set(CTEST_START_WITH_EMPTY_BINARY_DIRECTORY TRUE) +set(CTEST_CMAKE_GENERATOR "Unix Makefiles") +set(CTEST_BUILD_CONFIGURATION "Debug") +set(CTEST_BUILD_OPTIONS) + +set(CTEST_CONFIGURE_COMMAND "${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE:STRING=${CTEST_BUILD_CONFIGURATION}") +set(CTEST_CONFIGURE_COMMAND "${CTEST_CONFIGURE_COMMAND} -DWITH_TESTS:BOOL=ON ${CTEST_BUILD_OPTIONS}") +set(CTEST_CONFIGURE_COMMAND "${CTEST_CONFIGURE_COMMAND} \"-G${CTEST_CMAKE_GENERATOR}\"") +set(CTEST_CONFIGURE_COMMAND "${CTEST_CONFIGURE_COMMAND} \"${CTEST_SOURCE_DIRECTORY}\"") + +find_program(CTEST_COVERAGE_COMMAND NAMES gcov) +find_program(CTEST_MEMORYCHECK_COMMAND NAMES valgrind) + +ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY}) + +ctest_start("Nightly") +#ctest_update() +ctest_configure() +ctest_build() +ctest_test() + +if (WITH_COVERAGE AND CTEST_COVERAGE_COMMAND) + ctest_coverage() +endif (WITH_COVERAGE AND CTEST_COVERAGE_COMMAND) +if (WITH_MEMCHECK AND CTEST_MEMORYCHECK_COMMAND) + ctest_memcheck() +endif (WITH_MEMCHECK AND CTEST_MEMORYCHECK_COMMAND) + +#ctest_submit() + + diff --git a/tcejdb/src/CMakeFiles/progress.marks b/tcejdb/src/CMakeFiles/progress.marks deleted file mode 100644 index 573541a..0000000 --- a/tcejdb/src/CMakeFiles/progress.marks +++ /dev/null @@ -1 +0,0 @@ -0 diff --git a/tcejdb/src/Makefile b/tcejdb/src/Makefile deleted file mode 100644 index 5e8f648..0000000 --- a/tcejdb/src/Makefile +++ /dev/null @@ -1,126 +0,0 @@ -# CMAKE generated file: DO NOT EDIT! -# Generated by "Unix Makefiles" Generator, CMake Version 3.1 - -# Default target executed when no arguments are given to make. -default_target: all -.PHONY : default_target - -# Allow only one "make -f Makefile2" at a time, but pass parallelism. -.NOTPARALLEL: -.PHONY : .NOTPARALLEL - -#============================================================================= -# Special targets provided by cmake. - -# Disable implicit rules so canonical targets will work. -.SUFFIXES: - -# Remove some rules from gmake that .SUFFIXES does not remove. -SUFFIXES = - -.SUFFIXES: .hpux_make_needs_suffix_list - -# Suppress display of executed commands. -$(VERBOSE).SILENT: - -# A target that is always out of date. -cmake_force: -.PHONY : cmake_force - -#============================================================================= -# Set environment variables for the build. - -# The shell in which to execute make rules. -SHELL = /bin/sh - -# The CMake executable. -CMAKE_COMMAND = /usr/bin/cmake - -# The command to remove a file. -RM = /usr/bin/cmake -E remove -f - -# Escaping for special characters. -EQUALS = = - -# The top-level source directory on which CMake was run. -CMAKE_SOURCE_DIR = /home/adam/Projects/softmotions/ejdb/tcejdb - -# The top-level build directory on which CMake was run. -CMAKE_BINARY_DIR = /home/adam/Projects/softmotions/ejdb/tcejdb - -#============================================================================= -# Targets provided globally by CMake. - -# Special rule for the target edit_cache -edit_cache: - @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..." - /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. -.PHONY : edit_cache - -# Special rule for the target edit_cache -edit_cache/fast: edit_cache -.PHONY : edit_cache/fast - -# Special rule for the target rebuild_cache -rebuild_cache: - @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." - /usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) -.PHONY : rebuild_cache - -# Special rule for the target rebuild_cache -rebuild_cache/fast: rebuild_cache -.PHONY : rebuild_cache/fast - -# The main all target -all: cmake_check_build_system - cd /home/adam/Projects/softmotions/ejdb/tcejdb && $(CMAKE_COMMAND) -E cmake_progress_start /home/adam/Projects/softmotions/ejdb/tcejdb/CMakeFiles /home/adam/Projects/softmotions/ejdb/tcejdb/src/CMakeFiles/progress.marks - cd /home/adam/Projects/softmotions/ejdb/tcejdb && $(MAKE) -f CMakeFiles/Makefile2 src/all - $(CMAKE_COMMAND) -E cmake_progress_start /home/adam/Projects/softmotions/ejdb/tcejdb/CMakeFiles 0 -.PHONY : all - -# The main clean target -clean: - cd /home/adam/Projects/softmotions/ejdb/tcejdb && $(MAKE) -f CMakeFiles/Makefile2 src/clean -.PHONY : clean - -# The main clean target -clean/fast: clean -.PHONY : clean/fast - -# Prepare targets for installation. -preinstall: all - cd /home/adam/Projects/softmotions/ejdb/tcejdb && $(MAKE) -f CMakeFiles/Makefile2 src/preinstall -.PHONY : preinstall - -# Prepare targets for installation. -preinstall/fast: - cd /home/adam/Projects/softmotions/ejdb/tcejdb && $(MAKE) -f CMakeFiles/Makefile2 src/preinstall -.PHONY : preinstall/fast - -# clear depends -depend: - cd /home/adam/Projects/softmotions/ejdb/tcejdb && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 -.PHONY : depend - -# Help Target -help: - @echo "The following are some of the valid targets for this Makefile:" - @echo "... all (the default if no target is provided)" - @echo "... clean" - @echo "... depend" - @echo "... edit_cache" - @echo "... rebuild_cache" -.PHONY : help - - - -#============================================================================= -# Special targets to cleanup operation of make. - -# Special rule to run CMake to check the build system integrity. -# No rule that depends on this can have commands that come from listfiles -# because they might be regenerated. -cmake_check_build_system: - cd /home/adam/Projects/softmotions/ejdb/tcejdb && $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 -.PHONY : cmake_check_build_system - diff --git a/tcejdb/src/bson/nxjson.c b/tcejdb/src/bson/nxjson.c index 5ae7f68..7579f8a 100644 --- a/tcejdb/src/bson/nxjson.c +++ b/tcejdb/src/bson/nxjson.c @@ -192,6 +192,7 @@ static char* skip_block_comment(char* p) { } static char* parse_key(const char** key, char* p, nx_json_unicode_encoder encoder) { + *key = NULL; // on '}' return with *p=='}' char c; while ((c=*p++)) { diff --git a/tcejdb/src/cmake_install.cmake b/tcejdb/src/cmake_install.cmake deleted file mode 100644 index 68a62ca..0000000 --- a/tcejdb/src/cmake_install.cmake +++ /dev/null @@ -1,34 +0,0 @@ -# Install script for directory: /home/adam/Projects/softmotions/ejdb/tcejdb/src - -# Set the install prefix -if(NOT DEFINED CMAKE_INSTALL_PREFIX) - set(CMAKE_INSTALL_PREFIX "/usr/local") -endif() -string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") - -# Set the install configuration name. -if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) - if(BUILD_TYPE) - string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" - CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") - else() - set(CMAKE_INSTALL_CONFIG_NAME "") - endif() - message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") -endif() - -# Set the component getting installed. -if(NOT CMAKE_INSTALL_COMPONENT) - if(COMPONENT) - message(STATUS "Install component: \"${COMPONENT}\"") - set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") - else() - set(CMAKE_INSTALL_COMPONENT) - endif() -endif() - -# Install shared libraries without execute permission? -if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) - set(CMAKE_INSTALL_SO_NO_EXE "1") -endif() - diff --git a/tcejdb/src/ejdb/ejdb.c b/tcejdb/src/ejdb/ejdb.c index f4e861b..a1045e6 100644 --- a/tcejdb/src/ejdb/ejdb.c +++ b/tcejdb/src/ejdb/ejdb.c @@ -136,7 +136,7 @@ static bool _qrycondcheckstrand(const char *vbuf, const TCLIST *tokens); static bool _qrycondcheckstror(const char *vbuf, const TCLIST *tokens); static bool _qrybsvalmatch(const EJQF *qf, bson_iterator *it, bool expandarrays, int *arridx); static bool _qrybsmatch(EJQF *qf, const void *bsbuf, int bsbufsz); -static bool _qry_$and_$or_match(EJCOLL *coll, EJQ *ejq, const void *pkbuf, int pkbufsz); +static bool _qry_and_or_match(EJCOLL *coll, EJQ *ejq, const void *pkbuf, int pkbufsz); static bool _qryormatch2(EJCOLL *coll, EJQ *ejq, const void *bsbuf, int bsbufsz); static bool _qryormatch3(EJCOLL *coll, EJQ *ejq, EJQ *oq, const void *bsbuf, int bsbufsz); static bool _qryandmatch2(EJCOLL *coll, EJQ *ejq, const void *bsbuf, int bsbufsz); @@ -145,7 +145,7 @@ static EJQ* _qryaddand(EJDB *jb, EJQ *q, const void *andbsdata); static bool _qrydup(const EJQ *src, EJQ *target, uint32_t qflags); static void _qrydel(EJQ *q, bool freequery); static bool _pushprocessedbson(_QRYCTX *ctx, const void *bsbuf, int bsbufsz); -static bool _exec$do(_QRYCTX *ctx, const void *bsbuf, bson *bsout); +static bool _exec_do(_QRYCTX *ctx, const void *bsbuf, bson *bsout); static void _qryctxclear(_QRYCTX *ctx); static TCLIST* _qryexecute(EJCOLL *coll, const EJQ *q, uint32_t *count, int qflags, TCXSTR *log); EJDB_INLINE void _nufetch(_EJDBNUM *nu, const char *sval, bson_type bt); @@ -158,12 +158,9 @@ static EJCOLL* _createcollimpl(EJDB *jb, const char *colname, EJCOLLOPTS *opts); static bool _rmcollimpl(EJDB *jb, EJCOLL *coll, bool unlinkfile); static bool _setindeximpl(EJCOLL *coll, const char *fpath, int flags, bool nolock); - extern const char *utf8proc_errmsg(ssize_t errcode); - static const bool yes = true; -static const bool no = false; const char *ejdbversion() { return _TC_VERSION; @@ -549,9 +546,9 @@ EJQ* ejdbqueryhints(EJDB *jb, EJQ *q, const void *hintsbsdata) { bson_del(q->hints); q->hints = NULL; } - if (q->$ifields) { - tcmapdel(q->$ifields); - q->$ifields = NULL; + if (q->ifields) { + tcmapdel(q->ifields); + q->ifields = NULL; } q->hints = bs; return q; @@ -1184,7 +1181,7 @@ static bool _rmcollimpl(EJDB *jb, EJCOLL *coll, bool unlinkfile) { } static EJCOLL* _createcollimpl(EJDB *jb, const char *colname, EJCOLLOPTS *opts) { - EJCOLL *coll; + EJCOLL *coll = NULL; if (!JBISVALCOLNAME(colname)) { _ejdbsetecode(jb, JBEINVALIDCOLNAME, __FILE__, __LINE__, __func__); return NULL; @@ -1684,9 +1681,9 @@ static void _qrydel(EJQ *q, bool freequery) { bson_del(q->hints); q->hints = NULL; } - if (q->$ifields) { - tcmapdel(q->$ifields); - q->$ifields = NULL; + if (q->ifields) { + tcmapdel(q->ifields); + q->ifields = NULL; } if (q->colbuf) { tcxstrdel(q->colbuf); @@ -2049,14 +2046,14 @@ static bool _qrybsvalmatch(const EJQF *qf, bson_iterator *it, bool expandarrays, } -//Fills `ffpctx` and `qf->$uslots` +//Fills `ffpctx` and `qf->uslots` static void _qrysetarrayidx(FFPCTX *ffpctx, EJQF *qf, int dpos, int mpos) { if (ffpctx->dpos == dpos && ffpctx->mpos == -1) { //single ctx matching ffpctx->mpos = mpos; } - if (qf->$uslots) { - for (int i = 0; i < TCLISTNUM(qf->$uslots); ++i) { - USLOT *us = TCLISTVALPTR(qf->$uslots, i); + if (qf->uslots) { + for (int i = 0; i < TCLISTNUM(qf->uslots); ++i) { + USLOT *us = TCLISTVALPTR(qf->uslots, i); assert(us); if (us->dpos == dpos && us->mpos == -1) { us->mpos = mpos; @@ -2161,15 +2158,15 @@ static bool _qrybsmatch(EJQF *qf, const void *bsbuf, int bsbufsz) { .dpos = -1, .mpos = -1 }; - if (qf->$uslots) { - for (int i = 0; i < TCLISTNUM(qf->$uslots); ++i) { - ((USLOT*) (TCLISTVALPTR(qf->$uslots, i)))->mpos = -1; + if (qf->uslots) { + for (int i = 0; i < TCLISTNUM(qf->uslots); ++i) { + ((USLOT*) (TCLISTVALPTR(qf->uslots, i)))->mpos = -1; } } return _qrybsrecurrmatch(qf, &ffpctx, 0); } -static bool _qry_$and_$or_match(EJCOLL *coll, EJQ *ejq, const void *pkbuf, int pkbufsz) { +static bool _qry_and_or_match(EJCOLL *coll, EJQ *ejq, const void *pkbuf, int pkbufsz) { bool isor = (ejq->orqlist && TCLISTNUM(ejq->orqlist) > 0); bool isand = (ejq->andqlist && TCLISTNUM(ejq->andqlist) > 0); if (!isor && !isand) { @@ -2416,11 +2413,11 @@ static void _qryfieldup(const EJQF *src, EJQF *target, uint32_t qflags) { if (src->updateobj) { target->updateobj = bson_dup(src->updateobj); } - if (src->$ufields) { - target->$ufields = tclistdup(src->$ufields); + if (src->ufields) { + target->ufields = tclistdup(src->ufields); } - if (src->$uslots) { - target->$uslots = tclistdup(src->$uslots); + if (src->uslots) { + target->uslots = tclistdup(src->uslots); } } @@ -2443,8 +2440,8 @@ static bool _qrydup(const EJQ *src, EJQ *target, uint32_t qflags) { if (src->hints) { target->hints = bson_dup(src->hints); } - if (src->$ifields) { - target->$ifields = tcmapdup(src->$ifields); + if (src->ifields) { + target->ifields = tcmapdup(src->ifields); } if (src->orqlist) { target->orqlist = tclistnew2(TCLISTNUM(src->orqlist)); @@ -2478,13 +2475,13 @@ typedef struct { /**> $do action visitor context */ EJDB *jb; TCMAP *dfields; bson *sbson; -} _BSON$DOVISITORCTX; +} _BSONDOVISITORCTX; -static bson_visitor_cmd_t _bson$dovisitor(const char *ipath, int ipathlen, const char *key, int keylen, +static bson_visitor_cmd_t _bsondovisitor(const char *ipath, int ipathlen, const char *key, int keylen, const bson_iterator *it, bool after, void *op) { assert(op); - _BSON$DOVISITORCTX *ictx = op; + _BSONDOVISITORCTX *ictx = op; EJCOLL *coll; TCMAP *dfields = ictx->dfields; bson_type lbt = BSON_ITERATOR_TYPE(it), bt; @@ -2634,7 +2631,7 @@ static bson_visitor_cmd_t _bson$dovisitor(const char *ipath, int ipathlen, const static bool _pushprocessedbson(_QRYCTX *ctx, const void *bsbuf, int bsbufsz) { assert(bsbuf && bsbufsz); - if (!ctx->dfields && !ctx->ifields && !ctx->q->$ifields) { //Trivial case: no $do operations or $fields + if (!ctx->dfields && !ctx->ifields && !ctx->q->ifields) { //Trivial case: no $do operations or $fields tclistpush(ctx->res, bsbuf, bsbufsz); return true; } @@ -2648,27 +2645,27 @@ static bool _pushprocessedbson(_QRYCTX *ctx, const void *bsbuf, int bsbufsz) { bson_init_on_stack(&bsout, bstack, bsbufsz, JBSBUFFERSZ); if (ctx->dfields) { //$do fields exists - rv = _exec$do(ctx, bsbuf, &bsout); + rv = _exec_do(ctx, bsbuf, &bsout); } - if (rv && (ifields || q->$ifields)) { //$fields hints + if (rv && (ifields || q->ifields)) { //$fields hints TCMAP *_ifields = ifields; TCMAP *_fkfields = NULL; //Fields with overriden keys char* inbuf = (bsout.finished) ? bsout.data : (char*) bsbuf; if (bsout.finished) { bson_init_size(&bsout, bson_size(&bsout)); } - if (q->$ifields) { //we have positional $(projection) + if (q->ifields) { //we have positional $(projection) assert(ctx->imode == true); //ensure we are in include mode if (!_ifields) { - _ifields = tcmapnew2(q->$ifields->bnum); + _ifields = tcmapnew2(q->ifields->bnum); } else { _ifields = tcmapdup(ifields); } _fkfields = tcmapnew2(TCMAPTINYBNUM); for (int i = 0; i < TCLISTNUM(q->qflist); ++i) { EJQF *qf = TCLISTVALPTR(q->qflist, i); - const char *dfpath = tcmapget(q->$ifields, qf->fpath, qf->fpathsz, &sp); + const char *dfpath = tcmapget(q->ifields, qf->fpath, qf->fpathsz, &sp); if (dfpath) { TCXSTR *ifield = tcxstrnew3(sp + 10); bson_iterator it; @@ -2735,9 +2732,9 @@ static bool _pushprocessedbson(_QRYCTX *ctx, const void *bsbuf, int bsbufsz) { return rv; } -static bool _exec$do(_QRYCTX *ctx, const void *bsbuf, bson *bsout) { +static bool _exec_do(_QRYCTX *ctx, const void *bsbuf, bson *bsout) { assert(ctx && ctx->dfields); - _BSON$DOVISITORCTX ictx = { + _BSONDOVISITORCTX ictx = { .q = ctx->q, .jb = ctx->coll->jb, .dfields = ctx->dfields, @@ -2745,7 +2742,7 @@ static bool _exec$do(_QRYCTX *ctx, const void *bsbuf, bson *bsout) { }; bson_iterator it; BSON_ITERATOR_FROM_BUFFER(&it, bsbuf); - bson_visit_fields(&it, 0, _bson$dovisitor, &ictx); + bson_visit_fields(&it, 0, _bsondovisitor, &ictx); if (bson_finish(bsout) != BSON_OK) { _ejdbsetecode(ctx->coll->jb, JBEINVALIDBSON, __FILE__, __LINE__, __func__); return false; @@ -2756,7 +2753,7 @@ static bool _exec$do(_QRYCTX *ctx, const void *bsbuf, bson *bsout) { //Create update BSON object for $set/$unset/$inc operations static bson* _qfgetupdateobj(const EJQF *qf) { assert(qf->updateobj); - if (!qf->$ufields || TCLISTNUM(qf->$ufields) < 1) { //we do not ref $(query) fields. + if (!qf->ufields || TCLISTNUM(qf->ufields) < 1) { //we do not ref $(query) fields. return qf->updateobj; } const EJQ *q = qf->q; @@ -2766,15 +2763,15 @@ static bson* _qfgetupdateobj(const EJQF *qf) { bson_type bt; bson *ret = bson_create(); bson_init(ret); - for (int i = 0; i < TCLISTNUM(qf->$ufields); ++i) { - const char *uf = TCLISTVALPTR(qf->$ufields, i); + for (int i = 0; i < TCLISTNUM(qf->ufields); ++i) { + const char *uf = TCLISTVALPTR(qf->ufields, i); for (int j = 0; *(q->allqfields + j) != '\0'; ++j) { const EJQF *kqf = *(q->allqfields + j); - if (kqf == qf || kqf->$uslots == NULL || TCLISTNUM(kqf->$uslots) < 1) { + if (kqf == qf || kqf->uslots == NULL || TCLISTNUM(kqf->uslots) < 1) { continue; } - for (int k = 0; k < TCLISTNUM(kqf->$uslots); ++k) { - USLOT *uslot = TCLISTVALPTR(kqf->$uslots, k); + for (int k = 0; k < TCLISTNUM(kqf->uslots); ++k) { + USLOT *uslot = TCLISTVALPTR(kqf->uslots, k); if (uslot->op == uf && uslot->mpos >= 0) { char *dp = strchr(uf, '$'); assert(dp); @@ -3295,7 +3292,7 @@ static TCLIST* _qryexecute(EJCOLL *coll, const EJQ *_q, uint32_t *outcount, int //EOF #define JBQREGREC bool trim = (midx && *midx->name != '\0'); - if (anum > 0 && !(mqf->flags & EJFEXCLUDED) && !(mqf->$uslots && TCLISTNUM(mqf->$uslots) > 0)) { + if (anum > 0 && !(mqf->flags & EJFEXCLUDED) && !(mqf->uslots && TCLISTNUM(mqf->uslots) > 0)) { anum--; mqf->flags |= EJFEXCLUDED; } @@ -3329,7 +3326,7 @@ static TCLIST* _qryexecute(EJCOLL *coll, const EJQ *_q, uint32_t *outcount, int break; } } - if (matched && _qry_$and_$or_match(coll, q, &oid, sizeof (oid))) { + if (matched && _qry_and_or_match(coll, q, &oid, sizeof (oid))) { JBQREGREC(&oid, sizeof (oid), TCXSTRPTR(q->bsbuf), TCXSTRSIZE(q->bsbuf)); } } while (false); @@ -3373,7 +3370,7 @@ static TCLIST* _qryexecute(EJCOLL *coll, const EJQ *_q, uint32_t *outcount, int break; } } - if (matched && _qry_$and_$or_match(coll, q, &oid, sizeof (oid))) { + if (matched && _qry_and_or_match(coll, q, &oid, sizeof (oid))) { JBQREGREC(&oid, sizeof (oid), TCXSTRPTR(q->bsbuf), TCXSTRSIZE(q->bsbuf)); } } @@ -3390,7 +3387,7 @@ static TCLIST* _qryexecute(EJCOLL *coll, const EJQ *_q, uint32_t *outcount, int while ((all || count < max) && (kbuf = tcbdbcurkey3(cur, &kbufsz)) != NULL) { if (trim) kbufsz -= 3; vbuf = tcbdbcurval3(cur, &vbufsz); - if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_$and_$or_match(coll, q, vbuf, vbufsz)) { + if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_and_or_match(coll, q, vbuf, vbufsz)) { JBQREGREC(vbuf, vbufsz, TCXSTRPTR(q->bsbuf), TCXSTRSIZE(q->bsbuf)); } if (mqf->order >= 0) { @@ -3410,7 +3407,7 @@ static TCLIST* _qryexecute(EJCOLL *coll, const EJQ *_q, uint32_t *outcount, int if (trim) kbufsz -= 3; if (kbufsz == exprsz && !memcmp(kbuf, expr, exprsz)) { vbuf = tcbdbcurval3(cur, &vbufsz); - if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_$and_$or_match(coll, q, vbuf, vbufsz)) { + if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_and_or_match(coll, q, vbuf, vbufsz)) { JBQREGREC(vbuf, vbufsz, TCXSTRPTR(q->bsbuf), TCXSTRSIZE(q->bsbuf)); } } else { @@ -3429,7 +3426,7 @@ static TCLIST* _qryexecute(EJCOLL *coll, const EJQ *_q, uint32_t *outcount, int if (trim) kbufsz -= 3; if (kbufsz >= exprsz && !memcmp(kbuf, expr, exprsz)) { vbuf = tcbdbcurval3(cur, &vbufsz); - if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_$and_$or_match(coll, q, vbuf, vbufsz)) { + if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_and_or_match(coll, q, vbuf, vbufsz)) { JBQREGREC(vbuf, vbufsz, TCXSTRPTR(q->bsbuf), TCXSTRSIZE(q->bsbuf)); } } else { @@ -3465,7 +3462,7 @@ static TCLIST* _qryexecute(EJCOLL *coll, const EJQ *_q, uint32_t *outcount, int if (trim) kbufsz -= 3; if (kbufsz >= tsiz && !memcmp(kbuf, token, tsiz)) { vbuf = tcbdbcurval3(cur, &vbufsz); - if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_$and_$or_match(coll, q, vbuf, vbufsz)) { + if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_and_or_match(coll, q, vbuf, vbufsz)) { JBQREGREC(vbuf, vbufsz, TCXSTRPTR(q->bsbuf), TCXSTRSIZE(q->bsbuf)); } } else { @@ -3502,7 +3499,7 @@ static TCLIST* _qryexecute(EJCOLL *coll, const EJQ *_q, uint32_t *outcount, int if (trim) kbufsz -= 3; if (kbufsz == tsiz && !memcmp(kbuf, token, tsiz)) { vbuf = tcbdbcurval3(cur, &vbufsz); - if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_$and_$or_match(coll, q, vbuf, vbufsz)) { + if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_and_or_match(coll, q, vbuf, vbufsz)) { JBQREGREC(vbuf, vbufsz, TCXSTRPTR(q->bsbuf), TCXSTRSIZE(q->bsbuf)); } } else { @@ -3523,7 +3520,7 @@ static TCLIST* _qryexecute(EJCOLL *coll, const EJQ *_q, uint32_t *outcount, int while ((all || count < max) && (kbuf = tcbdbcurkey3(cur, &kbufsz)) != NULL) { if (_nucmp(&num, kbuf, mqf->ftype) == 0) { vbuf = tcbdbcurval3(cur, &vbufsz); - if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_$and_$or_match(coll, q, vbuf, vbufsz)) { + if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_and_or_match(coll, q, vbuf, vbufsz)) { JBQREGREC(vbuf, vbufsz, TCXSTRPTR(q->bsbuf), TCXSTRSIZE(q->bsbuf)); } } else { @@ -3549,7 +3546,7 @@ static TCLIST* _qryexecute(EJCOLL *coll, const EJQ *_q, uint32_t *outcount, int if (cmp < 0) break; if (cmp > 0 || (mqf->tcop == TDBQCNUMGE && cmp >= 0)) { vbuf = tcbdbcurval3(cur, &vbufsz); - if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_$and_$or_match(coll, q, vbuf, vbufsz)) { + if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_and_or_match(coll, q, vbuf, vbufsz)) { JBQREGREC(vbuf, vbufsz, TCXSTRPTR(q->bsbuf), TCXSTRSIZE(q->bsbuf)); } } @@ -3563,7 +3560,7 @@ static TCLIST* _qryexecute(EJCOLL *coll, const EJQ *_q, uint32_t *outcount, int int cmp = _nucmp2(&knum, &xnum, mqf->ftype); if (cmp > 0 || (mqf->tcop == TDBQCNUMGE && cmp >= 0)) { vbuf = tcbdbcurval3(cur, &vbufsz); - if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_$and_$or_match(coll, q, vbuf, vbufsz)) { + if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_and_or_match(coll, q, vbuf, vbufsz)) { JBQREGREC(vbuf, vbufsz, TCXSTRPTR(q->bsbuf), TCXSTRSIZE(q->bsbuf)); } } @@ -3588,7 +3585,7 @@ static TCLIST* _qryexecute(EJCOLL *coll, const EJQ *_q, uint32_t *outcount, int if (cmp > 0) break; if (cmp < 0 || (cmp <= 0 && mqf->tcop == TDBQCNUMLE)) { vbuf = tcbdbcurval3(cur, &vbufsz); - if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_$and_$or_match(coll, q, vbuf, vbufsz)) { + if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_and_or_match(coll, q, vbuf, vbufsz)) { JBQREGREC(vbuf, vbufsz, TCXSTRPTR(q->bsbuf), TCXSTRSIZE(q->bsbuf)); } } @@ -3602,7 +3599,7 @@ static TCLIST* _qryexecute(EJCOLL *coll, const EJQ *_q, uint32_t *outcount, int int cmp = _nucmp2(&knum, &xnum, mqf->ftype); if (cmp < 0 || (cmp <= 0 && mqf->tcop == TDBQCNUMLE)) { vbuf = tcbdbcurval3(cur, &vbufsz); - if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_$and_$or_match(coll, q, vbuf, vbufsz)) { + if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_and_or_match(coll, q, vbuf, vbufsz)) { JBQREGREC(vbuf, vbufsz, TCXSTRPTR(q->bsbuf), TCXSTRSIZE(q->bsbuf)); } } @@ -3632,7 +3629,7 @@ static TCLIST* _qryexecute(EJCOLL *coll, const EJQ *_q, uint32_t *outcount, int while ((all || count < max) && (kbuf = tcbdbcurkey3(cur, &kbufsz)) != NULL) { if (tcatof2(kbuf) > upper) break; vbuf = tcbdbcurval3(cur, &vbufsz); - if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_$and_$or_match(coll, q, vbuf, vbufsz)) { + if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_and_or_match(coll, q, vbuf, vbufsz)) { JBQREGREC(vbuf, vbufsz, TCXSTRPTR(q->bsbuf), TCXSTRSIZE(q->bsbuf)); } tcbdbcurnext(cur); @@ -3668,7 +3665,7 @@ static TCLIST* _qryexecute(EJCOLL *coll, const EJQ *_q, uint32_t *outcount, int while ((all || count < max) && (kbuf = tcbdbcurkey3(cur, &kbufsz)) != NULL) { if (tcatof2(kbuf) == xnum) { vbuf = tcbdbcurval3(cur, &vbufsz); - if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_$and_$or_match(coll, q, vbuf, vbufsz)) { + if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, vbuf, vbufsz) && _qry_and_or_match(coll, q, vbuf, vbufsz)) { JBQREGREC(vbuf, vbufsz, TCXSTRPTR(q->bsbuf), TCXSTRSIZE(q->bsbuf)); } } else { @@ -3704,7 +3701,7 @@ static TCLIST* _qryexecute(EJCOLL *coll, const EJQ *_q, uint32_t *outcount, int TCMAP *tres = tctdbidxgetbytokens(coll->tdb, midx, tokens, mqf->tcop, log); tcmapiterinit(tres); while ((all || count < max) && (kbuf = tcmapiternext(tres, &kbufsz)) != NULL) { - if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, kbuf, kbufsz) && _qry_$and_$or_match(coll, q, kbuf, kbufsz)) { + if (_qryallcondsmatch(q, anum, coll, qfs, qfsz, kbuf, kbufsz) && _qry_and_or_match(coll, q, kbuf, kbufsz)) { JBQREGREC(kbuf, kbufsz, TCXSTRPTR(q->bsbuf), TCXSTRSIZE(q->bsbuf)); } } @@ -3766,7 +3763,7 @@ fullscan: /* Full scan */ break; } } - if (matched && _qry_$and_$or_match(coll, q, TCXSTRPTR(skbuf), TCXSTRSIZE(skbuf))) { + if (matched && _qry_and_or_match(coll, q, TCXSTRPTR(skbuf), TCXSTRSIZE(skbuf))) { if (updkeys) { //we are in updating mode if (tcmapputkeep(updkeys, TCXSTRPTR(skbuf), TCXSTRSIZE(skbuf), &yes, sizeof (yes))) { JBQREGREC(TCXSTRPTR(skbuf), TCXSTRSIZE(skbuf), TCXSTRPTR(q->bsbuf), TCXSTRSIZE(q->bsbuf)); @@ -4030,7 +4027,7 @@ static bool _qrypreprocess(_QRYCTX *ctx) { EJQF **qfp = TCLISTVALPTR(alist, i); q->allqfields[i] = *qfp; //*EJQF } - q->allqfields[TCLISTNUM(alist)] = '\0'; + q->allqfields[TCLISTNUM(alist)] = NULL; tclistdel(alist); alist = NULL; @@ -4132,10 +4129,10 @@ static bool _qrypreprocess(_QRYCTX *ctx) { int j; for (j = 0; *(key + j) != '\0' && *(key + j) == *(qf->fpath + j); ++j); if (key + j == pptr || key + j == pptr + 1) { //existing QF matched the $(projection) prefix - if (!q->$ifields) { - q->$ifields = tcmapnew2(TCMAPTINYBNUM); + if (!q->ifields) { + q->ifields = tcmapnew2(TCMAPTINYBNUM); } - tcmapput(q->$ifields, qf->fpath, qf->fpathsz, key, strlen(key)); + tcmapput(q->ifields, qf->fpath, qf->fpathsz, key, strlen(key)); break; } } @@ -4263,11 +4260,11 @@ static bool _qrypreprocess(_QRYCTX *ctx) { ctx->mqf = oqf; } - if (q->flags & EJQHAS$UQUERY) { //check update $(query) projection then sync inter-qf refs #91 + if (q->flags & EJQHASUQUERY) { //check update $(query) projection then sync inter-qf refs #91 for (int i = 0; *(q->allqfields + i) != '\0'; ++i) { EJQF *qf = q->allqfields[i]; - if (!qf->$ufields) continue; - TCLIST *uflist = qf->$ufields; + if (!qf->ufields) continue; + TCLIST *uflist = qf->ufields; for (int j = 0; j < TCLISTNUM(uflist); ++j) { const char *ukey = TCLISTVALPTR(uflist, j); char *pptr = strstr(ukey, ".$"); @@ -4280,15 +4277,15 @@ static bool _qrypreprocess(_QRYCTX *ctx) { } for (l = 0; *(ukey + l) != '\0' && *(ukey + l) == *(kqf->fpath + l); ++l); if (ukey + l == pptr || ukey + l == pptr + 1) { //existing QF matched the $(query) prefix - if (!kqf->$uslots) { - kqf->$uslots = tclistnew2(TCLISTINYNUM); + if (!kqf->uslots) { + kqf->uslots = tclistnew2(TCLISTINYNUM); } USLOT uslot = { .mpos = -1, .dpos = (pptr - ukey), .op = ukey }; - tclistpush(kqf->$uslots, &uslot, sizeof(uslot)); + tclistpush(kqf->uslots, &uslot, sizeof(uslot)); } } } @@ -4486,11 +4483,11 @@ static void _delqfdata(const EJQ *q, const EJQF *qf) { if (qf->updateobj) { bson_del(qf->updateobj); } - if (qf->$ufields) { - tclistdel(qf->$ufields); + if (qf->ufields) { + tclistdel(qf->ufields); } - if (qf->$uslots) { - tclistdel(qf->$uslots); + if (qf->uslots) { + tclistdel(qf->uslots); } if (qf->regex && !(EJQINTERNAL & q->flags)) { //We do not clear regex_t data because it not deep copy in internal queries @@ -4839,12 +4836,12 @@ static int _parse_qobj_impl(EJDB *jb, EJQ *q, bson_iterator *it, TCLIST *qlist, if (dc != 1) { //More than one '$' chars in projection, it is invalid continue; } - // Now just store only [$(query) key] into the qf->$ufields - if (!qf.$ufields) { - qf.$ufields = tclistnew2(TCLISTINYNUM); + // Now just store only [$(query) key] into the qf->ufields + if (!qf.ufields) { + qf.ufields = tclistnew2(TCLISTINYNUM); } - q->flags |= EJQHAS$UQUERY; - tclistpush(qf.$ufields, ukey, strlen(ukey)); + q->flags |= EJQHASUQUERY; + tclistpush(qf.ufields, ukey, strlen(ukey)); } } bson_append_field_from_iterator(&sit, qf.updateobj); @@ -5549,4 +5546,4 @@ static bool _qrycondcheckstror(const char *vbuf, const TCLIST *tokens) { } } return false; -} \ No newline at end of file +} diff --git a/tcejdb/src/ejdb/ejdb_private.h b/tcejdb/src/ejdb/ejdb_private.h index fc5f454..206ac51 100644 --- a/tcejdb/src/ejdb/ejdb_private.h +++ b/tcejdb/src/ejdb/ejdb_private.h @@ -79,7 +79,7 @@ enum { /**> Query flags */ EJQUPDATING = 1 << 1, /**> Query in updating mode */ EJQDROPALL = 1 << 2, /**> Drop bson object if matched */ EJQONLYCOUNT = 1 << 3, /**> Only count mode */ - EJQHAS$UQUERY = 1 << 4 /**> It means the query contains update $(query) fields #91 */ + EJQHASUQUERY = 1 << 4 /**> It means the query contains update $(query) fields #91 */ }; typedef struct { /**> $(query) matchin slot used in update $ placeholder processing. #91 */ @@ -112,8 +112,8 @@ struct EJQF { /**> Matching field and status */ EJQ *q; /**> Query object in which this field embedded */ double exprdblval; /**> Double value representation */ int64_t exprlongval; /**> Integer value represeintation */ - TCLIST *$ufields; /**> Update $(query) prositional fields #91 */ - TCLIST *$uslots; /**> $(query) matching slots USLOT #91 */ + TCLIST *ufields; /**> Update $(query) prositional fields #91 */ + TCLIST *uslots; /**> $(query) matching slots USLOT #91 */ }; typedef struct EJQF EJQF; @@ -126,7 +126,7 @@ struct EJQ { /**> Query object. */ * Mapping EJQF fpath => $(projection) field name * http://docs.mongodb.org/manual/reference/projection/positional/#proj._S_ */ - TCMAP *$ifields; + TCMAP *ifields; uint32_t skip; /**> Number of records to skip. */ uint32_t max; /**> Max number of results */ uint32_t flags; /**> Control flags */ diff --git a/tcejdb/src/generated/basedefs.h b/tcejdb/src/generated/basedefs.h deleted file mode 100644 index f59b271..0000000 --- a/tcejdb/src/generated/basedefs.h +++ /dev/null @@ -1,66 +0,0 @@ -/************************************************************************************************* - * The abstract database API of EJDB - * Copyright (C) 2012-2015 Softmotions Ltd - * This file is part of EJDB. - * EJDB is free software; you can redistribute it and/or modify it under the terms of - * the GNU Lesser General Public License as published by the Free Software Foundation; either - * version 2.1 of the License or any later version. EJDB is distributed in the hope - * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * You should have received a copy of the GNU Lesser General Public License along with Tokyo - * Cabinet; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA. - *************************************************************************************************/ - -#ifndef BASEDEFS_H -#define BASEDEFS_H - -#define EJDB_VERSION "1.2.0" -#define EJDB_VERSION_MAJOR 1 -#define EJDB_VERSION_MINOR 2 -#define EJDB_VERSION_PATCH 0 - -#ifdef __cplusplus -#define EJDB_EXTERN_C_START extern "C" { -#define EJDB_EXTERN_C_END } -#else -#define EJDB_EXTERN_C_START -#define EJDB_EXTERN_C_END -#endif - -EJDB_EXTERN_C_START - -#ifdef __GNUC__ -#define EJDB_INLINE static inline -#else -#define EJDB_INLINE static -#endif - -#ifdef _WIN32 -#ifdef EJDB_DLL -#define EJDB_EXPORT __declspec(dllexport) -#elif !defined(EJDB_STATIC) -#define EJDB_EXPORT __declspec(dllimport) -#else -#define EJDB_EXPORT -#endif -#else -#define EJDB_EXPORT -#endif - -#ifdef _WIN32 -#include -#define INVALIDHANDLE(_HNDL) (((_HNDL) == INVALID_HANDLE_VALUE) || (_HNDL) == NULL) -#else -typedef int HANDLE; -#define INVALID_HANDLE_VALUE (-1) -#define INVALIDHANDLE(_HNDL) ((_HNDL) < 0 || (_HNDL) == UINT16_MAX) -#endif - -#define JDBIDKEYNAME "_id" /**> Name of PK _id field in BSONs */ -#define JDBIDKEYNAMEL 3 - -EJDB_EXTERN_C_END -#endif /* BASEDEFS_H */ - diff --git a/tcejdb/src/generated/myconf.h b/tcejdb/src/generated/myconf.h deleted file mode 100644 index 106d803..0000000 --- a/tcejdb/src/generated/myconf.h +++ /dev/null @@ -1,552 +0,0 @@ -/************************************************************************************************* - * System-dependent configurations of Tokyo Cabinet - * Copyright (C) 2006-2012 FAL Labs - * Copyright (C) 2012-2015 Softmotions Ltd - * This file is part of Tokyo Cabinet. - * Tokyo Cabinet is free software; you can redistribute it and/or modify it under the terms of - * the GNU Lesser General Public License as published by the Free Software Foundation; either - * version 2.1 of the License or any later version. Tokyo Cabinet is distributed in the hope - * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * You should have received a copy of the GNU Lesser General Public License along with Tokyo - * Cabinet; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA. - *************************************************************************************************/ - - -#ifndef _MYCONF_H // duplication check -#define _MYCONF_H - -#include "basedefs.h" - -/************************************************************************************************* - * system discrimination - *************************************************************************************************/ - - -#if defined(__linux__) - -#define _SYS_LINUX_ -#define TCSYSNAME "Linux" - -#elif defined(__FreeBSD__) - -#define _SYS_FREEBSD_ -#define TCSYSNAME "FreeBSD" - -#elif defined(__NetBSD__) - -#define _SYS_NETBSD_ -#define TCSYSNAME "NetBSD" - -#elif defined(__OpenBSD__) - -#define _SYS_OPENBSD_ -#define TCSYSNAME "OpenBSD" - -#elif defined(__sun__) || defined(__sun) - -#define _SYS_SUNOS_ -#define TCSYSNAME "SunOS" - -#elif defined(__hpux) - -#define _SYS_HPUX_ -#define TCSYSNAME "HP-UX" - -#elif defined(__osf) - -#define _SYS_TRU64_ -#define TCSYSNAME "Tru64" - -#elif defined(_AIX) - -#define _SYS_AIX_ -#define TCSYSNAME "AIX" - -#elif defined(__APPLE__) && defined(__MACH__) - -#define _SYS_MACOSX_ -#define TCSYSNAME "Mac OS X" - -#elif defined(_MSC_VER) - -#define _SYS_MSVC_ -#define TCSYSNAME "Windows (VC++)" - -#elif defined(_WIN32) - -#define _SYS_MINGW_ -#define TCSYSNAME "Windows (MinGW)" - -#elif defined(__CYGWIN__) - -#define _SYS_CYGWIN_ -#define TCSYSNAME "Windows (Cygwin)" - -#else - -#define _SYS_GENERIC_ -#define TCSYSNAME "Generic" - -#endif - -/* String containing the version information. */ -extern EJDB_EXPORT const char *tcversion; - -/************************************************************************************************* - * common settings - *************************************************************************************************/ - - -#if defined(NDEBUG) -#define TCDODEBUG(TC_expr) \ - do { \ - } while(false) -#else -#define TCDODEBUG(TC_expr) \ - do { \ - TC_expr; \ - } while(false) -#endif - -#define TCSWAB16(TC_num) \ - ( \ - ((TC_num & 0x00ffU) << 8) | \ - ((TC_num & 0xff00U) >> 8) \ - ) - -#define TCSWAB32(TC_num) \ - ( \ - ((TC_num & 0x000000ffUL) << 24) | \ - ((TC_num & 0x0000ff00UL) << 8) | \ - ((TC_num & 0x00ff0000UL) >> 8) | \ - ((TC_num & 0xff000000UL) >> 24) \ - ) - -#define TCSWAB64(TC_num) \ - ( \ - ((TC_num & 0x00000000000000ffULL) << 56) | \ - ((TC_num & 0x000000000000ff00ULL) << 40) | \ - ((TC_num & 0x0000000000ff0000ULL) << 24) | \ - ((TC_num & 0x00000000ff000000ULL) << 8) | \ - ((TC_num & 0x000000ff00000000ULL) >> 8) | \ - ((TC_num & 0x0000ff0000000000ULL) >> 24) | \ - ((TC_num & 0x00ff000000000000ULL) >> 40) | \ - ((TC_num & 0xff00000000000000ULL) >> 56) \ - ) - -#if defined(_MYBIGEND) || defined(_MYSWAB) -#define TCBIGEND 1 -#define TCHTOIS(TC_num) TCSWAB16(TC_num) -#define TCHTOIL(TC_num) TCSWAB32(TC_num) -#define TCHTOILL(TC_num) TCSWAB64(TC_num) -#define TCITOHS(TC_num) TCSWAB16(TC_num) -#define TCITOHL(TC_num) TCSWAB32(TC_num) -#define TCITOHLL(TC_num) TCSWAB64(TC_num) -#else -#define TCBIGEND 0 -#define TCHTOIS(TC_num) (TC_num) -#define TCHTOIL(TC_num) (TC_num) -#define TCHTOILL(TC_num) (TC_num) -#define TCITOHS(TC_num) (TC_num) -#define TCITOHL(TC_num) (TC_num) -#define TCITOHLL(TC_num) (TC_num) -#endif - -#if defined(_MYNOUBC) || defined(__hppa__) -#define TCUBCACHE 0 -#elif defined(_SYS_LINUX_) || defined(_SYS_FREEBSD_) || defined(_SYS_NETBSD_) || \ - defined(_SYS_MACOSX_) || defined(_SYS_SUNOS_) || defined(_WIN32) -#define TCUBCACHE 1 -#else -#define TCUBCACHE 0 -#endif - -#if defined(_MYNOZLIB) -#define TCUSEZLIB 0 -#else -#define TCUSEZLIB 1 -#endif - -#if defined(_MYBZIP) -#define TCUSEBZIP 1 -#else -#define TCUSEBZIP 0 -#endif - -#if defined(_MYEXLZMA) -#define TCUSEEXLZMA 1 -#else -#define TCUSEEXLZMA 0 -#endif - -#if defined(_MYEXLZO) -#define TCUSEEXLZO 1 -#else -#define TCUSEEXLZO 0 -#endif - -#if defined(_MYMICROYIELD) -#define TCMICROYIELD 1 -#else -#define TCMICROYIELD 0 -#endif - -#define MYMALLOC malloc -#define MYCALLOC calloc -#define MYREALLOC realloc -#define MYFREE free - -/************************************************************************************************* - * general headers - *************************************************************************************************/ - - -#ifdef _WIN32 -#include -#include "win32/platform.h" -#define GET_STDOUT_HANDLE() GetStdHandle(STD_OUTPUT_HANDLE) -#define GET_STDERR_HANDLE() GetStdHandle(STD_ERROR_HANDLE) -#define GET_STDIN_HANDLE() GetStdHandle(STD_INPUT_HANDLE) -#define CLOSEFH(_fd) (CloseHandle(_fd)) -#else -#if defined(__unix) || defined(__APPLE__) -#include "nix/platform.h" -#endif -#include -#include -#include -#include -#include -#include -#define GET_STDOUT_HANDLE() (1) -#define GET_STDERR_HANDLE() (2) -#define GET_STDIN_HANDLE() (0) -#define CLOSEFH(_fd) (closefd(_fd)) -#define sysconf_SC_CLK_TCK sysconf(_SC_CLK_TCK) -#endif - -#define CLOSEFH2(_fd) \ - do { \ - CLOSEFH(_fd); \ - (_fd) = INVALID_HANDLE_VALUE; \ - } while(0) - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include - -#if defined(_POSIX_PRIORITY_SCHEDULING) -#include -#endif - -/************************************************************************************************* - * miscellaneous hacks - *************************************************************************************************/ - - -#if defined(__GNUC__) -#define _alignof(TC_a) ((size_t)__alignof__(TC_a)) -#else -#define _alignof(TC_a) sizeof(TC_a) -#endif -#define _issigned(TC_a) ((TC_a)-1 < 1 ? true : false) -#define _maxof(TC_a) \ - ((TC_a)(sizeof(TC_a) == sizeof(int64_t) ? _issigned(TC_a) ? INT64_MAX : UINT64_MAX : \ - sizeof(TC_a) == sizeof(int32_t) ? _issigned(TC_a) ? INT32_MAX : UINT32_MAX : \ - sizeof(TC_a) == sizeof(int16_t) ? _issigned(TC_a) ? INT16_MAX : UINT16_MAX : \ - _issigned(TC_a) ? INT8_MAX : UINT8_MAX)) - -#if defined(_SYS_FREEBSD_) || defined(_SYS_NETBSD_) || defined(_SYS_OPENBSD_) -#define nan(TC_a) strtod("nan", NULL) -#define nanl(TC_a) ((long double)strtod("nan", NULL)) -#endif - -#if ! defined(PATH_MAX) -#if defined(MAXPATHLEN) -#define PATH_MAX MAXPATHLEN -#else -#define PATH_MAX 4096 -#endif -#endif -#if ! defined(NAME_MAX) -#define NAME_MAX 255 -#endif - -extern int _tc_dummy_cnt; - -int _tc_dummyfunc(void); - -int _tc_dummyfuncv(int a, ...); - -/* MAX and MIN are defined in a really funky place in Solaris. */ -#ifndef MIN -#define MIN(a, b) ((a) < (b) ? (a) : (b)) -#endif - -#ifndef MAX -#define MAX(a, b) ((a) > (b) ? (a) : (b)) -#endif - -/************************************************************************************************* - * notation of filesystems - *************************************************************************************************/ - -#ifdef _WIN32 -#define MYPATHCHR '\\' -#define MYPATHSTR "\\" -#else -#define MYPATHCHR '/' -#define MYPATHSTR "/" -#endif - -#define MYEXTCHR '.' -#define MYEXTSTR "." -#define MYCDIRSTR "." -#define MYPDIRSTR ".." - - - -/************************************************************************************************* - * for ZLIB - *************************************************************************************************/ - - -enum { - _TCZMZLIB, - _TCZMRAW, - _TCZMGZIP -}; - - -extern char *(*_tc_deflate)(const char *, int, int *, int); - -extern char *(*_tc_inflate)(const char *, int, int *, int); - -extern unsigned int (*_tc_getcrc)(const char *, int); - - - -/************************************************************************************************* - * for BZIP2 - *************************************************************************************************/ - - -extern char *(*_tc_bzcompress)(const char *, int, int *); - -extern char *(*_tc_bzdecompress)(const char *, int, int *); - - - -/************************************************************************************************* - * for test of custom codec functions - *************************************************************************************************/ - - -void *_tc_recencode(const void *ptr, int size, int *sp, void *op); - -void *_tc_recdecode(const void *ptr, int size, int *sp, void *op); - -#if TCMICROYIELD -#define TCTESTYIELD() \ - do { \ - if(((++_tc_dummy_cnt) & (0x20 - 1)) == 0){ \ - sched_yield(); \ - if(_tc_dummy_cnt > 0x1000) _tc_dummy_cnt = (uint32_t)time(NULL) % 0x1000; \ - } \ - } while(false) -#undef assert -#define assert(TC_expr) \ - do { \ - if(!(TC_expr)){ \ - fprintf(stderr, "assertion failed: %s\n", #TC_expr); \ - abort(); \ - } \ - TCTESTYIELD(); \ - } while(false) -#define if(TC_cond) \ - if((((++_tc_dummy_cnt) & (0x100 - 1)) != 0 || (sched_yield() * 0) == 0) && (TC_cond)) -#define while(TC_cond) \ - while((((++_tc_dummy_cnt) & (0x100 - 1)) != 0 || (sched_yield() * 0) == 0) && (TC_cond)) -#else -#define TCTESTYIELD() \ - do { \ - } while(false) -#endif - -#ifndef _POSIX_PRIORITY_SCHEDULING -#define sched_yield() usleep(1000 * 20) -#endif - - - -/************************************************************************************************* - * utilities for implementation - *************************************************************************************************/ - - -#define TCNUMBUFSIZ 32 // size of a buffer for a number - -/* set a buffer for a variable length number */ -#define TCSETVNUMBUF(TC_len, TC_buf, TC_num) \ - do { \ - int _TC_num = (TC_num); \ - if(_TC_num == 0){ \ - ((signed char *)(TC_buf))[0] = 0; \ - (TC_len) = 1; \ - } else { \ - (TC_len) = 0; \ - while(_TC_num > 0){ \ - int _TC_rem = _TC_num & 0x7f; \ - _TC_num >>= 7; \ - if(_TC_num > 0){ \ - ((signed char *)(TC_buf))[(TC_len)] = -_TC_rem - 1; \ - } else { \ - ((signed char *)(TC_buf))[(TC_len)] = _TC_rem; \ - } \ - (TC_len)++; \ - } \ - } \ - } while(false) - -/* set a buffer for a variable length number of 64-bit */ -#define TCSETVNUMBUF64(TC_len, TC_buf, TC_num) \ - do { \ - long long int _TC_num = (TC_num); \ - if(_TC_num == 0){ \ - ((signed char *)(TC_buf))[0] = 0; \ - (TC_len) = 1; \ - } else { \ - (TC_len) = 0; \ - while(_TC_num > 0){ \ - int _TC_rem = _TC_num & 0x7f; \ - _TC_num >>= 7; \ - if(_TC_num > 0){ \ - ((signed char *)(TC_buf))[(TC_len)] = -_TC_rem - 1; \ - } else { \ - ((signed char *)(TC_buf))[(TC_len)] = _TC_rem; \ - } \ - (TC_len)++; \ - } \ - } \ - } while(false) - -/* read a variable length buffer */ -#define TCREADVNUMBUF(TC_buf, TC_num, TC_step) \ - do { \ - TC_num = 0; \ - int _TC_base = 1; \ - int _TC_i = 0; \ - while(true){ \ - if(((signed char *)(TC_buf))[_TC_i] >= 0){ \ - TC_num += ((signed char *)(TC_buf))[_TC_i] * _TC_base; \ - break; \ - } \ - TC_num += _TC_base * (((signed char *)(TC_buf))[_TC_i] + 1) * -1; \ - _TC_base <<= 7; \ - _TC_i++; \ - } \ - (TC_step) = _TC_i + 1; \ - } while(false) - -/* read a variable length buffer */ -#define TCREADVNUMBUF64(TC_buf, TC_num, TC_step) \ - do { \ - TC_num = 0; \ - long long int _TC_base = 1; \ - int _TC_i = 0; \ - while(true){ \ - if(((signed char *)(TC_buf))[_TC_i] >= 0){ \ - TC_num += ((signed char *)(TC_buf))[_TC_i] * _TC_base; \ - break; \ - } \ - TC_num += _TC_base * (((signed char *)(TC_buf))[_TC_i] + 1) * -1; \ - _TC_base <<= 7; \ - _TC_i++; \ - } \ - (TC_step) = _TC_i + 1; \ - } while(false) - -/* calculate the size of a buffer for a variable length number */ -#define TCCALCVNUMSIZE(TC_num) \ - ((TC_num) < 0x80 ? 1 : (TC_num) < 0x4000 ? 2 : (TC_num) < 0x200000 ? 3 : \ - (TC_num) < 0x10000000 ? 4 : 5) - -#define TCCMPLEXICAL(TC_rv, TC_aptr, TC_asiz, TC_bptr, TC_bsiz) \ - do { \ - (TC_rv) = 0; \ - int _TC_min = (TC_asiz) < (TC_bsiz) ? (TC_asiz) : (TC_bsiz); \ - for(int _TC_i = 0; _TC_i < _TC_min; _TC_i++){ \ - if(((unsigned char *)(TC_aptr))[_TC_i] != ((unsigned char *)(TC_bptr))[_TC_i]){ \ - (TC_rv) = ((unsigned char *)(TC_aptr))[_TC_i] - ((unsigned char *)(TC_bptr))[_TC_i]; \ - break; \ - } \ - } \ - if((TC_rv) == 0) (TC_rv) = (TC_asiz) - (TC_bsiz); \ - } while(false) - - - - -/************************************************************************************************* - * atomics - *************************************************************************************************/ - -#if !defined(__GNUC__) || \ - ((__GNUC__ - 0) * 100 + (__GNUC_MINOR__ - 0)) < 407 || \ - defined(__INTEL_COMPILER) || defined(__clang__) -#define __atomic_load_n(ptr,order) *(ptr) -#define __atomic_store_n(ptr,val,order) (*(ptr) = (val), (void)0) -#define __atomic_exchange_n(ptr,val,order) __sync_lock_test_and_set(ptr, val) -#define __atomic_compare_exchange_n(ptr,expected,desired,weak,order1,order2) \ - __sync_bool_compare_and_swap(ptr, *(expected), desired) ? 1 : \ - (*(expected) = *(ptr), 0) - -#define __atomic_add_fetch(ptr,val,order) __sync_add_and_fetch(ptr, val) -#define __atomic_sub_fetch(ptr,val,order) __sync_sub_and_fetch(ptr, val) -#define __atomic_or_fetch(ptr,val,order) __sync_or_and_fetch(ptr, val) -#define __atomic_and_fetch(ptr,val,order) __sync_and_and_fetch(ptr, val) -#define __atomic_xor_fetch(ptr,val,order) __sync_xor_and_fetch(ptr, val) -#define __atomic_nand_fetch(ptr,val,order) __sync_nand_and_fetch(ptr, val) - -#define __atomic_fetch_add(ptr,val,order) __sync_fetch_and_add(ptr, val) -#define __atomic_fetch_sub(ptr,val,order) __sync_fetch_and_sub(ptr, val) -#define __atomic_fetch_or(ptr,val,order) __sync_fetch_and_or(ptr, val) -#define __atomic_fetch_and(ptr,val,order) __sync_fetch_and_and(ptr, val) -#define __atomic_fetch_xor(ptr,val,order) __sync_fetch_and_xor(ptr, val) -#define __atomic_fetch_nand(ptr,val,order) __sync_fetch_and_nand(ptr, val) -#endif - -#define TCAS(ptr, expected, desired) __sync_bool_compare_and_swap(ptr, expected, desired) - -#endif // duplication check - -// END OF FILE diff --git a/tcejdb/src/myconf.h.in b/tcejdb/src/myconf.h.in index 106d803..3423552 100644 --- a/tcejdb/src/myconf.h.in +++ b/tcejdb/src/myconf.h.in @@ -18,6 +18,12 @@ #ifndef _MYCONF_H // duplication check #define _MYCONF_H +#if ( (defined(__clang__) && ((__clang_major__ - 0) * 100 + (__clang_minor__ - 0)) < 302) || \ + (!defined(__clang__) && defined(__GNUC__) && ((__GNUC__ - 0) * 100 + (__GNUC_MINOR__ - 0)) < 407) || \ + (!defined(__GNUC__) && !defined(__clang__)) ) +#error You are using an unsupported compiler! EJDB has only been tested with Clang >= 3.2 and GCC >= 4.7 +#endif + #include "basedefs.h" /************************************************************************************************* @@ -514,15 +520,13 @@ void *_tc_recdecode(const void *ptr, int size, int *sp, void *op); } while(false) - - /************************************************************************************************* * atomics *************************************************************************************************/ + +#define TCAS(ptr, expected, desired) __sync_bool_compare_and_swap(ptr, expected, desired) -#if !defined(__GNUC__) || \ - ((__GNUC__ - 0) * 100 + (__GNUC_MINOR__ - 0)) < 407 || \ - defined(__INTEL_COMPILER) || defined(__clang__) +/* #define __atomic_load_n(ptr,order) *(ptr) #define __atomic_store_n(ptr,val,order) (*(ptr) = (val), (void)0) #define __atomic_exchange_n(ptr,val,order) __sync_lock_test_and_set(ptr, val) @@ -543,9 +547,8 @@ void *_tc_recdecode(const void *ptr, int size, int *sp, void *op); #define __atomic_fetch_and(ptr,val,order) __sync_fetch_and_and(ptr, val) #define __atomic_fetch_xor(ptr,val,order) __sync_fetch_and_xor(ptr, val) #define __atomic_fetch_nand(ptr,val,order) __sync_fetch_and_nand(ptr, val) -#endif +*/ -#define TCAS(ptr, expected, desired) __sync_bool_compare_and_swap(ptr, expected, desired) #endif // duplication check diff --git a/tcejdb/src/tcbdb/tcbdb.c b/tcejdb/src/tcbdb/tcbdb.c index a5cf206..b088ea6 100644 --- a/tcejdb/src/tcbdb/tcbdb.c +++ b/tcejdb/src/tcbdb/tcbdb.c @@ -2886,9 +2886,7 @@ static bool tcbdbopenimpl(TCBDB *bdb, const char *path, int omode) { tchdbclose(bdb->hdb); return false; } - if (bdb->lmemb < BDBMINLMEMB || bdb->nmemb < BDBMINNMEMB || - bdb->root < 1 || bdb->first < 1 || bdb->last < 1 || - bdb->lnum < 0 || bdb->nnum < 0 || bdb->rnum < 0) { + if (bdb->lmemb < BDBMINLMEMB || bdb->nmemb < BDBMINNMEMB || bdb->root < 1 || bdb->first < 1 || bdb->last < 1) { tcbdbsetecode(bdb, TCEMETA, __FILE__, __LINE__, __func__); tcmapdel(bdb->nodec); tcmapdel(bdb->leafc); diff --git a/tcejdb/src/tcbdb/tests/CMakeLists.txt b/tcejdb/src/tcbdb/tests/CMakeLists.txt new file mode 100644 index 0000000..8823bf4 --- /dev/null +++ b/tcejdb/src/tcbdb/tests/CMakeLists.txt @@ -0,0 +1,304 @@ +link_libraries(ejdb) +set(TEST_DATA_DIR ${CMAKE_CURRENT_BINARY_DIR}) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${TEST_DATA_DIR}) + +add_executable(tcbtest tcbtest.c) +add_executable(tcbmttest tcbmttest.c) +add_dependencies(tcbtest tchmgr) +add_dependencies(tcbmttest tchmgr tchmttest) + +add_test(NAME tcbtest1 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + write casket 50000 5 5 5000 5 5) + +add_test(NAME tcbtest2 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read casket) + +add_test(NAME tcbtest3 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + remove casket) + +add_test(NAME tcbtest4 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -rb 00001000 00002000 casket) #check.out + +add_test(NAME tcbtest5 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -fm 000001 casket) #check.out + +add_test(NAME tcbtest6 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + write -mt -tl -td -ls 1024 casket 50000 5000 5000 5000 5 5) + +add_test(NAME tcbtest6_2 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read -mt -nb casket) + +add_test(NAME tcbtest7 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + remove -mt casket) + +add_test(NAME tcbtest8 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + write -tb -xm 50000 casket 50000 5 5 50000 5 5) + +add_test(NAME tcbtest9 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read -nl casket) + +add_test(NAME tcbtest10 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + remove -df 5 casket) + +add_test(NAME tcbtest11 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -lc 5 -nc 5 -df 5 -pn 500 casket 50000 5 5 5000 5 5) + +add_test(NAME tcbtest12 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -tl -td -pn 5000 casket 50000 5 5 500 5 15) + +add_test(NAME tcbtest13 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -nl -pn 5000 -rl casket 15000 5 5 500 5 5) + +add_test(NAME tcbtest14 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -ca 1000 -tb -pn 5000 casket 15000 5 5 500 5 5) + +add_test(NAME tcbtest15 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -ru -pn 500 casket 5000 5 5 500 1 1) + +add_test(NAME tcbtest16 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -cd -tl -td -ru -pn 500 casket 5000 5 5 500 1 1) + +add_test(NAME tcbtest17 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -pv casket) #check.out + +add_test(NAME tcbtest18 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + queue casket 15000 5 5) + +add_test(NAME tcbtest19 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + misc casket 5000) + +add_test(NAME tcbtest20 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + misc -tl -td casket 5000) + +add_test(NAME tcbtest21 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + misc -mt -tb casket 500) + +add_test(NAME tcbtest22 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked casket 50000) + +add_test(NAME tcbtest23 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -tl -td casket 50000) + +add_test(NAME tcbtest24 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -mt -tb casket 5000) + +add_test(NAME tcbtest25 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -tt casket 5000) + +add_test(NAME tcbtest26 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -tx casket 5000) + +add_test(NAME tcbtest27 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + write -cd -lc 5 -nc 5 casket 5000 5 5 5 5 5) + +add_test(NAME tcbtest28 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read -cd -lc 5 -nc 5 casket) + +add_test(NAME tcbtest29 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + remove -cd -lc 5 -nc 5 casket) + +add_test(NAME tcbtest30 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -pv casket) #check.out + +add_test(NAME tcbtest31 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + write -ci -td -lc 5 -nc 5 casket 5000 5 5 5 5 5) + +add_test(NAME tcbtest32 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read -ci -lc 5 -nc 5 casket) + +add_test(NAME tcbtest33 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + remove -ci -lc 5 -nc 5 casket) + +add_test(NAME tcbtest34 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -pv casket) #check.out + +add_test(NAME tcbtest35 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + write -cj -tb -lc 5 -nc 5 casket 5000 5 5 5 5 5) + +add_test(NAME tcbtest36 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read -cj -lc 5 -nc 5 casket) + +add_test(NAME tcbtest37 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + remove -cj -lc 5 -nc 5 casket) + +add_test(NAME tcbtest38 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -pv casket) #check.out + +add_test(NAME tcbtest39 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + write -df 5 -tl casket 5 5000 5 5 500 5) + +add_test(NAME tcbtest40 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read -df 5 casket 5) + +add_test(NAME tcbtest41 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read -rnd casket 5) + +add_test(NAME tcbtest42 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + remove casket 5) + +add_test(NAME tcbtest43 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -nc casket 5 5000) + +add_test(NAME tcbtest44 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -tl -td casket 5 5000) + +add_test(NAME tcbtest45 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ #review + wicked -tb casket 5 5000) + +add_test(NAME tcbtest46 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + typical -df 5 casket 5 50000 5 5) + +add_test(NAME tcbtest47 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + typical -rr 1000 casket 5 50000 5 5) + +add_test(NAME tcbtest48 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + typical -tl -nc casket 5 50000 5 5) + +add_test(NAME tcbtest49 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + race -df 5 casket 5 10000) + +add_test(NAME tcbtest50 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + create casket 4 4 3 1 1) + +add_test(NAME tcbtest51 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + inform casket) + +add_test(NAME tcbtest52 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put casket one first) + +add_test(NAME tcbtest53 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put casket two second) + +add_test(NAME tcbtest54 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dk casket three third) + +add_test(NAME tcbtest55 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dc casket three third) + +add_test(NAME tcbtest56 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dc casket three third) + +add_test(NAME tcbtest57 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dd casket three third) + +add_test(NAME tcbtest58 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dd casket three third) + +add_test(NAME tcbtest59 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put casket four fourth) + +add_test(NAME tcbtest60 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dk casket five fifth) + +add_test(NAME tcbtest61 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + out casket one) + +add_test(NAME tcbtest62 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + out casket two) + +add_test(NAME tcbtest63 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket three) #check.out + +add_test(NAME tcbtest64 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket four) #check.out + +add_test(NAME tcbtest65 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket five) #check.out + +add_test(NAME tcbtest66 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -pv casket) #check.out + +add_test(NAME tcbtest67 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -j three -pv casket) #check.out + +add_test(NAME tcbtest68 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + optimize casket) + +add_test(NAME tcbtest69 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dc casket three third) + +add_test(NAME tcbtest70 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket three) #check.out + +add_test(NAME tcbtest71 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket four) #check.out + +add_test(NAME tcbtest72 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket five) #check.out + +add_test(NAME tcbtest73 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -pv casket) #check.out diff --git a/tcejdb/src/tcbdb/tools/CMakeLists.txt b/tcejdb/src/tcbdb/tools/CMakeLists.txt new file mode 100644 index 0000000..52902ae --- /dev/null +++ b/tcejdb/src/tcbdb/tools/CMakeLists.txt @@ -0,0 +1,2 @@ +link_libraries(ejdb) +add_executable(tcbmgr tcbmgr.c) diff --git a/tcejdb/src/tcfdb/tests/CMakeLists.txt b/tcejdb/src/tcfdb/tests/CMakeLists.txt new file mode 100644 index 0000000..8ea7c5e --- /dev/null +++ b/tcejdb/src/tcfdb/tests/CMakeLists.txt @@ -0,0 +1,194 @@ +link_libraries(ejdb) +set(TEST_DATA_DIR ${CMAKE_CURRENT_BINARY_DIR}) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${TEST_DATA_DIR}) + +add_executable(tcftest tcftest.c) +add_executable(tcfmttest tcfmttest.c) + +add_dependencies(tcftest tcfmgr) +add_dependencies(tcfmttest tcfmgr) + +add_test(NAME tcftest1 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + write casket 50000 50) + +add_test(NAME tcftest2 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read casket) + +add_test(NAME tcftest3 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + remove casket) + +add_test(NAME tcftest4 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + write casket 50000 50) + +add_test(NAME tcftest5 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read -mt -nb casket) + +add_test(NAME tcftest6 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + remove -mt casket) + +add_test(NAME tcftest7 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -pn 500 casket 50000 50) + +add_test(NAME tcftest8 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -nl -pn 500 -rl casket 5000 500) + +add_test(NAME tcftest9 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -pn 500 -ru casket 5000 500) + +add_test(NAME tcftest10 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -pv casket) #check.out + +add_test(NAME tcftest11 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -pv -ri "[100,200)" -px casket) #check.out + +add_test(NAME tcftest12 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + misc casket 5000) + +add_test(NAME tcftest13 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + misc -mt -nl casket 500) + +add_test(NAME tcftest14 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked casket 50000) + +add_test(NAME tcftest15 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -mt -nb casket 50000) + +add_test(NAME tcftest16 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + write casket 5 5000 50) + +add_test(NAME tcftest17 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read casket 5) + +add_test(NAME tcftest18 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read -rnd casket 5) + +add_test(NAME tcftest19 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + remove casket 5) + +add_test(NAME tcftest20 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -nc casket 5 5000) + +add_test(NAME tcftest21 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked casket 5 5000) + +add_test(NAME tcftest22 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + typical casket 5 50000 50) + +add_test(NAME tcftest23 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + typical -rr 1000 casket 5 50000 50) + +add_test(NAME tcftest24 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + typical -nc casket 5 50000 50) + +add_test(NAME tcftest25 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + create casket 50) + +add_test(NAME tcftest26 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + inform casket) + +add_test(NAME tcftest27 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put casket 1 first) + +add_test(NAME tcftest28 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put casket 2 second) + +add_test(NAME tcftest29 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dk casket 3 third) + +add_test(NAME tcftest30 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dc casket 3 third) + +add_test(NAME tcftest31 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dc casket 3 third) + +add_test(NAME tcftest32 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dc casket 3 third) + +add_test(NAME tcftest33 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put casket 4 fourth) + +add_test(NAME tcftest34 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dk casket 5 fifth) + +add_test(NAME tcftest35 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + out casket 1) + +add_test(NAME tcftest36 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + out casket 2) + +add_test(NAME tcftest37 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket 3) #check.out + +add_test(NAME tcftest38 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket 4) #check.out + +add_test(NAME tcftest39 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket 5) #check.out + +add_test(NAME tcftest40 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -pv casket) #check.out + +add_test(NAME tcftest41 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + optimize casket 5) + +add_test(NAME tcftest42 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dc casket 3 third) + +add_test(NAME tcftest43 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket 3) #check.out + +add_test(NAME tcftest44 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket 4) #check.out + +add_test(NAME tcftest45 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket 5) #check.out + +add_test(NAME tcftest46 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -pv casket) #check.out + diff --git a/tcejdb/src/tcfdb/tools/CMakeLists.txt b/tcejdb/src/tcfdb/tools/CMakeLists.txt new file mode 100644 index 0000000..7a516bb --- /dev/null +++ b/tcejdb/src/tcfdb/tools/CMakeLists.txt @@ -0,0 +1,2 @@ +link_libraries(ejdb) +add_executable(tcfmgr tcfmgr.c) diff --git a/tcejdb/src/tchdb/tchdb.c b/tcejdb/src/tchdb/tchdb.c index 9dea335..b6290bc 100644 --- a/tcejdb/src/tchdb/tchdb.c +++ b/tcejdb/src/tchdb/tchdb.c @@ -219,8 +219,8 @@ EJDB_INLINE bool tchdbwritesmem(TCHDB *hdb, size_t off, const void *ptr, size_t EJDB_INLINE bool tchdbreadsmem(TCHDB *hdb, void *dst, size_t off, size_t sz, int opts); EJDB_INLINE bool tchdblockmethod(TCHDB *hdb, bool wr); EJDB_INLINE bool tchdbunlockmethod(TCHDB *hdb); -EJDB_INLINE bool tchdblocksmem(TCHDB *hdb, bool wr); -EJDB_INLINE bool tchdblocksmem2(TCHDB *hdb, bool wr); +EJDB_INLINE bool tchdblocksmem(TCHDB *hdb, bool wr) __attribute__((unused)); +EJDB_INLINE bool tchdblocksmem2(TCHDB *hdb, bool wr) __attribute__((unused)); EJDB_INLINE bool tchdbunlocksmem(TCHDB *hdb); EJDB_INLINE bool tchdblockrecord(TCHDB *hdb, uint8_t bidx, bool wr); EJDB_INLINE bool tchdbunlockrecord(TCHDB *hdb, uint8_t bidx); @@ -3154,6 +3154,11 @@ static bool tchdbreadrec(TCHDB *hdb, TCHREC *rec, char *rbuf) { uint32_t lnum; memcpy(&lnum, rp, sizeof (lnum)); rec->rsiz = TCITOHL(lnum); + rec->ksiz = rec->vsiz = 0; + rec->left = rec->right = 0; + rec->vbuf = rec->kbuf = NULL; + rec->boff = 0; + rec->hash = 0; return true; } else if (rec->magic != HDBMAGICREC) { tchdbsetecode(hdb, TCERHEAD, __FILE__, __LINE__, __func__); diff --git a/tcejdb/src/tchdb/tests/CMakeLists.txt b/tcejdb/src/tchdb/tests/CMakeLists.txt new file mode 100644 index 0000000..ec88d49 --- /dev/null +++ b/tcejdb/src/tchdb/tests/CMakeLists.txt @@ -0,0 +1,245 @@ +link_libraries(ejdb) +set(TEST_DATA_DIR ${CMAKE_CURRENT_BINARY_DIR}) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${TEST_DATA_DIR}) + +add_executable(tchtest tchtest.c) +add_executable(tchmttest tchmttest.c) +add_dependencies(tchtest tchmgr) +add_dependencies(tchmttest tchmgr) + +add_test(NAME tchtest1 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + write casket 50000 5000 5 5) + +add_test(NAME tchtest2 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read casket) + +add_test(NAME tchtest3 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + remove casket) + +add_test(NAME tchtest4 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + write -mt -tl -td -rc 50 -xm 500000 casket 50000 5000 5 5) + +add_test(NAME tchtest5 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read -mt -nb -rc 50 -xm 500000 casket) + +add_test(NAME tchtest6 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + remove -mt -rc 50 -xm 500000 casket) + +add_test(NAME tchtest7 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + write -as -tb -rc 50 -xm 500000 casket 50000 50000 5 5) + +add_test(NAME tchtest8 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read -nl -rc 50 -xm 500000 casket) + +add_test(NAME tchtest9 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + remove -rc 50 -xm 500000 -df 5 casket) + +add_test(NAME tchtest10 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -pn 500 -xm 50000 -df 5 casket 50000 5000 5 5) + +add_test(NAME tchtest11 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -tl -td -pn 5000 casket 50000 500 5 15) + +add_test(NAME tchtest12 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -nl -pn 500 -rl casket 5000 500 5 5) + +add_test(NAME tchtest13 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -tb -pn 500 casket 5000 500 5 5) + +add_test(NAME tchtest14 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -ru -pn 500 casket 5000 500 1 1) + +add_test(NAME tchtest15 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -tl -td -ru -pn 500 casket 5000 500 1 1) + +add_test(NAME tchtest16 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -pv casket) + +add_test(NAME tchtest17 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -pv -fm 1 -px casket) + +add_test(NAME tchtest18 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + misc casket 5000) + +add_test(NAME tchtest19 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + misc -tl -td casket 5000) + +add_test(NAME tchtest20 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + misc -mt -tb casket 500) + +add_test(NAME tchtest21 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked casket 50000) + +add_test(NAME tchtest22 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -tl -td casket 50000) + +add_test(NAME tchtest23 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -mt -tb casket 5000) + +add_test(NAME tchtest24 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -tt casket 5000) + +add_test(NAME tchtest25 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -tx casket 5000) + +add_test(NAME tchtest26 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + write -xm 500000 -df 5 -tl casket 5 5000 500 5) + +add_test(NAME tchtest27 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read -xm 500000 -df 5 casket 5) + +add_test(NAME tchtest28 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read -xm 500000 -rnd casket 5) + +add_test(NAME tchtest29 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + remove -xm 500000 casket 5) + +add_test(NAME tchtest30 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -nc casket 5 5000) + +add_test(NAME tchtest31 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -tl -td casket 5 5000) + +add_test(NAME tchtest32 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -tb casket 5 5000) + +add_test(NAME tchtest33 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + typical -df 5 casket 5 50000 5000) + +add_test(NAME tchtest34 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + typical -rr 1000 casket 5 50000 5000) + +add_test(NAME tchtest35 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + typical -tl -rc 50000 -nc casket 5 50000 5000) + +add_test(NAME tchtest36 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + race -df 5 casket 5 10000) + +add_test(NAME tchtest37 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + create casket 3 1 1) + +add_test(NAME tchtest38 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + inform casket) + +add_test(NAME tchtest39 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put casket one first) + +add_test(NAME tchtest40 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put casket two second) + +add_test(NAME tchtest41 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dk casket three third) + +add_test(NAME tchtest42 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dc casket three third) + +add_test(NAME tchtest43 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dc casket three third) + +add_test(NAME tchtest44 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dc casket three third) + +add_test(NAME tchtest45 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put casket four fourth) + +add_test(NAME tchtest46 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dk casket five fifth) + +add_test(NAME tchtest47 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + out casket one) + +add_test(NAME tchtest48 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + out casket two) + +add_test(NAME tchtest49 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket three) #check.out + +add_test(NAME tchtest50 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket four) #check.out + +add_test(NAME tchtest51 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket five) #check.out + +add_test(NAME tchtest52 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -pv casket) #check.out + +add_test(NAME tchtest53 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + optimize casket) + +add_test(NAME tchtest54 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dc casket three third) + +add_test(NAME tchtest55 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket three) #check.out + +add_test(NAME tchtest56 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket three) #check.out + +add_test(NAME tchtest57 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket four) #check.out + +add_test(NAME tchtest58 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket five) #check.out + +add_test(NAME tchtest59 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -pv casket) #check.out + diff --git a/tcejdb/src/tchdb/tools/CMakeLists.txt b/tcejdb/src/tchdb/tools/CMakeLists.txt new file mode 100644 index 0000000..111cab0 --- /dev/null +++ b/tcejdb/src/tchdb/tools/CMakeLists.txt @@ -0,0 +1,2 @@ +link_libraries(ejdb) +add_executable(tchmgr tchmgr.c) diff --git a/tcejdb/src/tctdb/tests/CMakeLists.txt b/tcejdb/src/tctdb/tests/CMakeLists.txt new file mode 100644 index 0000000..0e7d809 --- /dev/null +++ b/tcejdb/src/tctdb/tests/CMakeLists.txt @@ -0,0 +1,257 @@ +link_libraries(ejdb) +set(TEST_DATA_DIR ${CMAKE_CURRENT_BINARY_DIR}) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${TEST_DATA_DIR}) + +add_executable(tcttest tcttest.c) +add_executable(tctmttest tctmttest.c) +add_dependencies(tcttest tchmgr tcbmgr) +add_dependencies(tctmttest tchmgr tcbmgr) + +add_test(NAME tcttest1 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + write casket 50000 5000 5 5) + +add_test(NAME tcttest2 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read casket) + +add_test(NAME tcttest3 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + remove casket) + +add_test(NAME tcttest4 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + write -mt -tl -td -rc 50 -lc 5 -nc 5 -xm 500000 + -is -in -it -if -ix casket 5000 5000 5 5) + +add_test(NAME tcttest5 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read -mt -nb -rc 50 -lc 5 -nc 5 -xm 500000 casket) + +add_test(NAME tcttest6 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + remove -mt -rc 50 -lc 5 -nc 5 -xm 500000 -df 5 casket) + +add_test(NAME tcttest7 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -pn 500 -xm 50000 -df 5 -is casket 5000 5000 5 5) + +add_test(NAME tcttest8 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -tl -td -pn 5000 -is -in casket 5000 500 5 15) + +add_test(NAME tcttest9 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -nl -pn 500 -rl -is -in casket 5000 500 5 5) + +add_test(NAME tcttest10 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -tb -pn 500 -is -in casket 5000 500 5 5) + +add_test(NAME tcttest11 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -ru -pn 500 -is -in casket 5000 500 1 1) + +add_test(NAME tcttest12 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + rcat -tl -td -ru -pn 500 -is -in casket 5000 500 1 1) + +add_test(NAME tcttest13 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -pv casket) #check.out + +add_test(NAME tcttest14 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -pv -px casket) #check.out + +add_test(NAME tcttest15 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + misc casket 500) + +add_test(NAME tcttest16 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + misc -tl -td casket 500) + +add_test(NAME tcttest17 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + misc -mt -tb casket 500) + +add_test(NAME tcttest18 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked casket 5000) + +add_test(NAME tcttest19 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -tl -td casket 5000) + +add_test(NAME tcttest20 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -tl -td casket 5000) + +add_test(NAME tcttest21 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -mt -tb casket 5000) + +add_test(NAME tcttest22 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -tt casket 5000) + +add_test(NAME tcttest23 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -tx casket 5000) + +add_test(NAME tcttest24 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + write -xm 500000 -df 5 -tl -is -in casket 5 5000 500 5) + +add_test(NAME tcttest25 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read -xm 500000 -df 5 casket 5) + +add_test(NAME tcttest26 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + read -xm 500000 -rnd casket 5) + +add_test(NAME tcttest27 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + remove -xm 500000 casket 5) + +add_test(NAME tcttest28 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked casket 5 5000) + +add_test(NAME tcttest29 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + wicked -tl -td casket 5 5000) + +add_test(NAME tcttest30 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + typical -df 5 casket 5 5000 500) + +add_test(NAME tcttest31 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + typical -rr 1000 casket 5 5000 500) + +add_test(NAME tcttest32 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + typical -tl -rc 50000 -lc 5 -nc 5 casket 5 5000 500) + +add_test(NAME tcttest33 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + create casket 3 1 1) + +add_test(NAME tcttest34 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + setindex casket name) + +add_test(NAME tcttest35 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + inform casket) + +add_test(NAME tcttest36 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put casket "" name mikio birth 19780211 lang ja,en,c) + +add_test(NAME tcttest37 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put casket "" name fal birth 19771007 lang ja) + +add_test(NAME tcttest38 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put casket "" name banana price 100) + +add_test(NAME tcttest39 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dc casket 3 color yellow) + +add_test(NAME tcttest40 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put -dk casket "" name melon price 1200 color green) + +add_test(NAME tcttest41 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put casket "" name void birth 20010101 lang en) + +add_test(NAME tcttest42 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + out casket 5) + +add_test(NAME tcttest43 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket 1) #check.out + +add_test(NAME tcttest44 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket 2) #check.out + +add_test(NAME tcttest45 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + get casket 3) #check.out + +add_test(NAME tcttest46 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + search casket) #check.out + +add_test(NAME tcttest47 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + search -m 10 -sk 1 -pv -ph casket) #check.out + +add_test(NAME tcttest48 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + search -m 10 -ord name STRDESC -pv -ph casket) #check.out + +add_test(NAME tcttest49 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + search -m 10 -ord name STRDESC -pv -ph casket + name STRBW mi birth NUMBT 19700101,19791231 lang STRAND ja,en) #check.out + +add_test(NAME tcttest50 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + search -ord birth NUMDESC -pv -ms UNION casket + name STREQ mikio name STRINC fal name FTSEX "ba na na") #check.out + +add_test(NAME tcttest51 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + setindex casket name) + +add_test(NAME tcttest52 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + setindex -it dec casket birth) + +add_test(NAME tcttest53 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + setindex casket lang) + +add_test(NAME tcttest54 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -pv casket) #check.out + +add_test(NAME tcttest55 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + optimize casket) + +add_test(NAME tcttest56 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + put casket "" name tokyo country japan lang ja) + +add_test(NAME tcttest57 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + search -m 10 -sk 1 -pv -ph casket) #check.out + +add_test(NAME tcttest58 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + search -m 10 -ord name STRDESC -pv -ph casket) #check.out + +add_test(NAME tcttest59 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + search -m 10 -ord name STRDESC -pv -ph casket + name STRBW mi birth NUMBT 19700101,19791231 lang STRAND ja,en) #check.out + +add_test(NAME tcttest60 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + search -ord price NUMDESC -ph -rm casket name STRINC a) + +add_test(NAME tcttest61 WORKING_DIRECTORY ${TEST_DATA_DIR} + COMMAND ${TEST_TOOL_CMD} $ + list -pv casket) #check.out + diff --git a/tcejdb/src/tctdb/tools/CMakeLists.txt b/tcejdb/src/tctdb/tools/CMakeLists.txt new file mode 100644 index 0000000..c009c0a --- /dev/null +++ b/tcejdb/src/tctdb/tools/CMakeLists.txt @@ -0,0 +1,2 @@ +link_libraries(ejdb) +add_executable(tctmgr tctmgr.c) diff --git a/tcejdb/src/tcutil/tests/CMakeLists.txt b/tcejdb/src/tcutil/tests/CMakeLists.txt index 05493e4..15408fc 100644 --- a/tcejdb/src/tcutil/tests/CMakeLists.txt +++ b/tcejdb/src/tcutil/tests/CMakeLists.txt @@ -1,6 +1,6 @@ link_libraries(ejdb) -set(TEST_DATA_DIR ${CMAKE_CURRENT_BINARY_DIR}/var) -file(MAKE_DIRECTORY ${TEST_DATA_DIR}) +set(TEST_DATA_DIR ${CMAKE_CURRENT_BINARY_DIR}) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${TEST_DATA_DIR}) add_executable(tcutest tcutest.c) diff --git a/tcejdb/tcejdb.project b/tcejdb/tcejdb.project index 0d8a79d..9c04f19 100644 --- a/tcejdb/tcejdb.project +++ b/tcejdb/tcejdb.project @@ -48,44 +48,52 @@ + + + + + + + + @@ -301,5 +309,8 @@ + + + -- 2.7.4