Changeset: cffe5ff7bdad for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/cffe5ff7bdad
Modified Files:
gdk/gdk.h
gdk/gdk_private.h
Branch: string_imprints
Log Message:
Merge with default
diffs (truncated from 125754 to 300 lines):
diff --git a/clients/Tests/MAL-signatures.stable.out
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -5752,7 +5752,7 @@ stdout of test 'MAL-signatures` in direc
[ "batcalc", "timestamp", "pattern batcalc.timestamp(X_0:bat[:timestamp],
X_1:bat[:oid], X_2:int):bat[:timestamp] ", "timestamp_2time_timestamp;",
"" ]
[ "batcalc", "uuid", "command batcalc.uuid(X_0:bat[:str],
X_1:bat[:oid]):bat[:uuid] ", "UUIDstr2uuid_bulk;", "" ]
[ "batcalc", "uuid", "command batcalc.uuid(X_0:bat[:uuid],
X_1:bat[:oid]):bat[:uuid] ", "UUIDuuid2uuid_bulk;", "" ]
-[ "batcalc", "wkb", "command batcalc.wkb(X_0:bat[:wkb], X_1:int,
X_2:int):bat[:wkb] ", "geom_2_geom_bat;", "" ]
+[ "batcalc", "wkb", "command batcalc.wkb(X_0:bat[:wkb], X_1:bat[:oid],
X_2:int, X_3:int):bat[:wkb] ", "geom_2_geom_bat;", "" ]
[ "batcalc", "xml", "command batcalc.xml(X_0:bat[:str]):bat[:xml] ",
"BATXMLstr2xml;", "" ]
[ "batcalc", "xor", "pattern batcalc.xor(X_0:bat[:bit],
X_1:bat[:bit]):bat[:bit] ", "CMDbatXOR;", "" ]
[ "batcalc", "xor", "pattern batcalc.xor(X_0:bat[:bit], X_1:bat[:bit],
X_2:bat[:oid], X_3:bat[:oid]):bat[:bit] ", "CMDbatXOR;", "" ]
@@ -9208,7 +9208,7 @@ stdout of test 'MAL-signatures` in direc
[ "sql", "analyze", "unsafe pattern sql.analyze(X_0:int, X_1:lng,
X_2:str, X_3:str):void ", "sql_analyze;", "" ]
[ "sql", "analyze", "unsafe pattern sql.analyze(X_0:int, X_1:lng,
X_2:str, X_3:str, X_4:str):void ", "sql_analyze;", "" ]
[ "sql", "any", "pattern sql.any(X_0:bit, X_1:bit, X_2:bit):bit ",
"SQLany_cmp;", "" ]
-[ "sql", "append", "pattern sql.append(X_0:int, X_1:str, X_2:str,
X_3:str, X_4:lng, X_5:any):int ", "mvc_append_wrap;", "" ]
+[ "sql", "append", "pattern sql.append(X_0:int, X_1:str, X_2:str,
X_3:str, X_4:bat[:oid], X_5:any):int ", "mvc_append_wrap;", "" ]
[ "sql", "argRecord", "pattern sql.argRecord():str ",
"SQLargRecord;", "" ]
[ "sql", "argRecord", "pattern sql.argRecord(X_0:any...):str ",
"SQLargRecord;", "" ]
[ "sql", "assert", "pattern sql.assert(X_0:bit, X_1:str):void ",
"SQLassert;", "" ]
@@ -9232,7 +9232,7 @@ stdout of test 'MAL-signatures` in direc
[ "sql", "bind_idxbat", "pattern sql.bind_idxbat(X_0:int, X_1:str,
X_2:str, X_3:str, X_4:int):bat[:any_1] ", "mvc_bind_idxbat_wrap;", ""
]
[ "sql", "bind_idxbat", "pattern sql.bind_idxbat(X_0:int, X_1:str,
X_2:str, X_3:str, X_4:int, X_5:int, X_6:int) (X_7:bat[:oid], X_8:bat[:any_1])
", "mvc_bind_idxbat_wrap;", "" ]
[ "sql", "bind_idxbat", "pattern sql.bind_idxbat(X_0:int, X_1:str,
X_2:str, X_3:str, X_4:int, X_5:int, X_6:int):bat[:any_1] ",
"mvc_bind_idxbat_wrap;", "" ]
-[ "sql", "claim", "unsafe pattern sql.claim(X_0:int, X_1:str,
X_2:str, X_3:lng):lng ", "mvc_claim_wrap;", "" ]
+[ "sql", "claim", "unsafe pattern sql.claim(X_0:int, X_1:str,
X_2:str, X_3:lng):bat[:oid] ", "mvc_claim_wrap;", "" ]
[ "sql", "clear_table", "unsafe pattern sql.clear_table(X_0:str,
X_1:str):lng ", "mvc_clear_table_wrap;", "" ]
[ "sql", "commit", "unsafe pattern sql.commit():void ",
"SQLcommit;", "" ]
[ "sql", "copy_from", "unsafe pattern sql.copy_from(X_0:ptr, X_1:str,
X_2:str, X_3:str, X_4:str, X_5:str, X_6:lng, X_7:lng, X_8:int, X_9:str,
X_10:int, X_11:int):bat[:any]... ", "mvc_import_table_wrap;", ""
]
@@ -9244,6 +9244,7 @@ stdout of test 'MAL-signatures` in direc
[ "sql", "corr", "pattern sql.corr(X_0:int, X_1:int, X_2:bit, X_3:bit,
X_4:int, X_5:oid, X_6:oid):dbl ", "SQLcorr;", "" ]
[ "sql", "corr", "pattern sql.corr(X_0:lng, X_1:lng, X_2:bit, X_3:bit,
X_4:int, X_5:oid, X_6:oid):dbl ", "SQLcorr;", "" ]
[ "sql", "corr", "pattern sql.corr(X_0:sht, X_1:sht, X_2:bit, X_3:bit,
X_4:int, X_5:oid, X_6:oid):dbl ", "SQLcorr;", "" ]
+[ "sql", "count", "pattern sql.count(X_0:str, X_1:str):lng ",
"SQLbasecount;", "" ]
[ "sql", "count", "pattern sql.count(X_0:any_1, X_1:bit, X_2:bit,
X_3:bit, X_4:int, X_5:oid, X_6:oid):lng ", "SQLcount;", "" ]
[ "sql", "covariance", "pattern sql.covariance(X_0:bte, X_1:bte,
X_2:bit, X_3:bit, X_4:int, X_5:oid, X_6:oid):dbl ", "SQLcovar_samp;",
"" ]
[ "sql", "covariance", "pattern sql.covariance(X_0:dbl, X_1:dbl,
X_2:bit, X_3:bit, X_4:int, X_5:oid, X_6:oid):dbl ", "SQLcovar_samp;",
"" ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -8276,7 +8276,7 @@ stdout of test 'MAL-signatures` in direc
[ "batcalc", "timestamp", "pattern batcalc.timestamp(X_0:bat[:timestamp],
X_1:bat[:oid], X_2:int):bat[:timestamp] ", "timestamp_2time_timestamp;",
"" ]
[ "batcalc", "uuid", "command batcalc.uuid(X_0:bat[:str],
X_1:bat[:oid]):bat[:uuid] ", "UUIDstr2uuid_bulk;", "" ]
[ "batcalc", "uuid", "command batcalc.uuid(X_0:bat[:uuid],
X_1:bat[:oid]):bat[:uuid] ", "UUIDuuid2uuid_bulk;", "" ]
-[ "batcalc", "wkb", "command batcalc.wkb(X_0:bat[:wkb], X_1:int,
X_2:int):bat[:wkb] ", "geom_2_geom_bat;", "" ]
+[ "batcalc", "wkb", "command batcalc.wkb(X_0:bat[:wkb], X_1:bat[:oid],
X_2:int, X_3:int):bat[:wkb] ", "geom_2_geom_bat;", "" ]
[ "batcalc", "xml", "command batcalc.xml(X_0:bat[:str]):bat[:xml] ",
"BATXMLstr2xml;", "" ]
[ "batcalc", "xor", "pattern batcalc.xor(X_0:bat[:bit],
X_1:bat[:bit]):bat[:bit] ", "CMDbatXOR;", "" ]
[ "batcalc", "xor", "pattern batcalc.xor(X_0:bat[:bit], X_1:bat[:bit],
X_2:bat[:oid], X_3:bat[:oid]):bat[:bit] ", "CMDbatXOR;", "" ]
@@ -12509,7 +12509,7 @@ stdout of test 'MAL-signatures` in direc
[ "sql", "analyze", "unsafe pattern sql.analyze(X_0:int, X_1:lng,
X_2:str, X_3:str):void ", "sql_analyze;", "" ]
[ "sql", "analyze", "unsafe pattern sql.analyze(X_0:int, X_1:lng,
X_2:str, X_3:str, X_4:str):void ", "sql_analyze;", "" ]
[ "sql", "any", "pattern sql.any(X_0:bit, X_1:bit, X_2:bit):bit ",
"SQLany_cmp;", "" ]
-[ "sql", "append", "pattern sql.append(X_0:int, X_1:str, X_2:str,
X_3:str, X_4:lng, X_5:any):int ", "mvc_append_wrap;", "" ]
+[ "sql", "append", "pattern sql.append(X_0:int, X_1:str, X_2:str,
X_3:str, X_4:bat[:oid], X_5:any):int ", "mvc_append_wrap;", "" ]
[ "sql", "argRecord", "pattern sql.argRecord():str ",
"SQLargRecord;", "" ]
[ "sql", "argRecord", "pattern sql.argRecord(X_0:any...):str ",
"SQLargRecord;", "" ]
[ "sql", "assert", "pattern sql.assert(X_0:bit, X_1:str):void ",
"SQLassert;", "" ]
@@ -12535,7 +12535,7 @@ stdout of test 'MAL-signatures` in direc
[ "sql", "bind_idxbat", "pattern sql.bind_idxbat(X_0:int, X_1:str,
X_2:str, X_3:str, X_4:int):bat[:any_1] ", "mvc_bind_idxbat_wrap;", ""
]
[ "sql", "bind_idxbat", "pattern sql.bind_idxbat(X_0:int, X_1:str,
X_2:str, X_3:str, X_4:int, X_5:int, X_6:int) (X_7:bat[:oid], X_8:bat[:any_1])
", "mvc_bind_idxbat_wrap;", "" ]
[ "sql", "bind_idxbat", "pattern sql.bind_idxbat(X_0:int, X_1:str,
X_2:str, X_3:str, X_4:int, X_5:int, X_6:int):bat[:any_1] ",
"mvc_bind_idxbat_wrap;", "" ]
-[ "sql", "claim", "unsafe pattern sql.claim(X_0:int, X_1:str,
X_2:str, X_3:lng):lng ", "mvc_claim_wrap;", "" ]
+[ "sql", "claim", "unsafe pattern sql.claim(X_0:int, X_1:str,
X_2:str, X_3:lng):bat[:oid] ", "mvc_claim_wrap;", "" ]
[ "sql", "clear_table", "unsafe pattern sql.clear_table(X_0:str,
X_1:str):lng ", "mvc_clear_table_wrap;", "" ]
[ "sql", "commit", "unsafe pattern sql.commit():void ",
"SQLcommit;", "" ]
[ "sql", "copy_from", "unsafe pattern sql.copy_from(X_0:ptr, X_1:str,
X_2:str, X_3:str, X_4:str, X_5:str, X_6:lng, X_7:lng, X_8:int, X_9:str,
X_10:int, X_11:int):bat[:any]... ", "mvc_import_table_wrap;", ""
]
@@ -12548,6 +12548,7 @@ stdout of test 'MAL-signatures` in direc
[ "sql", "corr", "pattern sql.corr(X_0:int, X_1:int, X_2:bit, X_3:bit,
X_4:int, X_5:oid, X_6:oid):dbl ", "SQLcorr;", "" ]
[ "sql", "corr", "pattern sql.corr(X_0:lng, X_1:lng, X_2:bit, X_3:bit,
X_4:int, X_5:oid, X_6:oid):dbl ", "SQLcorr;", "" ]
[ "sql", "corr", "pattern sql.corr(X_0:sht, X_1:sht, X_2:bit, X_3:bit,
X_4:int, X_5:oid, X_6:oid):dbl ", "SQLcorr;", "" ]
+[ "sql", "count", "pattern sql.count(X_0:str, X_1:str):lng ",
"SQLbasecount;", "" ]
[ "sql", "count", "pattern sql.count(X_0:any_1, X_1:bit, X_2:bit,
X_3:bit, X_4:int, X_5:oid, X_6:oid):lng ", "SQLcount;", "" ]
[ "sql", "covariance", "pattern sql.covariance(X_0:bte, X_1:bte,
X_2:bit, X_3:bit, X_4:int, X_5:oid, X_6:oid):dbl ", "SQLcovar_samp;",
"" ]
[ "sql", "covariance", "pattern sql.covariance(X_0:dbl, X_1:dbl,
X_2:bit, X_3:bit, X_4:int, X_5:oid, X_6:oid):dbl ", "SQLcovar_samp;",
"" ]
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
@@ -203,6 +203,7 @@ void BATtseqbase(BAT *b, oid o);
void BATundo(BAT *b);
BAT *BATunique(BAT *b, BAT *s);
BAT *BATunmask(BAT *b);
+gdk_return BATupdate(BAT *b, BAT *p, BAT *n, bool force)
__attribute__((__warn_unused_result__));
BBPrec *BBP[N_BBPINIT];
gdk_return BBPaddfarm(const char *dirname, uint32_t rolemask, bool logerror);
void BBPclear(bat bid);
@@ -330,6 +331,7 @@ gdk_return GDKtracer_set_adapter(const c
gdk_return GDKtracer_set_component_level(const char *comp, const char *lvl);
gdk_return GDKtracer_set_flush_level(const char *lvl);
gdk_return GDKtracer_set_layer_level(const char *layer, const char *lvl);
+gdk_return GDKtracer_set_tracefile(const char *tracefile);
gdk_return GDKtracer_stop(void);
size_t GDKuniqueid(size_t offset);
gdk_return GDKupgradevarheap(BAT *b, var_t v, BUN cap, bool copyall)
__attribute__((__warn_unused_result__));
@@ -894,6 +896,7 @@ const char *columnRef;
const char *comment_onRef;
const char *commitRef;
str compileString(Symbol *fcn, Client c, str s);
+char *concatErrors(char *err1, const char *err2) __attribute__((__nonnull__(1,
2))) __attribute__((__returns_nonnull__));
const char *connectRef;
const char *contextRef;
str convertConstant(malType type, ValPtr vr);
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -394,15 +394,15 @@ dump_foreign_keys(Mapi mid, const char *
goto bailout;
}
snprintf(query, maxquerylen,
- "SELECT ps.name, " /* 0 */
+ "SELECT ps.name, " /* 0 */
"pkt.name, " /* 1 */
- "pkkc.name, " /* 2 */
- "fkkc.name, " /* 3 */
- "fkkc.nr, " /* 4 */
- "fkk.name, " /* 5 */
- "fkk.\"action\", " /* 6 */
- "fs.name, " /* 7 */
- "fkt.name " /* 8 */
+ "pkkc.name, " /* 2 */
+ "fkkc.name, " /* 3 */
+ "fkkc.nr, " /* 4 */
+ "fkk.name, " /* 5 */
+ "fkk.\"action\", " /* 6 */
+ "fs.name, " /* 7 */
+ "fkt.name " /* 8 */
"FROM sys._tables fkt, "
"sys.objects fkkc, "
"sys.keys fkk, "
@@ -430,15 +430,15 @@ dump_foreign_keys(Mapi mid, const char *
if (query == NULL)
goto bailout;
snprintf(query, maxquerylen,
- "SELECT ps.name, " /* 0 */
+ "SELECT ps.name, " /* 0 */
"pkt.name, " /* 1 */
- "pkkc.name, " /* 2 */
- "fkkc.name, " /* 3 */
- "fkkc.nr, " /* 4 */
- "fkk.name, " /* 5 */
- "fkk.\"action\", " /* 6 */
- "0, " /* 7 */
- "fkt.name " /* 8 */
+ "pkkc.name, " /* 2 */
+ "fkkc.name, " /* 3 */
+ "fkkc.nr, " /* 4 */
+ "fkk.name, " /* 5 */
+ "fkk.\"action\", " /* 6 */
+ "0, " /* 7 */
+ "fkt.name " /* 8 */
"FROM sys._tables fkt, "
"sys.objects fkkc, "
"sys.keys fkk, "
@@ -457,14 +457,14 @@ dump_foreign_keys(Mapi mid, const char *
"ORDER BY fkk.name, fkkc.nr", tid);
} else {
query = "SELECT ps.name, " /* 0 */
- "pkt.name, " /* 1 */
+ "pkt.name, " /* 1 */
"pkkc.name, " /* 2 */
"fkkc.name, " /* 3 */
- "fkkc.nr, " /* 4 */
- "fkk.name, " /* 5 */
+ "fkkc.nr, " /* 4 */
+ "fkk.name, " /* 5 */
"fkk.\"action\", " /* 6 */
- "fs.name, " /* 7 */
- "fkt.name " /* 8 */
+ "fs.name, " /* 7 */
+ "fkt.name " /* 8 */
"FROM sys._tables fkt, "
"sys.objects fkkc, "
"sys.keys fkk, "
@@ -494,40 +494,56 @@ dump_foreign_keys(Mapi mid, const char *
cnt = mapi_fetch_row(hdl);
while (cnt != 0) {
- char *nc_psname = mapi_fetch_field(hdl, 0), *c_psname =
nc_psname ? strdup(nc_psname) : NULL;
- char *nc_ptname = mapi_fetch_field(hdl, 1), *c_ptname =
nc_ptname ? strdup(nc_ptname) : NULL;
- char *nc_pcolumn = mapi_fetch_field(hdl, 2), *c_pcolumn =
nc_pcolumn ? strdup(nc_pcolumn) : NULL;
- char *nc_fcolumn = mapi_fetch_field(hdl, 3), *c_fcolumn =
nc_fcolumn ? strdup(nc_fcolumn) : NULL;
- char *c_nr = mapi_fetch_field(hdl, 4); /* no need to strdup,
because it's not used */
- char *nc_fkname = mapi_fetch_field(hdl, 5), *c_fkname =
nc_fkname ? strdup(nc_fkname) : NULL;
- char *nc_faction = mapi_fetch_field(hdl, 6), *c_faction =
nc_faction ? strdup(nc_faction) : NULL;
- char *nc_fsname = mapi_fetch_field(hdl, 7), *c_fsname =
nc_fsname ? strdup(nc_fsname) : NULL;
- char *nc_ftname = mapi_fetch_field(hdl, 8), *c_ftname =
nc_ftname ? strdup(nc_ftname) : NULL;
- char **fkeys, **pkeys, *npkey, *nfkey;
- int nkeys = 0;
+ char *c_psname = mapi_fetch_field(hdl, 0);
+ char *c_ptname = mapi_fetch_field(hdl, 1);
+ char *c_pcolumn = mapi_fetch_field(hdl, 2);
+ char *c_fcolumn = mapi_fetch_field(hdl, 3);
+ char *c_nr = mapi_fetch_field(hdl, 4);
+ char *c_fkname = mapi_fetch_field(hdl, 5);
+ char *c_faction = mapi_fetch_field(hdl, 6);
+ char *c_fsname = mapi_fetch_field(hdl, 7);
+ char *c_ftname = mapi_fetch_field(hdl, 8);
+ char **fkeys, **pkeys;
+ int nkeys = 1;
- if (mapi_error(mid) || (nc_psname && !c_psname) || (nc_ptname
&& !c_ptname) || (nc_pcolumn && !c_pcolumn) || (nc_fcolumn && !c_fcolumn) ||
- (nc_fkname && !c_fkname) || (nc_faction && !c_faction)
|| (nc_fsname && !c_fsname) || (nc_ftname && !c_ftname)) {
- free(c_psname);
- free(c_ptname);
- free(c_pcolumn);
- free(c_fcolumn);
- free(c_fkname);
- free(c_faction);
- free(c_fsname);
- free(c_ftname);
+ if (mapi_error(mid) || c_psname == NULL || c_ptname == NULL ||
+ c_pcolumn == NULL || c_fcolumn == NULL || c_nr == NULL
||
+ c_fkname == NULL || c_faction == NULL || c_fsname ==
NULL ||
+ c_ftname == NULL) {
+ /* none of the columns should be NULL */
goto bailout;
}
assert(strcmp(c_nr, "0") == 0);
(void) c_nr; /* pacify compilers in case assertions are
disabled */
- nkeys = 1;
fkeys = malloc(nkeys * sizeof(*fkeys));
pkeys = malloc(nkeys * sizeof(*pkeys));
- npkey = c_pcolumn ? strdup(c_pcolumn) : NULL;
- nfkey = c_fcolumn ? strdup(c_fcolumn) : NULL;
- if (!fkeys || !pkeys || (c_pcolumn && !npkey) || (c_fcolumn &&
!nfkey)) {
- free(nfkey);
- free(npkey);
+ if (fkeys == NULL || pkeys == NULL) {
+ free(fkeys);
+ free(pkeys);
+ goto bailout;
+ }
+ pkeys[0] = strdup(c_pcolumn);
+ fkeys[0] = strdup(c_fcolumn);
+ c_psname = strdup(c_psname);
+ c_ptname = strdup(c_ptname);
+ c_pcolumn = strdup(c_pcolumn);
+ c_fcolumn = strdup(c_fcolumn);
+ c_fkname = strdup(c_fkname);
+ c_faction = strdup(c_faction);
+ c_fsname = strdup(c_fsname);
+ c_ftname = strdup(c_ftname);
+ if (c_psname == NULL || c_ptname == NULL || c_pcolumn == NULL ||
+ c_fcolumn == NULL || c_nr == NULL || c_fkname == NULL ||
+ c_faction == NULL || c_fsname == NULL || c_ftname ==
NULL ||
+ fkeys[0] == NULL || pkeys[0] == NULL) {
+ freeall_bailout:
+ /* free all temporarily allocated data, then bailout */
+ while (nkeys-- > 0) {
+ if (pkeys)
+ free(pkeys[nkeys]);
+ if (fkeys)
+ free(fkeys[nkeys]);
+ }
free(fkeys);
free(pkeys);
free(c_psname);
@@ -540,40 +556,29 @@ dump_foreign_keys(Mapi mid, const char *
free(c_ftname);
goto bailout;
}
- pkeys[nkeys - 1] = npkey;
- fkeys[nkeys - 1] = nfkey;
while ((cnt = mapi_fetch_row(hdl)) != 0 &&
strcmp(mapi_fetch_field(hdl, 4), "0") != 0) {
- char *npkey = mapi_fetch_field(hdl, 2), *pkey = npkey ?
strdup(npkey) : NULL;
- char *nfkey = mapi_fetch_field(hdl, 3), *fkey = nfkey ?
strdup(nfkey) : NULL;
+ char *pkey = mapi_fetch_field(hdl, 2);
+ char *fkey = mapi_fetch_field(hdl, 3);
char **tkeys;
- nkeys++;
- tkeys = realloc(pkeys, nkeys * sizeof(*pkeys));
+ if (pkey == NULL || fkey == NULL) {
+ /* we're not expecting NULL values */
+ goto freeall_bailout;
+ }
+ tkeys = realloc(pkeys, (nkeys + 1) * sizeof(*pkeys));
+ if (tkeys == NULL)
+ goto freeall_bailout;
pkeys = tkeys;
- tkeys = realloc(fkeys, nkeys * sizeof(*fkeys));
+ tkeys = realloc(fkeys, (nkeys + 1) * sizeof(*fkeys));
+ if (tkeys == NULL)
+ goto freeall_bailout;
fkeys = tkeys;
- if (!tkeys || !fkeys || (npkey && !pkey) || (nfkey &&
!fkey)) {
- nkeys--;
- for (int i = 0 ; i < nkeys; i++) {
- free(pkeys[i]);
- free(fkeys[i]);
- }
- free(pkey);
- free(fkey);
- free(pkeys);
- free(fkeys);
- free(c_psname);
- free(c_ptname);
- free(c_pcolumn);
- free(c_fcolumn);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list