jackrabbit-oak-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Julian Reschke (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (OAK-5506) reject item names with unpaired surrogates early
Date Mon, 12 Feb 2018 15:27:00 GMT

    [ https://issues.apache.org/jira/browse/OAK-5506?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16360873#comment-16360873
] 

Julian Reschke edited comment on OAK-5506 at 2/12/18 3:26 PM:
--------------------------------------------------------------

FWIW, I just noticed that the various (R)DBs vary in their behavior:

- H2DB and Derby roundtrip any string
- PostgreSQL rejects the invalid string early
- DB2 and Oracle fail the same way as segment store (they persist the replacement character)
- MySQL and SQLServer fail the same as DB2 and Oracle, but here it's the RDBDocumentStore's
fault, because the ID column is binary, and we transform to byte sequences ourselves

...will file individual tickets...


was (Author: reschke):
FWIW, I just noticed that the various (R)DBs vary in their behavior:

- H2DB and Derby roundtrip any string
- PostgreSQL rejects the invalid string early
- DB2 and Oracle fail the same way as segment store (they persist the replacement character)
- MySQL and SQLServer fail the same as DB2 and Oracle, but here it's the RDBDocumentStore's
fault, because the ID column is binary, and we transform to byte sequences ourselves

...will file individual tickets

> reject item names with unpaired surrogates early
> ------------------------------------------------
>
>                 Key: OAK-5506
>                 URL: https://issues.apache.org/jira/browse/OAK-5506
>             Project: Jackrabbit Oak
>          Issue Type: Wish
>          Components: core, jcr, segment-tar
>    Affects Versions: 1.5.18
>            Reporter: Julian Reschke
>            Priority: Minor
>             Fix For: 1.10
>
>         Attachments: OAK-5506-01.patch, OAK-5506-02.patch, OAK-5506-4.diff, OAK-5506-bench.diff,
OAK-5506-jcr-level.diff, OAK-5506-name-conversion.diff, OAK-5506-segment.diff, OAK-5506-segment2.diff,
OAK-5506-segment3.diff, OAK-5506.diff, ValidNamesTest.java
>
>
> Apparently, the following node name is accepted:
>    {{"foo\ud800"}}
> but a subsequent {{getPath()}} call fails:
> {noformat}
> javax.jcr.InvalidItemStateException: This item [/test_node/foo?] does not exist anymore
>     at org.apache.jackrabbit.oak.jcr.delegate.ItemDelegate.checkAlive(ItemDelegate.java:86)
>     at org.apache.jackrabbit.oak.jcr.session.operation.ItemOperation.checkPreconditions(ItemOperation.java:34)
>     at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.prePerform(SessionDelegate.java:615)
>     at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:205)
>     at org.apache.jackrabbit.oak.jcr.session.ItemImpl.perform(ItemImpl.java:112)
>     at org.apache.jackrabbit.oak.jcr.session.ItemImpl.getPath(ItemImpl.java:140)
>     at org.apache.jackrabbit.oak.jcr.session.NodeImpl.getPath(NodeImpl.java:106)
>     at org.apache.jackrabbit.oak.jcr.ValidNamesTest.nameTest(ValidNamesTest.java:271)
>     at org.apache.jackrabbit.oak.jcr.ValidNamesTest.testUnpairedSurrogate(ValidNamesTest.java:259)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source){noformat}
> (test case follows)



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message