Changeset: 23501ad96984 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=23501ad96984
Modified Files:
        clients/Tests/exports.stable.out
        gdk/gdk.h
        gdk/gdk_storage.c
        monetdb5/mal/Tests/tst032.stable.out
        monetdb5/mal/Tests/tst033.stable.out
        monetdb5/mal/Tests/tst034.stable.out
        monetdb5/mal/Tests/tst201.stable.out
        monetdb5/mal/Tests/tst810.stable.out
        monetdb5/mal/mal_debugger.c
        monetdb5/modules/kernel/Tests/TriBool.malC
        monetdb5/modules/kernel/Tests/TriBool.stable.out
        monetdb5/modules/mal/Tests/batpartition.stable.out
        monetdb5/modules/mal/Tests/iterator03.stable.out
        monetdb5/modules/mal/Tests/mapi01.stable.out
        monetdb5/modules/mal/Tests/mapi07.stable.out
        monetdb5/modules/mal/Tests/partition.stable.out
        monetdb5/modules/mal/Tests/tokenizer00.stable.out
        monetdb5/modules/mal/mal_io.c
        monetdb5/modules/mal/mal_mapi.c
        
monetdb5/tests/BugDay_2005-10-06_4.9.3/Tests/multiplex_nil.SF-1153664.stable.out
        monetdb5/tests/gdkTests/Tests/scanselect.stable.out
        monetdb5/tests/mapi/Tests/sample3.stable.out
        sql/storage/bat/bat_table.c
Branch: default
Log Message:

Simplify multi-column printing
The old-fashioned BATmultiprintf has been dropped in favor of
a simplier version BATprintcolumns.
For backward compatibility reasons, the calls have extended
where necessary with a materialized void column.


