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