Skip to content

Releases: flow-php/flow

0.31.0

19 Jan 17:27

Choose a tag to compare

[0.31.0] - 2026-01-19

Added

  • #2158 - New flow-php/monolog-telemetry-bridge package - connects Monolog with Flow Telemetry for unified logging export - @norberttech
  • #2158 - TelemetryHandler - Monolog handler that forwards logs to Flow Telemetry with automatic trace context propagation (trace_id/span_id) - @norberttech
  • #2158 - LogRecordConverter - converts Monolog LogRecord to Telemetry LogRecord with attribute prefixing (context., extra.) - @norberttech
  • #2158 - SeverityMapper - maps Monolog levels to Telemetry severities with customizable mapping - @norberttech
  • #2158 - ValueNormalizer - normalizes PHP values to Telemetry-compatible attribute types - @norberttech
  • #2158 - DSL functions: telemetry_handler(), log_record_converter(), severity_mapper(), value_normalizer() - @norberttech
  • #2158 - Automatic exception handling - Throwables in Monolog context are passed to Telemetry's setException() - @norberttech
  • #2158 - Documentation for Monolog Telemetry Bridge - @norberttech
  • #2150 - flow-php/telemetry library - @norberttech
  • #2150 - flow-php/telemetry-otlp-bridge bridge - @norberttech
  • #2140 - Benchmark documentation explaining infrastructure, workflow, and how to run benchmarks - @norberttech
  • #2136 - Added normalize() and fromArray() methods to PostgreSQL Explain Plan classes (Cost, Timing, Buffers, PlanNode, Plan, ExplainConfig) for serialization/deserialization support - @norberttech
  • #2136 - Added PHPStan type aliases (PlanNodeShape, TimingShape, BuffersShape) for improved type documentation - @norberttech
  • #2134 - InvalidExplainConfigException - exception for invalid EXPLAIN config flag combinations - @norberttech
  • #2134 - ExplainConfig fluent builder methods: withAnalyze(), withoutAnalyze(), withBuffers(), withoutBuffers(), withTiming(), withoutTiming(), withVerbose(), withoutVerbose(), withCosts(), withoutCosts(), withMemory(), withoutMemory(), withSettings(), withoutSettings(), withSummary(), withoutSummary(), withWal(), withoutWal(), withFormat() - @norberttech
  • #2134 - ExplainConfig validation - throws InvalidExplainConfigException when BUFFERS, TIMING, or WAL are enabled without ANALYZE - @norberttech
  • #2134 - PlanSummary::fromArray() static factory method - creates instance from normalized array (inverse of normalize) - @norberttech
  • #2134 - ExplainConfigTest - unit tests for validation and fluent builder methods - @norberttech
  • #2134 - PgSqlExplainTest - integration tests with data providers for ExplainConfig combinations - @norberttech
  • #2133 - sql_to_limited_query(string $sql, int $limit) DSL function - adds LIMIT clause to queries without adding OFFSET - @norberttech
  • #2133 - PlanSummary::normalize() method - returns all plan summary fields as snake_case keyed array - @norberttech
  • #2133 - PlanSummary memory statistics: memoryUsed, memoryPeak - @norberttech
  • #2133 - PlanSummary join statistics: hashJoinCount, nestedLoopCount, mergeJoinCount - @norberttech
  • #2133 - PlanSummary buffer statistics: totalSharedHit, totalSharedRead, hasTempSpill - @norberttech
  • #2133 - PlanSummary row statistics: estimatedRows, actualRows - @norberttech
  • #2133 - LimitedQueryTest - 7 test cases for sql_to_limited_query function - @norberttech
  • #2133 - PlanSummaryTest - 3 test cases for PlanSummary::normalize() method - @norberttech

