Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
6d4e37b
chore: remove orphaned third-party.bake.Dockerfile
pplupo Jun 30, 2026
06595cc
feat: Add database support for DuckDB, SQLite, MDB
pplupo Jun 29, 2026
81f906f
Add parquet format support
pplupo Jun 29, 2026
4bee03f
Fix empty db files not being recognized, add MDB tools
pplupo Jun 29, 2026
e8715b1
Fix duckdb to support parquet via view
pplupo Jun 29, 2026
6871a9c
Fix include path for mdbtools
pplupo Jun 29, 2026
6a42781
Define TLS macro in mdbtools.h
pplupo Jun 30, 2026
e991c8a
fix: remove system libmdb linkage; use vendored libmdb sources instead
pplupo Jun 30, 2026
47bd51a
fix: define HAVE_ICONV for BinDocument to fix iconv.c build error
pplupo Jun 30, 2026
0b61ca5
fix: add ICONV_CONST and mdbtools.h shim for libmdb iconv build
pplupo Jun 30, 2026
4495c0f
fix: vendor libmdb sources from upstream mdbtools v1.0.1
pplupo Jul 8, 2026
ace9de4
fix: pull DuckDB from vcpkg, link mdbtools as a shared library
pplupo Jul 8, 2026
20401a7
chore: vendor mdbtools COPYING.LIB alongside the source
pplupo Jul 8, 2026
3404804
fix: correct DuckDB vcpkg find_package name and target
pplupo Jul 8, 2026
1884622
fix: fix x2tlib's own duckdb/mdb references after the vcpkg/shared-li…
pplupo Jul 8, 2026
3e018b5
fix: restore default symbol visibility for mdbtools.so
pplupo Jul 8, 2026
04d69d4
fix: add -Wno-enum-constexpr-conversion to V8 build flags
pplupo Jun 22, 2026
e3c8f12
fix: add openglwidgets to qt6 components
rikled Jul 19, 2026
05f13a4
build: make target microarchitecture configurable via vcpkg triplet
pplupo Jul 20, 2026
de4c5ba
Merge branch 'feature/configurable-arch-baseline' into feature/waylan…
pplupo Jul 20, 2026
a42d65d
Merge branch 'feature/wayland-migration' into db-support
pplupo Jul 20, 2026
5afc092
Merge remote-tracking branch 'origin/main' into feature/configurable-…
pplupo Jul 20, 2026
832184a
Merge branch 'feature/configurable-arch-baseline' into feature/waylan…
pplupo Jul 20, 2026
f8c5e70
Merge branch 'feature/wayland-migration' into db-support
pplupo Jul 20, 2026
b99f3d4
feat: Add database support for Berkeley DB
pplupo Jul 27, 2026
0425459
fix: vendor Berkeley DB 18.1.40 source instead of vcpkg
pplupo Jul 27, 2026
f1cf2aa
fix: correct vendored Berkeley DB build (missing gitignored files, CL…
pplupo Jul 27, 2026
36a82a1
fix: align vendored ICU to 73, matching Qt 6.10.1's system dependency
pplupo Aug 2, 2026
b8feda1
fix: fetch ICU's LICENSE from icu4c/, not the repo root
pplupo Aug 2, 2026
3b56947
Revert "fix: fetch ICU's LICENSE from icu4c/, not the repo root"
pplupo Aug 4, 2026
59d214b
Revert "fix: align vendored ICU to 73, matching Qt 6.10.1's system de…
pplupo Aug 4, 2026
8f5af68
fix: write XLSX database-export header cells as literal text
pplupo Oct 1, 2026
0e3521c
feat: single-source database extension/format resolution, fix .bdb/.f…
pplupo Oct 1, 2026
84e7d3a
feat: sanitize/split XLSX export sheets, add Migration Summary and Co…
pplupo Oct 1, 2026
44c95a9
feat: populate MDB primary/foreign keys, single-read schema+data, fix…
pplupo Oct 1, 2026
ce2e3e1
feat: identifier-quote dynamic SQL, migrate DuckDB off deprecated API…
pplupo Oct 1, 2026
37e802d
test: add TDD coverage for db-support-hardening, fix a real MdbEngine…
pplupo Oct 1, 2026
c694c1a
test: add RLIMIT_AS memory-ceiling test for DatabaseReader::Read (T034)
pplupo Oct 1, 2026
3799449
test: add standalone static check for T035 (no deprecated DuckDB API …
pplupo Oct 1, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 10 additions & 2 deletions .docker/core.bake.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ ARG BUILD_ROOT
ARG NUGET_SOURCE_PATH
ARG PRODUCT=server
ARG TARGETARCH
ARG ARCH_TRIPLET=x64-linux-v2
ARG ARCH_MARCH_FLAGS=-march=x86-64-v2

# Desktop: 24.04 on arm, 22.04 on amd
FROM ubuntu:22.04 AS vcpkg-base-desktop-amd64
Expand Down Expand Up @@ -106,6 +108,7 @@ FROM vcpkg-${NUGET_CACHE} AS core-base
python3-httplib2 \
lsb-release autoconf automake libtool findutils \
gn \
mdbtools-dev \
#&& curl -fsSL https://apt.kitware.com/keys/kitware-archive-latest.asc \
# | gpg --dearmor -o /etc/apt/keyrings/kitware.gpg \
#&& echo "deb [signed-by=/etc/apt/keyrings/kitware.gpg] https://apt.kitware.com/ubuntu/ noble main" \
Expand Down Expand Up @@ -147,17 +150,22 @@ FROM vcpkg-${NUGET_CACHE} AS core-base
#### CORE ####
FROM core-base AS core
ARG NUGET_SOURCE_PATH
ARG TARGETARCH
ARG ARCH_TRIPLET
ARG ARCH_MARCH_FLAGS
RUN --mount=type=cache,target=/build-cache \
--mount=type=bind,source=${NUGET_SOURCE_PATH},target=/nuget-cache,rw \
mkdir -p ${BUILD_ROOT} && \
cd /build-cache && \
cmake -GNinja \
-DVCPKG_MANIFEST_MODE=ON \
-DVCPKG_MANIFEST_DIR=/core \
-DVCPKG_OVERLAY_TRIPLETS=/core/triplets \
-DVCPKG_TARGET_TRIPLET=${ARCH_TRIPLET} \
-DCMAKE_TOOLCHAIN_FILE=/opt/vcpkg/scripts/buildsystems/vcpkg.cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_FLAGS_RELEASE="-O3 -w" \
-DCMAKE_C_FLAGS_RELEASE="-O3 -w" \
-DCMAKE_CXX_FLAGS_RELEASE="-O3 -w ${ARCH_MARCH_FLAGS}" \
-DCMAKE_C_FLAGS_RELEASE="-O3 -w ${ARCH_MARCH_FLAGS}" \
-DEO_CORE_OUTPUT_DIR=/build-cache/package/bin \
-DEO_CORE_TOOLS_DIR=/build-cache/package/tools \
/core && \
Expand Down
3 changes: 3 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ else()
add_subdirectory( "${CORE_ROOT_DIR}/OfficeUtils/tests" officeutils_test )
add_subdirectory( "${CORE_ROOT_DIR}/OdfFile/Reader/Converter/SMCustomShape2OOXML/TestSMCustomShape" starmath_smcustomshape_test )
add_subdirectory( "${CORE_ROOT_DIR}/OdfFile/Test/test_odf" test_odf )
add_subdirectory( "${CORE_ROOT_DIR}/Common/tests" common_db_format_test )
add_subdirectory( "${CORE_ROOT_DIR}/OOXML/Binary/Sheets/Reader/DatabaseEngines/tests" database_engines_test )
add_subdirectory( "${CORE_ROOT_DIR}/OOXML/Binary/Sheets/Reader/tests" database_reader_test )
endif()

endif()
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ index a8618452794..4ab368a4149 100644
defines = []
cflags = []
+ if (!is_win) {
+ cflags += ["-include", "cstdint"]
+ cflags += ["-include", "cstdint", "-Wno-enum-constexpr-conversion"]
+ }
ldflags = []

Expand Down
46 changes: 46 additions & 0 deletions Common/DatabaseFormats.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/*
* (c) Copyright Ascensio System SIA 2010-2023
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
#pragma once

#include <string>
#include <vector>

// Single authoritative source of supported database file extensions (FR-005).
// COfficeFileFormatChecker::GetFormatByExtension/isOfficeFile/isOnlyOfficeFormatFile
// and OOXML::DatabaseReader::Read all resolve database extensions through this
// list instead of each maintaining their own.
struct DatabaseExtensionEntry
{
std::wstring extension; // lower-case, leading '.', e.g. L".mdb"
int formatConstant; // one of AVS_OFFICESTUDIO_FILE_SPREADSHEET_*
bool requiresContentSniff; // true only for ".db" (ambiguous extension)
};

const std::vector<DatabaseExtensionEntry>& GetSupportedDatabaseExtensions();

// Three-way content sniff for an ambiguous ".db" extension (FR-004): returns
// AVS_OFFICESTUDIO_FILE_SPREADSHEET_SQLITE, _MDB, or _BDB based on the file's
// actual header bytes, not its extension.
int DetectAmbiguousDbFormat(const std::wstring& sFilePath);
Loading