Changeset: 8b90cf5f16a5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/8b90cf5f16a5
Modified Files:
        monetdb5/modules/atoms/str.c
Branch: default
Log Message:

Updated upper/lower case mapping; improved startup speed.


diffs (96 lines):

diff --git a/monetdb5/modules/atoms/str.c b/monetdb5/modules/atoms/str.c
--- a/monetdb5/modules/atoms/str.c
+++ b/monetdb5/modules/atoms/str.c
@@ -96,7 +96,7 @@
  * high-performance hash-lookup (all code inlined).
  */
 
-/* These tables were generated from the Unicode 12.1.0 spec. */
+/* These tables were generated from the Unicode 13.0.0 spec. */
 struct UTF8_lower_upper {
        unsigned int from, to;
 } UTF8_toUpper[] = { /* code points with non-null uppercase conversion */
@@ -1175,6 +1175,9 @@ struct UTF8_lower_upper {
        { 0xA7BD, 0xA7BC, },
        { 0xA7BF, 0xA7BE, },
        { 0xA7C3, 0xA7C2, },
+       { 0xA7C8, 0xA7C7, },
+       { 0xA7CA, 0xA7C9, },
+       { 0xA7F6, 0xA7F5, },
        { 0xAB53, 0xA7B3, },
        { 0xAB70, 0x13A0, },
        { 0xAB71, 0x13A1, },
@@ -2647,6 +2650,9 @@ struct UTF8_lower_upper {
        { 0xA7C4, 0xA794, },
        { 0xA7C5, 0x0282, },
        { 0xA7C6, 0x1D8E, },
+       { 0xA7C7, 0xA7C8, },
+       { 0xA7C9, 0xA7CA, },
+       { 0xA7F5, 0xA7F6, },
        { 0xFF21, 0xFF41, },
        { 0xFF22, 0xFF42, },
        { 0xFF23, 0xFF43, },
@@ -2910,26 +2916,52 @@ STRprelude(void *ret)
        if (UTF8_toUpperFrom == NULL) {
                size_t i;
 
-               UTF8_toUpperFrom = COLnew(0, TYPE_int, 1500, TRANSIENT);
-               UTF8_toUpperTo = COLnew(0, TYPE_int, 1500, TRANSIENT);
-               UTF8_toLowerFrom = COLnew(0, TYPE_int, 1500, TRANSIENT);
-               UTF8_toLowerTo = COLnew(0, TYPE_int, 1500, TRANSIENT);
+               UTF8_toUpperFrom = COLnew(0, TYPE_int, sizeof(UTF8_toUpper) / 
sizeof(UTF8_toUpper[0]), TRANSIENT);
+               UTF8_toUpperTo = COLnew(0, TYPE_int, sizeof(UTF8_toUpper) / 
sizeof(UTF8_toUpper[0]), TRANSIENT);
+               UTF8_toLowerFrom = COLnew(0, TYPE_int, sizeof(UTF8_toLower) / 
sizeof(UTF8_toLower[0]), TRANSIENT);
+               UTF8_toLowerTo = COLnew(0, TYPE_int, sizeof(UTF8_toLower) / 
sizeof(UTF8_toLower[0]), TRANSIENT);
                if (UTF8_toUpperFrom == NULL || UTF8_toUpperTo == NULL ||
                        UTF8_toLowerFrom == NULL || UTF8_toLowerTo == NULL) {
                        goto bailout;
                }
 
+               int *fp = (int *) Tloc(UTF8_toUpperFrom, 0);
+               int *tp = (int *) Tloc(UTF8_toUpperTo, 0);
                for (i = 0; i < sizeof(UTF8_toUpper) / sizeof(UTF8_toUpper[0]); 
i++) {
-                       if (BUNappend(UTF8_toUpperFrom, &UTF8_toUpper[i].from, 
false) != GDK_SUCCEED ||
-                               BUNappend(UTF8_toUpperTo, &UTF8_toUpper[i].to, 
false) != GDK_SUCCEED)
-                               goto bailout;
+                       fp[i] = UTF8_toUpper[i].from;
+                       tp[i] = UTF8_toUpper[i].to;
                }
-
+               UTF8_toUpperFrom->tkey = true;
+               UTF8_toUpperFrom->tsorted = true;
+               UTF8_toUpperFrom->trevsorted = false;
+               UTF8_toUpperFrom->tnil = false;
+               UTF8_toUpperFrom->tnonil = true;
+               BATsetcount(UTF8_toUpperFrom, i);
+               UTF8_toUpperTo->tkey = false;
+               UTF8_toUpperTo->tsorted = false;
+               UTF8_toUpperTo->trevsorted = false;
+               UTF8_toUpperTo->tnil = false;
+               UTF8_toUpperTo->tnonil = true;
+               BATsetcount(UTF8_toUpperTo, i);
+
+               fp = (int *) Tloc(UTF8_toLowerFrom, 0);
+               tp = (int *) Tloc(UTF8_toLowerTo, 0);
                for (i = 0; i < sizeof(UTF8_toLower) / sizeof(UTF8_toLower[0]); 
i++) {
-                       if (BUNappend(UTF8_toLowerFrom, &UTF8_toLower[i].from, 
false) != GDK_SUCCEED ||
-                               BUNappend(UTF8_toLowerTo, &UTF8_toLower[i].to, 
false) != GDK_SUCCEED)
-                               goto bailout;
+                       fp[i] = UTF8_toLower[i].from;
+                       tp[i] = UTF8_toLower[i].to;
                }
+               UTF8_toLowerFrom->tkey = true;
+               UTF8_toLowerFrom->tsorted = true;
+               UTF8_toLowerFrom->trevsorted = false;
+               UTF8_toLowerFrom->tnil = false;
+               UTF8_toLowerFrom->tnonil = true;
+               BATsetcount(UTF8_toLowerFrom, i);
+               UTF8_toLowerTo->tkey = false;
+               UTF8_toLowerTo->tsorted = false;
+               UTF8_toLowerTo->trevsorted = false;
+               UTF8_toLowerTo->tnil = false;
+               UTF8_toLowerTo->tnonil = true;
+               BATsetcount(UTF8_toLowerTo, i);
 
                if (BBPrename(UTF8_toUpperFrom->batCacheid, 
"monet_unicode_upper_from") != 0 ||
                        BBPrename(UTF8_toUpperTo->batCacheid, 
"monet_unicode_upper_to") != 0 ||
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to