Changed

  • 620363 - chore: update dependencies - @norberttech
  • 4c5efc - refactor: improve stabilit of benchmarks - @norberttech
  • 91a5d0 - refactor: optimize benchmarks on ci/cd - @norberttech
  • #2158 - updated minimum version of monolog to V3 across monorepo - @norberttech
  • #2157 - Remove part of unnecessary recursion calls from array_dot_get() method - @stloyd
  • #2154 - refactor: stabilize benchmarks - @norberttech
  • 08dae8 - refactor: change runner for benchmark-baseline job - @norberttech
  • af53ce - refactor: change runner for benchmark tests to flow-php-benchmark-runner - @norberttech
  • #2152 - SpanEvent timestamp changed from nanoseconds (int) to DateTimeImmutable for better type safety and consistency - @norberttech
  • #2152 - span_event() DSL function now requires explicit timestamp parameter - @norberttech
  • #2152 - Span::recordException() now requires explicit timestamp parameter - @norberttech
  • #2143 - Adjust Parameter::asNumber() behaviour to match closer the PHP one - @stloyd
  • #2140 - GitHub Actions benchmarks now run on dedicated self-hosted runner (flow-php-runner) for consistent results - @norberttech
  • #2131 - Update Homebrew TAP formula: flow-php to version: 0.30.0 - @norberttech
  • #2136 - Optimized PostgreSqlCursorExtractor to break cursor loop early when fetched rows are less than fetch size, avoiding unnecessary database round-trips - @norberttech
  • #2134 - ExplainConfig::withoutAnalyze() auto-disables buffers, timing, and wal options - @norberttech
  • #2133 - PlanAnalyzer::summary() now computes and passes join counts, buffer statistics, and row data to PlanSummary - @norberttech

Fixed

Read more

0.30.0

06 Jan 22:18

Choose a tag to compare

[0.30.0] - 2026-01-06

Added

  • #2130 - Allow preserving existing values during DBAL upsert - @stloyd
  • #2129 - Schema::isSame to use it for early exit merge operation when schema is the same - @norberttech
  • #2129 - TypesMap::flowRowTypes() method for Entry-based type detection in DbalLoader - @norberttech
  • #2129 - EnumType to TypesMap FLOW_TYPES mapping (maps to DBAL StringType) - @norberttech
  • #2122 - StreamClosure interface for HTTP streaming completion callbacks - @norberttech
  • #2122 - http_on_complete() DSL function to create stream closures from callables - @norberttech
  • #2122 - DataStream::onComplete() method to set post-streaming callbacks - @norberttech
  • #2122 - DataStream::config() method to configure DataFrame execution (enables Analyze/Report) - @norberttech
  • #2122 - Config::analyze() method to retrieve configured Analyze instance - @norberttech
  • #2122 - ConfigBuilder::analyze() method to set Analyze configuration at config level - @norberttech
  • #2122 - ReportCollector class to encapsulate DataFrame execution analysis logic - @norberttech
  • #2121 - postgresql - query parameters support for from_pgsql_cursor(), from_pgsql_limit_offset() and from_pgsql_key_set() extractors - @norberttech
  • #2121 - postgresql - ParamRefCollector visitor for collecting parameter references from AST - @norberttech
  • #2121 - postgresql - parseResult() method to ModificationContext for context-aware AST modifications - @norberttech
  • #2121 - postgresql - auto-detection of existing query parameters in keyset pagination (placeholders are appended after the highest existing parameter number) - @norberttech
  • #2120 - postgresql - support modification connection parameters - @norberttech
  • #2119 - expose tables through from statement of select statement - @norberttech
  • #2113 - postgresql - condition builder fluent interface - @norberttech
  • #2104 - excel support to playground - @norberttech
  • #2102 - ExcelLoader - @norberttech
  • #2101 - cursor based extractor to postgresql adapter - @norberttech
  • #2101 - dsl and builder to cover cursors to postgresql library - @norberttech
  • #2096 - flow-php/etl-adapter-postgresql based on flow-php/postgresql library - @norberttech
  • #2095 - added BoolArrayConverter for PostgreSQL BOOL[] type - @norberttech
  • #2095 - IntArrayConverter for PostgreSQL INT2[], INT4[], INT8[] types - @norberttech
  • #2095 - FloatArrayConverter for PostgreSQL FLOAT4[], FLOAT8[] types - @norberttech
  • #2095 - TextArrayConverter for PostgreSQL TEXT[], VARCHAR[] types - @norberttech
  • #2095 - UuidArrayConverter for PostgreSQL UUID[] type - @norberttech
  • #2095 - JsonArrayConverter for PostgreSQL JSON[], JSONB[] types - @norberttech
  • #2093 - Client::explain() : Plan - to postgresql client - @norberttech
  • #2093 - More precise fetchScalarX functions to postgresql client - @norberttech
  • #2091 - added SelectStatement::from() : From - @norberttech
  • #2091 - sql_query_depth(string $query): int - @norberttech
  • #2090 - expose helper methods on SelectStatement - @norberttech
  • #2088 - expose Statements through ParsedQuery object - @norberttech

Changed

  • a585f7 - chore: update dependencies - @norberttech
  • #2129 - Run benchamrks on CI/CD synchronously - @norberttech
  • #2129 - Improve loaders benchmarks performance - @norberttech
  • #2129 - Increase benchmarks iterations on CI/CD to 3 - @norberttech
  • #2129 - Entry type now is directly extracted from Definition - @norberttech
  • #2129 - DbalLoader now uses Entry-based type detection instead of Schema-based detection for better performance - @norberttech
  • #2129 - Replaced DbalLoader::withTypesDetector() with withTypesMap() for simpler API - @norberttech
  • #2129 - DbalLoader now skips processing when rows are empty - @norberttech
  • #2122 - DataFrame::run() now respects Analyze configured at Config level when not explicitly passed - @norberttech
  • #2122 - DataFrame::run() refactored to use ReportCollector for cleaner code and better static analysis - @norberttech
  • #2122 - FlowStreamedResponse now accepts optional StreamClosure and Config parameters - @norberttech
  • #2121 - simplified DSL functions (from_pgsql_cursor, from_pgsql_limit_offset, from_pgsql_key_set) - removed optional parameters (pageSize, fetchSize, maximum) in favor of ->withXXX() fluent methods - @norberttech
  • #2121 - postgresql - ModificationContext now requires ParseResult parameter for full AST access - @norberttech
  • #2121 - postgresql - KeysetPaginationModifier now auto-detects parameter offset instead of requiring it in config - @norberttech
  • #2111 - split query and result exception in postgresql client - @norberttech
  • #2110 - updated openspout to accept only latest version - @norberttech
  • #2103 - Simplify a little bit the ExcelLoader code - @stloyd
  • #2100 - OrderBy and OrderByItem were merged into single OrderBy class - @norberttech
  • #2095 - array converters to throw ValueConversionException for invalid element types instead of silently converting - @norberttech
  • a2bfdc - chores: cleanups - @norberttech
  • #2087 - Update Homebrew TAP formula: flow-php to version: 0.29.0 - @norberttech

Fixed

  • #2103 - **Fixing bug in ExcelExtractor skipping the fi...
Read more

0.29.0

17 Dec 10:31

Choose a tag to compare

[0.29.0] - 2025-12-17

Added

Changed

Fixed

Contributors

Generated by Automation

0.28.0

24 Nov 20:21

Choose a tag to compare

[0.28.0] - 2025-11-24

Added

Changed

Fixed

  • #2013 - Reading value from DOM text/comment elements - @stloyd
  • #2010 - Allow reading not strictly valid HTML - @stloyd

Contributors

Generated by Automation

0.27.0

10 Nov 21:52

Choose a tag to compare

[0.27.0] - 2025-11-10

Added

Changed

Fixed

Read more

0.26.1

28 Oct 13:01

Choose a tag to compare

[0.26.1] - 2025-10-28

Added

Changed

Fixed

Updated

Contributors

Generated by Automation

0.26.0

27 Oct 10:03

Choose a tag to compare

[0.26.0] - 2025-10-27

Added

Changed

Fixed

Updated

Removed

Contributors

Generated by Automation

0.25.0

29 Sep 09:53

Choose a tag to compare

[0.25.0] - 2025-09-29

Added

Changed

Fixed

  • #1867 - Performance bottlenecks in thrift by overwriting implementations with more modern code - @norberttech
  • #1867 - Cleanup Chunk builders after flushing content to stream - @norberttech

Contributors

Generated by Automation

0.24.0

16 Sep 18:04

Choose a tag to compare

[0.24.0] - 2025-09-16

Added

Changed

Fixed

Contributors

Generated by Automation

0.23.0

01 Sep 12:18

Choose a tag to compare

[0.23.0] - 2025-09-01

Added

Changed

Fixed

Updated

Removed

Contributors

Generated by Automation