Microsoft Access data recovery support.#116
Open
pplupo wants to merge 14 commits into
Open
Conversation
Signed-off-by: Peter P. Lupo <pplupo@gmail.com>
* Resolved `-Wreorder` compiler warnings in `MsBinaryFile/DocFile/OpenXmlPackage.h` by aligning the member initializer list with the class declaration order. Signed-off-by: Peter P. Lupo <pplupo@gmail.com>
Signed-off-by: Peter P. Lupo <pplupo@gmail.com>
Signed-off-by: Peter P. Lupo <pplupo@gmail.com>
Signed-off-by: Peter P. Lupo <pplupo@gmail.com>
Signed-off-by: Peter P. Lupo <pplupo@gmail.com>
Signed-off-by: Peter P. Lupo <pplupo@gmail.com>
Signed-off-by: Peter P. Lupo <pplupo@gmail.com>
Signed-off-by: Peter P. Lupo <pplupo@gmail.com>
Signed-off-by: Peter P. Lupo <pplupo@gmail.com>
Our vendored libmdb sources (libmdb/*.c) use a newer MdbHandle struct that includes the 'locale' field. The system mdbtools-dev on Ubuntu Jammy ships an older version without this field, causing 'MdbHandle has no member named locale' errors. Since all libmdb .c files are compiled directly into BinDocument, there is no need to link against the system libmdb (-lmdb). Remove the linkage to eliminate the struct mismatch. Signed-off-by: Peter P. Lupo <pplupo@gmail.com>
iconv.c has two code paths: - #ifdef HAVE_ICONV: uses iconv_t (standard POSIX, no locale field needed) - #else: uses mdb->locale (requires newer MdbHandle with locale field) The system mdbtools-dev on Ubuntu Jammy has an older MdbHandle without the 'locale' field. Defining HAVE_ICONV selects the iconv_t code path which is the correct choice on Linux (iconv is always available via glibc) and avoids the missing struct member error entirely. Signed-off-by: Peter P. Lupo <pplupo@gmail.com>
Two fixes for iconv.c build errors with HAVE_ICONV defined: 1. Add 'ICONV_CONST=' compile definition - on Linux glibc, iconv() takes non-const char**, so ICONV_CONST must be empty 2. Add libmdb/mdbtools.h shim that redirects to our vendored mdbtools/mdbtools.h - ensures libmdb sources always use our version of MdbHandle (with iconv_in/iconv_out fields) regardless of what system mdbtools-dev provides Signed-off-by: Peter P. Lupo <pplupo@gmail.com>
Signed-off-by: Peter P. Lupo <pplupo@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR introduces native support for importing and reading database and data-warehouse files directly into the spreadsheet editor. It adds unified data-extraction pipelines for:
.mdb).sqlite,.db).duckdb).parquet)Motivation
For a sovereign and independent office suite, true data sovereignty means ensuring users are never locked out of their historical data. Legacy Microsoft Access (
.mdb) databases hold decades of critical public, enterprise, and personal records. Relying on proprietary or Windows-exclusive software to open them poses a severe risk to long-term data accessibility. By natively supporting.mdbfile reading, Euro-Office guarantees that users can independently recover and migrate their historical data at any time.Furthermore, once the unified database-to-spreadsheet conversion pipeline was built to support
.mdbrecovery, it was a natural and low-overhead extension to include support for modern embedded databases like SQLite, as well as analytics-heavy formats like DuckDB and Parquet. This empowers data analysts and researchers to quickly inspect massive datasets directly from the comfort of their office suite, bridging the gap between legacy data recovery and modern data science.Technical Details
libmdb(from mdbtools) directly into the source tree to ensure consistent cross-platform builds without relying on fragmented system packages (resolvesiconvandlocalestruct mismatches).libduckdbfor reading DuckDB files and efficiently querying.parquetfiles via DuckDB's view functionality.