OrioleDB binary compatibility
Version variables
The file include/orioledb.h contains several OrioleDB binary-compatibility
related version variables. Currently it contains the following version variables:
ORIOLEDB_BINARY_VERSION- version of a database instanceORIOLEDB_SYS_TREE_VERSION- version of system trees formatORIOLEDB_PAGE_VERSION- version of OrioleDB pages formatORIOLEDB_COMPRESS_VERSION- version of OrioleDB pages compression format
If you change the relevant format and its version wasn't incremented since the last
release, you need to increment it. To check whether it was already bumped,
compare include/orioledb.h against the last release tag, e.g.
git diff <last-tag> -- include/orioledb.h.
Cross-architecture support
At this point, PostgreSQL and OrioleDB cannot promise that a database initialized on one machine/architecture will work on a machine with a different architecture. This includes physical replication and copying database files between machines. This might not work even if PostgreSQL and OrioleDB binaries were built using the same endianness, alignment, and float format.
On the other hand, we try to minimize architecture differences. When making
changes to database file formats or the replication protocol, please use data
types that have the same implementation on different architectures. For example,
prefer fixed-width integer types (uint32, uint64) over long or raw
pointers, and avoid relying on struct field padding/alignment, since these
can differ between platforms.