Changeset: dabbdbdbd2ea for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=dabbdbdbd2ea
Modified Files:
        clients/Tests/exports.stable.out
        geom/BugTracker/Tests/X_crash.SF-1971632.stable.err
        geom/BugTracker/Tests/copy_into_crash.SF-1975402.stable.err
        geom/sql/functions/Tests/ST_AsEWKT.stable.out
        geom/sql/functions/Tests/ST_AsText.stable.out
        geom/sql/functions/Tests/ST_Boundary.stable.out
        geom/sql/functions/Tests/ST_Contains.stable.out
        geom/sql/functions/Tests/ST_CoordDim.stable.out
        geom/sql/functions/Tests/ST_Dimension.stable.out
        geom/sql/functions/Tests/ST_GeomFromText.stable.err
        geom/sql/functions/Tests/ST_GeomFromText.stable.out
        geom/sql/functions/Tests/ST_GeometryN.stable.out
        geom/sql/functions/Tests/ST_GeometryType.stable.out
        geom/sql/functions/Tests/ST_IsClosed.stable.out
        geom/sql/functions/Tests/ST_IsEmpty.stable.out
        geom/sql/functions/Tests/ST_IsRing.stable.out
        geom/sql/functions/Tests/ST_IsSimple.stable.out
        geom/sql/functions/Tests/ST_IsValid.stable.out
        geom/sql/functions/Tests/ST_LineFromText.stable.err
        geom/sql/functions/Tests/ST_LineFromText.stable.out
        geom/sql/functions/Tests/ST_MLineFromText.stable.err
        geom/sql/functions/Tests/ST_MLineFromText.stable.out
        geom/sql/functions/Tests/ST_MPointFromText.stable.err
        geom/sql/functions/Tests/ST_MPointFromText.stable.out
        geom/sql/functions/Tests/ST_MPolygonFromText.stable.err
        geom/sql/functions/Tests/ST_MPolygonFromText.stable.out
        geom/sql/functions/Tests/ST_MakeBox2D.stable.err
        geom/sql/functions/Tests/ST_MakeBox2D.stable.out
        geom/sql/functions/Tests/ST_MakePoint.stable.err
        geom/sql/functions/Tests/ST_MakePoint.stable.out
        geom/sql/functions/Tests/ST_NPoints.stable.out
        geom/sql/functions/Tests/ST_NRings.stable.out
        geom/sql/functions/Tests/ST_NumGeometries.stable.out
        geom/sql/functions/Tests/ST_NumPoints.stable.err
        geom/sql/functions/Tests/ST_NumPoints.stable.out
        geom/sql/functions/Tests/ST_PointFromText.stable.err
        geom/sql/functions/Tests/ST_PointFromText.stable.out
        geom/sql/functions/Tests/ST_PolygonFromText.stable.err
        geom/sql/functions/Tests/ST_PolygonFromText.stable.out
        geom/sql/functions/Tests/XYZ.stable.err
        geom/sql/functions/Tests/XYZ.stable.out
        geom/sql/functions/Tests/XYZMinMax.stable.out
        monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.err
        monetdb5/mal/mal_instruction.c
        monetdb5/optimizer/opt_pipes.c
        sql/backends/monet5/generator/Tests/crash.Bug-3609.stable.err
        sql/backends/monet5/generator/Tests/generator01.stable.err
        sql/backends/monet5/generator/Tests/generator04.stable.err
        sql/backends/monet5/generator/generator.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_cast_impl_down_from_flt.h
        sql/backends/monet5/sql_cast_impl_up_to_flt.h
        sql/backends/monet5/sql_execute.c
        sql/backends/monet5/sql_fround_impl.h
        sql/backends/monet5/sql_round_impl.h
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/vaults/bam/Tests/bam_lib.stable.err
        sql/backends/monet5/vaults/bam/Tests/mergetable.stable.err
        sql/backends/monet5/vaults/bam/Tests/verify_load.stable.err
        sql/backends/monet5/wlr.c
        sql/benchmarks/nobench/Tests/nobench.stable.err
        sql/benchmarks/nobench/Tests/nobench.stable.out
        
