Changeset: 88c3392da908 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=88c3392da908
Modified Files:
ctest/tools/monetdbe/example_decimals.c
sql/backends/monet5/sql_result.c
sql/include/sql_catalog.h
sql/storage/bat/res_table.c
Branch: default
Log Message:
small improvement of result set (ie keep nr_rows)
diffs (150 lines):
diff --git a/ctest/tools/monetdbe/example_decimals.c
b/ctest/tools/monetdbe/example_decimals.c
--- a/ctest/tools/monetdbe/example_decimals.c
+++ b/ctest/tools/monetdbe/example_decimals.c
@@ -60,7 +60,10 @@ main(void)
if (col->data[r] == col->null_value) {
printf("NULL");
} else {
- printf("%d", col->data[r]);
+ if (col->scale)
+ printf("%d.%02d",
col->data[r]/(int)col->scale, col->data[r]%(int)col->scale);
+ else
+ printf("%d",
col->data[r]);
}
break;
}
@@ -78,7 +81,10 @@ main(void)
if (col->data[r] == col->null_value) {
printf("NULL");
} else {
- printf("%" PRId64,
col->data[r]);
+ if (col->scale)
+ printf("%" PRId64
".%03" PRId64, col->data[r]/(int64_t)col->scale,
col->data[r]%(int64_t)col->scale);
+ else
+ printf("%" PRId64,
col->data[r]);
}
break;
}
diff --git a/sql/backends/monet5/sql_result.c b/sql/backends/monet5/sql_result.c
--- a/sql/backends/monet5/sql_result.c
+++ b/sql/backends/monet5/sql_result.c
@@ -2150,7 +2150,6 @@ mvc_export_head_prot10(backend *b, strea
size_t i = 0;
BUN count = 0;
res_table *t = res_tables_find(m->results, res_id);
- BAT *order = NULL;
int fres = 0;
if (!t || !s) {
@@ -2160,11 +2159,7 @@ mvc_export_head_prot10(backend *b, strea
/* tuple count */
if (only_header) {
if (t->order) {
- order = BBPquickdesc(t->order, false);
- if (!order)
- return -1;
-
- count = BATcount(order);
+ count = t->nr_rows;
} else
count = 1;
}
@@ -2312,7 +2307,6 @@ mvc_export_head(backend *b, stream *s, i
int i, res = 0;
BUN count = 0;
res_table *t = res_tables_find(m->results, res_id);
- BAT *order = NULL;
if (!s || !t)
return 0;
@@ -2334,13 +2328,10 @@ mvc_export_head(backend *b, stream *s, i
/* tuple count */
if (only_header) {
if (t->order) {
- order = BBPquickdesc(t->order, false);
- if (!order)
- return -1;
-
- count = BATcount(order);
- } else
+ count = t->nr_rows;
+ } else {
count = 1;
+ }
}
m->rowcnt = count;
sqlvar_set_number(find_global_var(m, mvc_bind_schema(m, "sys"),
"rowcnt"), m->rowcnt);
@@ -2467,7 +2458,7 @@ mvc_export_file(backend *b, stream *s, r
order = BATdescriptor(t->order);
if (!order)
return -1;
- count = BATcount(order);
+ count = t->nr_rows;
res = mvc_export_table(b, s, t, order, 0, count, "", t->tsep,
t->rsep, t->ssep, t->ns);
BBPunfix(order->batCacheid);
@@ -2514,8 +2505,8 @@ mvc_export_result(backend *b, stream *s,
return -1;
count = m->reply_size;
- if (m->reply_size != -2 && (count <= 0 || count >= BATcount(order))) {
- count = BATcount(order);
+ if (m->reply_size != -2 && (count <= 0 || count >= t->nr_rows)) {
+ count = t->nr_rows;
clean = 1;
}
if (json) {
@@ -2565,11 +2556,11 @@ mvc_export_chunk(backend *b, stream *s,
return -1;
cnt = nr;
if (cnt == 0)
- cnt = BATcount(order);
- if (offset >= BATcount(order))
+ cnt = t->nr_rows;
+ if (offset >= t->nr_rows)
cnt = 0;
- if (cnt == BUN_NONE || offset + cnt > BATcount(order))
- cnt = BATcount(order) - offset;
+ if (cnt == BUN_NONE || offset + cnt > t->nr_rows)
+ cnt = t->nr_rows - offset;
if (b->client->protocol != PROTOCOL_10) {
/* query type: Q_BLOCK */
diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h
--- a/sql/include/sql_catalog.h
+++ b/sql/include/sql_catalog.h
@@ -683,6 +683,7 @@ typedef struct res_table {
oid query_id;
mapi_query_t query_type;
int nr_cols;
+ BUN nr_rows;
int cur_col;
const char *tsep;
const char *rsep;
diff --git a/sql/storage/bat/res_table.c b/sql/storage/bat/res_table.c
--- a/sql/storage/bat/res_table.c
+++ b/sql/storage/bat/res_table.c
@@ -35,6 +35,7 @@ res_table_create(sql_trans *tr, int res_
t->query_id = query_id;
t->query_type = type;
t->nr_cols = nr_cols;
+ t->nr_rows = 0;
t->cur_col = 0;
t->cols = NEW_ARRAY(res_col, nr_cols);
if(!t->cols) {
@@ -49,6 +50,7 @@ res_table_create(sql_trans *tr, int res_
if (order) {
t->order = order->batCacheid;
bat_incref(t->order);
+ t->nr_rows = BATcount(order);
}
t->next = next;
return t;
@@ -98,6 +100,7 @@ res_col_create(sql_trans *tr, res_table
return NULL;
}
t->order = o->batCacheid;
+ t->nr_rows = 1;
BBPkeepref(t->order);
}
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list