CrateDB v4.5 is now stable and ready to use

2021-03-31, by Mathias Fußenegger

Earlier this year, we announced that Crate.io is renewing it's commitment to open source. Now, we are happy to say that we've followed up on that promise and that CrateDB 4.5.0 is generally available.  

From now on, there will only be one edition of CrateDB (licensed under Apache 2.0). We've put together a FAQ to explain what the licensing change means for our users. If you haven't read the FAQ, go check it out, as it will answer all your questions.  

Besides the licensing change, you can find the full list of feature changes within CrateDB 4.5.0 in ourrelease notes. Apart from the (previously called) Enterprise features, this release includes new features like a CREATE TABLE AS statement. In this blogpost, however, we'd like to highlight the effort we've put into what we can call "polishing and stabilizing". Little things like this are also very important, and they often don't get the importance they deserve.   

Polishing 

As I said above, we all tend to focus on big features. However, in the every-day of a developer, friction and frustration are often caused by the little things: a vague error message that causes you to scratch your head, a poorly phrased section in the documentation without an example... These things can easily waste hours of precious developer time. 

Documentation 

In the framework of the 4.5 release, we've put a lot of effort into our documentation, creating a whole newGlossary sectionand rewriting a lot of existing content to further clarify aspects that were a bit too hard to understand 

Here is a subset of sections that we improved and which you may want to revisit: 

Error messages 

At Crate.io, we believe that good error messages are essential for a good user experience. We try to give users enough context to help them identify the error's origin, giving them pointers on how to fix them. For example: suppose you have a typo in the table name, 

select * from uers;

We used to return a succinctRelation 'uers' unknownerror. But we realized that we could do better, so several releases ago, we changed the error to the following:Relation 'uers' unknown. Maybe you meant 'users'. Much more helpful! 

 We're always on the lookout for other opportunities to improve error messages: in 4.5, we improved another case. Suppose you have a table containing apayloadobject column with many nested columns. Previously, if you inserted a record and the payload didn't match the schema of the table, you might have received an error that boiled down toCannot cast object to object.  

Although this was technically correct, it was not helpful for a developer. With 4.5, the user will receive a message like the following instead:Cannot cast object element 'measure' with value 'not-a-number' to type 'real'. 

Stabilizing 

Stability is an essential feature in a database, and improving the stability status quo is a permanent item on our agenda.  

CrateDB is a well-tested system. We run thousands of so-called "logic tests", which we initially took over from thesqlite project, and we run several hours’ worth of benchmarks each night. Each pull request runs through a mix of unit and integration tests, and we have an hourly testing system that, over the course of a day, runs a mix of about 170,000 unit and integration tests.  

We inherited a powerful randomized testing system (with origin in the Apache Lucene project) that makes it feasible to test many different scenarios. But due to this and to the distributed nature of CrateDB, tests don't always fail deterministically, but instead only occasionally. 

For the 4.5 release, we made it a priority to follow up on any non-deterministic test failure. Fortunately, most of the issues we discovered were problems with the test setup and didn't affect our users. 

Newsletter

Stay up to date

Sign up here to keep informed about CrateDB product news,
events, how-to articles, and community update.