sql/test/BugDay_2005-11-09_2.9.3/Tests/grant_public.SF-1114580.stable.err
        
sql/test/BugDay_2005-11-09_2.9.3/Tests/history_table_escape.SF-1072089.stable.err
        sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.err
        sql/test/BugTracker-2009/Tests/drop-sequence-crash.SF-2854195.stable.err
        sql/test/BugTracker-2009/Tests/rollback_bug.stable.err
        
sql/test/BugTracker-2009/Tests/use_order_column_first.SF-2686008.stable.err
        
sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.err
        sql/test/BugTracker-2010/Tests/error-truncated.Bug-2615.stable.err
        sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.err
        
sql/test/BugTracker-2011/Tests/user_create_temp_table.Bug-2916.stable.err
        
sql/test/BugTracker-2012/Tests/name_resolution_in_proc.Bug-3074.stable.err
        sql/test/BugTracker-2013/Tests/env_errors.Bug-3370.stable.err
        sql/test/BugTracker-2014/Tests/number_4_4.Bug-3543.stable.err
        
sql/test/BugTracker-2015/Tests/backslash_predecing_separator.Bug-3775.stable.err
        sql/test/BugTracker-2015/Tests/readonly.Bug-3709.stable.err
        sql/test/BugTracker-2015/Tests/with-columns-mismatch.Bug-3697.stable.err
        sql/test/BugTracker-2016/Tests/merge-table-edit.Bug-6084.stable.err
        sql/test/BugTracker-2016/Tests/merge_project.Bug-3955.stable.err
        sql/test/BugTracker-2017/Tests/nestedoperators.Bug-6292.stable.err
        sql/test/BugTracker/Tests/broken_join.SF-1373391.stable.err
        sql/test/BugTracker/Tests/crash_on_fkey_update2.SF-1703497.stable.err
        sql/test/BugTracker/Tests/insert_values.SF-1578838.stable.err
        sql/test/BugTracker/Tests/set_operation_coersions.SF-1543216.stable.err
        sql/test/Tests/order_by_complex_exp.stable.err
        sql/test/Users/Tests/grantMonetdbToSchemaOwner.Bug-3771.stable.err
        sql/test/Users/Tests/grantRole.Bug-3772.stable.err
        sql/test/Users/Tests/renameUser.stable.err
        sql/test/Users/Tests/role.stable.err
        sql/test/Users/Tests/role2.stable.err
        sql/test/bugs/Tests/drop_foreignkey_selfreferencing.stable.err
        sql/test/bugs/Tests/profile_bug-SF.1314649.stable.err
        sql/test/bugs/Tests/savepoint_rollback-bug-sf-953553.stable.err
        sql/test/bugs/Tests/unique-bug-sf-1043512.stable.err
        sql/test/mapi/Tests/python2_dbapi.stable.out
        sql/test/mapi/Tests/python3_dbapi.stable.out
        sql/test/mergetables/Tests/crash0.stable.err
        sql/test/pg_regress/Tests/float8.stable.err.int128
        sql/test/pg_regress/Tests/numeric.stable.err
        sql/test/pg_regress/Tests/without_oid.stable.err
        sql/test/quantiles/Tests/quantiles.stable.err
Branch: malerrors
Log Message:

Another batch of SQLSTATE approvals and minor fixes


