Skip to content

Releases: crazy-goat/fdb-php

v0.2.1 - FoundationDB Size Limits Tests

30 Mar 13:42
@s2x s2x

Choose a tag to compare

What's New

This patch release adds comprehensive integration tests for FoundationDB size limits.

New Test Coverage

Key Size Limits (10KB max)

  • Test key at limit succeeds
  • Test key exceeding limit throws FDBException (error 2203)
  • Verify error is not retryable

Value Size Limits (100KB max)

  • Test value at limit succeeds
  • Test value exceeding limit throws FDBException (error 2204)
  • Verify error is not retryable

Transaction Size Limits (10MB default)

  • Test transaction at default limit succeeds
  • Test transaction exceeding limit throws FDBException (error 2101)
  • Test custom size limit via option
  • Verify error is not retryable

Technical Details

All tests verify:

  • Correct FDBException error codes (2203, 2204, 2101)
  • Error messages contain expected keywords
  • Error predicates (retryable/non-retryable)
  • Transaction commit behavior for limit violations

v0.2.0

30 Mar 13:34
@s2x s2x
6522549

Choose a tag to compare

What's New

🏗️ Architecture & Core Features

  • AdminClient — cluster administration via Special Keys (list/create/delete tenants, configure processes, exclude/include servers, get cluster status)
  • Tenant supportTenant::getId(), Database::openTenant()
  • Database monitoringgetMainThreadBusyness(), getClientStatus()
  • Database::close() — explicit lifecycle management
  • FoundationDB::openWithConnectionString() — connect without a cluster file
  • Error predicatesFDBException::isRetryable(), isRetryableNotCommitted(), isMaybeCommitted()

📦 API Improvements

  • Typed atomic operationsadd(), max(), min(), bitAnd(), bitOr(), bitXor() now accept int instead of raw string bytes
  • getInt() method — read integer values directly from ReadTransaction, Snapshot, and Database
  • Database convenience methodsgetKey(), watch(), atomic ops, range estimates with auto-transact wrappers
  • getRangeAll() / getRangeAllStartsWith() — eager range fetching (returns full array instead of iterator)

🧩 Tuple & Key Utilities

  • Tuple::compare() — tuple ordering comparison
  • Tuple::hasIncompleteVersionstamp() — versionstamp detection
  • Subspace::packWithVersionstamp() — versionstamp support in subspaces
  • KeyUtil::printable() / KeyUtil::prefixRange() — key debugging and prefix range helpers

🌍 Locality

  • Locality APIgetBoundaryKeys() for data distribution queries

📚 Documentation & Examples

  • Comprehensive README with all features, architecture diagram, and correct API examples
  • 13 documentation guides covering all major features
  • 10 runnable example scripts

📦 Package

  • Renamed from crazy-goat/foundationdb to crazy-goat/fdb-php

✅ Quality

  • 317 unit tests, 574 assertions
  • PHPStan level 9, PHPCS, Rector
  • Integration tests with 5-node FDB cluster in CI