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