Skip to content

feat(release): prepare database_system for v1.0.0#566

Merged
kcenon merged 3 commits into
developfrom
feat/issue-564-prepare-v1-release
Apr 16, 2026
Merged

feat(release): prepare database_system for v1.0.0#566
kcenon merged 3 commits into
developfrom
feat/issue-564-prepare-v1-release

Conversation

@kcenon

@kcenon kcenon commented Apr 16, 2026

Copy link
Copy Markdown
Owner

Closes #564

Summary

  • Replace throw with Result<T> in unified_database_system to align with documented no-throw guarantee
  • Change builder::build() return type to Result<std::unique_ptr<unified_database_system>>
  • Bump version from 0.1.0 to 1.0.0 across CMakeLists.txt, vcpkg.json
  • Update CHANGELOG with v1.0.0 release notes including breaking changes
  • Update README with v1.0 migration notes
  • Fix pre-existing broken markdown anchors in docs

What

Change Type

  • Feature (new functionality)
  • Refactor (no functional changes)
  • Documentation

Affected Components

  • database/integrated/unified_database_system.h — builder API signature change
  • database/integrated/unified_database_system.cpp — lazy init, Result return
  • tests/integrated/test_unified_database_system.cpp — updated for new API
  • samples/integrated/*.cpp — updated for new API

Why

Problem Solved

The unified_database_system class documented a "No-throw guarantee" but the constructor
and builder::build() method threw std::runtime_error on failure. This violated the
documented API contract. For v1.0, all synchronous public APIs must use Result<T> for
error propagation.

Related Issues

How

Implementation Details

  1. Lazy initialization: impl constructor no longer calls coordinator_->initialize().
    Initialization is deferred to ensure_initialized(), called from connect().
  2. Result return type: builder::build() returns Result<unique_ptr<>> instead of
    throwing on connection failure.
  3. Version bump: 0.1.0 → 1.0.0 in CMakeLists.txt (root + database), vcpkg.json.

Breaking Changes

  • builder::build() return type changed from std::unique_ptr<unified_database_system>
    to Result<std::unique_ptr<unified_database_system>>
  • CMake package name unified to database_system (from prior unreleased change)

Test Plan

  • Unit tests pass (test_unified_database_system updated for new API)
  • CI multi-platform build passes (Linux GCC/Clang, macOS, Windows MSVC)
  • Samples compile with new Result-based builder API

kcenon added 3 commits April 16, 2026 10:31
Align implementation with documented no-throw guarantee:
- Defer coordinator initialization to connect() via lazy init pattern
- Change builder::build() return type to Result<unique_ptr<>>
- Add ensure_initialized() private method for deferred init

Closes #564
Update all test and sample code to handle
Result<unique_ptr<unified_database_system>> return type from
builder::build() instead of raw unique_ptr.
- Bump version in CMakeLists.txt, database/CMakeLists.txt, vcpkg.json
- Update CHANGELOG with v1.0.0 release notes and comparison links
- Add v1.0.0 migration notes to README
- Fix pre-existing broken markdown anchors in docs
@kcenon kcenon merged commit 7e801e6 into develop Apr 16, 2026
11 checks passed
@kcenon kcenon deleted the feat/issue-564-prepare-v1-release branch April 16, 2026 01:36
kcenon added a commit that referenced this pull request Apr 16, 2026
* docs: apply mechanical doc-review fixes (#565)

* docs: fix 30 broken links, 11 factual errors, 5 ssot redundancies

Applies fixes from DOC_REVIEW_REPORT.md (2026-04-14 audit, 80 files).

Phase 1 (broken links & anchors):
- Repaired README paths to split FEATURES_ORM_QUERY.md (query-builders,
  orm-framework anchors) and current ARCHITECTURE/API_REFERENCE locations.
- Fixed language-switcher links pointing at non-existent .kr.md files
  (ADAPTER_PATTERNS, ASYNC_OPERATIONS, INTEGRATION, UNIFIED_SYSTEM).
- Repaired relative paths in docs/advanced/* and docs/guides/* that
  produced docs/advanced/docs/... style dead links.
- Marked missing targets (proxy-mode.md, IMPROVEMENT_PLAN.md,
  backend_registry.md, POSTGRESQL_TUNING.md, SQLITE_TUNING.md,
  advanced/SECURITY.md, PROXY_LAYER.md, with-*-system.md) as TODO.

Phase 2 (factual accuracy & Phase 4.3 pool-removal propagation):
- Corrected backend list to PostgreSQL/SQLite/MongoDB/Redis
  (MySQL never existed) in CURRENT_STATE and ARCHITECTURE_ISSUES.
- Aligned compiler baseline to GCC 13+/Clang 17+/MSVC 2022+/Apple
  Clang 14+ across README, CONTRIBUTING, GETTING_STARTED, samples.
- Updated libpqxx 7.9.0 -> 7.9.2 and OpenSSL 3.3.0 -> 3.4.1 in SOUP
  to match vcpkg.json overrides; refreshed PROJECT_STRUCTURE versions.
- Changed ORM description from C++17 SFINAE to C++20 concepts across
  ORM_GUIDE and FEATURES_ORM_QUERY.
- Propagated Phase 4.3 pool removal to English docs: deprecation
  banners in FEATURES_POOLING_SECURITY and BACKENDS; ADR-002 marked
  Superseded.

Phase 3 (SSOT & registry):
- Regenerated docs/README.md registry: was 59 docs, now enumerates
  66 docs under docs/ plus the 14 out-of-tree repo Markdown files
  (total 80), adding FEATURES_BACKENDS, FEATURES_ORM_QUERY,
  FEATURES_POOLING_SECURITY, API_QUICK_REFERENCE, ECOSYSTEM,
  GETTING_STARTED, and the registry itself.
- Resolved 3 SSOT pairs by deferral: advanced/ARCHITECTURE and
  advanced/STRUCTURE defer to docs/ root; performance/BENCHMARKS
  defers to docs/BENCHMARKS. Added bidirectional See also xrefs.
- Added xrefs ORM_GUIDE <-> TYPE_SYSTEM/API_QUICK_REFERENCE and
  FEATURES_BACKENDS -> ADAPTER_PATTERNS.

Skipped by policy: Korean (.kr.md) sync, API/manifest version bumps,
BENCHMARKS en/kr language-pair duplication, docs/README.kr.md path
corrections (Korean file).

* docs: add post-fix re-validation report

* docs: fix pool-removal banner anchor regression

* feat(release): prepare database_system for v1.0.0 (#566)

* refactor(api): replace throw with Result<T> in unified_database_system

Align implementation with documented no-throw guarantee:
- Defer coordinator initialization to connect() via lazy init pattern
- Change builder::build() return type to Result<unique_ptr<>>
- Add ensure_initialized() private method for deferred init

Closes #564

* refactor(tests): update callers for Result<T> builder API

Update all test and sample code to handle
Result<unique_ptr<unified_database_system>> return type from
builder::build() instead of raw unique_ptr.

* chore: bump version to v1.0.0 and update documentation

- Bump version in CMakeLists.txt, database/CMakeLists.txt, vcpkg.json
- Update CHANGELOG with v1.0.0 release notes and comparison links
- Add v1.0.0 migration notes to README
- Fix pre-existing broken markdown anchors in docs

* fix(api): correct compile errors in builder Result return type

- Fix error_info field name: source -> context
- Update create_database() convenience function return type to match
  builder::build() Result<unique_ptr<>> signature

* fix(api): use make_error_result helper for correct error_info construction

The common_system error_info struct does not have a 'context' member
accessible via .context. Use the existing make_error_result helper
which constructs error_info correctly with positional arguments.

* fix(samples): move db variable to outer scope in migration sample

The db variable was declared inside an if block, making it
inaccessible to subsequent code that uses db->execute(),
db->get_metrics(), and db->check_health().
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant