From ef8938b21d80baf45eaf3ae913978786f3f76175 Mon Sep 17 00:00:00 2001 From: Norbert Orzechowicz Date: Wed, 27 May 2026 10:52:13 +0200 Subject: [PATCH 1/2] refactor: drop support for docrtine 3.6 --- composer.json | 2 +- composer.lock | 170 ++++---- .../etl-adapter-doctrine/composer.json | 2 +- .../symfony/telemetry-bundle/composer.json | 4 +- .../Compiler/DBALTelemetryPass.php | 21 +- .../DBAL/{V3 => }/TracingConnection.php | 2 +- .../Doctrine/DBAL/{V4 => }/TracingDriver.php | 2 +- .../DBAL/{V3 => }/TracingStatement.php | 2 +- .../Doctrine/DBAL/V3/TracingDriver.php | 102 ----- .../Doctrine/DBAL/V4/TracingConnection.php | 195 ---------- .../Doctrine/DBAL/V4/TracingStatement.php | 49 --- .../Doctrine/DBAL/TracingConnectionTest.php | 10 +- .../Doctrine/DBAL/TracingDriverTest.php | 11 +- .../DBAL/V3/TracingConnectionTest.php | 363 ------------------ .../Doctrine/DBAL/V3/TracingDriverTest.php | 315 --------------- src/lib/doctrine-dbal-bulk/composer.json | 2 +- .../src/Flow/Doctrine/Bulk/DbalPlatform.php | 7 +- tools/blackfire/composer.lock | 12 +- tools/box/composer.lock | 84 ++-- tools/infection/composer.lock | 84 ++-- tools/phpstan/composer.lock | 8 +- tools/phpunit/composer.lock | 2 + 22 files changed, 194 insertions(+), 1255 deletions(-) rename src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/{V3 => }/TracingConnection.php (99%) rename src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/{V4 => }/TracingDriver.php (99%) rename src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/{V3 => }/TracingStatement.php (98%) delete mode 100644 src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingDriver.php delete mode 100644 src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingConnection.php delete mode 100644 src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingStatement.php delete mode 100644 src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/V3/TracingConnectionTest.php delete mode 100644 src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/V3/TracingDriverTest.php diff --git a/composer.json b/composer.json index bec62d9fb..66ab8cad3 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,7 @@ "brick/math": "^0.12 || ^0.13 || ^0.14 || ^0.15 || ^0.16 || ^0.17", "coduo/php-humanizer": "^5.0", "cuyz/valinor": "^2.4", - "doctrine/dbal": "^3.6 || ^4.0", + "doctrine/dbal": "^4.0", "elasticsearch/elasticsearch": "^7.6|^8.0", "google/apiclient": "^2.13", "google/protobuf": "^4.0 || ^5.0", diff --git a/composer.lock b/composer.lock index a53506157..56f050161 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "126a806538bbe2fdc45647bbe8fa5f56", + "content-hash": "7c503d7bfb107dd487ae32a56791438b", "packages": [ { "name": "async-aws/core", @@ -752,16 +752,16 @@ }, { "name": "google/apiclient-services", - "version": "v0.441.1", + "version": "v0.442.0", "source": { "type": "git", "url": "https://github.com/googleapis/google-api-php-client-services.git", - "reference": "b389588a2f9f375ec448d6cd8d0903d83c571ae0" + "reference": "3afe7b5c9d1cebf2a5be018820ce62eeb906b81f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/b389588a2f9f375ec448d6cd8d0903d83c571ae0", - "reference": "b389588a2f9f375ec448d6cd8d0903d83c571ae0", + "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/3afe7b5c9d1cebf2a5be018820ce62eeb906b81f", + "reference": "3afe7b5c9d1cebf2a5be018820ce62eeb906b81f", "shasum": "" }, "require": { @@ -790,9 +790,9 @@ ], "support": { "issues": "https://github.com/googleapis/google-api-php-client-services/issues", - "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.441.1" + "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.442.0" }, - "time": "2026-05-17T01:38:24+00:00" + "time": "2026-05-25T01:34:24+00:00" }, { "name": "google/auth", @@ -902,16 +902,16 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.10.3", + "version": "7.10.4", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "47ba23c7a55247e2e1b7407aca90e9bbed0d9d86" + "reference": "aec528da477062d3af11f51e6b33402be233b21f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/47ba23c7a55247e2e1b7407aca90e9bbed0d9d86", - "reference": "47ba23c7a55247e2e1b7407aca90e9bbed0d9d86", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/aec528da477062d3af11f51e6b33402be233b21f", + "reference": "aec528da477062d3af11f51e6b33402be233b21f", "shasum": "" }, "require": { @@ -1009,7 +1009,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.10.3" + "source": "https://github.com/guzzle/guzzle/tree/7.10.4" }, "funding": [ { @@ -1025,7 +1025,7 @@ "type": "tidelift" } ], - "time": "2026-05-20T22:59:19+00:00" + "time": "2026-05-22T19:00:53+00:00" }, { "name": "guzzlehttp/promises", @@ -1112,16 +1112,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.10.1", + "version": "2.10.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "73ab136360b5dfd858006eae9795e8fe43c80361" + "reference": "a1bbdc172f32a25fe999965b65b6e71fd87da9ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/73ab136360b5dfd858006eae9795e8fe43c80361", - "reference": "73ab136360b5dfd858006eae9795e8fe43c80361", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/a1bbdc172f32a25fe999965b65b6e71fd87da9ed", + "reference": "a1bbdc172f32a25fe999965b65b6e71fd87da9ed", "shasum": "" }, "require": { @@ -1209,7 +1209,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.10.1" + "source": "https://github.com/guzzle/psr7/tree/2.10.2" }, "funding": [ { @@ -1225,7 +1225,7 @@ "type": "tidelift" } ], - "time": "2026-05-20T09:27:36+00:00" + "time": "2026-05-25T22:58:15+00:00" }, { "name": "halaxa/json-machine", @@ -2524,16 +2524,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v7.4.10", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "4eb0d9dfa9d4f7c59216baf49b3ed6b1fb72293d" + "reference": "f299e20ce983be6c0744952533c6dfeaaa1448e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/4eb0d9dfa9d4f7c59216baf49b3ed6b1fb72293d", - "reference": "4eb0d9dfa9d4f7c59216baf49b3ed6b1fb72293d", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f299e20ce983be6c0744952533c6dfeaaa1448e2", + "reference": "f299e20ce983be6c0744952533c6dfeaaa1448e2", "shasum": "" }, "require": { @@ -2584,7 +2584,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v7.4.10" + "source": "https://github.com/symfony/dependency-injection/tree/v7.4.13" }, "funding": [ { @@ -2604,7 +2604,7 @@ "type": "tidelift" } ], - "time": "2026-05-06T11:55:30+00:00" + "time": "2026-05-20T14:07:29+00:00" }, { "name": "symfony/deprecation-contracts", @@ -3463,16 +3463,16 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.37.0", + "version": "v1.38.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "4864388bfbd3001ce88e234fab652acd91fdc57e" + "reference": "e9247d281d694a5120554d9afaf54e070e88a603" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/4864388bfbd3001ce88e234fab652acd91fdc57e", - "reference": "4864388bfbd3001ce88e234fab652acd91fdc57e", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/e9247d281d694a5120554d9afaf54e070e88a603", + "reference": "e9247d281d694a5120554d9afaf54e070e88a603", "shasum": "" }, "require": { @@ -3521,7 +3521,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.38.1" }, "funding": [ { @@ -3541,20 +3541,20 @@ "type": "tidelift" } ], - "time": "2026-04-26T13:13:48+00:00" + "time": "2026-05-26T05:58:03+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.37.0", + "version": "v1.38.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "3833d7255cc303546435cb650316bff708a1c75c" + "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", - "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/2d446c214bdbe5b71bde5011b060a05fece3ae6b", + "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b", "shasum": "" }, "require": { @@ -3606,7 +3606,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.38.0" }, "funding": [ { @@ -3626,20 +3626,20 @@ "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2026-05-25T13:48:31+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.37.0", + "version": "v1.38.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315" + "reference": "14c5439eec4ccff081ac14eca2dc57feb2a66d92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6a21eb99c6973357967f6ce3708cd55a6bec6315", - "reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/14c5439eec4ccff081ac14eca2dc57feb2a66d92", + "reference": "14c5439eec4ccff081ac14eca2dc57feb2a66d92", "shasum": "" }, "require": { @@ -3691,7 +3691,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.1" }, "funding": [ { @@ -3711,20 +3711,20 @@ "type": "tidelift" } ], - "time": "2026-04-10T17:25:58+00:00" + "time": "2026-05-26T12:51:13+00:00" }, { "name": "symfony/polyfill-php82", - "version": "v1.37.0", + "version": "v1.38.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php82.git", - "reference": "34808efe3e68f69685796f7c253a2f1d8ea9df59" + "reference": "002dc0cfe5fd4ed6033d48f27d4f19a486c4b04b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php82/zipball/34808efe3e68f69685796f7c253a2f1d8ea9df59", - "reference": "34808efe3e68f69685796f7c253a2f1d8ea9df59", + "url": "https://api.github.com/repos/symfony/polyfill-php82/zipball/002dc0cfe5fd4ed6033d48f27d4f19a486c4b04b", + "reference": "002dc0cfe5fd4ed6033d48f27d4f19a486c4b04b", "shasum": "" }, "require": { @@ -3771,7 +3771,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php82/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-php82/tree/v1.38.1" }, "funding": [ { @@ -3791,20 +3791,20 @@ "type": "tidelift" } ], - "time": "2026-04-10T16:19:22+00:00" + "time": "2026-05-26T12:45:58+00:00" }, { "name": "symfony/polyfill-php83", - "version": "v1.37.0", + "version": "v1.38.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "3600c2cb22399e25bb226e4a135ce91eeb2a6149" + "reference": "8339098cae28673c15cce00d80734af0453054e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/3600c2cb22399e25bb226e4a135ce91eeb2a6149", - "reference": "3600c2cb22399e25bb226e4a135ce91eeb2a6149", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/8339098cae28673c15cce00d80734af0453054e2", + "reference": "8339098cae28673c15cce00d80734af0453054e2", "shasum": "" }, "require": { @@ -3851,7 +3851,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.38.1" }, "funding": [ { @@ -3871,20 +3871,20 @@ "type": "tidelift" } ], - "time": "2026-04-10T17:25:58+00:00" + "time": "2026-05-26T12:51:13+00:00" }, { "name": "symfony/polyfill-php85", - "version": "v1.37.0", + "version": "v1.38.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php85.git", - "reference": "fcfa4973a9917cef23f2e38774da74a2b7d115ee" + "reference": "ba2ba04f3352cfa2dcbbcb90aee13ed967f505b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/fcfa4973a9917cef23f2e38774da74a2b7d115ee", - "reference": "fcfa4973a9917cef23f2e38774da74a2b7d115ee", + "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/ba2ba04f3352cfa2dcbbcb90aee13ed967f505b1", + "reference": "ba2ba04f3352cfa2dcbbcb90aee13ed967f505b1", "shasum": "" }, "require": { @@ -3931,7 +3931,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php85/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-php85/tree/v1.38.1" }, "funding": [ { @@ -3951,7 +3951,7 @@ "type": "tidelift" } ], - "time": "2026-04-26T13:10:57+00:00" + "time": "2026-05-26T02:25:22+00:00" }, { "name": "symfony/polyfill-uuid", @@ -4125,16 +4125,16 @@ }, { "name": "symfony/string", - "version": "v7.4.11", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "965f7306a43383d02c6aca1e3f3bd2f0ea5dee15" + "reference": "961683010db3b27ec6ebcd7308e6e1ee8fa7ffde" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/965f7306a43383d02c6aca1e3f3bd2f0ea5dee15", - "reference": "965f7306a43383d02c6aca1e3f3bd2f0ea5dee15", + "url": "https://api.github.com/repos/symfony/string/zipball/961683010db3b27ec6ebcd7308e6e1ee8fa7ffde", + "reference": "961683010db3b27ec6ebcd7308e6e1ee8fa7ffde", "shasum": "" }, "require": { @@ -4192,7 +4192,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.4.11" + "source": "https://github.com/symfony/string/tree/v7.4.13" }, "funding": [ { @@ -4212,7 +4212,7 @@ "type": "tidelift" } ], - "time": "2026-05-13T12:04:42+00:00" + "time": "2026-05-23T15:23:29+00:00" }, { "name": "symfony/translation", @@ -5548,16 +5548,16 @@ }, { "name": "symfony/cache", - "version": "v7.4.12", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "902d621e0b6ef0ebeaa133770b5c339a19328589" + "reference": "4c09e18a92cce126cc0d1155825279fca8cd0673" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/902d621e0b6ef0ebeaa133770b5c339a19328589", - "reference": "902d621e0b6ef0ebeaa133770b5c339a19328589", + "url": "https://api.github.com/repos/symfony/cache/zipball/4c09e18a92cce126cc0d1155825279fca8cd0673", + "reference": "4c09e18a92cce126cc0d1155825279fca8cd0673", "shasum": "" }, "require": { @@ -5628,7 +5628,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.4.12" + "source": "https://github.com/symfony/cache/tree/v7.4.13" }, "funding": [ { @@ -5648,7 +5648,7 @@ "type": "tidelift" } ], - "time": "2026-05-20T07:20:23+00:00" + "time": "2026-05-24T08:43:14+00:00" }, { "name": "symfony/cache-contracts", @@ -5956,16 +5956,16 @@ }, { "name": "symfony/framework-bundle", - "version": "v7.4.11", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "637f5cac1ac2698a012b41610215bf366004295f" + "reference": "8be39c7bf9e6f58fe49c07927572a9df7c961c95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/637f5cac1ac2698a012b41610215bf366004295f", - "reference": "637f5cac1ac2698a012b41610215bf366004295f", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/8be39c7bf9e6f58fe49c07927572a9df7c961c95", + "reference": "8be39c7bf9e6f58fe49c07927572a9df7c961c95", "shasum": "" }, "require": { @@ -6090,7 +6090,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v7.4.11" + "source": "https://github.com/symfony/framework-bundle/tree/v7.4.13" }, "funding": [ { @@ -6110,7 +6110,7 @@ "type": "tidelift" } ], - "time": "2026-05-13T12:04:42+00:00" + "time": "2026-05-23T18:04:28+00:00" }, { "name": "symfony/messenger", @@ -6363,16 +6363,16 @@ }, { "name": "symfony/process", - "version": "v7.4.11", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "d9593c9efa40499eb078b81144de42cbc28a31f0" + "reference": "f5804be144caceb570f6747519999636b664f24c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/d9593c9efa40499eb078b81144de42cbc28a31f0", - "reference": "d9593c9efa40499eb078b81144de42cbc28a31f0", + "url": "https://api.github.com/repos/symfony/process/zipball/f5804be144caceb570f6747519999636b664f24c", + "reference": "f5804be144caceb570f6747519999636b664f24c", "shasum": "" }, "require": { @@ -6404,7 +6404,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.4.11" + "source": "https://github.com/symfony/process/tree/v7.4.13" }, "funding": [ { @@ -6424,7 +6424,7 @@ "type": "tidelift" } ], - "time": "2026-05-11T16:55:21+00:00" + "time": "2026-05-23T16:05:06+00:00" }, { "name": "symfony/routing", diff --git a/src/adapter/etl-adapter-doctrine/composer.json b/src/adapter/etl-adapter-doctrine/composer.json index e9414f337..1ca911cbe 100644 --- a/src/adapter/etl-adapter-doctrine/composer.json +++ b/src/adapter/etl-adapter-doctrine/composer.json @@ -14,7 +14,7 @@ ], "require": { "php": "~8.3.0 || ~8.4.0 || ~8.5.0", - "doctrine/dbal": "^3.6 || ^4.0", + "doctrine/dbal": "^4.0", "flow-php/doctrine-dbal-bulk": "self.version", "flow-php/etl": "self.version" }, diff --git a/src/bridge/symfony/telemetry-bundle/composer.json b/src/bridge/symfony/telemetry-bundle/composer.json index f0460f50b..15b8f24bf 100644 --- a/src/bridge/symfony/telemetry-bundle/composer.json +++ b/src/bridge/symfony/telemetry-bundle/composer.json @@ -28,7 +28,7 @@ "symfony/polyfill-mbstring": "^1.33" }, "require-dev": { - "doctrine/dbal": "^3.6 || ^4.0", + "doctrine/dbal": "^4.0", "flow-php/psr18-telemetry-bridge": "self.version", "flow-php/telemetry-otlp-bridge": "self.version", "nyholm/psr7": "^1.8", @@ -38,7 +38,7 @@ "twig/twig": "^3.0" }, "suggest": { - "doctrine/dbal": "Required for Doctrine DBAL tracing (^3.6 or ^4.0)", + "doctrine/dbal": "Required for Doctrine DBAL tracing (^4.0)", "flow-php/psr18-telemetry-bridge": "Required for PSR-18 HTTP client tracing", "flow-php/telemetry-otlp-bridge": "Required for OTLP exporter support", "symfony/messenger": "Required for Messenger tracing middleware", diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/Compiler/DBALTelemetryPass.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/Compiler/DBALTelemetryPass.php index 8b36233df..e597a8e73 100644 --- a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/Compiler/DBALTelemetryPass.php +++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/DependencyInjection/Compiler/DBALTelemetryPass.php @@ -4,9 +4,8 @@ namespace Flow\Bridge\Symfony\TelemetryBundle\DependencyInjection\Compiler; +use Flow\Bridge\Symfony\TelemetryBundle\Instrumentation\Doctrine\DBAL\TracingDriver; use Flow\Bridge\Symfony\TelemetryBundle\Instrumentation\Doctrine\DBAL\TracingMiddleware; -use Flow\Bridge\Symfony\TelemetryBundle\Instrumentation\Doctrine\DBAL\V3\TracingDriver as V3TracingDriver; -use Flow\Bridge\Symfony\TelemetryBundle\Instrumentation\Doctrine\DBAL\V4\TracingDriver as V4TracingDriver; use Flow\Telemetry\Telemetry; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; @@ -15,13 +14,10 @@ use function array_keys; use function count; -use function interface_exists; use function preg_match; final class DBALTelemetryPass implements CompilerPassInterface { - private const string VERSION_AWARE_PLATFORM_DRIVER = 'Doctrine\\DBAL\\VersionAwarePlatformDriver'; - public function process(ContainerBuilder $container): void { if (!$container->hasParameter('flow.telemetry.dbal.enabled')) { @@ -45,7 +41,6 @@ public function process(ContainerBuilder $container): void ? $container->getParameter('flow.telemetry.dbal.exclude_connections') : []; - $driverClass = $this->resolveDriverClass(); $connectionNames = $this->findConnectionNames($container); foreach ($connectionNames as $connectionName) { @@ -57,7 +52,7 @@ public function process(ContainerBuilder $container): void $definition = new Definition(TracingMiddleware::class); $definition->setArgument(0, new Reference(Telemetry::class)); - $definition->setArgument(1, $driverClass); + $definition->setArgument(1, TracingDriver::class); $definition->setArgument(2, $connectionName); $definition->setArgument(3, $logSql); $definition->setArgument(4, $maxSqlLength); @@ -114,16 +109,4 @@ private function matchesPattern(string $connectionName, string $pattern): bool return $connectionName === $pattern; } - - /** - * @return class-string - */ - private function resolveDriverClass(): string - { - if (interface_exists(self::VERSION_AWARE_PLATFORM_DRIVER)) { - return V3TracingDriver::class; - } - - return V4TracingDriver::class; - } } diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingConnection.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/TracingConnection.php similarity index 99% rename from src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingConnection.php rename to src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/TracingConnection.php index 0c578782d..9d606e62b 100644 --- a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingConnection.php +++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/TracingConnection.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Flow\Bridge\Symfony\TelemetryBundle\Instrumentation\Doctrine\DBAL\V3; +namespace Flow\Bridge\Symfony\TelemetryBundle\Instrumentation\Doctrine\DBAL; use DateTimeImmutable; use Doctrine\DBAL\Driver\Connection as ConnectionInterface; diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingDriver.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/TracingDriver.php similarity index 99% rename from src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingDriver.php rename to src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/TracingDriver.php index 18bcf85ad..0fc8577ab 100644 --- a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingDriver.php +++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/TracingDriver.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Flow\Bridge\Symfony\TelemetryBundle\Instrumentation\Doctrine\DBAL\V4; +namespace Flow\Bridge\Symfony\TelemetryBundle\Instrumentation\Doctrine\DBAL; use DateTimeImmutable; use Doctrine\DBAL\Connection\StaticServerVersionProvider; diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingStatement.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/TracingStatement.php similarity index 98% rename from src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingStatement.php rename to src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/TracingStatement.php index bd5a93f27..2147b4f13 100644 --- a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingStatement.php +++ b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/TracingStatement.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Flow\Bridge\Symfony\TelemetryBundle\Instrumentation\Doctrine\DBAL\V3; +namespace Flow\Bridge\Symfony\TelemetryBundle\Instrumentation\Doctrine\DBAL; use DateTimeImmutable; use Doctrine\DBAL\Driver\Middleware\AbstractStatementMiddleware; diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingDriver.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingDriver.php deleted file mode 100644 index 53df53bc1..000000000 --- a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V3/TracingDriver.php +++ /dev/null @@ -1,102 +0,0 @@ -telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal')); - - $span = $tracer->span('doctrine.dbal.connection', SpanKind::CLIENT, [ - 'db.namespace' => $params['dbname'] ?? 'default', - 'db.connection.name' => $this->connectionName, - ]); - - try { - $connection = parent::connect($params); - - $span->setAttribute('db.system.name', $this->getSemanticDbSystem($connection->getServerVersion())); - $span->setStatus(SpanStatus::ok()); - - return new TracingConnection($connection, $this->telemetry, $this->logSql, $this->maxSqlLength); - } catch (Throwable $exception) { - $span->recordException($exception, new DateTimeImmutable()); - $span->setStatus(SpanStatus::error($exception->getMessage())); - - throw $exception; - } finally { - $tracer->complete($span); - } - } - - private function getSemanticDbSystem(string $serverVersion): string - { - $platform = $this->getDatabasePlatform(new StaticServerVersionProvider($serverVersion)); - - if ($platform instanceof AbstractMySQLPlatform) { - return 'mysql'; - } - - if ($platform instanceof PostgreSQLPlatform) { - return 'postgresql'; - } - - if ($platform instanceof SqlitePlatform) { - return 'sqlite'; - } - - if ($platform instanceof SQLServerPlatform) { - return 'mssql'; - } - - if ($platform instanceof OraclePlatform) { - return 'oracle'; - } - - if ($platform instanceof DB2Platform) { - return 'db2'; - } - - return 'other_sql'; - } -} diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingConnection.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingConnection.php deleted file mode 100644 index 8be7470d0..000000000 --- a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingConnection.php +++ /dev/null @@ -1,195 +0,0 @@ -telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal')); - - $span = $tracer->span('doctrine.dbal.transaction.begin', SpanKind::CLIENT); - - try { - parent::beginTransaction(); - - $span->setStatus(SpanStatus::ok()); - } catch (Throwable $exception) { - $span->recordException($exception, new DateTimeImmutable()); - $span->setStatus(SpanStatus::error($exception->getMessage())); - - throw $exception; - } finally { - $tracer->complete($span); - } - } - - #[Override] - public function commit(): void - { - $tracer = $this->telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal')); - - $span = $tracer->span('doctrine.dbal.transaction.commit', SpanKind::CLIENT); - - try { - parent::commit(); - - $span->setStatus(SpanStatus::ok()); - } catch (Throwable $exception) { - $span->recordException($exception, new DateTimeImmutable()); - $span->setStatus(SpanStatus::error($exception->getMessage())); - - throw $exception; - } finally { - $tracer->complete($span); - } - } - - #[Override] - public function exec(string $sql): int|string - { - $tracer = $this->telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal')); - - $attributes = []; - - if ($this->logSql) { - $attributes['db.query.text'] = $this->truncateSql($sql); - } - - $span = $tracer->span('doctrine.dbal.connection.exec', SpanKind::CLIENT, $attributes); - - try { - $result = parent::exec($sql); - - $span->setStatus(SpanStatus::ok()); - - return $result; - } catch (Throwable $exception) { - $span->recordException($exception, new DateTimeImmutable()); - $span->setStatus(SpanStatus::error($exception->getMessage())); - - throw $exception; - } finally { - $tracer->complete($span); - } - } - - #[Override] - public function prepare(string $sql): DriverStatement - { - $tracer = $this->telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal')); - - $attributes = []; - - if ($this->logSql) { - $attributes['db.query.text'] = $this->truncateSql($sql); - } - - $span = $tracer->span('doctrine.dbal.statement.prepare', SpanKind::CLIENT, $attributes); - - try { - $statement = parent::prepare($sql); - - $span->setStatus(SpanStatus::ok()); - - return new TracingStatement($statement, $this->telemetry); - } catch (Throwable $exception) { - $span->recordException($exception, new DateTimeImmutable()); - $span->setStatus(SpanStatus::error($exception->getMessage())); - - throw $exception; - } finally { - $tracer->complete($span); - } - } - - #[Override] - public function query(string $sql): Result - { - $tracer = $this->telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal')); - - $attributes = []; - - if ($this->logSql) { - $attributes['db.query.text'] = $this->truncateSql($sql); - } - - $span = $tracer->span('doctrine.dbal.connection.query', SpanKind::CLIENT, $attributes); - - try { - $result = parent::query($sql); - - $span->setStatus(SpanStatus::ok()); - - return $result; - } catch (Throwable $exception) { - $span->recordException($exception, new DateTimeImmutable()); - $span->setStatus(SpanStatus::error($exception->getMessage())); - - throw $exception; - } finally { - $tracer->complete($span); - } - } - - #[Override] - public function rollBack(): void - { - $tracer = $this->telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal')); - - $span = $tracer->span('doctrine.dbal.transaction.rollback', SpanKind::CLIENT); - - try { - parent::rollBack(); - - $span->setStatus(SpanStatus::ok()); - } catch (Throwable $exception) { - $span->recordException($exception, new DateTimeImmutable()); - $span->setStatus(SpanStatus::error($exception->getMessage())); - - throw $exception; - } finally { - $tracer->complete($span); - } - } - - private function truncateSql(string $sql): string - { - if ($this->maxSqlLength <= 0) { - return $sql; - } - - if (mb_strlen($sql) <= $this->maxSqlLength) { - return $sql; - } - - return mb_substr($sql, 0, $this->maxSqlLength) . '...'; - } -} diff --git a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingStatement.php b/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingStatement.php deleted file mode 100644 index f7800382e..000000000 --- a/src/bridge/symfony/telemetry-bundle/src/Flow/Bridge/Symfony/TelemetryBundle/Instrumentation/Doctrine/DBAL/V4/TracingStatement.php +++ /dev/null @@ -1,49 +0,0 @@ -telemetry->tracer('flow.symfony.dbal', PackageVersion::get('doctrine/dbal')); - - $span = $tracer->span('doctrine.dbal.statement.execute', SpanKind::CLIENT); - - try { - $result = parent::execute(); - - $span->setStatus(SpanStatus::ok()); - - return $result; - } catch (Throwable $exception) { - $span->recordException($exception, new DateTimeImmutable()); - $span->setStatus(SpanStatus::error($exception->getMessage())); - - throw $exception; - } finally { - $tracer->complete($span); - } - } -} diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/TracingConnectionTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/TracingConnectionTest.php index 0813dae43..b3bae7766 100644 --- a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/TracingConnectionTest.php +++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/TracingConnectionTest.php @@ -8,7 +8,7 @@ use Doctrine\DBAL\Driver\Result; use Doctrine\DBAL\Driver\Statement as DriverStatement; use Doctrine\DBAL\ParameterType; -use Flow\Bridge\Symfony\TelemetryBundle\Instrumentation\Doctrine\DBAL\V4\TracingConnection; +use Flow\Bridge\Symfony\TelemetryBundle\Instrumentation\Doctrine\DBAL\TracingConnection; use Flow\Telemetry\Context\MemoryContextStorage; use Flow\Telemetry\Logger\LoggerProvider; use Flow\Telemetry\Meter\MeterProvider; @@ -24,20 +24,12 @@ use PHPUnit\Framework\TestCase; use stdClass; -use function interface_exists; use function mb_strlen; use function str_repeat; #[CoversClass(TracingConnection::class)] final class TracingConnectionTest extends TestCase { - protected function setUp(): void - { - if (interface_exists('Doctrine\DBAL\VersionAwarePlatformDriver')) { - self::markTestSkipped('Test requires Doctrine DBAL 4.x'); - } - } - public function test_prepare_uses_truncation(): void { $spanProcessor = new MemorySpanProcessor(new MemoryExporter()); diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/TracingDriverTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/TracingDriverTest.php index 3d6eb0a09..328f0e209 100644 --- a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/TracingDriverTest.php +++ b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/TracingDriverTest.php @@ -18,7 +18,7 @@ use Doctrine\DBAL\Platforms\SQLitePlatform; use Doctrine\DBAL\Platforms\SQLServerPlatform; use Doctrine\DBAL\ServerVersionProvider; -use Flow\Bridge\Symfony\TelemetryBundle\Instrumentation\Doctrine\DBAL\V4\TracingDriver; +use Flow\Bridge\Symfony\TelemetryBundle\Instrumentation\Doctrine\DBAL\TracingDriver; use Flow\Telemetry\Context\MemoryContextStorage; use Flow\Telemetry\Logger\LoggerProvider; use Flow\Telemetry\Meter\MeterProvider; @@ -35,18 +35,9 @@ use RuntimeException; use stdClass; -use function interface_exists; - #[CoversClass(TracingDriver::class)] final class TracingDriverTest extends TestCase { - protected function setUp(): void - { - if (interface_exists('Doctrine\DBAL\VersionAwarePlatformDriver')) { - self::markTestSkipped('Test requires Doctrine DBAL 4.x'); - } - } - public function test_get_semantic_db_system_defaults_to_other_sql(): void { $spanProcessor = new MemorySpanProcessor(new MemoryExporter()); diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/V3/TracingConnectionTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/V3/TracingConnectionTest.php deleted file mode 100644 index 4c8519f79..000000000 --- a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/V3/TracingConnectionTest.php +++ /dev/null @@ -1,363 +0,0 @@ -createTelemetry($spanProcessor); - - $connection = $this->createMockConnection(); - $tracing = new TracingConnection($connection, $telemetry, logSql: true, maxSqlLength: 15); - - $sql = 'INSERT INTO users (name, email) VALUES (?, ?)'; - $tracing->prepare($sql); - - $spans = $spanProcessor->endedSpans(); - static::assertCount(1, $spans); - static::assertSame('INSERT INTO use...', $spans[0]->attributes()['db.query.text']); - } - - public function test_query_uses_truncation(): void - { - $spanProcessor = new MemorySpanProcessor(new MemoryExporter()); - $telemetry = $this->createTelemetry($spanProcessor); - - $connection = $this->createMockConnection(); - $tracing = new TracingConnection($connection, $telemetry, logSql: true, maxSqlLength: 10); - - $sql = 'SELECT * FROM users WHERE id = 1'; - $tracing->query($sql); - - $spans = $spanProcessor->endedSpans(); - static::assertCount(1, $spans); - static::assertSame('SELECT * F...', $spans[0]->attributes()['db.query.text']); - } - - public function test_sql_not_logged_when_log_sql_disabled(): void - { - $spanProcessor = new MemorySpanProcessor(new MemoryExporter()); - $telemetry = $this->createTelemetry($spanProcessor); - - $connection = $this->createMockConnection(); - $tracing = new TracingConnection($connection, $telemetry, logSql: false, maxSqlLength: 100); - - $sql = 'SELECT * FROM users'; - $tracing->exec($sql); - - $spans = $spanProcessor->endedSpans(); - static::assertCount(1, $spans); - static::assertArrayNotHasKey('db.query.text', $spans[0]->attributes()); - } - - public function test_truncate_sql_exact_boundary_case(): void - { - $spanProcessor = new MemorySpanProcessor(new MemoryExporter()); - $telemetry = $this->createTelemetry($spanProcessor); - - $connection = $this->createMockConnection(); - $tracing = new TracingConnection($connection, $telemetry, logSql: true, maxSqlLength: 10); - - $sql = '1234567890'; - $tracing->exec($sql); - - $spans = $spanProcessor->endedSpans(); - static::assertCount(1, $spans); - static::assertSame($sql, $spans[0]->attributes()['db.query.text']); - } - - public function test_truncate_sql_handles_multibyte_characters(): void - { - $spanProcessor = new MemorySpanProcessor(new MemoryExporter()); - $telemetry = $this->createTelemetry($spanProcessor); - - $connection = $this->createMockConnection(); - $tracing = new TracingConnection($connection, $telemetry, logSql: true, maxSqlLength: 15); - - $sql = "SELECT * FROM users WHERE name = '日本語テスト'"; - $tracing->exec($sql); - - $spans = $spanProcessor->endedSpans(); - static::assertCount(1, $spans); - - $truncated = $spans[0]->attributes()['db.query.text']; - static::assertSame('SELECT * FROM u...', $truncated); - static::assertSame(18, mb_strlen($truncated)); - } - - public function test_truncate_sql_returns_full_sql_when_max_length_negative(): void - { - $spanProcessor = new MemorySpanProcessor(new MemoryExporter()); - $telemetry = $this->createTelemetry($spanProcessor); - - $connection = $this->createMockConnection(); - $tracing = new TracingConnection($connection, $telemetry, logSql: true, maxSqlLength: -1); - - $longSql = str_repeat('SELECT * FROM users; ', 100); - $tracing->exec($longSql); - - $spans = $spanProcessor->endedSpans(); - static::assertCount(1, $spans); - static::assertSame($longSql, $spans[0]->attributes()['db.query.text']); - } - - public function test_truncate_sql_returns_full_sql_when_max_length_zero(): void - { - $spanProcessor = new MemorySpanProcessor(new MemoryExporter()); - $telemetry = $this->createTelemetry($spanProcessor); - - $connection = $this->createMockConnection(); - $tracing = new TracingConnection($connection, $telemetry, logSql: true, maxSqlLength: 0); - - $longSql = str_repeat('SELECT * FROM users; ', 100); - $tracing->exec($longSql); - - $spans = $spanProcessor->endedSpans(); - static::assertCount(1, $spans); - static::assertSame($longSql, $spans[0]->attributes()['db.query.text']); - } - - public function test_truncate_sql_returns_sql_when_shorter_than_limit(): void - { - $spanProcessor = new MemorySpanProcessor(new MemoryExporter()); - $telemetry = $this->createTelemetry($spanProcessor); - - $connection = $this->createMockConnection(); - $tracing = new TracingConnection($connection, $telemetry, logSql: true, maxSqlLength: 100); - - $sql = 'SELECT * FROM users WHERE id = 1'; - $tracing->exec($sql); - - $spans = $spanProcessor->endedSpans(); - static::assertCount(1, $spans); - static::assertSame($sql, $spans[0]->attributes()['db.query.text']); - } - - public function test_truncate_sql_truncates_and_appends_ellipsis(): void - { - $spanProcessor = new MemorySpanProcessor(new MemoryExporter()); - $telemetry = $this->createTelemetry($spanProcessor); - - $connection = $this->createMockConnection(); - $tracing = new TracingConnection($connection, $telemetry, logSql: true, maxSqlLength: 20); - - $sql = 'SELECT * FROM users WHERE id = 1 AND status = active'; - $tracing->exec($sql); - - $spans = $spanProcessor->endedSpans(); - static::assertCount(1, $spans); - static::assertSame('SELECT * FROM users ...', $spans[0]->attributes()['db.query.text']); - } - - private function createMockConnection(): ConnectionInterface - { - return new class implements ConnectionInterface { - public function beginTransaction(): void {} - - public function commit(): void {} - - public function exec(string $sql): int|string - { - return 0; - } - - public function getNativeConnection(): object - { - return new stdClass(); - } - - public function getServerVersion(): string - { - return '8.0.0'; - } - - public function lastInsertId(): int|string - { - return 0; - } - - public function prepare(string $sql): DriverStatement - { - return new class implements DriverStatement { - public function bindValue( - int|string $param, - mixed $value, - ParameterType $type = ParameterType::STRING, - ): void {} - - public function execute(): Result - { - return new class implements Result { - public function columnCount(): int - { - return 0; - } - - /** @return list> */ - public function fetchAllAssociative(): array - { - return []; - } - - /** @return array */ - public function fetchAllKeyValue(): array - { - return []; - } - - /** @return list> */ - public function fetchAllNumeric(): array - { - return []; - } - - /** @return array|false */ - public function fetchAssociative(): array|false - { - return false; - } - - /** @return list */ - public function fetchFirstColumn(): array - { - return []; - } - - /** @return false|list */ - public function fetchNumeric(): array|false - { - return false; - } - - public function fetchOne(): mixed - { - return false; - } - - public function free(): void {} - - public function rowCount(): int|string - { - return 0; - } - }; - } - }; - } - - public function query(string $sql): Result - { - return new class implements Result { - public function columnCount(): int - { - return 0; - } - - /** @return list> */ - public function fetchAllAssociative(): array - { - return []; - } - - /** @return array */ - public function fetchAllKeyValue(): array - { - return []; - } - - /** @return list> */ - public function fetchAllNumeric(): array - { - return []; - } - - /** @return array|false */ - public function fetchAssociative(): array|false - { - return false; - } - - /** @return list */ - public function fetchFirstColumn(): array - { - return []; - } - - /** @return false|list */ - public function fetchNumeric(): array|false - { - return false; - } - - public function fetchOne(): mixed - { - return false; - } - - public function free(): void {} - - public function rowCount(): int|string - { - return 0; - } - }; - } - - public function quote(string $value): string - { - return "'{$value}'"; - } - - public function rollBack(): void {} - }; - } - - private function createTelemetry(MemorySpanProcessor $spanProcessor): Telemetry - { - $clock = new SystemClock(); - $contextStorage = new MemoryContextStorage(); - - return new Telemetry( - Resource::create(['service.name' => 'test']), - new TracerProvider($spanProcessor, $clock, $contextStorage), - new MeterProvider(new VoidMetricProcessor(), $clock), - new LoggerProvider(new VoidLogProcessor(), $clock, $contextStorage), - ); - } -} diff --git a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/V3/TracingDriverTest.php b/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/V3/TracingDriverTest.php deleted file mode 100644 index a6b55985b..000000000 --- a/src/bridge/symfony/telemetry-bundle/tests/Flow/Bridge/Symfony/TelemetryBundle/Tests/Unit/Instrumentation/Doctrine/DBAL/V3/TracingDriverTest.php +++ /dev/null @@ -1,315 +0,0 @@ -createTelemetry($spanProcessor); - - $platform = $this->createMock(AbstractPlatform::class); - $driver = $this->createMockDriverWithPlatform($platform); - - $tracingDriver = new TracingDriver($telemetry, $driver, 'default', logSql: true, maxSqlLength: 100); - - $tracingDriver->connect([]); - - $spans = $spanProcessor->endedSpans(); - static::assertCount(1, $spans); - static::assertSame('other_sql', $spans[0]->attributes()['db.system.name']); - } - - public function test_get_semantic_db_system_detects_db2(): void - { - $spanProcessor = new MemorySpanProcessor(new MemoryExporter()); - $telemetry = $this->createTelemetry($spanProcessor); - - $platform = new DB2Platform(); - $driver = $this->createMockDriverWithPlatform($platform); - - $tracingDriver = new TracingDriver($telemetry, $driver, 'default', logSql: true, maxSqlLength: 100); - - $tracingDriver->connect([]); - - $spans = $spanProcessor->endedSpans(); - static::assertCount(1, $spans); - static::assertSame('db2', $spans[0]->attributes()['db.system.name']); - } - - public function test_get_semantic_db_system_detects_mariadb_as_mysql(): void - { - $spanProcessor = new MemorySpanProcessor(new MemoryExporter()); - $telemetry = $this->createTelemetry($spanProcessor); - - $platform = new MariaDBPlatform(); - $driver = $this->createMockDriverWithPlatform($platform); - - $tracingDriver = new TracingDriver($telemetry, $driver, 'default', logSql: true, maxSqlLength: 100); - - $tracingDriver->connect([]); - - $spans = $spanProcessor->endedSpans(); - static::assertCount(1, $spans); - static::assertSame('mysql', $spans[0]->attributes()['db.system.name']); - } - - public function test_get_semantic_db_system_detects_mssql(): void - { - $spanProcessor = new MemorySpanProcessor(new MemoryExporter()); - $telemetry = $this->createTelemetry($spanProcessor); - - $platform = new SQLServerPlatform(); - $driver = $this->createMockDriverWithPlatform($platform); - - $tracingDriver = new TracingDriver($telemetry, $driver, 'default', logSql: true, maxSqlLength: 100); - - $tracingDriver->connect([]); - - $spans = $spanProcessor->endedSpans(); - static::assertCount(1, $spans); - static::assertSame('mssql', $spans[0]->attributes()['db.system.name']); - } - - public function test_get_semantic_db_system_detects_mysql(): void - { - $spanProcessor = new MemorySpanProcessor(new MemoryExporter()); - $telemetry = $this->createTelemetry($spanProcessor); - - // @mago-expect analysis:deprecated-class - $platform = new MySQL80Platform(); - $driver = $this->createMockDriverWithPlatform($platform); - - $tracingDriver = new TracingDriver($telemetry, $driver, 'default', logSql: true, maxSqlLength: 100); - - $tracingDriver->connect([]); - - $spans = $spanProcessor->endedSpans(); - static::assertCount(1, $spans); - static::assertSame('mysql', $spans[0]->attributes()['db.system.name']); - } - - public function test_get_semantic_db_system_detects_oracle(): void - { - $spanProcessor = new MemorySpanProcessor(new MemoryExporter()); - $telemetry = $this->createTelemetry($spanProcessor); - - $platform = new OraclePlatform(); - $driver = $this->createMockDriverWithPlatform($platform); - - $tracingDriver = new TracingDriver($telemetry, $driver, 'default', logSql: true, maxSqlLength: 100); - - $tracingDriver->connect([]); - - $spans = $spanProcessor->endedSpans(); - static::assertCount(1, $spans); - static::assertSame('oracle', $spans[0]->attributes()['db.system.name']); - } - - public function test_get_semantic_db_system_detects_postgresql(): void - { - $spanProcessor = new MemorySpanProcessor(new MemoryExporter()); - $telemetry = $this->createTelemetry($spanProcessor); - - $platform = new PostgreSQLPlatform(); - $driver = $this->createMockDriverWithPlatform($platform); - - $tracingDriver = new TracingDriver($telemetry, $driver, 'default', logSql: true, maxSqlLength: 100); - - $tracingDriver->connect([]); - - $spans = $spanProcessor->endedSpans(); - static::assertCount(1, $spans); - static::assertSame('postgresql', $spans[0]->attributes()['db.system.name']); - } - - public function test_get_semantic_db_system_detects_sqlite(): void - { - $spanProcessor = new MemorySpanProcessor(new MemoryExporter()); - $telemetry = $this->createTelemetry($spanProcessor); - - $platform = new SqlitePlatform(); - $driver = $this->createMockDriverWithPlatform($platform); - - $tracingDriver = new TracingDriver($telemetry, $driver, 'default', logSql: true, maxSqlLength: 100); - - $tracingDriver->connect([]); - - $spans = $spanProcessor->endedSpans(); - static::assertCount(1, $spans); - static::assertSame('sqlite', $spans[0]->attributes()['db.system.name']); - } - - public function test_span_defaults_db_namespace_to_default(): void - { - $spanProcessor = new MemorySpanProcessor(new MemoryExporter()); - $telemetry = $this->createTelemetry($spanProcessor); - - $platform = new PostgreSQLPlatform(); - $driver = $this->createMockDriverWithPlatform($platform); - - $tracingDriver = new TracingDriver($telemetry, $driver, 'default', logSql: true, maxSqlLength: 100); - - $tracingDriver->connect([]); - - $spans = $spanProcessor->endedSpans(); - static::assertCount(1, $spans); - static::assertSame('default', $spans[0]->attributes()['db.namespace']); - } - - public function test_span_includes_connection_name(): void - { - $spanProcessor = new MemorySpanProcessor(new MemoryExporter()); - $telemetry = $this->createTelemetry($spanProcessor); - - $platform = new PostgreSQLPlatform(); - $driver = $this->createMockDriverWithPlatform($platform); - - $tracingDriver = new TracingDriver($telemetry, $driver, 'analytics', logSql: true, maxSqlLength: 100); - - $tracingDriver->connect([]); - - $spans = $spanProcessor->endedSpans(); - static::assertCount(1, $spans); - static::assertSame('analytics', $spans[0]->attributes()['db.connection.name']); - } - - public function test_span_includes_db_namespace_from_params(): void - { - $spanProcessor = new MemorySpanProcessor(new MemoryExporter()); - $telemetry = $this->createTelemetry($spanProcessor); - - $platform = new PostgreSQLPlatform(); - $driver = $this->createMockDriverWithPlatform($platform); - - $tracingDriver = new TracingDriver($telemetry, $driver, 'default', logSql: true, maxSqlLength: 100); - - $tracingDriver->connect(['dbname' => 'my_database']); - - $spans = $spanProcessor->endedSpans(); - static::assertCount(1, $spans); - static::assertSame('my_database', $spans[0]->attributes()['db.namespace']); - } - - private function createMockDriverWithPlatform(AbstractPlatform $platform): Driver - { - return new readonly class($platform) implements Driver { - public function __construct( - private AbstractPlatform $platform, - ) {} - - public function connect(array $params): Connection - { - return new class implements Connection { - public function beginTransaction(): void {} - - public function commit(): void {} - - public function exec(string $sql): int|string - { - return 0; - } - - public function getNativeConnection(): object - { - return new stdClass(); - } - - public function getServerVersion(): string - { - return '1.0.0'; - } - - public function lastInsertId(): int|string - { - return 0; - } - - public function prepare(string $sql): Statement - { - throw new RuntimeException('Not implemented'); - } - - public function query(string $sql): Result - { - throw new RuntimeException('Not implemented'); - } - - public function quote(string $value): string - { - return "'{$value}'"; - } - - public function rollBack(): void {} - }; - } - - public function getDatabasePlatform(ServerVersionProvider $versionProvider): AbstractPlatform - { - return $this->platform; - } - - public function getExceptionConverter(): ExceptionConverter - { - throw new RuntimeException('Not implemented'); - } - }; - } - - private function createTelemetry(MemorySpanProcessor $spanProcessor): Telemetry - { - $clock = new SystemClock(); - $contextStorage = new MemoryContextStorage(); - - return new Telemetry( - Resource::create(['service.name' => 'test']), - new TracerProvider($spanProcessor, $clock, $contextStorage), - new MeterProvider(new VoidMetricProcessor(), $clock), - new LoggerProvider(new VoidLogProcessor(), $clock, $contextStorage), - ); - } -} diff --git a/src/lib/doctrine-dbal-bulk/composer.json b/src/lib/doctrine-dbal-bulk/composer.json index 509d6ad12..53dd860ef 100644 --- a/src/lib/doctrine-dbal-bulk/composer.json +++ b/src/lib/doctrine-dbal-bulk/composer.json @@ -12,7 +12,7 @@ ], "require": { "php": "~8.3.0 || ~8.4.0 || ~8.5.0", - "doctrine/dbal": "^3.6 || ^4.0", + "doctrine/dbal": "^4.0", "flow-php/types": "self.version" }, "autoload": { diff --git a/src/lib/doctrine-dbal-bulk/src/Flow/Doctrine/Bulk/DbalPlatform.php b/src/lib/doctrine-dbal-bulk/src/Flow/Doctrine/Bulk/DbalPlatform.php index b6e041926..2a8dd263b 100644 --- a/src/lib/doctrine-dbal-bulk/src/Flow/Doctrine/Bulk/DbalPlatform.php +++ b/src/lib/doctrine-dbal-bulk/src/Flow/Doctrine/Bulk/DbalPlatform.php @@ -15,7 +15,6 @@ use Flow\Doctrine\Bulk\Dialect\SqliteDialect; use Flow\Doctrine\Bulk\Exception\RuntimeException; -use function in_array; use function sprintf; /** @@ -61,10 +60,6 @@ private function isPostgreSQL(): bool private function isSqlite(): bool { - return in_array( - $this->platform::class, - ['Doctrine\DBAL\Platforms\SqlitePlatform', SQLitePlatform::class], - true, - ); + return $this->platform instanceof SQLitePlatform; } } diff --git a/tools/blackfire/composer.lock b/tools/blackfire/composer.lock index f8caa559e..f493a9b58 100644 --- a/tools/blackfire/composer.lock +++ b/tools/blackfire/composer.lock @@ -9,16 +9,16 @@ "packages-dev": [ { "name": "blackfire/php-sdk", - "version": "v2.5.13", + "version": "v2.6.0", "source": { "type": "git", "url": "https://github.com/blackfireio/php-sdk.git", - "reference": "6020397659bb82214c43a2291504dfb1662fe2a6" + "reference": "5d3b0e80fd7a77fd49832bdd6425d38ddd567991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/blackfireio/php-sdk/zipball/6020397659bb82214c43a2291504dfb1662fe2a6", - "reference": "6020397659bb82214c43a2291504dfb1662fe2a6", + "url": "https://api.github.com/repos/blackfireio/php-sdk/zipball/5d3b0e80fd7a77fd49832bdd6425d38ddd567991", + "reference": "5d3b0e80fd7a77fd49832bdd6425d38ddd567991", "shasum": "" }, "require": { @@ -79,9 +79,9 @@ ], "support": { "issues": "https://github.com/blackfireio/php-sdk/issues", - "source": "https://github.com/blackfireio/php-sdk/tree/v2.5.13" + "source": "https://github.com/blackfireio/php-sdk/tree/v2.6.0" }, - "time": "2026-04-22T17:42:58+00:00" + "time": "2026-05-22T13:28:29+00:00" }, { "name": "composer/ca-bundle", diff --git a/tools/box/composer.lock b/tools/box/composer.lock index 34d41ebe1..a0727b605 100644 --- a/tools/box/composer.lock +++ b/tools/box/composer.lock @@ -2769,16 +2769,16 @@ }, { "name": "symfony/console", - "version": "v7.4.11", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "ed0107e43ab452aa77ae99e005b95e56b556e075" + "reference": "85095d2573eaefaf35e40b9513a9bf09f72cd217" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/ed0107e43ab452aa77ae99e005b95e56b556e075", - "reference": "ed0107e43ab452aa77ae99e005b95e56b556e075", + "url": "https://api.github.com/repos/symfony/console/zipball/85095d2573eaefaf35e40b9513a9bf09f72cd217", + "reference": "85095d2573eaefaf35e40b9513a9bf09f72cd217", "shasum": "" }, "require": { @@ -2843,7 +2843,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.4.11" + "source": "https://github.com/symfony/console/tree/v7.4.13" }, "funding": [ { @@ -2863,7 +2863,7 @@ "type": "tidelift" } ], - "time": "2026-05-13T12:04:42+00:00" + "time": "2026-05-24T08:56:14+00:00" }, { "name": "symfony/deprecation-contracts", @@ -3323,16 +3323,16 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.37.0", + "version": "v1.38.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "4864388bfbd3001ce88e234fab652acd91fdc57e" + "reference": "e9247d281d694a5120554d9afaf54e070e88a603" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/4864388bfbd3001ce88e234fab652acd91fdc57e", - "reference": "4864388bfbd3001ce88e234fab652acd91fdc57e", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/e9247d281d694a5120554d9afaf54e070e88a603", + "reference": "e9247d281d694a5120554d9afaf54e070e88a603", "shasum": "" }, "require": { @@ -3381,7 +3381,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.38.1" }, "funding": [ { @@ -3401,20 +3401,20 @@ "type": "tidelift" } ], - "time": "2026-04-26T13:13:48+00:00" + "time": "2026-05-26T05:58:03+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.37.0", + "version": "v1.38.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "3833d7255cc303546435cb650316bff708a1c75c" + "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", - "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/2d446c214bdbe5b71bde5011b060a05fece3ae6b", + "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b", "shasum": "" }, "require": { @@ -3466,7 +3466,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.38.0" }, "funding": [ { @@ -3486,20 +3486,20 @@ "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2026-05-25T13:48:31+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.37.0", + "version": "v1.38.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315" + "reference": "14c5439eec4ccff081ac14eca2dc57feb2a66d92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6a21eb99c6973357967f6ce3708cd55a6bec6315", - "reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/14c5439eec4ccff081ac14eca2dc57feb2a66d92", + "reference": "14c5439eec4ccff081ac14eca2dc57feb2a66d92", "shasum": "" }, "require": { @@ -3551,7 +3551,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.1" }, "funding": [ { @@ -3571,20 +3571,20 @@ "type": "tidelift" } ], - "time": "2026-04-10T17:25:58+00:00" + "time": "2026-05-26T12:51:13+00:00" }, { "name": "symfony/polyfill-php84", - "version": "v1.37.0", + "version": "v1.38.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php84.git", - "reference": "88486db2c389b290bf87ff1de7ebc1e13e42bb06" + "reference": "f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/88486db2c389b290bf87ff1de7ebc1e13e42bb06", - "reference": "88486db2c389b290bf87ff1de7ebc1e13e42bb06", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa", + "reference": "f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa", "shasum": "" }, "require": { @@ -3631,7 +3631,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php84/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-php84/tree/v1.38.1" }, "funding": [ { @@ -3651,20 +3651,20 @@ "type": "tidelift" } ], - "time": "2026-04-10T18:47:49+00:00" + "time": "2026-05-26T12:51:13+00:00" }, { "name": "symfony/process", - "version": "v7.4.11", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "d9593c9efa40499eb078b81144de42cbc28a31f0" + "reference": "f5804be144caceb570f6747519999636b664f24c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/d9593c9efa40499eb078b81144de42cbc28a31f0", - "reference": "d9593c9efa40499eb078b81144de42cbc28a31f0", + "url": "https://api.github.com/repos/symfony/process/zipball/f5804be144caceb570f6747519999636b664f24c", + "reference": "f5804be144caceb570f6747519999636b664f24c", "shasum": "" }, "require": { @@ -3696,7 +3696,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.4.11" + "source": "https://github.com/symfony/process/tree/v7.4.13" }, "funding": [ { @@ -3716,7 +3716,7 @@ "type": "tidelift" } ], - "time": "2026-05-11T16:55:21+00:00" + "time": "2026-05-23T16:05:06+00:00" }, { "name": "symfony/service-contracts", @@ -3807,16 +3807,16 @@ }, { "name": "symfony/string", - "version": "v7.4.11", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "965f7306a43383d02c6aca1e3f3bd2f0ea5dee15" + "reference": "961683010db3b27ec6ebcd7308e6e1ee8fa7ffde" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/965f7306a43383d02c6aca1e3f3bd2f0ea5dee15", - "reference": "965f7306a43383d02c6aca1e3f3bd2f0ea5dee15", + "url": "https://api.github.com/repos/symfony/string/zipball/961683010db3b27ec6ebcd7308e6e1ee8fa7ffde", + "reference": "961683010db3b27ec6ebcd7308e6e1ee8fa7ffde", "shasum": "" }, "require": { @@ -3874,7 +3874,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.4.11" + "source": "https://github.com/symfony/string/tree/v7.4.13" }, "funding": [ { @@ -3894,7 +3894,7 @@ "type": "tidelift" } ], - "time": "2026-05-13T12:04:42+00:00" + "time": "2026-05-23T15:23:29+00:00" }, { "name": "symfony/var-dumper", diff --git a/tools/infection/composer.lock b/tools/infection/composer.lock index 3a513eeaf..660ff2d98 100644 --- a/tools/infection/composer.lock +++ b/tools/infection/composer.lock @@ -1447,16 +1447,16 @@ }, { "name": "symfony/console", - "version": "v7.4.11", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "ed0107e43ab452aa77ae99e005b95e56b556e075" + "reference": "85095d2573eaefaf35e40b9513a9bf09f72cd217" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/ed0107e43ab452aa77ae99e005b95e56b556e075", - "reference": "ed0107e43ab452aa77ae99e005b95e56b556e075", + "url": "https://api.github.com/repos/symfony/console/zipball/85095d2573eaefaf35e40b9513a9bf09f72cd217", + "reference": "85095d2573eaefaf35e40b9513a9bf09f72cd217", "shasum": "" }, "require": { @@ -1521,7 +1521,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.4.11" + "source": "https://github.com/symfony/console/tree/v7.4.13" }, "funding": [ { @@ -1541,7 +1541,7 @@ "type": "tidelift" } ], - "time": "2026-05-13T12:04:42+00:00" + "time": "2026-05-24T08:56:14+00:00" }, { "name": "symfony/deprecation-contracts", @@ -1837,16 +1837,16 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.37.0", + "version": "v1.38.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "4864388bfbd3001ce88e234fab652acd91fdc57e" + "reference": "e9247d281d694a5120554d9afaf54e070e88a603" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/4864388bfbd3001ce88e234fab652acd91fdc57e", - "reference": "4864388bfbd3001ce88e234fab652acd91fdc57e", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/e9247d281d694a5120554d9afaf54e070e88a603", + "reference": "e9247d281d694a5120554d9afaf54e070e88a603", "shasum": "" }, "require": { @@ -1895,7 +1895,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.38.1" }, "funding": [ { @@ -1915,20 +1915,20 @@ "type": "tidelift" } ], - "time": "2026-04-26T13:13:48+00:00" + "time": "2026-05-26T05:58:03+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.37.0", + "version": "v1.38.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "3833d7255cc303546435cb650316bff708a1c75c" + "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", - "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/2d446c214bdbe5b71bde5011b060a05fece3ae6b", + "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b", "shasum": "" }, "require": { @@ -1980,7 +1980,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.38.0" }, "funding": [ { @@ -2000,20 +2000,20 @@ "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2026-05-25T13:48:31+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.37.0", + "version": "v1.38.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315" + "reference": "14c5439eec4ccff081ac14eca2dc57feb2a66d92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6a21eb99c6973357967f6ce3708cd55a6bec6315", - "reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/14c5439eec4ccff081ac14eca2dc57feb2a66d92", + "reference": "14c5439eec4ccff081ac14eca2dc57feb2a66d92", "shasum": "" }, "require": { @@ -2065,7 +2065,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.1" }, "funding": [ { @@ -2085,20 +2085,20 @@ "type": "tidelift" } ], - "time": "2026-04-10T17:25:58+00:00" + "time": "2026-05-26T12:51:13+00:00" }, { "name": "symfony/polyfill-php85", - "version": "v1.37.0", + "version": "v1.38.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php85.git", - "reference": "fcfa4973a9917cef23f2e38774da74a2b7d115ee" + "reference": "ba2ba04f3352cfa2dcbbcb90aee13ed967f505b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/fcfa4973a9917cef23f2e38774da74a2b7d115ee", - "reference": "fcfa4973a9917cef23f2e38774da74a2b7d115ee", + "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/ba2ba04f3352cfa2dcbbcb90aee13ed967f505b1", + "reference": "ba2ba04f3352cfa2dcbbcb90aee13ed967f505b1", "shasum": "" }, "require": { @@ -2145,7 +2145,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php85/tree/v1.37.0" + "source": "https://github.com/symfony/polyfill-php85/tree/v1.38.1" }, "funding": [ { @@ -2165,20 +2165,20 @@ "type": "tidelift" } ], - "time": "2026-04-26T13:10:57+00:00" + "time": "2026-05-26T02:25:22+00:00" }, { "name": "symfony/process", - "version": "v7.4.11", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "d9593c9efa40499eb078b81144de42cbc28a31f0" + "reference": "f5804be144caceb570f6747519999636b664f24c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/d9593c9efa40499eb078b81144de42cbc28a31f0", - "reference": "d9593c9efa40499eb078b81144de42cbc28a31f0", + "url": "https://api.github.com/repos/symfony/process/zipball/f5804be144caceb570f6747519999636b664f24c", + "reference": "f5804be144caceb570f6747519999636b664f24c", "shasum": "" }, "require": { @@ -2210,7 +2210,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.4.11" + "source": "https://github.com/symfony/process/tree/v7.4.13" }, "funding": [ { @@ -2230,7 +2230,7 @@ "type": "tidelift" } ], - "time": "2026-05-11T16:55:21+00:00" + "time": "2026-05-23T16:05:06+00:00" }, { "name": "symfony/service-contracts", @@ -2321,16 +2321,16 @@ }, { "name": "symfony/string", - "version": "v7.4.11", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "965f7306a43383d02c6aca1e3f3bd2f0ea5dee15" + "reference": "961683010db3b27ec6ebcd7308e6e1ee8fa7ffde" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/965f7306a43383d02c6aca1e3f3bd2f0ea5dee15", - "reference": "965f7306a43383d02c6aca1e3f3bd2f0ea5dee15", + "url": "https://api.github.com/repos/symfony/string/zipball/961683010db3b27ec6ebcd7308e6e1ee8fa7ffde", + "reference": "961683010db3b27ec6ebcd7308e6e1ee8fa7ffde", "shasum": "" }, "require": { @@ -2388,7 +2388,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.4.11" + "source": "https://github.com/symfony/string/tree/v7.4.13" }, "funding": [ { @@ -2408,7 +2408,7 @@ "type": "tidelift" } ], - "time": "2026-05-13T12:04:42+00:00" + "time": "2026-05-23T15:23:29+00:00" }, { "name": "thecodingmachine/safe", diff --git a/tools/phpstan/composer.lock b/tools/phpstan/composer.lock index 7242b60b9..03f5c82c3 100644 --- a/tools/phpstan/composer.lock +++ b/tools/phpstan/composer.lock @@ -9,11 +9,11 @@ "packages-dev": [ { "name": "phpstan/phpstan", - "version": "2.1.55", + "version": "2.1.56", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9eaac3826ed5e9b8427350a43cac825eeca3f566", - "reference": "9eaac3826ed5e9b8427350a43cac825eeca3f566", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/93a603c9fc3be8c3c93bbc8d22170ad766685537", + "reference": "93a603c9fc3be8c3c93bbc8d22170ad766685537", "shasum": "" }, "require": { @@ -58,7 +58,7 @@ "type": "github" } ], - "time": "2026-05-18T11:57:34+00:00" + "time": "2026-05-26T17:04:57+00:00" }, { "name": "spaze/phpstan-disallowed-calls", diff --git a/tools/phpunit/composer.lock b/tools/phpunit/composer.lock index 338e67fcf..c9e0e97d1 100644 --- a/tools/phpunit/composer.lock +++ b/tools/phpunit/composer.lock @@ -812,6 +812,7 @@ "type": "github" } ], + "abandoned": true, "time": "2025-03-19T07:56:08+00:00" }, { @@ -868,6 +869,7 @@ "type": "github" } ], + "abandoned": true, "time": "2024-07-03T04:45:54+00:00" }, { From 62e184c158e8fc414f92698dfa8f5260548172d3 Mon Sep 17 00:00:00 2001 From: Norbert Orzechowicz Date: Wed, 27 May 2026 11:05:26 +0200 Subject: [PATCH 2/2] fix: codding standards --- .../parquet/src/Flow/Parquet/Data/DeltaBinaryPackedDecoder.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib/parquet/src/Flow/Parquet/Data/DeltaBinaryPackedDecoder.php b/src/lib/parquet/src/Flow/Parquet/Data/DeltaBinaryPackedDecoder.php index 285e71708..e2d772458 100644 --- a/src/lib/parquet/src/Flow/Parquet/Data/DeltaBinaryPackedDecoder.php +++ b/src/lib/parquet/src/Flow/Parquet/Data/DeltaBinaryPackedDecoder.php @@ -118,7 +118,6 @@ static function ($delta) use ($minDelta) { // Handle float overflow precisely using BCMath // @mago-ignore analysis:impossible-condition - // @phpstan-ignore-next-line if (is_float($result)) { // Use BCMath for precise integer arithmetic $preciseResult = bcadd((string) $delta, (string) $minDelta, 0);