Release Notes 3.5.70106

  • [BUG] BSONObj.toChar() Fixed a problem when the string was already escaped.
  • [BUG] The remove command was not clearing the error flag after been executed
  • static link is now separated for OSX and Linux
  • Refactoring in bplusindexp to make it easier to read, also added some checks to ensure page are persisted after the index has been rebalanced
  • [BUG] Fix to an error when loading the namespaces in the webconsole, it was populating the tree wrongly
  • [BUG] Fix to connections that hands when the update generates and error, also added safe thread support for djondbconnection
  • Changes to compile stdc++ statically in Linux this is to avoid problems with Debian
  • Removed the test-dbperformance from the list of tests to execute when doing make test, this to avoid waiting in functional tests.
  • [REL± Bug when the find filter has errors it was generating a null pointer error.
  • [REL] Having 2 io_services were producing unexpected results, rolling back to 1 io_service per thread
  • [REL] BUG: Error in the web console, when the stored value contains \n or \r the JSON becomes unparseable, therefore it was breaking in the browser, to fix this it has been replaced by \\n and \\r to display the returns in the result instead of keeping the \r inside the text.
  • [REL] BUG: Fixed a problem with unescaped characters when converting from BSONObj to JSON char* representation
  • Removed the tools from the CMakeList
  • [REL] Improved the shutdown to delete the PID file when using OSX Daemons
  • [REL] BUG: Fixes to some pointers not properly cleaned on shutdown, those were causing a crash when the server was doing the shutdown process.
  • [REL] BUG: the recreate indexes was lacking of actually creating the index!
  • Fix to the CMakeList as the dqlcommand does not belong to the API any more
  • FEATURE: Implemented support to executeUpdate and executeQuery from the server side to enable native drivers to be easier
  • Boost libraries are now linked as static in all platforms
  • [REL] Bug: Fix a bug that caused host not found in the driver when several connections are opened and closed.
  • [REL] BUG: Fixed an error that caused double freeing inside boost:asio
  • [REL] Implemented a shutdown protocol to persist the indexes and check if the server has been shutdown properly
  • BUG [REL] Special characters like enter or return where causing parser to return errors
  • [REL] Feature: When parsing the dql now it will return the position so user will be able to check what when wrong in that position
  • BUG: [REL] JSON parser was not considering the comma to separate array elements
  • BUG: (REL) Double free DQL Expression when parsing a create Index and it does not parse
  • BUG: [REL] Fixed error that makes the finds to hang
  • Minor: Refreshed driverbase folder and small change in the includes of the bnetworkserver required by linux
  • BUG: [REL] When a connection is disconnected it creates an endless loop in the listener
  • Fixed some issues when stopping with CTRL+C with the new boost implementation
  • Minor fix: the lock in the new Boot Network was not using the lock, therefore the main thread was waiting for the unlocking.
  • Boost asio implementation, the server code has been replaced for asio to avoid reinventing the wheel
  • BUG: Fixed an error with like statments when the % where not used at the beginning
  • Feature: [REL] Support to LIKE operator in expressions
  • BUG: [REL] The DQL parsing was ignoring the extra characters to the right when the expression was valid but with garbarge at the end
  • MINOR: Fix to performance tests, the logger was not compiling under linux
  • BUG: [REL] Minor change in the webconsole, the dbstructure has been collapsed when clicking the namespaces
  • MINOR: Changes to OSX compilation script
  • Lock notify was not included in the new implementation of the webserver
  • Removed unrequired libraries and changed the other of the includes to get rid of the error:
  • Removed a temporal test from the web
  • NULL error when calling the current on an empty cursor
  • Error 35 needs to be handle in OSX as it’s a “busy” code and it will handle the write when the socket is ready.
  • Major: Performance improved the transactions are now indexed so they can check faster if a previous record exists. Removed unnecesary persistent steps in the Indexes generika cialis rezeptfrei.
  • Feature: Implemented Lauch Daemon support in OSX
  • Update DQL was ignoring inner JSON
  • TOP command was not used when executing DQL
  • added the _NOEXCEPT if in linux
  • Updated some exceptions destructors as they are having compatilibity problems
  • Fixes to be able to compile under El Capitan
  • Removed some unrequired dependencies of boost
  • Changes required in the install path for El Capitan OSX
  • Disabled autocomplete in the web console to avoid silly suggestions when typing DQL
  • Error check when updating a record to force revisions to match.
  • Insert in any position in a List
  • Implementation of GreatEqual and LessEqual in query plan
  • BSON Parser exceptions where not exposing the message in some cases
  • fixed a problem when cleaning expressions after a parsing error, the root needs to be set to NULL to avoid double free
  • shutdown Gracefully was not called when shutdown was executed
  • Removed boost dependency in the tests
  • Fix to queryPlanner the equal was only considering Unique indexes
  • ConstantExpression has a conflict betweeen const char* and bool, a new constructor was required to fix this
  • removed the NULL test
  • setLastError didnt have enough space for some errors
  • Error handle executing a tar backup
  • Bug in the name of the txbuffer filename
  • Revision is not automatic based on the date
  • Release Cursor command implemented, the cursors were never removed from the server side
  • Support to NULL when comparing expressions
  • Error handling in commands
  • Bug when there are too many users the OS crashes with “too many files open” message, caused by the txbuffers not getting closed when they are flagged as reusable
  • Changed the constant fo include TOKEN_ this is to avoid a conflict with Windows BOOLEAN macro
  • Merge branch ‘master’ of /Users/Cross/workspace/djondb_-1.34 into queryplan
  • Backup completed, also included in the dql and included the drop namespace
  • Changes initializing DB and Namespace, defaults and NULLs
  • fixed errors with ConstantExpression null and double values
  • FILESEPARATOR has been modified to char to avoid a warning
  • as djondb:string is been used to handle strings in BSON, the bufferedBSON caused a problem when calculating the strlen of the string.
  • Error in comparing and int and a long, it was returning false even that the numbers where the same value.
  • Retusn NULL from conditions was not properly supported
  • Memory Leaks fixes
  • Memory Leaks fixes
  • WebDBAction Capture exceptions
  • Problem with CPU consumed by not clearing up the write_fd
  • Error control in web db actions
  • Removed boost_regex, its not used
  • Web Interface implementation, REST Services: Insert, Update, find, ExecuteDQL implemented
  • Generate dump files on error
  • BSONObj->toChar was having an issue with big BSONs, to solve it was required to use memorystream and move all the components from filesystem to util/io packages
  • Linux/Darwin daemon scripts now implemented. Also djondbd -s will shutdown the server in linux
  • The Buffer Control file was not updated after flushing Buffers this caused inconsistent states of the Buffer elements after restarting the server.
  • The Buffer Control file was not updated after flushing Buffers this caused inconsistent states of the Buffer elements after restarting the server.
  • BPlusIndex versioned
  • Bug: The change to the keycomparator generated a side effect when adding existing items to the LinkedMap
  • Include System Libraries (MSVC…) in the installers
  • Removed the regex tests
  • Removed dependency of boost_regex
  • Removed Antlr dependency when parsing bson.
  • MMapInputOutputStreams Errors log improved.
  • Updated defs.h with the new version 0.3.2
  • Fixed a fatal error when using DBCursors pointing to indexes
  • getLogger in tests fixed to the new implementation
  • Side effect of a change in the signature of the getLogger method.
  • Changes to the getLogger method to make it more robust and encapsulate the constructor properly
  • Error of uninitialized variable, this leads to generate random errors when execting next on empty cursors.
  • Refresh of the includes folder
  • Minor fixes to Linux CMakelist.txt
  • BPlusIndex now receives the maximum size of each element in the index, this allows to do a better use of the space
  • Bug: When the buffer is reused it needs to be reset to avoid carring trash
  • Some problems with the DBStream implementation, detected during the unit tests.
  • Changes in the BPlusIndexP due to a severe bug that caused the logic to create 1 buffer page per index page
  • Rollback the change with Makefile, the make depedencies was not working
  • Fixes to cursors, an error applying the transaction log changes causes to retrieve incorrect number of records, also a change in LinkedMap to improve performance
  • Cleanup of unused files and refresh of HEADERs folders
  • updated php script and README
  • Refresh of the drivers code
  • Bug cleaning the previous cursor during application of tx operations
  • Go Driver implementation
  • 2 Big features created in this commit: Workers and Server-side Cursors

What are we working on?

At this moment we are working on the following ideas:

1. Cursors: The idea of returning the full result is causing performance problems, because most of the time the users does not want to use all the results and the time spend to send the whole set to the client is a killer, the first idea was to send the results asynchronous, but at the end the idea of having server side cursors works best, this is almost finished at this moment and hopefully you will see the changes in the following days in the development branch.
2. Installers and compilation: The change to use CMake instead of autotools on linux/mac and Visual Studio on Windows is working really nice, but the change required to remove the compilation of some drivers from the common scripts, now we are working to include all of these drivers compilation on the cmake files.
3. Service Script: A service script to boot up the server using the normal services on linux.
4. GoLang Driver: A new driver for GoLang

If you have any suggestions please put them on the github project and we’ll enqueue them based on priority and complexity.


Compile djondb on Mac OSX

This is a step by step process about “Compiling djondb on Mac”, this will cover all the steps, if you already have installed one of the tools (for example home brew) then you can skip the step and move to the next one.

If you have any trouble, please let us know in the comment section, this will be updated with any new release or change to the process.


The first step is to install the xcode and the xcode command line tools, this will allow you to compile, debug, etc. It’s a prerequisite for home brew and djondb. XCode and XCode command line tools can be downloaded from apple’s developer page.

The next step will install home brew, if you already have brew installed in your system please do: “brew doctor” to check that everything is ok.

Home brew

Some of the tools required by compilation scrips will be installed using Home brew, this is a very good installation manager for OSX. The full installation instructions are in the home brew page, basically it will lead you to execute:

ruby -e "$(curl -fsSL"

Once it’s installed please execute the command: brew doctor, which will check for anything that could be wrong on brew and fix the suggestions made by it.


Now with brew installed you could install some tools that will be used later:

brew install cmake
brew install git
brew install boost

Download the code

djondb source code is available at github, to download it just execute:

git clone
cd djondb
git checkout devel

This compilation process is available at the current development branch, later this will be transferred to the master branch.

Make dependencies

This step will take around 15 minutes, it will compile the djondb dependencies. These dependencies will be sit at third_party/libs and third_party/includes folders.

cd <djondb dir>/db
make dependencies

Building djondb

The final step will build djondb.

cd <djondb dir>/db
mkdir build
cd build
cmake ..
sudo make install

Ready, one final step and everything will be set.

Make data dir

the data folder is where djondb files will be created, so you will need to create it.

cd <djondb dir>/db/third_party
sudo sh

Done, you are ready to test, run or change the code of djondb.