- Fixed cache key sanitize for UUID map of referenceable nodes.
- Fixed cache key sanitize for PSR-16 cache.
- Fixed not found detection for PSR-16 cache.
- Added static typing wherever possible. This should not change anything, but the added strictness. might trigger errors where it was more tolerant for incorrect types before.
- Renamed cli-config.php.dist to cli-config.dist.php and cleaned up to be better documented.
- [BC Break]: CachedClient now expects a PSR-16 cache rather than the abandoned doctrine/cache. When instantiating the client, you need to provide at least the cache instance for metadata, as CachedClient does not know which implementation to pick.
- Support for new Symfony versions.
- Support for doctrine/dbal 4.
- For MySQL/MariaDB, it is now required to configure
defaultTableOptions
.collate
orcharset
in the Doctrine connection, or alternatively set the encoding explicitly withClient::setCaseSensitiveEncoding()
(e.g.utf8mb4_bin
). - If you are on PHP 8.0 and install Jackalope with
symfony/cache
, you need to restrictpsr/simple-cache
to^1.0 || ^2.0
in your application because Symfony 5 does not declare a conflict with it, but fails at runtime. - Drop support for PHP 7.
- Fixed: While it is allowed to call
Repository::login
withnull
credentials, there used to be an error. It now correctly works. If you usejcr:createdBy
orjcr:lastModifiedBy
in node types, those properties are not set if the credentials arenull
. - Improving the performance of
deleteProperties
(#421) - Deleting dangling binary references when a property is removed or the whole node with a binary property is deleted (#426) - See UPGRADE.md for the recommended database changes.
- Allow installation with Symfony 7.
- Fixed cache key sanitize for PSR-16 cache.
- Fixed not found detection for PSR-16 cache.
- Added: Factory now accepts an optional parameter
jackalope.case_sensitive_encoding
to setClient::setCaseSensitiveEncoding
. - Bugfix: Factory now actually accepts the optional parameter
jackalope.uuid_generator
- Fix: Sanitize cache key of entries with workspace name.
- Fix regression of 1.11.0: Reference deletion should work regardless of upper or lowercase of the type names in XML data.
- Improve delete properties performance by replace DOMDocument with
xml_parse
.
- Bugfix: Correctly handle cache fetches in CachedClient BC layer.
- CachedClient also supports PSR-16 simple cache instances instead of the doctrine cache. Support for doctrine/cache will be removed in version 2.
- Allow installation with doctrine/cache
2.*
. Cache1.*
is EOL. If you use doctrine/cache 2, you need a PSR implementation, e.g. symfony/cache, and need to pass a cache instance to the CachedClient.
- Bugfix: Use single quotes for SQL queries. Double quotes are not part of ANSI SQL.
- Automatically add the portability middleware to lowercase all fields when using Oracle.
- Fix to correctly handle SQLite connections when middleware is used by dbal.
- Fix an edge case with postgres when searching for a node name with a double quote
"
in the search expression. Note that with MySQL, searching for a node name with double quote no longer works due to wrong XPath handling in MySQL.
- Fix SQL injection in SQL2 queries: Escape xpaths in queries. See security advisory
- Test with PHP 8.1
- Improve performance for deleting properties of nodes by using xpath. #390
- Allow installation with PHP 7.2
- Limit to doctrine/cache 1 as the code relies on code that was removed in doctrine/cache 2.
- Fixed DBAL 3 compatibility bug.
-
Improve performance for xml parsing by using the PHP ext-xml instead of ext-dom.
Jackalope\Transport\DoctrineDBALClient::mapPropertyFromElement is no longer called within the client. If you extended the client and call the method, things will still work as before, but it is recommended to refactor your code to use the XmlToPropsParser.
If you overwrote the method behaviour, your changes will no longer be applied because the method is not called anymore. We are not aware of any use case to overwrite the method - if you are affected, let us know in a github issue so that we can discuss how the problem can be fixed.
- Fixed query cache to not treat
0
ornull
as cache misses.
- Support PHP 8 and Doctrine DBAL 3
- Dropped support for PHP < 7.3
- Early return in getNodeReferences if system id for path is not found.
- Fix add primary keys to all tables (https://www.percona.com/doc/percona-xtradb-cluster/LATEST/features/pxc-strict-mode.html#tables-without-primary-keys)
- Fix moving nodes that are not in the default namespace
- Support PHP 7.4, raise lowest version to 7.1
- Fix multiple nested joins
- Fix ordering of namespaced children
- [query builder] fix nested joins where clause generation
- Use
defaultTableOptions
to detect collate of database connection, if available
- Use platform expression for concatenating
- Fix return type of CachedClient::getNamespaces
- Detect utf8mb4 encoding and use shorter fields so MySQL can handle indexes on 4 byte UTF-8.
- Support PHP 7.2
- Allow Symfony 4 components
- upgraded to PHP 5.6 / 7
- bugfix #339 fix datetime comparison with different timezones
- bugfix #337 Added auto-detection of binary collation for MySQL, so that not always utf8_bin is used.
A new
setCaseSensitiveEncoding
method has been introduced, which can be used to override the auto detected value. - performance #336 better custom node type loading
- bugfix #333 keep sort order when clone/copying a node
- Validate namespaces in node paths and throws NamespaceException on unknown prefixes.
- Throw Exception when user tries to select either jcr:path or jcr:score
- The jackalope:init:dbal command now only really executes when the --force parameter is given.
- Fixed Property::getNode() can return the same node multiple times if that node was added to the property multiple times. This has the side effect that the array returned by this method is not indexed by uuid anymore. That index was never advertised but might have been used.
- RepositoryFactoryDoctrineDbal::getRepository now throws a PHPCR\ConfigurationException instead of silently returning null on invalid parameters or missing required parameters.
Maintenance release with lots of new features and cleanups.
-
Various bugfixes have been merged.
-
2014-01-08: The fetch depth performance optimization is now fully supported.
-
2014-01-08: You now get a RepositoryException if you try to overwrite one of the built-in node types. In 1.0, you got no exception but the custom type with the same name as a built-in type was simply ignored.
-
2014-01-07: We now properly support LENGTH in queries. This required a change to the stored data. To update existing installations, you can use this migration: https://github.com/wjzijderveld/jackalope-doctrine-dbal-length-migration
-
2014-01-05: Allowing to set a closure for a custom uuid generator. Set the parameter
jackalope.uuid_generator
to a function returning a UUID string and pass it as parameter to the repository factory. -
2014-01-04: mix:lastModified is now handled automatically. To disable, set the option jackalope.auto_lastmodified to
false
. -
2013-12-26: cleanup of phpcr-utils lead to adjust cli-config.php.dist. If you use the console, you need to sync your cli-config.php file with the dist file.
-
2013-12-14: Added support for logging PHPCR database queries.
-
2013-06-07: [#75] split the references into 2 tables
-
This splits the phpcr_nodes_foreignkeys into two separate tables
-
Improves performance and allows using native deferred FK capabilities in the future
-
Migration steps
- run
bin/jackalope jackalope:init:dbal --dump-sql
- Copy and execute all tables, indexes etc related to
phpcr_nodes_references
andphpcr_nodes_weakreferences
. - Run the following SQL statements:
- INSERT INTO phpcr_nodes_references ( source_id, source_property_name, target_id ) SELECT source_id, source_property_name, target_id FROM phpcr_nodes_foreignkeys WHERE type = 9;
- INSERT INTO phpcr_nodes_weakreferences ( source_id, source_property_name, target_id ) SELECT source_id, source_property_name, target_id FROM phpcr_nodes_foreignkeys WHERE type = 10;
- DROP TABLE phpcr_nodes_foreignkeys;
- run
-
2013-06-01: [#109] ensure data is stored as UTC and returned in the default TZ
-
This enables consistent search query behavior regardless of the timezone used
-
Any existing stored nodes need to be modified, so that they are stored again to benefit from this change.