Changeset: dfbb10970df1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/dfbb10970df1
Modified Files:
clients/mapiclient/mclient.c
Branch: Mar2025
Log Message:
Fix mclient \dm command to also work with older versions of MonetDB.
diffs (50 lines):
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -2559,7 +2559,7 @@ doFile(Mapi mid, stream *fp, bool useins
"
''''||replace(rp.minimum, '''', '''''')||'''' as minimum,"
"
''''||replace(rp.maximum, '''', '''''')||'''' as maximum,"
" rp.with_nulls,"
- "
'('||group_concat(''''||replace(vp.value, '''', '''''')||'''', ',' order by
vp.value)||')' as values,"
+ "
'('||group_concat(''''||replace(vp.value, '''', '''''')||'''', ','%s)||')' as
\"values\","
" count(vp.value) <>
count(*) as has_nulls"
" from sys.schemas as
s1,"
" sys._tables as t1
left outer join sys.table_partitions as tp on t1.id = tp.table_id left outer
join sys._columns as c1 on tp.column_id = c1.id,"
@@ -2574,10 +2574,25 @@ doFile(Mapi mid, stream *fp, bool useins
" d.id = t2.id"
" group by s1.name,
t1.name, s2.name, t2.name, c1.name, tp.expression, tp.type, rp.minimum,
rp.maximum, rp.with_nulls"
" order by s1.name,
t1.name, s2.name, t2.name";
+ const char *ordering = "";
char *squery = NULL;
size_t squerylen = 0;
char *tquery = NULL;
size_t tquerylen = 0;
+ hdl = mapi_query(mid, "select
value from sys.env() where name = 'monet_version'");
+ CHECK_RESULT(mid, hdl, buf, fp);
+ if (fetch_row(hdl) > 0) {
+ const char *version =
mapi_fetch_field(hdl, 0);
+ int major, minor, patch;
+ if (version &&
+ sscanf(version,
"%d.%d.%d",
+
&major, &minor, &patch) == 3 &&
+ major == 11 &&
+ minor >= 53)
+ ordering = "
order by vp.value";
+ }
+ mapi_close_handle(hdl);
+ hdl = NULL;
if (sname) {
sname = sescape(sname);
squerylen =
strlen(sname) + 21;
@@ -2604,9 +2619,9 @@ doFile(Mapi mid, stream *fp, bool useins
free(tname);
tname = NULL;
}
- size_t qlen = sizeof(mquery) +
squerylen + tquerylen;
+ size_t qlen = sizeof(mquery) +
strlen(ordering) + squerylen + tquerylen;
char *query = malloc(qlen);
- snprintf(query, qlen, mquery,
squery ? squery : "", tquery ? tquery : "");
+ snprintf(query, qlen, mquery,
ordering, squery ? squery : "", tquery ? tquery : "");
free(squery);
free(tquery);
hdl = mapi_query(mid, query);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]