The ezcontentobject_tree.path_identification_string column holds what is basically URL alias path of a location, that is calculated using main languages and urlalias_compat transformation of string to URL alias. It is not exposed in PAPI but handled only for compatibility reasons. Ideally handling would be done entirely in storage layer, but as name schema resolving is done on service level there is no easy way to do that.
Implementation updates path_identification_string from URLAliasHandler::publishUrlAliasForLocation() method. The method implementation has one internal parameter added (it is not in interface) to indicate main language and trigger update of path identification string. This parameter is then being passed in services when calling the method on:
creating new location for content
publishing content version
updating metadata (changing main language of the content)
PR also contains some fixes:
LocationGateway::moveSubtreeNodes() is fixed for case when parent location is on root level.
Locations were sometimes created with ezcontentobject_tree.contentobject_is_published set to 0. Legacy storage impl. ignores this and now locations are always being created with this column set to 1.