|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## [4.0.0](https://github.com/janklan/postgresql-for-doctrine/compare/v3.6.1...v4.0.0) (2025-11-13) |
| 4 | + |
| 5 | + |
| 6 | +### ⚠ BREAKING CHANGES |
| 7 | + |
| 8 | +* refactor exceptions handling for `JsonbArray` in the style used for the network types ([#311](https://github.com/janklan/postgresql-for-doctrine/issues/311)) |
| 9 | +* preserve the type of booleans, floats, integers & scientific notations when transforming back and forth between PostgreSQL and PHP ([#304](https://github.com/janklan/postgresql-for-doctrine/issues/304)) |
| 10 | + |
| 11 | +### Features |
| 12 | + |
| 13 | +* **#305, #432:** Add support for PostGIS functions for topological and distance relationships ([#434](https://github.com/janklan/postgresql-for-doctrine/issues/434)) ([2922b63](https://github.com/janklan/postgresql-for-doctrine/commit/2922b63012b77a76002436985fd1808541801b43)) |
| 14 | +* **#305:** Add support for PostGIS measurement, overlay and geometry processing functions ([#435](https://github.com/janklan/postgresql-for-doctrine/issues/435)) ([9724452](https://github.com/janklan/postgresql-for-doctrine/commit/97244528f815f521d32e2c808f241245df67e139)) |
| 15 | +* **#305:** Add support for PostGIS operators ([#430](https://github.com/janklan/postgresql-for-doctrine/issues/430)) ([5b5583b](https://github.com/janklan/postgresql-for-doctrine/commit/5b5583b9db30b0ba55c6047539242359a432a56e)) |
| 16 | +* **#305:** Add support for PostGIS's types of `GEOGRAPHY`, `GEOMETRY` and their array variations ([#421](https://github.com/janklan/postgresql-for-doctrine/issues/421)) ([d97caae](https://github.com/janklan/postgresql-for-doctrine/commit/d97caae042ecbdd1e958b512e38ca4d56fd3d711)) |
| 17 | +* **#401:** Improve JSON field extraction by adding index support ([#402](https://github.com/janklan/postgresql-for-doctrine/issues/402)) ([8d18b35](https://github.com/janklan/postgresql-for-doctrine/commit/8d18b35ddbc4c9a059b5e6b4e22f12490b28c3f6)) |
| 18 | +* **#410:** add support for `LTREE` type ([#411](https://github.com/janklan/postgresql-for-doctrine/issues/411)) ([5a6563d](https://github.com/janklan/postgresql-for-doctrine/commit/5a6563d3431d7ea670407363527a645b3d25db32)) |
| 19 | +* **#440:** Add support for functions to use with the `LTREE` data type ([#440](https://github.com/janklan/postgresql-for-doctrine/issues/440)) ([745b269](https://github.com/janklan/postgresql-for-doctrine/commit/745b2695d334e8f352a6e24469ba2f39e175d1cb)) |
| 20 | +* **#456:** Add convenience factory methods to `WktSpatialData` ([#459](https://github.com/janklan/postgresql-for-doctrine/issues/459)) ([7242665](https://github.com/janklan/postgresql-for-doctrine/commit/7242665ff5cee24a80dddf85efe3b4a463ba3cbb)) |
| 21 | +* **#458:** Ensure Doctrine returns PostgreSQL spatial data in text format (EWKT) instead of binary format (EWKB) ([#462](https://github.com/janklan/postgresql-for-doctrine/issues/462)) ([8ac7a70](https://github.com/janklan/postgresql-for-doctrine/commit/8ac7a703c078a5845beee35e2f7f767cd563fbb4)) |
| 22 | +* Add (limited) support for `json_exists`, `json_query`, `json_scalar`, `json_serialize` and `json_value` ([#277](https://github.com/janklan/postgresql-for-doctrine/issues/277)) ([4a26400](https://github.com/janklan/postgresql-for-doctrine/commit/4a264003aa6ce58c65335b708dc1036d02217f08)) |
| 23 | +* Add `NULL` value support for `array_append()`, `array_replace()`, `array_prepend()`, `array_remove()` and improve test scenarios for `NULL` ([#322](https://github.com/janklan/postgresql-for-doctrine/issues/322)) ([396856f](https://github.com/janklan/postgresql-for-doctrine/commit/396856f81c40b2eefed801995c1fced455e8a8dd)) |
| 24 | +* Add limited support for `json_build_object` and `jsonb_build_object` ([#268](https://github.com/janklan/postgresql-for-doctrine/issues/268)) ([2605f5a](https://github.com/janklan/postgresql-for-doctrine/commit/2605f5accfedb23b5aa31afe5349ada77cd50258)) |
| 25 | +* Add multiple arguments support for `ARRAY` ([#279](https://github.com/janklan/postgresql-for-doctrine/issues/279)) ([7f2b05d](https://github.com/janklan/postgresql-for-doctrine/commit/7f2b05d21a665d44d5fac07ac0f03f1ff99647bf)) |
| 26 | +* Add support for `any_value()` ([#323](https://github.com/janklan/postgresql-for-doctrine/issues/323)) ([19ee3db](https://github.com/janklan/postgresql-for-doctrine/commit/19ee3dbd4497195bbcd3b4df7608232de0f32b8a)) |
| 27 | +* Add support for `ARRAY_POSITION()` and `ARRAY_POSITIONS()` ([#366](https://github.com/janklan/postgresql-for-doctrine/issues/366)) ([a1dc059](https://github.com/janklan/postgresql-for-doctrine/commit/a1dc059965175d23a8efbf99afd2ab99a2d79564)) |
| 28 | +* Add support for `array_shuffle()` ([#324](https://github.com/janklan/postgresql-for-doctrine/issues/324)) ([90a9b9e](https://github.com/janklan/postgresql-for-doctrine/commit/90a9b9e84f8ec9a0dc9fd81b2d80ae48b59f2e57)) |
| 29 | +* Add support for `DATE_ADD()`, `DATE_SUBTRACT()` and `DATE_BIN()` ([#345](https://github.com/janklan/postgresql-for-doctrine/issues/345)) ([c3cb08d](https://github.com/janklan/postgresql-for-doctrine/commit/c3cb08d6af36057a0ce88fd184f91c243bcab5da)) |
| 30 | +* Add support for `DISTINCT` and `ORDER BY` clauses to `json_agg()` and `jsonb_agg()` ([#317](https://github.com/janklan/postgresql-for-doctrine/issues/317)) ([4cdc638](https://github.com/janklan/postgresql-for-doctrine/commit/4cdc638841b23449daa9d9c0a5f9e53e15724fa3)) |
| 31 | +* Add support for `DISTINCT` clause to `array_agg()` ([#316](https://github.com/janklan/postgresql-for-doctrine/issues/316)) ([3c46021](https://github.com/janklan/postgresql-for-doctrine/commit/3c4602109754b345277e292e86ffd03200d91fa8)) |
| 32 | +* Add support for `JSONB_PATH_EXISTS()`, `JSONB_PATH_MATCH()`, `JSONB_PATH_QUERY()`, `JSONB_PATH_QUERY_ARRAY()` and `JSONB_PATH_QUERY_FIRST()` ([#346](https://github.com/janklan/postgresql-for-doctrine/issues/346)) ([0cda902](https://github.com/janklan/postgresql-for-doctrine/commit/0cda90218c4330b78c2a94f757e30e4045c70768)) |
| 33 | +* Add support for `ORDER BY` clause for `array_agg()` ([#267](https://github.com/janklan/postgresql-for-doctrine/issues/267)) ([7c64742](https://github.com/janklan/postgresql-for-doctrine/commit/7c64742d5e3f52bb350fa630efda1ef9ac98d352)) |
| 34 | +* Add support for `POINT` and `POINT[]` data types ([#348](https://github.com/janklan/postgresql-for-doctrine/issues/348)) ([18ec906](https://github.com/janklan/postgresql-for-doctrine/commit/18ec906be3f87473b842aaa4038cc097d46e6495)) |
| 35 | +* Add support for `REGEXP_COUNT()`, `REGEXP_INSTR()` and `REGEXP_SUBSTR()` and extend support for `REGEXP_REPLACE()` ([#352](https://github.com/janklan/postgresql-for-doctrine/issues/352)) ([9959476](https://github.com/janklan/postgresql-for-doctrine/commit/995947610b8538e35b5a5a5233a04b22dd202bd5)) |
| 36 | +* Add support for `uuid_extract_timestamp` and `uuid_extract_version` ([#466](https://github.com/janklan/postgresql-for-doctrine/issues/466)) ([77a513f](https://github.com/janklan/postgresql-for-doctrine/commit/77a513fe4472bbcc7c001bd25648384c48b39b16)) |
| 37 | +* Add support for `websearch_to_tsquery` ([#437](https://github.com/janklan/postgresql-for-doctrine/issues/437)) ([be90545](https://github.com/janklan/postgresql-for-doctrine/commit/be9054563fbdfda912256d4ff24d8d971eddc7ec)) |
| 38 | +* Add support for `xmlagg()` ([#318](https://github.com/janklan/postgresql-for-doctrine/issues/318)) ([0b4db8a](https://github.com/janklan/postgresql-for-doctrine/commit/0b4db8a930964b9292e7d6f79678dbc76b9d841a)) |
| 39 | +* Add support for arithmetic functions `ABS`, `CEIL`, `FLOOR`, `ROUND` and `TRUNC` ([#369](https://github.com/janklan/postgresql-for-doctrine/issues/369)) ([3f04c0e](https://github.com/janklan/postgresql-for-doctrine/commit/3f04c0ea41f85d218e2b62d3de5bc999b2bc4ed5)) |
| 40 | +* Add support for arrays of `REAL` and `DOUBLE PRECISION` ([#307](https://github.com/janklan/postgresql-for-doctrine/issues/307)) ([1db35ac](https://github.com/janklan/postgresql-for-doctrine/commit/1db35ac6f73b12e2691ca35fc6c63b0b8a3c4b28)) |
| 41 | +* Add support for distance operator `<@>` ([#361](https://github.com/janklan/postgresql-for-doctrine/issues/361)) ([8dbbf8c](https://github.com/janklan/postgresql-for-doctrine/commit/8dbbf8c71b801bd624829e04504919d730ff4a57)) |
| 42 | +* Add support for formatting functions `to_char`, `to_date`, `to_number`, `to_timestamp` ([#386](https://github.com/janklan/postgresql-for-doctrine/issues/386)) ([7a047e8](https://github.com/janklan/postgresql-for-doctrine/commit/7a047e840bd4b1df608eb56ee796d19e209077e8)) |
| 43 | +* Add support for mathematical functions `CBRT`, `DEGREES`, `EXP`, `LN`, `LOG`, `PI`, `POWER`, `RADIANS`, `RANDOM`, `SIGN` and `WIDTH_BUCKET` ([#383](https://github.com/janklan/postgresql-for-doctrine/issues/383)) ([3665a25](https://github.com/janklan/postgresql-for-doctrine/commit/3665a25bffc86c4596927f386022fd45b8d9d9db)) |
| 44 | +* Add support for network types `inet`, `_inet`, `cidr`, `_cidr`, `macaddr`, `_macaddr` ([#310](https://github.com/janklan/postgresql-for-doctrine/issues/310)) ([ba3f9f2](https://github.com/janklan/postgresql-for-doctrine/commit/ba3f9f2833fc68f4e36ae7202396794fc43ecb63)) |
| 45 | +* Add support for range functions ([#263](https://github.com/janklan/postgresql-for-doctrine/issues/263)) ([2fa8434](https://github.com/janklan/postgresql-for-doctrine/commit/2fa8434f517f3bf3ecb4873956bd134b4df8112b)) |
| 46 | +* Add support for range types ([#396](https://github.com/janklan/postgresql-for-doctrine/issues/396)) ([cc4749c](https://github.com/janklan/postgresql-for-doctrine/commit/cc4749c6f6df4b058c33caca3d21945d5e9a7f01)) |
| 47 | +* Add support for some new functions from PostgreSQL 18 ([#464](https://github.com/janklan/postgresql-for-doctrine/issues/464)) ([118bfa3](https://github.com/janklan/postgresql-for-doctrine/commit/118bfa361ccbb776fe7832a05da357f5557568c5)) |
| 48 | +* Add support for specifying explicit range bounds ([#380](https://github.com/janklan/postgresql-for-doctrine/issues/380)) ([d83a099](https://github.com/janklan/postgresql-for-doctrine/commit/d83a099e8b39c8e354e250322e6f7b2328b1f680)) |
| 49 | +* Extend existing function support with optional boolean parameters ([#347](https://github.com/janklan/postgresql-for-doctrine/issues/347)) ([67265cc](https://github.com/janklan/postgresql-for-doctrine/commit/67265cc84313b6cb447f6ec3a67f3b99dba4bde2)) |
| 50 | +* Extend support of `REGEXP_LIKE()`, `REGEXP_MATCH()` and `REGEXP_REPLACE()` while deprecating the legacy limited flagged variations of `FlaggedRegexpLike`, `FlaggedRegexpMatch` and `FlaggedRegexpReplace` ([#357](https://github.com/janklan/postgresql-for-doctrine/issues/357)) ([ef688dc](https://github.com/janklan/postgresql-for-doctrine/commit/ef688dc2d62c702fbcb85c8474e15f687de82ea5)) |
| 51 | +* Preserve the type of booleans, floats, integers & scientific notations when transforming back and forth between PostgreSQL and PHP ([#304](https://github.com/janklan/postgresql-for-doctrine/issues/304)) ([c584099](https://github.com/janklan/postgresql-for-doctrine/commit/c584099652b612cc4a89f24573fddcd7060bb4fe)) |
| 52 | +* Refactor exceptions handling for `JsonbArray` in the style used for the network types ([#311](https://github.com/janklan/postgresql-for-doctrine/issues/311)) ([0058d1c](https://github.com/janklan/postgresql-for-doctrine/commit/0058d1cd657675bbea402787205db5c0e71f26ac)) |
| 53 | + |
| 54 | + |
| 55 | +### Bug Fixes |
| 56 | + |
| 57 | +* **#351:** Correct round-trip handling of special characters between PHP and PostgreSQL ([#391](https://github.com/janklan/postgresql-for-doctrine/issues/391)) ([979a581](https://github.com/janklan/postgresql-for-doctrine/commit/979a5815faed6c2139c530abc6fbd60ff26c7f1b)) |
| 58 | +* **#351:** Remove invalid or non-PostgreSQL-compliant test cases; ensure edge cases for backslashes, quotes, special characters, and NULL handling are covered ([#385](https://github.com/janklan/postgresql-for-doctrine/issues/385)) ([c5f7327](https://github.com/janklan/postgresql-for-doctrine/commit/c5f73279bc32bb185a93d81363a014193b6c1657)) |
| 59 | +* **#367:** Change to uppercase the return value of `getSQLDeclaration` ([#368](https://github.com/janklan/postgresql-for-doctrine/issues/368)) ([7e4be89](https://github.com/janklan/postgresql-for-doctrine/commit/7e4be89bfd630356f390bdd3e457500b78c568ad)) |
| 60 | +* **#399:** Support array types for `CAST` ([#406](https://github.com/janklan/postgresql-for-doctrine/issues/406)) ([465963e](https://github.com/janklan/postgresql-for-doctrine/commit/465963ef0c398c1e22cf58d5db933e2d24ede569)) |
| 61 | +* **#424:** Address unintentional loss of string data type when retrieving PHP array item values from a stored `TextArray` value ([#443](https://github.com/janklan/postgresql-for-doctrine/issues/443)) ([bdb8df2](https://github.com/janklan/postgresql-for-doctrine/commit/bdb8df28f173d0e5b8510fa33c529af42fc01660)) |
| 62 | +* **#446:** Restore `OVERLAPS` to its intended namespace and strengthen its test coverage ([#447](https://github.com/janklan/postgresql-for-doctrine/issues/447)) ([6435f06](https://github.com/janklan/postgresql-for-doctrine/commit/6435f0673250bd9e4f65b8918ff000c7b21b788a)) |
| 63 | +* **#473:** Add public getter methods to `Range` value objects ([#477](https://github.com/janklan/postgresql-for-doctrine/issues/477)) ([9ba319e](https://github.com/janklan/postgresql-for-doctrine/commit/9ba319ea1d4cfeea48dfa6ab44d1820f51c689a9)) |
| 64 | +* **#474:** Support usage of arithmetic expressions in mathematical functions ([#475](https://github.com/janklan/postgresql-for-doctrine/issues/475)) ([75b025d](https://github.com/janklan/postgresql-for-doctrine/commit/75b025d636b52621b4be47bd94ea1f163017450e)) |
| 65 | +* Add support for Lexer v1 (allowed by ORM < v2.15) ([#300](https://github.com/janklan/postgresql-for-doctrine/issues/300)) ([16fd227](https://github.com/janklan/postgresql-for-doctrine/commit/16fd227d1841eccfff2ffe62a4d4c0b81c9fc3e3)) |
| 66 | +* Address broken escaping of array items for `JsonbArray` and preserve integer values as strings if they are outside PHP integer range ([#442](https://github.com/janklan/postgresql-for-doctrine/issues/442)) ([d213967](https://github.com/janklan/postgresql-for-doctrine/commit/d2139679a6b193df3e45ce04c8e56ebbc9dcf6f2)) |
| 67 | +* Avoid infinite parsing loop for `GREATEST()` and `LEAST()` by using `SimpleArithmeticExpression` ([#338](https://github.com/janklan/postgresql-for-doctrine/issues/338)) ([169192b](https://github.com/janklan/postgresql-for-doctrine/commit/169192bb6aafc1a8851e6ab38737c27c87706bf8)) |
| 68 | +* Improve BC by deprecating `customiseFunction` instead of renaming it straight away ([#294](https://github.com/janklan/postgresql-for-doctrine/issues/294)) ([910d328](https://github.com/janklan/postgresql-for-doctrine/commit/910d3289fe9cb0e605765cf301ae4e86c5845e63)) |
| 69 | +* Restore support for unquoted string values stored in `text[]` ([#333](https://github.com/janklan/postgresql-for-doctrine/issues/333)) ([339e988](https://github.com/janklan/postgresql-for-doctrine/commit/339e988dd6669d6930a39deb4ad7be74ffecc78d)) |
| 70 | +* Wrap up ORM v3 throwable when parsing fails in variadic functions ([#285](https://github.com/janklan/postgresql-for-doctrine/issues/285)) ([59a8cb9](https://github.com/janklan/postgresql-for-doctrine/commit/59a8cb9ed84a45a8ea7da2f19e05e921400c934b)) |
| 71 | + |
| 72 | + |
| 73 | +### Code Refactoring |
| 74 | + |
| 75 | +* **#305:** Move PostGIS operators in a dedicated namespace ([#433](https://github.com/janklan/postgresql-for-doctrine/issues/433)) ([522e653](https://github.com/janklan/postgresql-for-doctrine/commit/522e653f4e1bff8de7b99c9171e5ae573e5dee1a)) |
| 76 | +* Allow multiple node mapping patterns to be used and their arguments to be validated in variadic functions ([#350](https://github.com/janklan/postgresql-for-doctrine/issues/350)) ([e111dd2](https://github.com/janklan/postgresql-for-doctrine/commit/e111dd28da6985324d0b9b181daf73dcbc97bb00)) |
| 77 | +* Allow node mapping in variadic functions to have different patterns, thus opening the path to a combination of node types (compared to the previous single type support) ([#349](https://github.com/janklan/postgresql-for-doctrine/issues/349)) ([6a5ba9e](https://github.com/janklan/postgresql-for-doctrine/commit/6a5ba9ef21b24b0e6107d85e67725a4c96f3ab8a)) |
| 78 | +* Introduce `BaseRegexpFunction` and `ParserException` ([#269](https://github.com/janklan/postgresql-for-doctrine/issues/269)) ([fed0367](https://github.com/janklan/postgresql-for-doctrine/commit/fed0367baa8cedffe309bd25e1885fb23f6449c8)) |
| 79 | +* Modernise the validation in active code and the associated tests when dealing with integer arrays ([#308](https://github.com/janklan/postgresql-for-doctrine/issues/308)) ([67c344e](https://github.com/janklan/postgresql-for-doctrine/commit/67c344e11e16529049422b9fe9024310594a0392)) |
| 80 | +* Stricter method argument types when handling variadic functions ([#343](https://github.com/janklan/postgresql-for-doctrine/issues/343)) ([553a30c](https://github.com/janklan/postgresql-for-doctrine/commit/553a30c2e26c4b8e69b14ad4d791dd7f7d0670d8)) |
| 81 | +* Validate that variadic functions have only the expected count of arguments ([#274](https://github.com/janklan/postgresql-for-doctrine/issues/274)) ([019f84d](https://github.com/janklan/postgresql-for-doctrine/commit/019f84d23df6e85c7f5658b94c5992699e8082e3)) |
| 82 | + |
3 | 83 | ## [3.6.1](https://github.com/martin-georgiev/postgresql-for-doctrine/compare/v3.6.0...v3.6.1) (2025-11-08) |
4 | 84 |
|
5 | 85 |
|
|
0 commit comments