Changeset: 5f1fdcf803d8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/5f1fdcf803d8
Modified Files:
        sql/server/sql_mvc.c
        sql/storage/bat/bat_storage.c
Branch: insertonly
Log Message:

Merge with default.


diffs (truncated from 1746 to 300 lines):

diff --git a/clients/Tests/MAL-signatures-hge.test 
b/clients/Tests/MAL-signatures-hge.test
--- a/clients/Tests/MAL-signatures-hge.test
+++ b/clients/Tests/MAL-signatures-hge.test
@@ -51033,56 +51033,6 @@ user_statistics
 pattern sysmon.user_statistics() (X_0:bat[:str], X_1:bat[:lng], X_2:bat[:lng], 
X_3:bat[:timestamp], X_4:bat[:timestamp], X_5:bat[:lng], X_6:bat[:str]) 
 SYSMONstatistics;
 (empty)
-tokenizer
-append
-command tokenizer.append(X_0:str):oid 
-TKNZRappend;
-tokenize a new string and append it to the tokenizer (duplicate elimination is 
performed)
-tokenizer
-close
-command tokenizer.close():void 
-TKNZRclose;
-close the current tokenizer store
-tokenizer
-depositFile
-command tokenizer.depositFile(X_0:str):void 
-TKNZRdepositFile;
-batch insertion from a file of strings to tokenize, each string is separated 
by a new line
-tokenizer
-getCardinality
-command tokenizer.getCardinality():bat[:lng] 
-TKNZRgetCardinality;
-debugging function that returns the unique tokens at each level
-tokenizer
-getCount
-command tokenizer.getCount():bat[:lng] 
-TKNZRgetCount;
-debugging function that returns the size of the bats at each level
-tokenizer
-getIndex
-command tokenizer.getIndex():bat[:oid] 
-TKNZRgetIndex;
-administrative function that returns the INDEX bat
-tokenizer
-getLevel
-command tokenizer.getLevel(X_0:int):bat[:str] 
-TKNZRgetLevel;
-administrative function that returns the bat on level i
-tokenizer
-locate
-pattern tokenizer.locate(X_0:str):oid 
-TKNZRlocate;
-if the given string is in the store returns its oid, otherwise oid_nil
-tokenizer
-open
-command tokenizer.open(X_0:str):void 
-TKNZRopen;
-open the named tokenizer store, a new one is created if the specified name 
does not exist
-tokenizer
-take
-pattern tokenizer.take(X_0:oid):str 
-TKNZRtakeOid;
-reconstruct and returns the i-th string
 txtsim
 dameraulevenshtein
 pattern txtsim.dameraulevenshtein(X_0:str, X_1:str):int 
diff --git a/clients/Tests/MAL-signatures.test 
b/clients/Tests/MAL-signatures.test
--- a/clients/Tests/MAL-signatures.test
+++ b/clients/Tests/MAL-signatures.test
@@ -39358,56 +39358,6 @@ user_statistics
 pattern sysmon.user_statistics() (X_0:bat[:str], X_1:bat[:lng], X_2:bat[:lng], 
X_3:bat[:timestamp], X_4:bat[:timestamp], X_5:bat[:lng], X_6:bat[:str]) 
 SYSMONstatistics;
 (empty)
-tokenizer
-append
-command tokenizer.append(X_0:str):oid 
-TKNZRappend;
-tokenize a new string and append it to the tokenizer (duplicate elimination is 
performed)
-tokenizer
-close
-command tokenizer.close():void 
-TKNZRclose;
-close the current tokenizer store
-tokenizer
-depositFile
-command tokenizer.depositFile(X_0:str):void 
-TKNZRdepositFile;
-batch insertion from a file of strings to tokenize, each string is separated 
by a new line
-tokenizer
-getCardinality
-command tokenizer.getCardinality():bat[:lng] 
-TKNZRgetCardinality;
-debugging function that returns the unique tokens at each level
-tokenizer
-getCount
-command tokenizer.getCount():bat[:lng] 
-TKNZRgetCount;
-debugging function that returns the size of the bats at each level
-tokenizer
-getIndex
-command tokenizer.getIndex():bat[:oid] 
-TKNZRgetIndex;
-administrative function that returns the INDEX bat
-tokenizer
-getLevel
-command tokenizer.getLevel(X_0:int):bat[:str] 
-TKNZRgetLevel;
-administrative function that returns the bat on level i
-tokenizer
-locate
-pattern tokenizer.locate(X_0:str):oid 
-TKNZRlocate;
-if the given string is in the store returns its oid, otherwise oid_nil
-tokenizer
-open
-command tokenizer.open(X_0:str):void 
-TKNZRopen;
-open the named tokenizer store, a new one is created if the specified name 
does not exist
-tokenizer
-take
-pattern tokenizer.take(X_0:oid):str 
-TKNZRtakeOid;
-reconstruct and returns the i-th string
 txtsim
 dameraulevenshtein
 pattern txtsim.dameraulevenshtein(X_0:str, X_1:str):int 
