Skip to content
Snippets Groups Projects
Kaitmazian Maksim's avatar
Maksim Kaitmazian authored
Previously, LuaValue was used for deserializing msgpack data.
It is marked with #[serde(untagged)] attribute, meaning that
the enum is deserializaed by probing each variant in order unless one
succeeds. It turned out, that this can cause unexpected type convertions
due to the order of variants.

For example, msgpack integer value was deserialized into LuaValue::Double,
because this variant comes before LuaValue::Integer and integer values
can be represented as floats.

This commit resolves this issue by configuring LuaValue to be deserialized
as rmpv::Value using #[serde(try_from)] attribute.
0f7aa571
History

Picodata – Professional Data Management System for High Loads

This repository contains the source code of Picodata, an in-memory database with plugins in Rust.

What is Picodata

Picodata is a software for building professional data management systems. It provides an in-memory database together with a development platform and a runtime for custom plugins written in Rust. Learn more about our software at the picodata.io web site.

Getting Picodata

We provide pre-built Picodata packages for select Linux distributions including CentOS and Ubuntu. Head over to picodata.io/download to see what is available.

Running Picodata

Running a Picodata instance only takes one simple command:

picodata run

Getting a basic distributed cluster made of two instances running on different hosts involves two commands, like this:

picodata run --listen 192.168.0.1:3301
picodata run --listen 192.168.0.2:3301 --peer 192.168.0.1:3301

You can find out more about getting started procedures and first steps by heading to docs.picodata.io.

Building Picodata from source

Please refer to the CONTRIBUTING.md document for more detailed prerequisites, compilation instructions as well as steps required to run integration tests.