diffs (truncated from 1068 to 300 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -153,7 +153,6 @@ void *BATmin(BAT *b, void *aggr);
 void BATmmap(BAT *b, int hb, int tb, int hh, int th, int force);
 gdk_return BATmode(BAT *b, int onoff);
 void BATmsync(BAT *b);
-gdk_return BATmultiprintf(stream *f, int argc, BAT *argv[], int printoid, int 
order, int printorderby);
 int BATname(BAT *b, const char *nme);
 BAT *BATnew(int hdtype, int tltype, BUN capacity, int role) 
__attribute__((warn_unused_result));
 int BATordered(BAT *b);
@@ -161,7 +160,7 @@ int BATordered_rev(BAT *b);
 BAT *BATouterjoin(BAT *l, BAT *r, BUN estimate);
 BAT *BATprev(BAT *b);
 gdk_return BATprint(BAT *b);
-gdk_return BATprintcols(stream *s, int argc, BAT *argv[]);
+gdk_return BATprintcolumns(stream *s, int argc, BAT *argv[]);
 gdk_return BATprintf(stream *f, BAT *b);
 gdk_return BATprod(void *res, int tp, BAT *b, BAT *s, int skip_nils, int 
abort_on_error, int nil_if_empty);
 BAT *BATproject(BAT *l, BAT *r);
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1579,24 +1579,18 @@ gdk_export gdk_return GDKcreatedir(const
  * @item int
  * @tab BATprintf (stream *f, BAT *b)
  * @item int
- * @tab BATmultiprintf (stream *f, int argc, BAT *b[], int printoid,
- * int order, int printorderby)
+ * @tab BATprintcolumns (stream *f, int argc, BAT *b[]);
  * @end multitable
  *
- * The functions to convert BATs into ASCII and the reverse use
- * internally defined formats. They are primarily meant for ease of
+ * The functions to convert BATs into ASCII. They are primarily meant for ease 
of
  * debugging and to a lesser extent for output processing.  Printing a
  * BAT is done essentially by looping through its components, printing
- * each association.  If an index is available, it will be used.
+ * each association.  
  *
- * The BATmultiprintf command assumes a set of BATs with corresponding
- * oid-s in the head columns. It performs the multijoin over them, and
- * prints the multi-column result on the file.
  */
-gdk_export gdk_return BATprintcols(stream *s, int argc, BAT *argv[]);
+gdk_export gdk_return BATprintcolumns(stream *s, int argc, BAT *argv[]);
 gdk_export gdk_return BATprint(BAT *b);
 gdk_export gdk_return BATprintf(stream *f, BAT *b);
-gdk_export gdk_return BATmultiprintf(stream *f, int argc, BAT *argv[], int 
printoid, int order, int printorderby);
 
 /*
  * @- BAT clustering
diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c
--- a/gdk/gdk_storage.c
+++ b/gdk/gdk_storage.c
@@ -986,8 +986,12 @@ BATdelete(BAT *b)
        b->batCopiedtodisk = FALSE;
 }
 
+/*
+ * BAT specific printing
+ */
+
 gdk_return
-BATprintcols(stream *s, int argc, BAT *argv[])
+BATprintcolumns(stream *s, int argc, BAT *argv[])
 {
        int i;
        BUN n, cnt;
@@ -1002,19 +1006,11 @@ BATprintcols(stream *s, int argc, BAT *a
        /* error checking */
        for (i = 0; i < argc; i++) {
                if (argv[i] == NULL) {
-                       GDKerror("BAT missing\n");
-                       return GDK_FAIL;
-               }
-               if (!BAThdense(argv[i])) {
-                       GDKerror("BATs must be dense headed\n");
+                       GDKerror("Columns missing\n");
                        return GDK_FAIL;
                }
                if (BATcount(argv[0]) != BATcount(argv[i])) {
-                       GDKerror("BATs must be the same size\n");
-                       return GDK_FAIL;
-               }
-               if (argv[0]->hseqbase != argv[i]->hseqbase) {
-                       GDKerror("BATs must be aligned\n");
+                       GDKerror("Columns must be the same size\n");
                        return GDK_FAIL;
                }
        }
@@ -1071,17 +1067,15 @@ BATprintf(stream *s, BAT *b)
        BAT *argv[2];
        gdk_return ret = GDK_FAIL;
 
-       argv[0] = BATmirror(BATmark(b, 0));
-       argv[1] = BATmirror(BATmark(BATmirror(b), 0));
+       argv[0] = BATmark(b, 0);
+       argv[1] = b;
        if (argv[0] && argv[1]) {
                BATroles(argv[0], NULL, b->hident);
                BATroles(argv[1], NULL, b->tident);
-               ret = BATprintcols(s, 2, argv);
+               ret = BATprintcolumns(s, 2, argv);
        }
        if (argv[0])
                BBPunfix(argv[0]->batCacheid);
-       if (argv[1])
-               BBPunfix(argv[1]->batCacheid);
        return ret;
 }
 
@@ -1090,82 +1084,3 @@ BATprint(BAT *b)
 {
        return BATprintf(GDKstdout, b);
 }
-
-gdk_return
-BATmultiprintf(stream *s, int argc, BAT *argv[], int printhead, int order, int 
printorder)
-{
-       BAT **bats;
-       gdk_return ret;
-       int i;
-
-       (void) printorder;
-       assert(argc >= 2);
-       assert(order < argc);
-       assert(order >= 0);
-       // the only flags used so far
-       assert(printhead == TRUE);
-       assert(order == 0);
-       assert(printorder == TRUE);
-
-       argc--;
-       if ((bats = GDKzalloc((argc + 1) * sizeof(BAT *))) == NULL)
-               return GDK_FAIL;
-       if ((bats[0] = BATmirror(BATmark(argv[order > 0 ? order - 1 : 0], 0))) 
== NULL)
-               goto bailout;
-       if ((bats[1] = BATmirror(BATmark(BATmirror(argv[0]), 0))) == NULL)
-               goto bailout;
-       for (i = 1; i < argc; i++) {
-               BAT *a, *b, *r, *t;
-               int j;
-
-               if ((r = BATmirror(BATmark(argv[i], 0))) == NULL)
-                       goto bailout;
-               ret = BATsubleftjoin(&a, &b, bats[0], r, NULL, NULL, 0, 
BUN_NONE);
-               BBPunfix(r->batCacheid);
-               if (ret != GDK_SUCCEED)
-                       goto bailout;
-               if ((t = BATproject(a, bats[0])) == NULL) {
-                       BBPunfix(a->batCacheid);
-                       BBPunfix(b->batCacheid);
-                       goto bailout;
-               }
-               BBPunfix(bats[0]->batCacheid);
-               bats[0] = t;
-               for (j = 1; j <= i; j++) {
-                       if ((t = BATproject(a, bats[j])) == NULL) {
-                               BBPunfix(a->batCacheid);
-                               BBPunfix(b->batCacheid);
-                               goto bailout;
-                       }
-                       BBPunfix(bats[j]->batCacheid);
-                       bats[j] = t;
-               }
-               BBPunfix(a->batCacheid);
-               if ((r = BATmirror(BATmark(BATmirror(argv[i]), 0))) == NULL) {
-                       BBPunfix(b->batCacheid);
-                       goto bailout;
-               }
-               t = BATproject(b, r);
-               BBPunfix(b->batCacheid);
-               BBPunfix(r->batCacheid);
-               if (t == NULL)
-                       goto bailout;
-               bats[i + 1] = t;
-       }
-       BATroles(bats[0], NULL, argv[order > 0 ? order - 1 : 0]->hident);
-       for (i = 1; i <= argc; i++)
-               BATroles(bats[i], NULL, argv[i - 1]->tident);
-       ret = BATprintcols(s, argc + printhead, bats + !printhead);
-       for (i = 0; i <= argc; i++)
-               BBPunfix(bats[i]->batCacheid);
-       GDKfree(bats);
-       return ret;
-
-  bailout:
-       for (i = 0; i <= argc; i++) {
-               if (bats[i])
-                       BBPunfix(bats[i]->batCacheid);
-       }
-       GDKfree(bats);
-       return GDK_FAIL;
-}
diff --git a/monetdb5/mal/Tests/tst032.stable.out 
b/monetdb5/mal/Tests/tst032.stable.out
--- a/monetdb5/mal/Tests/tst032.stable.out
+++ b/monetdb5/mal/Tests/tst032.stable.out
@@ -57,7 +57,7 @@ end user.main;
 # oid  int  # type
 #--------------------------#
 [ 0@0, 0  ]
-[ 2@0, 2  ]
+[ 1@0, 2  ]
 
 # 22:30:08 >  
 # 22:30:08 >  Done.
diff --git a/monetdb5/mal/Tests/tst033.stable.out 
b/monetdb5/mal/Tests/tst033.stable.out
--- a/monetdb5/mal/Tests/tst033.stable.out
+++ b/monetdb5/mal/Tests/tst033.stable.out
@@ -60,17 +60,17 @@ end user.main;
 #-----------------#
 [ 0@0,   0       ]
 [ 1@0,   1       ]
-#-----------------#
-# h    tmp_5     # name
-# int  int       # type
-#-----------------#
-[ 1@0,   1       ]
-[ 2@0,   2       ]
-#-----------------#
-# h    tmp_7     # name
-# int  int       # type
-#-----------------#
-[ 1@0,   1       ]
+#--------------------------#
+# t    t  # name
+# void int  # type
+#--------------------------#
+[ 0@0, 1  ]
+[ 1@0, 2  ]
+#--------------------------#
+# t    t  # name
+# void int  # type
+#--------------------------#
+[ 0@0, 1  ]
 
 # 07:58:41 >  
 # 07:58:41 >  Done.
diff --git a/monetdb5/mal/Tests/tst034.stable.out 
b/monetdb5/mal/Tests/tst034.stable.out
--- a/monetdb5/mal/Tests/tst034.stable.out
+++ b/monetdb5/mal/Tests/tst034.stable.out
@@ -73,17 +73,17 @@ select 5 [1]
 [ 0@0,   0       ]
 [ 1@0,   1       ]
 select 5 [1]
-#-----------------#
-# h    t         # name
-# int  int       # type
-#-----------------#
-[ 1@0,   1       ]
-[ 2@0,   2       ]
-#-----------------#
-# h    t         # name
-# int  int       # type
-#-----------------#
-[ 1@0,   1       ]
+#--------------------------#
+# t    t  # name
+# void int  # type
+#--------------------------#
+[ 0@0, 1  ]
+[ 1@0, 2  ]
+#--------------------------#
+# t    t  # name
+# void int  # type
+#--------------------------#
+[ 0@0, 1  ]
 
 # 22:30:08 >  
 # 22:30:08 >  Done.
diff --git a/monetdb5/mal/Tests/tst201.stable.out 
b/monetdb5/mal/Tests/tst201.stable.out
--- a/monetdb5/mal/Tests/tst201.stable.out
+++ b/monetdb5/mal/Tests/tst201.stable.out
@@ -87,65 +87,69 @@ end user.main;
 # h    t  # name
 # oid  str  # type
 #--------------------------#
-[ 10@0,        ""  ]
+[ 0@0, ""  ]
 [ 1@0, "quick"  ]
 [ 2@0, "brown"  ]
-[ 11@0,        nil  ]
+[ 3@0, nil  ]
 [ 4@0, "jumps"  ]
 [ 5@0, "over"  ]
 [ 6@0, "lazy"  ]
 [ 7@0, "dog"  ]
 [ 8@0, nil  ]
 [ 12 ]
-#-------------------------#
-# h            tmp_5     # name
-# str          int       # type
-#-------------------------#
-[ 2@0,   "brown"         ]
-#-----------------#
-# h    tmp_6     # name
-# str  int       # type
-#-----------------#
-[ 10@0,          ""      ]
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to