diffs (truncated from 5129 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
@@ -880,7 +880,6 @@ str CLTActions(bat *ret);
 str CLTInfo(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str CLTLastCommand(bat *ret);
 str CLTLogin(bat *ret, bat *nme);
-str CLTTime(bat *ret);
 str CLTaddUser(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str CLTbackendsum(str *ret, str *pw);
 str CLTchangePassword(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
@@ -1259,6 +1258,7 @@ str MALassertOid(void *ret, oid *val, st
 str MALassertSht(void *ret, sht *val, str *msg);
 str MALassertStr(void *ret, str *val, str *msg);
 str MALassertTriple(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
+str MALcallback(Client c, str msg);
 int MALcommentsOnly(MalBlkPtr mb);
 str MALengine(Client c);
 str MALexitClient(Client c);
@@ -1390,11 +1390,11 @@ str MKEYrotate(lng *ret, const lng *v, c
 str MKEYrotate_xor_hash(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
 void MPresetProfiler(stream *fdout);
 char *MSP_locate_sqlscript(const char *mod_name, bit recurse);
-void MSinitClientPrg(Client cntxt, str mod, str nme);
+str MSinitClientPrg(Client cntxt, str mod, str nme);
 void MSresetInstructions(MalBlkPtr mb, int start);
 void MSresetVariables(Client cntxt, MalBlkPtr mb, MalStkPtr glb, int start);
 void MSscheduleClient(str command, str challenge, bstream *fin, stream *fout, 
protocol_version protocol, size_t blocksize, int compute_column_widths);
-void MSserveClient(void *dummy);
+str MSserveClient(void *dummy);
 str MTIMEcompute_rule_foryear(date *ret, const rule *val, const int *year);
 str MTIMEcurrent_date(date *d);
 str MTIMEcurrent_time(daytime *t);
@@ -1917,6 +1917,7 @@ str XMLxml2xml(xml *x, xml *s);
 str XMLxmltext(str *s, xml *x);
 str abortRef;
 str actionRef;
+void addMalException(MalBlkPtr mb, str msg);
 str addOptimizerPipe(Client cntxt, MalBlkPtr mb, str name);
 str addPipeDefinition(Client cntxt, str name, str pipe);
 void addtoMalBlkHistory(MalBlkPtr mb);
@@ -1981,14 +1982,13 @@ int bstream_read_wrap(int *res, Bstream 
 str bstream_read_wrapwrap(int *res, Bstream *BS, int *size);
 str calcRef;
 str callMAL(Client cntxt, MalBlkPtr mb, MalStkPtr *glb, ValPtr argv[], char 
debug);
-int callString(Client c, str s, int listing);
+str callString(Client c, str s, int listing);
 str catalogRef;
-str catchKernelException(Client cntxt, str ret);
-void chkDeclarations(stream *out, MalBlkPtr mb);
-void chkFlow(stream *out, MalBlkPtr mb);
-int chkInstruction(stream *out, Module s, MalBlkPtr mb, InstrPtr p);
-void chkProgram(stream *out, Module s, MalBlkPtr mb);
-void chkTypes(stream *out, Module s, MalBlkPtr mb, int silent);
+void chkDeclarations(MalBlkPtr mb);
+void chkFlow(MalBlkPtr mb);
+int chkInstruction(Module s, MalBlkPtr mb, InstrPtr p);
+void chkProgram(Module s, MalBlkPtr mb);
+void chkTypes(Module s, MalBlkPtr mb, int silent);
 str cleanupTraces(void);
 void clearStack(MalStkPtr s);
 void clearTrace(void);
@@ -1997,7 +1997,6 @@ str clear_tableRef;
 int cloneVariable(MalBlkPtr dst, MalBlkPtr src, int varid);
 str closeProfilerStream(void);
 str closeRef;
-void clrAllTypes(MalBlkPtr mb);
 void clrDeclarations(MalBlkPtr mb);
 void clrFunction(InstrPtr p);
 void clrInstruction(InstrPtr p);
@@ -2006,6 +2005,7 @@ int color_tostr(char **colorStr, int *le
 str columnBindRef;
 str columnRef;
 str commitRef;
+str compileAllOptimizers(Client cntxt);
 str compileOptimizer(Client cntxt, str name);
 str compileString(Symbol *fcn, Client c, str s);
 str connectRef;
@@ -2018,6 +2018,7 @@ str countRef;
 str count_no_nilRef;
 int cpyConstant(MalBlkPtr mb, VarPtr vr);
 str createException(enum malexception, const char *, _In_z_ 
_Printf_format_string_ const char *, ...) __attribute__((__format__(__printf__, 
3, 4)));
+str createMalException(MalBlkPtr, int, enum malexception, _In_z_ 
_Printf_format_string_ const char *, ...) __attribute__((__format__(__printf__, 
4, 5)));
 str createRef;
 str create_constraintRef;
 str create_functionRef;
@@ -2068,11 +2069,12 @@ str drop_userRef;
 str drop_userRef;
 str drop_viewRef;
 void dumpExceptionsToStream(stream *out, str msg);
+void dumpModules(stream *out);
 str emptybindRef;
 str emptybindidxRef;
 str eqRef;
 str escape_str(str *retval, str s);
-str evalFile(Client c, str fname, int listing);
+str evalFile(str fname, int listing);
 str evalRef;
 str execRef;
 void expandMacro(MalBlkPtr mb, InstrPtr p, MalBlkPtr mc);
@@ -2084,7 +2086,7 @@ int findGDKtype(int type);
 Module findModule(Module scope, str name);
 str findRef;
 Scenario findScenario(str nme);
-Symbol findSymbol(Module nspace, str mod, str fcn);
+Symbol findSymbol(Module usermodule, str mod, str fcn);
 Symbol findSymbolInModule(Module v, str fcn);
 int findVariable(MalBlkPtr mb, const char *name);
 int findVariableLength(MalBlkPtr mb, str name, int len);
@@ -2092,7 +2094,7 @@ void finishNamespace(void);
 str finishRef;
 void finishSessionProfiler(Client cntxt);
 str firstnRef;
-Module fixModule(Module scope, str nme);
+Module fixModule(str nme);
 int fndConstant(MalBlkPtr mb, const ValRecord *cst, int depth);
 void fprintFunction(FILE *fd, MalBlkPtr mb, MalStkPtr stk, int flg);
 void fprintInstruction(FILE *fd, MalBlkPtr mb, MalStkPtr stk, InstrPtr p, int 
flg);
@@ -2110,7 +2112,7 @@ str fstrcmp_impl(dbl *ret, str *string1,
 void garbageCollector(Client cntxt, MalBlkPtr mb, MalStkPtr stk, int flag);
 void garbageElement(Client cntxt, ValPtr v);
 str generatorRef;
-MALfcn getAddress(stream *out, str filename, str fcnname, int silent);
+MALfcn getAddress(str fcnname);
 str getArgDefault(MalBlkPtr mb, InstrPtr p, int idx);
 ptr getArgReference(MalStkPtr stk, InstrPtr pci, int k);
 int getAtomIndex(const char *nme, int len, int deftpe);
@@ -2134,7 +2136,9 @@ int getHgeConstant(MalBlkPtr mb, hge val
 int getIntConstant(MalBlkPtr mb, int val);
 int getLngConstant(MalBlkPtr mb, lng val);
 MalBlkPtr getMalBlkHistory(MalBlkPtr mb, int idx);
+MalBlkPtr getMalBlkOptimized(MalBlkPtr mb, str name);
 lng getMemoryClaim(MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, int i, int flag);
+Module getModule(str nme);
 void getModuleList(Module **out, int *length);
 str getName(const char *nme);
 str getNameLen(const char *nme, size_t len);
@@ -2155,6 +2159,7 @@ str getTypeName(malType tpe);
 lng getUserTime(void);
 lng getVolume(MalStkPtr stk, InstrPtr pci, int rd);
 int getprofilerlimit(void);
+Module globalModule(str nme);
 str grantRef;
 str grant_functionRef;
 str grant_rolesRef;
@@ -2204,7 +2209,6 @@ int isLoopBarrier(MalBlkPtr mb, int pc);
 int isMapOp(InstrPtr q);
 int isMatJoinOp(InstrPtr q);
 int isMatLeftJoinOp(InstrPtr q);
-int isModuleDefined(Module scope, str name);
 int isMultiplex(InstrPtr q);
 int isNotUsedIn(InstrPtr p, int start, int a);
 int isOptimizerEnabled(MalBlkPtr mb, str opt);
@@ -2234,6 +2238,7 @@ str likeselectRef;
 str likeselectRef;
 str likethetaselectRef;
 str likeuselectRef;
+void listModules(stream *out, Module s);
 str listRef;
 str loadLibrary(str modulename, int flag);
 char *locate_file(const char *basename, const char *ext, bit recurse);
@@ -2243,13 +2248,14 @@ str logger_destroy_wrap(void *ret, logge
 str lookupRef;
 str mal2str(MalBlkPtr mb, int first, int last);
 int malAtomSize(int size, int align, char *name);
-int malBootstrap(void);
+str malBootstrap(void);
 str malCommandCall(MalStkPtr stk, InstrPtr pci);
 str malInclude(Client c, str name, int listing);
 int malLibraryEnabled(str name);
 char *malLibraryHowToEnable(str name);
 int malProfileMode;
 str malRef;
+void mal_atom_reset(void);
 MT_Lock mal_beatLock;
 void mal_client_reset(void) __attribute__((__visibility__("hidden")));
 ClientRec *mal_clients;
@@ -2341,7 +2347,6 @@ MalStkPtr newGlobalStack(int size);
 InstrPtr newInstruction(MalBlkPtr mb, str modnme, str fcnnme);
 MalBlkPtr newMalBlk(int elements);
 int newMalBlkStmt(MalBlkPtr mb, int elements);
-Module newModule(Module scope, str nme);
 Plant newPlant(MalBlkPtr mb);
 InstrPtr newRaiseStmt(MalBlkPtr mb, str nme);
 str newRef;
@@ -2371,7 +2376,7 @@ str optimizer_prelude(Client cntxt, MalB
 str pack2Ref;
 str packRef;
 str parametersRef;
-int parseMAL(Client cntxt, Symbol curPrg, int skipcomments, int lines);
+void parseMAL(Client cntxt, Symbol curPrg, int skipcomments, int lines);
 str partitionRef;
 str passRef;
 str pcreRef;
@@ -2467,7 +2472,7 @@ str runMAL(Client c, MalBlkPtr mb, MalBl
 str runMALDebugger(Client cntxt, MalBlkPtr mb);
 str runMALdataflow(Client cntxt, MalBlkPtr mb, int startpc, int stoppc, 
MalStkPtr stk);
 str runMALsequence(Client cntxt, MalBlkPtr mb, int startpc, int stoppc, 
MalStkPtr stk, MalStkPtr env, InstrPtr pcicaller);
-str runScenario(Client c);
+str runScenario(Client c, int once);
 void runtimeProfileBegin(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci, RuntimeProfile prof);
 void runtimeProfileExit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci, RuntimeProfile prof);
 void runtimeProfileFinish(Client cntxt, MalBlkPtr mb, MalStkPtr stk);
@@ -2495,7 +2500,6 @@ str setprofilerpoolsize(int size);
 str shortStmtRendering(MalBlkPtr mb, MalStkPtr stl, InstrPtr p);
 void showAllScenarios(stream *f);
 void showCurrentScenario(void);
-void showErrors(Client cntxt);
 void showException(stream *out, enum malexception, const char *, _In_z_ 
_Printf_format_string_ const char *, ...) __attribute__((__format__(__printf__, 
4, 5)));
 void showMalBlkHistory(stream *out, MalBlkPtr mb);
 void showOptimizerHistory(void);
@@ -2565,7 +2569,7 @@ str transaction_releaseRef;
 str transaction_rollbackRef;
 void trimMalVariables(MalBlkPtr mb, MalStkPtr stk);
 void trimMalVariables_(MalBlkPtr mb, MalStkPtr glb);
-void typeChecker(stream *out, Module scope, MalBlkPtr mb, InstrPtr p, int 
silent);
+void typeChecker(Module scope, MalBlkPtr mb, InstrPtr p, int silent);
 int tzone_fromstr(const char *buf, int *len, tzone **d);
 tzone tzone_local;
 int tzone_tostr(str *buf, int *len, const tzone *z);
@@ -2576,6 +2580,7 @@ str unpackRef;
 str unpinRef;
 str updateRef;
 void updateScenario(str scen, str nme, MALfcn fcn);
+Module userModule(void);
 str userRef;
 str vectorRef;
 str wlcRef;
diff --git a/geom/BugTracker/Tests/X_crash.SF-1971632.stable.err 
b/geom/BugTracker/Tests/X_crash.SF-1971632.stable.err
--- a/geom/BugTracker/Tests/X_crash.SF-1971632.stable.err
+++ b/geom/BugTracker/Tests/X_crash.SF-1971632.stable.err
@@ -14,7 +14,7 @@ stderr of test 'X_crash.SF-1971632` in d
 
 MAPI  = (monetdb) /var/tmp/mtest-16186/.s.monetdb.34816
 QUERY = select ST_X(g) from geoms order by id;
-ERROR = !Geometry "LINESTRING (10 10, 20 20, 30 40)" not a Point
+ERROR = !MALException:geom.GetCoordinate:SQLSTATE 38000 !Geometry "LINESTRING 
(10 10, 20 20, 30 40)" not a Point
 
 
 # 11:50:18 >  
diff --git a/geom/BugTracker/Tests/copy_into_crash.SF-1975402.stable.err 
b/geom/BugTracker/Tests/copy_into_crash.SF-1975402.stable.err
--- a/geom/BugTracker/Tests/copy_into_crash.SF-1975402.stable.err
+++ b/geom/BugTracker/Tests/copy_into_crash.SF-1975402.stable.err
@@ -13,7 +13,7 @@ stderr of test 'copy_into_crash.SF-19754
 MAPI  = (monetdb) /var/tmp/mtest-27003/.s.monetdb.30235
 QUERY = COPY 1 RECORDS INTO nodes from STDIN USING DELIMITERS ',', '\n';
         45111956, 'POINT(52.0697 4.3723)'
-ERROR = !Failed to import table 'nodes', line 1 field p 'geometry(4)' expected 
in ' 'POINT(52.0697 4.3723)''
+ERROR = !SQLException:importTable:SQLSTATE 42000 !Failed to import table 
'nodes', line 1 field p 'geometry(4)' expected in ' 'POINT(52.0697 4.3723)''
 
 # 13:33:18 >  
 # 13:33:18 >  Done.
diff --git a/geom/sql/functions/Tests/ST_AsEWKT.stable.out 
b/geom/sql/functions/Tests/ST_AsEWKT.stable.out
--- a/geom/sql/functions/Tests/ST_AsEWKT.stable.out
+++ b/geom/sql/functions/Tests/ST_AsEWKT.stable.out
@@ -31,164 +31,164 @@ Ready.
 # 13:33:45 >  
 
 #select st_asEWKT(st_pointfromtext('point(10 10)'));
-% .L1 # table_name
-% L1 # name
+% .L2 # table_name
+% L2 # name
 % clob # type
 % 22 # length
 [ "SRID:0;\"POINT (10 10)\""   ]
 #select st_asEWKT(st_pointfromtext('point(20 20)', 4326));
-% .L1 # table_name
-% L1 # name
+% .L2 # table_name
+% L2 # name
 % clob # type
 % 25 # length
 [ "SRID:4326;\"POINT (20 20)\""        ]
 #select st_asEWKT(st_pointfromtext('point(10 10 10)'));
-% .L1 # table_name
-% L1 # name
+% .L2 # table_name
+% L2 # name
 % clob # type
 % 27 # length
 [ "SRID:0;\"POINT Z (10 10 10)\""      ]
 #select st_asEWKT(st_makepoint(10, 10));
-% .L1 # table_name
-% L1 # name
+% .L2 # table_name
+% L2 # name
 % clob # type
 % 22 # length
 [ "SRID:0;\"POINT (10 10)\""   ]
 #select st_asEWKT(st_point(20, 20));
-% .L1 # table_name
-% L1 # name
+% .L2 # table_name
+% L2 # name
 % clob # type
 % 22 # length
 [ "SRID:0;\"POINT (20 20)\""   ]
 #select st_asEWKT(st_makepoint(10, 10, 10));
-% .L1 # table_name
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to