You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Julian Hyde (JIRA)" <ji...@apache.org> on 2018/08/27 19:34:00 UTC

[jira] [Updated] (CALCITE-2481) NameSet assumes lowercase characters have greater codes, which does not hold for certain characters

     [ https://issues.apache.org/jira/browse/CALCITE-2481?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Julian Hyde updated CALCITE-2481:
---------------------------------
    Summary: NameSet assumes lowercase characters have greater codes, which does not hold for certain characters  (was: NameSet assumes lowercase characters have greater codes which does not hold for certain characters)

> NameSet assumes lowercase characters have greater codes, which does not hold for certain characters
> ---------------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-2481
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2481
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.17.0
>            Reporter: Vladimir Sitnikov
>            Assignee: Julian Hyde
>            Priority: Major
>             Fix For: 1.18.0
>
>
> {code:java}  @Test public void lowerCaseWithLowerCode() {
>     for (int i = 0; i < 0xffff; i++) {
>       char c = (char) i;
>       if (!Character.isLetter(c)) {
>         continue;
>       }
>       char lc = Character.toLowerCase(c);
>       char uc = Character.toUpperCase(c);
>       if (lc < uc) {
>         System.out.println(c + ": (" + ((int) lc) + ") " + lc + " < " + uc + " (" + ((int) uc) + ")");
>       }
>     }
>   }
> {code}
> {noformat}
> µ: (181) µ < Μ (924)
> ÿ: (255) ÿ < Ÿ (376)
> İ: (105) i < İ (304)
> Ÿ: (255) ÿ < Ÿ (376)
> ƀ: (384) ƀ < Ƀ (579)
> ƕ: (405) ƕ < Ƕ (502)
> ƚ: (410) ƚ < Ƚ (573)
> ƞ: (414) ƞ < Ƞ (544)
> ƿ: (447) ƿ < Ƿ (503)
> Ƕ: (405) ƕ < Ƕ (502)
> Ƿ: (447) ƿ < Ƿ (503)
> Ƞ: (414) ƞ < Ƞ (544)
> Ƚ: (410) ƚ < Ƚ (573)
> ȿ: (575) ȿ < Ȿ (11390)
> ɀ: (576) ɀ < Ɀ (11391)
> Ƀ: (384) ƀ < Ƀ (579)
> ɐ: (592) ɐ < Ɐ (11375)
> ɑ: (593) ɑ < Ɑ (11373)
> ɒ: (594) ɒ < Ɒ (11376)
> ɜ: (604) ɜ < Ɜ (42923)
> ɡ: (609) ɡ < Ɡ (42924)
> ɥ: (613) ɥ < Ɥ (42893)
> ɦ: (614) ɦ < Ɦ (42922)
> ɪ: (618) ɪ < Ɪ (42926)
> ɫ: (619) ɫ < Ɫ (11362)
> ɬ: (620) ɬ < Ɬ (42925)
> ɱ: (625) ɱ < Ɱ (11374)
> ɽ: (637) ɽ < Ɽ (11364)
> ʇ: (647) ʇ < Ʇ (42929)
> ʝ: (669) ʝ < Ʝ (42930)
> ʞ: (670) ʞ < Ʞ (42928)
> ͻ: (891) ͻ < Ͻ (1021)
> ͼ: (892) ͼ < Ͼ (1022)
> ͽ: (893) ͽ < Ͽ (1023)
> ϲ: (1010) ϲ < Ϲ (1017)
> ϴ: (952) θ < ϴ (1012)
> Ϲ: (1010) ϲ < Ϲ (1017)
> Ͻ: (891) ͻ < Ͻ (1021)
> Ͼ: (892) ͼ < Ͼ (1022)
> Ͽ: (893) ͽ < Ͽ (1023)
> ᲈ: (7304) ᲈ < Ꙋ (42570)
> ᵹ: (7545) ᵹ < Ᵹ (42877)
> ᵽ: (7549) ᵽ < Ᵽ (11363)
> ẞ: (223) ß < ẞ (7838)
> ἀ: (7936) ἀ < Ἀ (7944)
> ἁ: (7937) ἁ < Ἁ (7945)
> ἂ: (7938) ἂ < Ἂ (7946)
> ἃ: (7939) ἃ < Ἃ (7947)
> ἄ: (7940) ἄ < Ἄ (7948)
> ἅ: (7941) ἅ < Ἅ (7949)
> ἆ: (7942) ἆ < Ἆ (7950)
> ἇ: (7943) ἇ < Ἇ (7951)
> Ἀ: (7936) ἀ < Ἀ (7944)
> Ἁ: (7937) ἁ < Ἁ (7945)
> Ἂ: (7938) ἂ < Ἂ (7946)
> Ἃ: (7939) ἃ < Ἃ (7947)
> Ἄ: (7940) ἄ < Ἄ (7948)
> Ἅ: (7941) ἅ < Ἅ (7949)
> Ἆ: (7942) ἆ < Ἆ (7950)
> Ἇ: (7943) ἇ < Ἇ (7951)
> ἐ: (7952) ἐ < Ἐ (7960)
> ἑ: (7953) ἑ < Ἑ (7961)
> ἒ: (7954) ἒ < Ἒ (7962)
> ἓ: (7955) ἓ < Ἓ (7963)
> ἔ: (7956) ἔ < Ἔ (7964)
> ἕ: (7957) ἕ < Ἕ (7965)
> Ἐ: (7952) ἐ < Ἐ (7960)
> Ἑ: (7953) ἑ < Ἑ (7961)
> Ἒ: (7954) ἒ < Ἒ (7962)
> Ἓ: (7955) ἓ < Ἓ (7963)
> Ἔ: (7956) ἔ < Ἔ (7964)
> Ἕ: (7957) ἕ < Ἕ (7965)
> ἠ: (7968) ἠ < Ἠ (7976)
> ἡ: (7969) ἡ < Ἡ (7977)
> ἢ: (7970) ἢ < Ἢ (7978)
> ἣ: (7971) ἣ < Ἣ (7979)
> ἤ: (7972) ἤ < Ἤ (7980)
> ἥ: (7973) ἥ < Ἥ (7981)
> ἦ: (7974) ἦ < Ἦ (7982)
> ἧ: (7975) ἧ < Ἧ (7983)
> Ἠ: (7968) ἠ < Ἠ (7976)
> Ἡ: (7969) ἡ < Ἡ (7977)
> Ἢ: (7970) ἢ < Ἢ (7978)
> Ἣ: (7971) ἣ < Ἣ (7979)
> Ἤ: (7972) ἤ < Ἤ (7980)
> Ἥ: (7973) ἥ < Ἥ (7981)
> Ἦ: (7974) ἦ < Ἦ (7982)
> Ἧ: (7975) ἧ < Ἧ (7983)
> ἰ: (7984) ἰ < Ἰ (7992)
> ἱ: (7985) ἱ < Ἱ (7993)
> ἲ: (7986) ἲ < Ἲ (7994)
> ἳ: (7987) ἳ < Ἳ (7995)
> ἴ: (7988) ἴ < Ἴ (7996)
> ἵ: (7989) ἵ < Ἵ (7997)
> ἶ: (7990) ἶ < Ἶ (7998)
> ἷ: (7991) ἷ < Ἷ (7999)
> Ἰ: (7984) ἰ < Ἰ (7992)
> Ἱ: (7985) ἱ < Ἱ (7993)
> Ἲ: (7986) ἲ < Ἲ (7994)
> Ἳ: (7987) ἳ < Ἳ (7995)
> Ἴ: (7988) ἴ < Ἴ (7996)
> Ἵ: (7989) ἵ < Ἵ (7997)
> Ἶ: (7990) ἶ < Ἶ (7998)
> Ἷ: (7991) ἷ < Ἷ (7999)
> ὀ: (8000) ὀ < Ὀ (8008)
> ὁ: (8001) ὁ < Ὁ (8009)
> ὂ: (8002) ὂ < Ὂ (8010)
> ὃ: (8003) ὃ < Ὃ (8011)
> ὄ: (8004) ὄ < Ὄ (8012)
> ὅ: (8005) ὅ < Ὅ (8013)
> Ὀ: (8000) ὀ < Ὀ (8008)
> Ὁ: (8001) ὁ < Ὁ (8009)
> Ὂ: (8002) ὂ < Ὂ (8010)
> Ὃ: (8003) ὃ < Ὃ (8011)
> Ὄ: (8004) ὄ < Ὄ (8012)
> Ὅ: (8005) ὅ < Ὅ (8013)
> ὑ: (8017) ὑ < Ὑ (8025)
> ὓ: (8019) ὓ < Ὓ (8027)
> ὕ: (8021) ὕ < Ὕ (8029)
> ὗ: (8023) ὗ < Ὗ (8031)
> Ὑ: (8017) ὑ < Ὑ (8025)
> Ὓ: (8019) ὓ < Ὓ (8027)
> Ὕ: (8021) ὕ < Ὕ (8029)
> Ὗ: (8023) ὗ < Ὗ (8031)
> ὠ: (8032) ὠ < Ὠ (8040)
> ὡ: (8033) ὡ < Ὡ (8041)
> ὢ: (8034) ὢ < Ὢ (8042)
> ὣ: (8035) ὣ < Ὣ (8043)
> ὤ: (8036) ὤ < Ὤ (8044)
> ὥ: (8037) ὥ < Ὥ (8045)
> ὦ: (8038) ὦ < Ὦ (8046)
> ὧ: (8039) ὧ < Ὧ (8047)
> Ὠ: (8032) ὠ < Ὠ (8040)
> Ὡ: (8033) ὡ < Ὡ (8041)
> Ὢ: (8034) ὢ < Ὢ (8042)
> Ὣ: (8035) ὣ < Ὣ (8043)
> Ὤ: (8036) ὤ < Ὤ (8044)
> Ὥ: (8037) ὥ < Ὥ (8045)
> Ὦ: (8038) ὦ < Ὦ (8046)
> Ὧ: (8039) ὧ < Ὧ (8047)
> ὰ: (8048) ὰ < Ὰ (8122)
> ά: (8049) ά < Ά (8123)
> ὲ: (8050) ὲ < Ὲ (8136)
> έ: (8051) έ < Έ (8137)
> ὴ: (8052) ὴ < Ὴ (8138)
> ή: (8053) ή < Ή (8139)
> ὶ: (8054) ὶ < Ὶ (8154)
> ί: (8055) ί < Ί (8155)
> ὸ: (8056) ὸ < Ὸ (8184)
> ό: (8057) ό < Ό (8185)
> ὺ: (8058) ὺ < Ὺ (8170)
> ύ: (8059) ύ < Ύ (8171)
> ὼ: (8060) ὼ < Ὼ (8186)
> ώ: (8061) ώ < Ώ (8187)
> ᾀ: (8064) ᾀ < ᾈ (8072)
> ᾁ: (8065) ᾁ < ᾉ (8073)
> ᾂ: (8066) ᾂ < ᾊ (8074)
> ᾃ: (8067) ᾃ < ᾋ (8075)
> ᾄ: (8068) ᾄ < ᾌ (8076)
> ᾅ: (8069) ᾅ < ᾍ (8077)
> ᾆ: (8070) ᾆ < ᾎ (8078)
> ᾇ: (8071) ᾇ < ᾏ (8079)
> ᾈ: (8064) ᾀ < ᾈ (8072)
> ᾉ: (8065) ᾁ < ᾉ (8073)
> ᾊ: (8066) ᾂ < ᾊ (8074)
> ᾋ: (8067) ᾃ < ᾋ (8075)
> ᾌ: (8068) ᾄ < ᾌ (8076)
> ᾍ: (8069) ᾅ < ᾍ (8077)
> ᾎ: (8070) ᾆ < ᾎ (8078)
> ᾏ: (8071) ᾇ < ᾏ (8079)
> ᾐ: (8080) ᾐ < ᾘ (8088)
> ᾑ: (8081) ᾑ < ᾙ (8089)
> ᾒ: (8082) ᾒ < ᾚ (8090)
> ᾓ: (8083) ᾓ < ᾛ (8091)
> ᾔ: (8084) ᾔ < ᾜ (8092)
> ᾕ: (8085) ᾕ < ᾝ (8093)
> ᾖ: (8086) ᾖ < ᾞ (8094)
> ᾗ: (8087) ᾗ < ᾟ (8095)
> ᾘ: (8080) ᾐ < ᾘ (8088)
> ᾙ: (8081) ᾑ < ᾙ (8089)
> ᾚ: (8082) ᾒ < ᾚ (8090)
> ᾛ: (8083) ᾓ < ᾛ (8091)
> ᾜ: (8084) ᾔ < ᾜ (8092)
> ᾝ: (8085) ᾕ < ᾝ (8093)
> ᾞ: (8086) ᾖ < ᾞ (8094)
> ᾟ: (8087) ᾗ < ᾟ (8095)
> ᾠ: (8096) ᾠ < ᾨ (8104)
> ᾡ: (8097) ᾡ < ᾩ (8105)
> ᾢ: (8098) ᾢ < ᾪ (8106)
> ᾣ: (8099) ᾣ < ᾫ (8107)
> ᾤ: (8100) ᾤ < ᾬ (8108)
> ᾥ: (8101) ᾥ < ᾭ (8109)
> ᾦ: (8102) ᾦ < ᾮ (8110)
> ᾧ: (8103) ᾧ < ᾯ (8111)
> ᾨ: (8096) ᾠ < ᾨ (8104)
> ᾩ: (8097) ᾡ < ᾩ (8105)
> ᾪ: (8098) ᾢ < ᾪ (8106)
> ᾫ: (8099) ᾣ < ᾫ (8107)
> ᾬ: (8100) ᾤ < ᾬ (8108)
> ᾭ: (8101) ᾥ < ᾭ (8109)
> ᾮ: (8102) ᾦ < ᾮ (8110)
> ᾯ: (8103) ᾧ < ᾯ (8111)
> ᾰ: (8112) ᾰ < Ᾰ (8120)
> ᾱ: (8113) ᾱ < Ᾱ (8121)
> ᾳ: (8115) ᾳ < ᾼ (8124)
> Ᾰ: (8112) ᾰ < Ᾰ (8120)
> Ᾱ: (8113) ᾱ < Ᾱ (8121)
> Ὰ: (8048) ὰ < Ὰ (8122)
> Ά: (8049) ά < Ά (8123)
> ᾼ: (8115) ᾳ < ᾼ (8124)
> ῃ: (8131) ῃ < ῌ (8140)
> Ὲ: (8050) ὲ < Ὲ (8136)
> Έ: (8051) έ < Έ (8137)
> Ὴ: (8052) ὴ < Ὴ (8138)
> Ή: (8053) ή < Ή (8139)
> ῌ: (8131) ῃ < ῌ (8140)
> ῐ: (8144) ῐ < Ῐ (8152)
> ῑ: (8145) ῑ < Ῑ (8153)
> Ῐ: (8144) ῐ < Ῐ (8152)
> Ῑ: (8145) ῑ < Ῑ (8153)
> Ὶ: (8054) ὶ < Ὶ (8154)
> Ί: (8055) ί < Ί (8155)
> ῠ: (8160) ῠ < Ῠ (8168)
> ῡ: (8161) ῡ < Ῡ (8169)
> ῥ: (8165) ῥ < Ῥ (8172)
> Ῠ: (8160) ῠ < Ῠ (8168)
> Ῡ: (8161) ῡ < Ῡ (8169)
> Ὺ: (8058) ὺ < Ὺ (8170)
> Ύ: (8059) ύ < Ύ (8171)
> Ῥ: (8165) ῥ < Ῥ (8172)
> ῳ: (8179) ῳ < ῼ (8188)
> Ὸ: (8056) ὸ < Ὸ (8184)
> Ό: (8057) ό < Ό (8185)
> Ὼ: (8060) ὼ < Ὼ (8186)
> Ώ: (8061) ώ < Ώ (8187)
> ῼ: (8179) ῳ < ῼ (8188)
> Ω: (969) ω < Ω (8486)
> K: (107) k < K (8490)
> Å: (229) å < Å (8491)
> Ɫ: (619) ɫ < Ɫ (11362)
> Ᵽ: (7549) ᵽ < Ᵽ (11363)
> Ɽ: (637) ɽ < Ɽ (11364)
> Ɑ: (593) ɑ < Ɑ (11373)
> Ɱ: (625) ɱ < Ɱ (11374)
> Ɐ: (592) ɐ < Ɐ (11375)
> Ɒ: (594) ɒ < Ɒ (11376)
> Ȿ: (575) ȿ < Ȿ (11390)
> Ɀ: (576) ɀ < Ɀ (11391)
> Ᵹ: (7545) ᵹ < Ᵹ (42877)
> Ɥ: (613) ɥ < Ɥ (42893)
> Ɦ: (614) ɦ < Ɦ (42922)
> Ɜ: (604) ɜ < Ɜ (42923)
> Ɡ: (609) ɡ < Ɡ (42924)
> Ɬ: (620) ɬ < Ɬ (42925)
> Ɪ: (618) ɪ < Ɪ (42926)
> Ʞ: (670) ʞ < Ʞ (42928)
> Ʇ: (647) ʇ < Ʇ (42929)
> Ʝ: (669) ʝ < Ʝ (42930)
> {noformat}
> Sample usage:
> {code:sql}  @Test public void nameSetRange() {
>     final NameSet names = new NameSet();
>     names.range("ͼ", false);
>   }{code}
> {noformat}java.lang.IllegalArgumentException: fromKey > toKey
> 	at java.base/java.util.TreeMap$NavigableSubMap.<init>(TreeMap.java:1365)
> 	at java.base/java.util.TreeMap$AscendingSubMap.<init>(TreeMap.java:1852)
> 	at java.base/java.util.TreeMap.subMap(TreeMap.java:910)
> 	at java.base/java.util.TreeSet.subSet(TreeSet.java:325)
> 	at org.apache.calcite.util.NameSet.range(NameSet.java:92)
> 	at org.apache.calcite.util.UtilTest.nameSetRange(UtilTest.java:2111)
> 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43){noformat}



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