diff --git a/common/stream/stream.h b/common/stream/stream.h
--- a/common/stream/stream.h
+++ b/common/stream/stream.h
@@ -245,7 +245,7 @@ typedef struct bstream {
 
 stream_export bstream *bstream_create(stream *rs, size_t chunk_size); // used 
all over
 stream_export void bstream_destroy(bstream *s); // all over
-stream_export ssize_t bstream_read(bstream *s, size_t size); // tablet.c, 
tokenizer.c
+stream_export ssize_t bstream_read(bstream *s, size_t size); // tablet.c
 stream_export ssize_t bstream_next(bstream *s); // all over
 
 /* Callback stream is a stream where the read and write functions are
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -2077,7 +2077,7 @@ BBPdir_first(bool subcommit, lng logno, 
                 * replacing the entries for the subcommitted bats */
                if ((obbpf = GDKfileopen(0, SUBDIR, "BBP", "dir", "r")) == NULL 
&&
                    (obbpf = GDKfileopen(0, BAKDIR, "BBP", "dir", "r")) == 
NULL) {
-                       GDKsyserror("subcommit attempted without backup 
BBP.dir.");
+                       GDKsyserror("subcommit attempted without backup 
BBP.dir");
                        goto bailout;
                }
                /* read first three lines */
@@ -2143,7 +2143,7 @@ BBPdir_step(bat bid, BUN size, int n, ch
                        }
                        n = -1;
                        if (fclose(*obbpfp) == EOF) {
-                               GDKsyserror("Closing backup BBP.dir file 
failed.\n");
+                               GDKsyserror("Closing backup BBP.dir file 
failed\n");
                                GDKclrerr(); /* ignore error */
                        }
                        *obbpfp = NULL;
@@ -2181,7 +2181,7 @@ BBPdir_last(int n, char *buf, size_t buf
                                goto bailout;
                        }
                        if (fclose(obbpf) == EOF) {
-                               GDKsyserror("Closing backup BBP.dir file 
failed.\n");
+                               GDKsyserror("Closing backup BBP.dir file 
failed\n");
                                GDKclrerr(); /* ignore error */
                        }
                        obbpf = NULL;
@@ -3902,7 +3902,7 @@ BBPsync(int cnt, bat *restrict subcommit
                     MT_rename(bakdir, deldir) < 0))
                        ret = GDK_FAIL;
                if (ret != GDK_SUCCEED)
-                       GDKsyserror("rename(%s,%s) failed.\n", bakdir, deldir);
+                       GDKsyserror("rename(%s,%s) failed\n", bakdir, deldir);
                TRC_DEBUG(IO_, "rename %s %s = %d\n", bakdir, deldir, (int) 
ret);
        }
 
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -307,6 +307,8 @@ selectjoin(BAT **r1p, BAT **r2p, BAT *l,
        BATiter li = bat_iterator(l);
        const void *v;
        BAT *bn = NULL;
+       BAT *r1 = NULL;
+       BAT *r2 = NULL;
        BUN bncount;
 
        assert(lci->ncand > 0);
@@ -354,46 +356,30 @@ selectjoin(BAT **r1p, BAT **r2p, BAT *l,
                if (semi)
                        bncount = 1;
                if (max_one) {
-                       BBPreclaim(bn);
                        GDKerror("more than one match");
-                       return GDK_FAIL;
+                       goto bailout;
                }
        }
-       BAT *r1 = COLnew(0, TYPE_oid, lci->ncand * bncount, TRANSIENT);
-       if (r1 == NULL) {
-               BBPreclaim(bn);
-               return GDK_FAIL;
-       }
+       r1 = COLnew(0, TYPE_oid, lci->ncand * bncount, TRANSIENT);
+       if (r1 == NULL)
+               goto bailout;
        r1->tsorted = true;
        r1->trevsorted = lci->ncand == 1;
        r1->tseqbase = bncount == 1 && lci->tpe == cand_dense ? o : oid_nil;
        r1->tkey = bncount == 1;
        r1->tnil = false;
        r1->tnonil = true;
-       BAT *r2 = NULL;
-       if (r2p) {
-               if (bn)
-                       r2 = COLnew(0, TYPE_oid, lci->ncand * bncount, 
TRANSIENT);
-               else
-                       r2 = BATconstant(0, TYPE_void, &oid_nil, lci->ncand * 
bncount, TRANSIENT);
-               if (r2 == NULL) {
-                       BBPreclaim(bn);
-                       BBPreclaim(r1);
-                       return GDK_FAIL;
-               }
-               if (bn) {
-                       r2->tsorted = lci->ncand == 1 || bncount == 1;
-                       r2->trevsorted = bncount == 1;
-                       r2->tseqbase = lci->ncand == 1 && BATtdense(bn) ? 
bn->tseqbase : oid_nil;
-                       r2->tkey = lci->ncand == 1;
-                       r2->tnil = false;
-                       r2->tnonil = true;
-               }
-       }
        if (bn == NULL) {
+               /* left outer join, no match, we're returning nil in r2 */
                oid *o1p = (oid *) Tloc(r1, 0);
                BUN p, q = bncount;
 
+               if (r2p) {
+                       r2 = BATconstant(0, TYPE_void, &oid_nil, lci->ncand * 
bncount, TRANSIENT);
+                       if (r2 == NULL)
+                               goto bailout;
+                       *r2p = r2;
+               }
                do {
                        GDK_CHECK_TIMEOUT(timeoffset, counter,
                                          GOTO_LABEL_TIMEOUT_HANDLER(bailout));
@@ -402,51 +388,65 @@ selectjoin(BAT **r1p, BAT **r2p, BAT *l,
                        }
                        o = canditer_next(lci);
                } while (!is_oid_nil(o));
-       } else if (BATtdense(bn)) {
-               oid *o1p = (oid *) Tloc(r1, 0);
-               oid *o2p = r2 ? (oid *) Tloc(r2, 0) : NULL;
-               oid bno = bn->tseqbase;
-               BUN p, q = bncount;
-
-               do {
-                       GDK_CHECK_TIMEOUT(timeoffset, counter,
-                                         GOTO_LABEL_TIMEOUT_HANDLER(bailout));
-                       for (p = 0; p < q; p++) {
-                               *o1p++ = o;
-                       }
-                       if (o2p) {
-                               for (p = 0; p < q; p++) {
-                                       *o2p++ = bno + p;
-                               }
-                       }
-                       o = canditer_next(lci);
-               } while (!is_oid_nil(o));
        } else {
                oid *o1p = (oid *) Tloc(r1, 0);
-               oid *o2p = r2 ? (oid *) Tloc(r2, 0) : NULL;
-               const oid *bnp = (const oid *) Tloc(bn, 0);
+               oid *o2p;
                BUN p, q = bncount;
 
-               do {
-                       GDK_CHECK_TIMEOUT(timeoffset, counter,
-                                         GOTO_LABEL_TIMEOUT_HANDLER(bailout));
-                       for (p = 0; p < q; p++) {
-                               *o1p++ = o;
-                       }
-                       if (o2p) {
+               if (r2p) {
+                       r2 = COLnew(0, TYPE_oid, lci->ncand * bncount, 
TRANSIENT);
+                       if (r2 == NULL)
+                               goto bailout;
+                       r2->tsorted = lci->ncand == 1 || bncount == 1;
+                       r2->trevsorted = bncount == 1;
+                       r2->tseqbase = lci->ncand == 1 && BATtdense(bn) ? 
bn->tseqbase : oid_nil;
+                       r2->tkey = lci->ncand == 1;
+                       r2->tnil = false;
+                       r2->tnonil = true;
+                       *r2p = r2;
+                       o2p = (oid *) Tloc(r2, 0);
+               } else {
+                       o2p = NULL;
+               }
+
+               if (BATtdense(bn)) {
+                       oid bno = bn->tseqbase;
+
+                       do {
+                               GDK_CHECK_TIMEOUT(timeoffset, counter,
+                                                 
GOTO_LABEL_TIMEOUT_HANDLER(bailout));
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to