Changeset: b8e32af217ac for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b8e32af217ac
Modified Files:
        gdk/gdk_join.c
Branch: default
Log Message:

Share string heap when we can in BATproject of a string BAT.
This reduces the time query 14 op TPC-H takes somewhat.


diffs (24 lines):

diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -3279,10 +3279,17 @@ BATproject(BAT *l, BAT *r)
        }
        assert(l->ttype == TYPE_oid);
 
-       if (ATOMstorage(tpe) == TYPE_str && l->T->nonil &&
-           (rcount == 0 || lcount > (rcount >> 3))) {
+       if (ATOMstorage(tpe) == TYPE_str &&
+           l->T->nonil &&
+           (rcount == 0 ||
+            lcount > (rcount >> 3) ||
+            r->batRestricted == BAT_READ)) {
                /* insert strings as ints, we need to copy the string
-                * heap whole sale */
+                * heap whole sale; we can not do this if there are
+                * nils in the left column, and we will not do it if
+                * the left is much smaller than the right and the
+                * right is writable (meaning we have to actually copy
+                * the right string heap) */
                tpe = r->T->width == 1 ? TYPE_bte : (r->T->width == 2 ? 
TYPE_sht : (r->T->width == 4 ? TYPE_int : TYPE_lng));
                /* int's nil representation is a valid offset, so
                 * don't check for nils */
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to