Update of /cvsroot/monetdb/pathfinder/runtime
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv15321

Modified Files:
        pf_support.mx 
Log Message:
-- fixes in combine_node_info PROC


Index: pf_support.mx
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/runtime/pf_support.mx,v
retrieving revision 1.283
retrieving revision 1.284
diff -u -d -r1.283 -r1.284
--- pf_support.mx       4 Mar 2008 21:47:29 -0000       1.283
+++ pf_support.mx       18 Mar 2008 08:25:53 -0000      1.284
@@ -1293,23 +1293,48 @@
 PROC combine_node_info (any frag1, bat[void,oid] pre1, any attr1,
                         any frag2, bat[void,oid] pre2, any attr2) : 
bat[void,bat]
 {
-    var flen, plen, alen, maxlen;
+    var flen, plen, alen, maxlen, tmp1, tmp2;
     var res := bat (void, bat, 2).seqbase([EMAIL PROTECTED]);
 
     # nothing to do if we have no nodes
     if (pre1.count() = 0) return res.append(pre1).append(pre1);
     if (pre2.count() = 0) return res.append(pre2).append(pre2);
 
-    plen := max (log2 (lng (max(pre1))), log2 (lng (max(pre2))));
+    tmp1 := lng(max(pre1)); 
+    tmp2 := lng(max(pre2));
+    if (tmp1 > tmp2) {
+        plen := tmp1;
+    }
+    else {
+        plen := tmp2;
+    }
+    if (plen = 0LL) {
+        plen := 0;
+    }
+    else {
+        plen := log2 (plen);
+    }
     
     if (type(frag1) = bat) {
         if ((frag1.count() != pre1.count()) or 
             (frag1.seqbase() != pre1.seqbase()))
             ERROR("combine_node_info(): pre and frag (of the first input) are 
not aligned.\n");
-        flen := log2 (lng (max(frag1)));
+        tmp1 := lng(max(frag1));
+        if (tmp1 = 0LL) {
+            flen := 0;
+        }
+        else {
+            flen := log2 (tmp1);
+        }
     } else {
         if (type(frag1) = oid) {
-            flen := log2 (lng (frag1));
+            tmp1 := max(lng(frag1));
+            if (tmp1 = 0LL) {
+                flen := 0;
+            }
+            else {
+                flen := log2 (tmp1);
+            }
         } else {
             ERROR("combine_node_info(): frag value(s) expected.\n");
         }
@@ -1319,10 +1344,22 @@
         if ((pre1.count() != attr1.count()) or
             (pre1.seqbase() != attr1.seqbase()))
             ERROR("combine_node_info(): pre and attr (of the first input) are 
not aligned.\n");
-        alen := log2 (lng (max(attr1)));
+        tmp1 := lng(max(attr1));
+        if (tmp1 = 0LL) {
+            alen := 0;
+        }
+        else {
+            alen := log2 (tmp1);
+        }
     } else {
         if (type(attr1) = oid) {
-            alen := log2 (lng (attr1));
+            tmp1 := max(lng(attr1));
+            if (tmp1 = 0LL) {
+                alen := 0;
+            }
+            else {
+                alen := log2 (tmp1);
+            }
         } else {
             alen := 0;
         }
@@ -1332,10 +1369,24 @@
         if ((frag2.count() != pre2.count()) or
              (frag2.seqbase() != pre2.seqbase()))
             ERROR("combine_node_info(): pre and frag (of the second input) are 
not aligned.\n");
-        flen := max (flen, log2 (lng (max(frag2))));
+        tmp1 := lng(max(frag2));
+        if (tmp1 = 0LL) {
+            tmp2 := 0;
+        }
+        else {
+            tmp2 := log2 (tmp1);
+        }
+        flen := max (flen, tmp2);
     } else {
         if (type(frag2) = oid) {
-            flen := max (flen, log2 (lng (frag2)));
+            tmp1 := max(lng(frag2));
+            if (tmp1 = 0LL) {
+                tmp2 := 0;
+            }
+            else {
+                tmp2 := log2 (tmp1);
+            }
+            flen := max (flen, tmp2);
         } else {
             ERROR("combine_node_info(): frag value(s) expected.\n");
         }
@@ -1345,10 +1396,24 @@
         if ((pre2.count() != attr2.count()) or
             (pre2.seqbase() != attr2.seqbase()))
             ERROR("combine_node_info(): pre and attr (of the second input) are 
not aligned.\n");
-        alen := max (alen, log2 (lng (max(attr2))));
+        tmp1 := lng(max(attr2));
+        if (tmp1 = 0LL) {
+            tmp2 := 0;
+        }
+        else {
+            tmp2 := log2 (tmp1);
+        }
+        alen := max (alen, tmp2);
     } else {
         if (type(attr2) = oid) {
-            alen := max (alen, log2 (lng (attr2)));
+            tmp1 := max(lng(attr2));
+            if (tmp1 = 0LL) {
+                tmp2 := 0;
+            }
+            else {
+                tmp2 := log2 (tmp1);
+            }
+            alen := max (alen, tmp2);
         } else {
             alen := max (alen, 0);
         }
@@ -7042,6 +7107,14 @@
                       (*r == '_') || (*r == '.') || (*r == '-') || (*r >= '0' 
&& *r <= '9')) r++;
                 if (*r == 0) continue; /* ok */
             }
+            /* prefix --- local part delimiter ':' */
+            if (*r == ':') r++;
+           if ((*r >= 'a' && *r <= 'z') || (*r >= 'A' && *r <= 'Z') || 
*(unsigned char*) r >= 128) {
+                r++;
+                while((*r >= 'a' && *r <= 'z') || (*r >= 'A' && *r <= 'Z') || 
(*(unsigned char*) r >= 128) ||
+                      (*r == '_') || (*r == '.') || (*r == '-') || (*r >= '0' 
&& *r <= '9')) r++;
+                if (*r == 0) continue; /* ok */
+            }
            s = (str) BUNtail(bi,p); break;
        }
        *ret = GDKstrdup(s);
@@ -7877,9 +7950,9 @@
 }
 ADDHELP("merge_adjacent_text_nodes", "tsheyar", "Oct 2005",
         "PARAMETERS:\n\
-BAT[void,str] iter : prefix of qname\n\
-BAT[void,str] pre  : URI of the qname\n\
-BAT[void,str] cont : local part of the qname\n\
+BAT[void,oid] iter : iter references\n\
+BAT[void,oid] pre  : pre values\n\
+BAT[void,oid] cont : container id which the pre values refer to\n\
 BAT[void,BAT] ws   : working set that stores the qname\n\
 DESCRIPTION:\n\
 merge_adjacent_text_nodes takes an iter|pre|cont schema and\n\


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins

Reply via email to