From 806b09c5f47226aaea20753808b8923b4d89a954 Mon Sep 17 00:00:00 2001 From: adam Date: Wed, 20 Mar 2013 20:20:24 +0700 Subject: [PATCH] #51 + #53 --- Changelog | 6 ++++ Makefile | 3 +- package.json | 2 +- tcejdb/Changelog | 6 ++++ tcejdb/Makefile.in | 4 +-- tcejdb/ejdb.c | 6 +++- tcejdb/testejdb/Makefile | 15 ++++++++-- tcejdb/testejdb/t4.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 109 insertions(+), 8 deletions(-) create mode 100644 tcejdb/testejdb/t4.c diff --git a/Changelog b/Changelog index 8b2b7e0..fcc9743 100644 --- a/Changelog +++ b/Changelog @@ -1,3 +1,9 @@ +2013-03-20 Anton Adamansky. + * Python3 binding + * Lua binding + * Minor bug fixes + - Release 1.0.66 + 2013-01-22 Anton Adamansky. * Collection joins now supported (ticket #43) - Release 1.0.55 diff --git a/Makefile b/Makefile index 418615e..00ef3e2 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,7 @@ all: fix-changelogs cd tcejdb && ./configure + $(MAKE) -C ./tcejdb version $(MAKE) -C ./tcejdb clean: @@ -9,7 +10,7 @@ clean: - rm -rf ./var/* - rm -f *.upload - rm -f libtcejdb*.tar.gz libtcejdb*.deb libtcejdb*.changes libtcejdb*.build libtcejdb*.dsc - - rm -f python*.tar.gz python*.deb python*.changes python*.build python*.dsc + - rm -f python*.tar.gz python*.deb python*.changes python*.build python*.dsc deb-packages: fix-changelogs cd ./tcejdb && autoconf && ./configure diff --git a/package.json b/package.json index a0dd7ae..58c5f74 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name" : "ejdb", - "version" : "1.0.63", + "version" : "1.0.64", "main" : "node/ejdb.js", "homepage" : "http://ejdb.org", "description" : "EJDB - Embedded JSON Database engine", diff --git a/tcejdb/Changelog b/tcejdb/Changelog index 8b2b7e0..fcc9743 100644 --- a/tcejdb/Changelog +++ b/tcejdb/Changelog @@ -1,3 +1,9 @@ +2013-03-20 Anton Adamansky. + * Python3 binding + * Lua binding + * Minor bug fixes + - Release 1.0.66 + 2013-01-22 Anton Adamansky. * Collection joins now supported (ticket #43) - Release 1.0.55 diff --git a/tcejdb/Makefile.in b/tcejdb/Makefile.in index 8c60958..74fabef 100644 --- a/tcejdb/Makefile.in +++ b/tcejdb/Makefile.in @@ -78,7 +78,7 @@ POSTCMD = @MYPOSTCMD@ #================================================================ -all : version $(LIBRARYFILES) $(COMMANDFILES) $(CGIFILES) +all : $(LIBRARYFILES) $(COMMANDFILES) $(CGIFILES) @$(POSTCMD) @printf '\n' @printf '#================================================================\n' @@ -673,7 +673,7 @@ wordtable : ./tctmgr importtsv casket words.tsv -.PHONY : all clean install check check-ejdb deb-packages +.PHONY : all version clean install check check-ejdb deb-packages deb-packages : diff --git a/tcejdb/ejdb.c b/tcejdb/ejdb.c index b17f392..2b81768 100644 --- a/tcejdb/ejdb.c +++ b/tcejdb/ejdb.c @@ -4260,7 +4260,11 @@ static bool _createcoldb(const char *colname, EJDB *jb, EJCOLLOPTS *opts, TCTDB TCXSTR *cxpath = tcxstrnew2(mdbpath); tcxstrcat2(cxpath, "_"); tcxstrcat2(cxpath, colname); - rv = tctdbopen(cdb, tcxstrptr(cxpath), jb->metadb->hdb->omode); + uint32_t mode = jb->metadb->hdb->omode; + if (mode & (JBOWRITER | JBOCREAT)) { + mode |= JBOCREAT; + } + rv = tctdbopen(cdb, tcxstrptr(cxpath), mode); *res = rv ? cdb : NULL; tcxstrdel(cxpath); return rv; diff --git a/tcejdb/testejdb/Makefile b/tcejdb/testejdb/Makefile index d8df4ed..c006fc7 100644 --- a/tcejdb/testejdb/Makefile +++ b/tcejdb/testejdb/Makefile @@ -7,9 +7,9 @@ CMDLDFLAGS = LIBS = -lz -lpthread -lm -lc -lcunit RUNENV = LD_LIBRARY_PATH=.:.. DYLD_LIBRARY_PATH=.:.. -TESTS = t1 t2 t3 +TESTS = t1 t2 t3 t4 -check : all check-t1 check-t2 check-t3; +check : all check-t1 check-t2 check-t3 check-t4; check-valgrind : make RUNCMD="valgrind --tool=memcheck --leak-check=full --error-exitcode=1" check @@ -20,6 +20,9 @@ check-valgrind-t2 : check-valgrind-t3 : make RUNCMD="valgrind --tool=memcheck --leak-check=full --error-exitcode=1" check-t3 +check-valgrind-t4 : + make RUNCMD="valgrind --tool=memcheck --leak-check=full --error-exitcode=1" check-t4 + check-t1 : $(RUNENV) $(RUNCMD) ./t1 @@ -29,6 +32,9 @@ check-t2 : check-t3 : $(RUNENV) $(RUNCMD) ./t3 +check-t4 : + $(RUNENV) $(RUNCMD) ./t4 + all : $(TESTS) @@ -44,6 +50,9 @@ t2 : t2.o t3 : t3.o $(CC) $(CFLAGS) -o $@ $< $(LDFLAGS) -ltcejdb $(CMDLDFLAGS) $(LIBS) +t4 : t4.o + $(CC) $(CFLAGS) -o $@ $< $(LDFLAGS) -ltcejdb $(CMDLDFLAGS) $(LIBS) + -.PHONY : all clean check run-t1 run-t2 run-t3 +.PHONY : all clean check check-t1 check-t2 check-t3 check-t4 diff --git a/tcejdb/testejdb/t4.c b/tcejdb/testejdb/t4.c new file mode 100644 index 0000000..793ca62 --- /dev/null +++ b/tcejdb/testejdb/t4.c @@ -0,0 +1,75 @@ + +#include +#include +#include "ejdb_private.h" + +#include "CUnit/Basic.h" + +/* + * CUnit Test Suite + */ + +static void eprint(EJDB *jb, int line, const char *func) { + int ecode = ejdbecode(jb); + fprintf(stderr, "%d: %s: error: %d: %s\n", + line, func, ecode, ejdberrmsg(ecode)); +} + +void testTicket53() { + EJDB *jb = ejdbnew(); + CU_ASSERT_TRUE_FATAL(ejdbopen(jb, "dbt4_53", JBOWRITER | JBOCREAT)); + ejdbclose(jb); + ejdbdel(jb); + + jb = ejdbnew(); + CU_ASSERT_TRUE_FATAL(ejdbopen(jb, "dbt4_53", JBOWRITER)); + + EJCOLL *coll = ejdbcreatecoll(jb, "mycoll", NULL); + if (!coll) { + eprint(jb, __LINE__, "testTicket53"); + } + CU_ASSERT_TRUE(coll); + ejdbclose(jb); + ejdbdel(jb); +} + +int init_suite(void) { + return 0; +} + +int clean_suite(void) { + return 0; +} + + +int main() { + setlocale(LC_ALL, "en_US.UTF-8"); + CU_pSuite pSuite = NULL; + + /* Initialize the CUnit test registry */ + if (CUE_SUCCESS != CU_initialize_registry()) + return CU_get_error(); + + /* Add a suite to the registry */ + pSuite = CU_add_suite("t4", init_suite, clean_suite); + if (NULL == pSuite) { + CU_cleanup_registry(); + return CU_get_error(); + } + + /* Add the tests to the suite */ + if ( + (NULL == CU_add_test(pSuite, "testTicket53", testTicket53)) + + ) { + CU_cleanup_registry(); + return CU_get_error(); + } + + /* Run all tests using the CUnit Basic interface */ + CU_basic_set_mode(CU_BRM_VERBOSE); + CU_basic_run_tests(); + int ret = CU_get_error() || CU_get_number_of_failures(); + CU_cleanup_registry(); + return ret; +} -- 2.7.4