Changeset: ba10acaeaf43 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ba10acaeaf43
Added Files:
        gdk/gdk_interprocess.c
        gdk/gdk_interprocess.h
        java/tests/Test_PSgetObject.java
        sql/jdbc/tests/Tests/Test_PSgetObject.SQL.bat
        sql/jdbc/tests/Tests/Test_PSgetObject.SQL.sh
        sql/jdbc/tests/Tests/Test_PSgetObject.stable.err
        sql/jdbc/tests/Tests/Test_PSgetObject.stable.out
        sql/test/mergetables/Tests/mergedropcascade.sql
        sql/test/mergetables/Tests/mergedropcascade.stable.err
        sql/test/mergetables/Tests/mergedropcascade.stable.out
Removed Files:
        gdk/interprocess.c
        gdk/interprocess.h
Modified Files:
        clients/Tests/All
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        clients/mapiclient/mclient.c
        clients/mapiclient/msqldump.c
        common/stream/stream.c
        configure.ag
        gdk/ChangeLog
        gdk/Makefile.ag
        gdk/gdk.h
        gdk/gdk_aggr.c
        gdk/gdk_align.c
        gdk/gdk_bat.c
        gdk/gdk_batop.c
        gdk/gdk_bbp.c
        gdk/gdk_bbp.h
        gdk/gdk_calc.c
        gdk/gdk_calc_compare.h
        gdk/gdk_cand.h
        gdk/gdk_cross.c
        gdk/gdk_delta.c
        gdk/gdk_delta.h
        gdk/gdk_firstn.c
        gdk/gdk_group.c
        gdk/gdk_hash.c
        gdk/gdk_hash.h
        gdk/gdk_heap.c
        gdk/gdk_imprints.c
        gdk/gdk_join.c
        gdk/gdk_logger.c
        gdk/gdk_orderidx.c
        gdk/gdk_private.h
        gdk/gdk_project.c
        gdk/gdk_sample.c
        gdk/gdk_select.c
        gdk/gdk_storage.c
        gdk/gdk_unique.c
        gdk/gdk_utils.c
        geom/lib/libgeom.c
        geom/monetdb5/geom.c
        geom/monetdb5/geomBulk.c
        geom/monetdb5/geom_upgrade.c
        java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
        java/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
        monetdb5/ChangeLog
        monetdb5/extras/pyapi/connection.c
        monetdb5/extras/pyapi/convert_loops.h
        monetdb5/extras/pyapi/emit.c
        monetdb5/extras/pyapi/pyapi.c
        monetdb5/extras/pyapi/pyloader.c
        monetdb5/extras/rapi/converters.c.h
        monetdb5/extras/rapi/rapi.c
        monetdb5/extras/sphinx/sphinx.c
        monetdb5/mal/Tests/tst202.malC
        monetdb5/mal/Tests/tst210.malC
        monetdb5/mal/Tests/tst275.stable.out
        monetdb5/mal/mal_authorize.c
        monetdb5/mal/mal_dataflow.c
        monetdb5/mal/mal_debugger.c
        monetdb5/mal/mal_factory.c
        monetdb5/mal/mal_instruction.c
        monetdb5/mal/mal_interpreter.c
        monetdb5/mal/mal_listing.c
        monetdb5/mal/mal_parser.c
        monetdb5/mal/mal_profiler.c
        monetdb5/mal/mal_recycle.c
        monetdb5/mal/mal_resource.c
        monetdb5/mal/mal_runtime.c
        monetdb5/modules/atoms/batxml.c
        monetdb5/modules/atoms/json.c
        monetdb5/modules/atoms/mtime.c
        monetdb5/modules/atoms/str.c
        monetdb5/modules/atoms/url.c
        monetdb5/modules/kernel/algebra.c
        monetdb5/modules/kernel/bat5.c
        monetdb5/modules/kernel/bat5.h
        monetdb5/modules/kernel/bat5.mal
        monetdb5/modules/kernel/batcolor.c
        monetdb5/modules/kernel/batmmath.c
        monetdb5/modules/kernel/batstr.c
        monetdb5/modules/kernel/microbenchmark.c
        monetdb5/modules/kernel/status.c
        monetdb5/modules/mal/Tests/inspect05.stable.out
        monetdb5/modules/mal/Tests/inspect05.stable.out.int128
        monetdb5/modules/mal/batExtensions.c
        monetdb5/modules/mal/batcalc.c
        monetdb5/modules/mal/bbp.c
        monetdb5/modules/mal/clients.c
        monetdb5/modules/mal/groupby.c
        monetdb5/modules/mal/inspect.c
        monetdb5/modules/mal/iterator.c
        monetdb5/modules/mal/mal_io.c
        monetdb5/modules/mal/mal_mapi.c
        monetdb5/modules/mal/manifold.c
        monetdb5/modules/mal/manual.c
        monetdb5/modules/mal/mat.c
        monetdb5/modules/mal/mdb.c
        monetdb5/modules/mal/mkey.c
        monetdb5/modules/mal/orderidx.c
        monetdb5/modules/mal/pcre.c
        monetdb5/modules/mal/projectionpath.c
        monetdb5/modules/mal/querylog.c
        monetdb5/modules/mal/remote.c
        monetdb5/modules/mal/sysmon.c
        monetdb5/modules/mal/tablet.c
        monetdb5/modules/mal/tokenizer.c
        monetdb5/modules/mal/txtsim.c
        monetdb5/modules/mal/zorder.c
        monetdb5/optimizer/opt_mergetable.c
        monetdb5/optimizer/opt_pipes.c
        monetdb5/optimizer/opt_pushselect.c
        monetdb5/optimizer/opt_reorder.c
        monetdb5/optimizer/opt_statistics.c
        monetdb5/optimizer/opt_support.c
        monetdb5/optimizer/optimizer.c
        monetdb5/optimizer/optimizer_private.h
        sql/backends/monet5/LSST/lsst.c
        sql/backends/monet5/Tests/All
        sql/backends/monet5/Tests/pyapi30.stable.out
        sql/backends/monet5/UDF/udf.c
        sql/backends/monet5/generator/generator.c
        sql/backends/monet5/gsl/gsl.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_bat2time.c
        sql/backends/monet5/sql_cast.c
        sql/backends/monet5/sql_cast_impl_down_from_flt.h
        sql/backends/monet5/sql_cast_impl_down_from_int.h
        sql/backends/monet5/sql_cast_impl_up_to_flt.h
        sql/backends/monet5/sql_cast_impl_up_to_int.h
        sql/backends/monet5/sql_fround_impl.h
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_rank.c
        sql/backends/monet5/sql_result.c
        sql/backends/monet5/sql_round_impl.h
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/sql_statistics.c
        sql/backends/monet5/sql_user.c
        sql/backends/monet5/vaults/bam/bam_lib.c
        sql/backends/monet5/vaults/fits/fits.c
        sql/backends/monet5/vaults/lidar/lidar.c
        sql/backends/monet5/vaults/netcdf/netcdf.c
        sql/backends/monet5/vaults/shp/shp.c
        sql/jdbc/tests/Tests/All
        sql/server/rel_partition.c
        sql/server/rel_select.c
        sql/server/rel_select.h
        sql/server/rel_semantic.c
        sql/server/rel_updates.c
        sql/server/sql_atom.c
        sql/server/sql_mvc.c
        sql/server/sql_parser.y
        sql/storage/bat/bat_logger.c
        sql/storage/bat/bat_storage.c
        sql/storage/bat/bat_table.c
        sql/storage/bat/bat_utils.c
        sql/storage/bat/bat_utils.h
        sql/storage/bat/res_table.c
        sql/storage/store.c
        
sql/test/BugDay_2005-11-09_2.9.3/Tests/hang_on_copy_into.SF-1100504.stable.err
        sql/test/BugTracker-2011/Tests/All
        sql/test/BugTracker-2016/Tests/malformed-copy-int.Bug-3987.stable.err
        sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
        sql/test/leaks/Tests/check1.stable.out
        sql/test/leaks/Tests/check1.stable.out.int128
        sql/test/leaks/Tests/check2.stable.out
        sql/test/leaks/Tests/check2.stable.out.int128
        sql/test/leaks/Tests/check3.stable.out
        sql/test/leaks/Tests/check3.stable.out.int128
        sql/test/leaks/Tests/check4.stable.out
        sql/test/leaks/Tests/check4.stable.out.int128
        sql/test/leaks/Tests/check5.stable.out
        sql/test/leaks/Tests/check5.stable.out.int128
        sql/test/mergetables/Tests/All
        sql/test/pg_regress/Tests/point.sql
        sql/test/pg_regress/Tests/point.stable.err
        sql/test/pg_regress/Tests/point.stable.out
        sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-hge/Tests/dump.stable.out
        sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out
        sql/test/testdb-upgrade/Tests/dump.stable.out
        sql/test/testdb-upgrade/Tests/dump.stable.out.Windows
        sql/test/testdb-upgrade/Tests/upgrade.stable.out
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
        testing/Makefile.ag
        testing/Mtest.py.in
Branch: pythonloader
Log Message:

Merge with default.


diffs (truncated from 141991 to 300 lines):

diff --git a/clients/Tests/All b/clients/Tests/All
--- a/clients/Tests/All
+++ b/clients/Tests/All
@@ -1,4 +1,4 @@
 exports
-HAVE_FITS&HAVE_GEOM&HAVE_GSL&HAVE_LIBR&!HAVE_LIDAR&HAVE_NETCDF&HAVE_SAMTOOLS&HAVE_SHP&HAVE_SPHINXCLIENT?MAL-signatures
+HAVE_FITS&HAVE_GEOM&HAVE_GSL&HAVE_LIBPY&HAVE_LIBR&!HAVE_LIDAR&HAVE_NETCDF&HAVE_SAMTOOLS&HAVE_SHP&HAVE_SPHINXCLIENT?MAL-signatures
 
!BITS32&!BITS64OID32&HAVE_FITS&HAVE_GEOM&HAVE_GSL&!HAVE_LIDAR&HAVE_NETCDF&HAVE_PCRE&HAVE_SHP&HAVE_SAMTOOLS?SQL-dump
 MERCURIAL?malcheck
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
@@ -24024,18 +24024,10 @@ command bat.setTransient(b:bat[:any_1]):
 address BKCsetTransient;
 comment Make the BAT transient.  Returns       boolean which indicates if 
theBAT administration has indeed changed.
 
-command bat.setColumn(b:bat[:any_1],h:str,t:str):void 
-address BKCsetColumns;
-comment Give both columns of a BAT a new name.
-
 command bat.setColumn(b:bat[:any_1],t:str):void 
 address BKCsetColumn;
 comment Give a logical name to the tail column of a BAT.
 
-command bat.setRole(b:bat[:any_1],h:str,t:str):void 
-address BKCsetRole;
-comment Give a logical name to the columns of a BAT.
-
 command bat.setName(b:bat[:any_1],s:str):void 
 address BKCsetName;
 comment Give a logical name to a BAT. 
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
@@ -31883,18 +31883,10 @@ command bat.setTransient(b:bat[:any_1]):
 address BKCsetTransient;
 comment Make the BAT transient.  Returns       boolean which indicates if 
theBAT administration has indeed changed.
 
-command bat.setColumn(b:bat[:any_1],h:str,t:str):void 
-address BKCsetColumns;
-comment Give both columns of a BAT a new name.
-
 command bat.setColumn(b:bat[:any_1],t:str):void 
 address BKCsetColumn;
 comment Give a logical name to the tail column of a BAT.
 
-command bat.setRole(b:bat[:any_1],h:str,t:str):void 
-address BKCsetRole;
-comment Give a logical name to the columns of a BAT.
-
 command bat.setName(b:bat[:any_1],s:str):void 
 address BKCsetName;
 comment Give a logical name to a BAT. 
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
@@ -7,6 +7,7 @@ stdout of test 'exports` in directory 'c
 
 # gdk
 void ALIGNsetH(BAT *b1, BAT *b2);
+void ALIGNsetT(BAT *b1, BAT *b2);
 int ALIGNsynced(BAT *b1, BAT *b2);
 int ATOMallocate(const char *nme);
 int ATOMcmp(int id, const void *v_1, const void *v_2);
@@ -132,6 +133,7 @@ BAT *BATgroupvariance_population(BAT *b,
 BAT *BATgroupvariance_sample(BAT *b, BAT *g, BAT *e, BAT *s, int tp, int 
skip_nils, int abort_on_error);
 BUN BATgrows(BAT *b);
 gdk_return BAThash(BAT *b, BUN masksize);
+void BAThseqbase(BAT *b, oid o);
 gdk_return BATimprints(BAT *b);
 BAT *BATintersectcand(BAT *a, BAT *b);
 gdk_return BATjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, int 
nil_matches, BUN estimate);
@@ -144,7 +146,6 @@ void *BATmin(BAT *b, void *aggr);
 gdk_return BATmode(BAT *b, int onoff);
 void BATmsync(BAT *b);
 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);
 int BATordered_rev(BAT *b);
 gdk_return BATorderidx(BAT *b, int stable);
@@ -157,12 +158,11 @@ BAT *BATproject(BAT *l, BAT *r);
 BAT *BATprojectchain(BAT **bats);
 gdk_return BATrangejoin(BAT **r1p, BAT **r2p, BAT *l, BAT *rl, BAT *rh, BAT 
*sl, BAT *sr, int li, int hi, BUN estimate);
 gdk_return BATreplace(BAT *b, BAT *p, BAT *n, bit force);
-void BATroles(BAT *b, const char *hnme, const char *tnme);
+void BATroles(BAT *b, const char *tnme);
 BAT *BATsample(BAT *b, BUN n);
 gdk_return BATsave(BAT *b);
 BAT *BATselect(BAT *b, BAT *s, const void *tl, const void *th, int li, int hi, 
int anti);
 gdk_return BATsemijoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, 
int nil_matches, BUN estimate);
-void BATseqbase(BAT *b, oid o);
 gdk_return BATsetaccess(BAT *b, int mode);
 void BATsetcapacity(BAT *b, BUN cnt);
 void BATsetcount(BAT *b, BUN cnt);
@@ -173,6 +173,7 @@ gdk_return BATsubcross(BAT **r1p, BAT **
 gdk_return BATsum(void *res, int tp, BAT *b, BAT *s, int skip_nils, int 
abort_on_error, int nil_if_empty);
 gdk_return BATthetajoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT 
*sr, int op, int nil_matches, BUN estimate);
 BAT *BATthetaselect(BAT *b, BAT *s, const void *val, const char *op);
+void BATtseqbase(BAT *b, oid o);
 void BATundo(BAT *b);
 BAT *BATunique(BAT *b, BAT *s);
 BBPrec *BBP[N_BBPINIT];
@@ -205,11 +206,18 @@ gdk_return BUNdelete(BAT *b, oid o);
 BUN BUNfnd(BAT *b, const void *right);
 gdk_return BUNinplace(BAT *b, BUN p, const void *right, bit force);
 BAT *COLcopy(BAT *b, int tt, int writeable, int role);
+BAT *COLnew(oid hseq, int tltype, BUN capacity, int role) 
__attribute__((warn_unused_result));
 size_t GDK_mem_maxsize;
 size_t GDK_vm_maxsize;
 int GDK_vm_trim;
 int GDKatomcnt;
+size_t GDKbatcopy(char *dest, BAT *bat, str colname);
+size_t GDKbatcopysize(BAT *bat, str colname);
+size_t GDKbatread(char *src, BAT **bat, str *colname);
+gdk_return GDKchangesemval(int sem_id, int number, int change, str *msg);
+gdk_return GDKchangesemval_timeout(int sem_id, int number, int change, int 
timeout_mseconds, bool *succeed, str *msg);
 gdk_return GDKcreatedir(const char *nme);
+gdk_return GDKcreatesem(int id, int count, int *semid, str *msg);
 int GDKdebug;
 void GDKerror(_In_z_ _Printf_format_string_ const char *format, ...) 
__attribute__((__format__(__printf__, 1, 2)));
 void GDKexit(int status) __attribute__((__noreturn__));
@@ -227,7 +235,10 @@ char *GDKgetenv(const char *name);
 int GDKgetenv_int(const char *name, int def);
 int GDKgetenv_istrue(const char *name);
 int GDKgetenv_isyes(const char *name);
+gdk_return GDKgetsem(int sem_id, int count, int *semid, str *msg);
+gdk_return GDKgetsemval(int sem_id, int number, int *semval, str *msg);
 int GDKinit(opt *set, int setlen);
+gdk_return GDKinitmmap(size_t id, size_t size, void **return_ptr, size_t 
*return_size, str *msg);
 BAT *GDKkey;
 ATOMIC_TYPE volatile GDKlockcnt;
 ATOMIC_TYPE volatile GDKlockcontentioncnt;
@@ -239,6 +250,7 @@ void *GDKmalloc(size_t size) __attribute
 size_t GDKmem_cursize(void);
 gdk_return GDKmergeidx(BAT *b, BAT **a, int n_ar);
 void *GDKmmap(const char *path, int mode, size_t len);
+gdk_return GDKmmapfile(str buffer, size_t max, size_t id);
 int GDKms(void);
 int GDKnr_threads;
 void GDKprepareExit(void);
@@ -246,6 +258,8 @@ void GDKqsort(void *h, void *t, const vo
 void GDKqsort_rev(void *h, void *t, const void *base, size_t n, int hs, int 
ts, int tpe);
 void *GDKrealloc(void *pold, size_t size) 
__attribute__((__warn_unused_result__));
 void GDKregister(MT_Id pid);
+gdk_return GDKreleasemmap(void *ptr, size_t size, size_t id, str *msg);
+gdk_return GDKreleasesem(int sem_id, str *msg);
 void GDKreset(int status);
 void GDKsetenv(str name, str value);
 ssize_t GDKstrFromStr(unsigned char *dst, const unsigned char *src, ssize_t 
len);
@@ -253,7 +267,8 @@ str GDKstrdup(const char *s) __attribute
 str GDKstrndup(const char *s, size_t n) 
__attribute__((__warn_unused_result__));
 void GDKsyserror(_In_z_ _Printf_format_string_ const char *format, ...) 
__attribute__((__format__(__printf__, 1, 2)));
 ThreadRec GDKthreads[THREADS];
-gdk_return GDKupgradevarheap(COLrec *c, var_t v, int copyall, int mayshare);
+size_t GDKuniqueid(size_t offset);
+gdk_return GDKupgradevarheap(BAT *b, var_t v, int copyall, int mayshare);
 lng GDKusec(void);
 BAT *GDKval;
 const char *GDKversion(void);
@@ -768,7 +783,6 @@ str BATXMLxml2str(bat *ret, const bat *b
 str BATXMLxmltext(bat *ret, const bat *bid);
 str BATXMLxquery(bat *ret, const bat *bid, const char *const *expr);
 str BKCappend_force_wrap(bat *r, const bat *bid, const bat *uid, const bit 
*force);
-str BKCappend_reverse_val_wrap(bat *r, const bat *bid, const void *u);
 str BKCappend_val_force_wrap(bat *r, const bat *bid, const void *u, const bit 
*force);
 str BKCappend_val_wrap(bat *r, const bat *bid, const void *u);
 str BKCappend_wrap(bat *r, const bat *bid, const bat *uid);
@@ -806,12 +820,10 @@ str BKCsave(bit *res, const char *const 
 str BKCsave2(void *r, const bat *bid);
 str BKCsetAccess(bat *res, const bat *bid, const char *const *param);
 str BKCsetColumn(void *r, const bat *bid, const char *const *tname);
-str BKCsetColumns(void *r, const bat *bid, const char *const *hname, const 
char *const *tname);
 str BKCsetHash(bit *ret, const bat *bid);
 str BKCsetImprints(bit *ret, const bat *bid);
 str BKCsetName(void *r, const bat *bid, const char *const *s);
 str BKCsetPersistent(void *r, const bat *bid);
-char *BKCsetRole(void *r, const bat *bid, const char *const *hname, const char 
*const *tname);
 str BKCsetTransient(void *r, const bat *bid);
 str BKCsetkey(bat *res, const bat *bid, const bit *param);
 str BKCshrinkBAT(bat *ret, const bat *bid, const bat *did);
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -1995,6 +1995,8 @@ doFileBulk(Mapi mid, stream *fp)
        buf = malloc(bufsize + 1);
        if (!buf) {
                fprintf(stderr, "cannot allocate memory for send buffer\n");
+               if (fp)
+                       close_stream(fp);
                return 1;
        }
 
@@ -2067,6 +2069,8 @@ doFileBulk(Mapi mid, stream *fp)
 
        free(buf);
        mnstr_flush(toConsole);
+       if (fp)
+               close_stream(fp);
        return errseen;
 }
 
@@ -2637,11 +2641,12 @@ doFile(Mapi mid, stream *fp, int useinse
                                         * convert filename from UTF-8
                                         * to locale */
                                        if ((s = open_rastream(line)) == NULL ||
-                                           mnstr_errnr(s))
+                                           mnstr_errnr(s)) {
+                                               if (s)
+                                                       close_stream(s);
                                                fprintf(stderr, "%s: cannot 
open\n", line);
-                                       else
+                                       } else
                                                doFile(mid, s, 0, 0, 0);
-                                       close_stream(s);
                                        continue;
                                }
                                case '>':
@@ -2832,6 +2837,7 @@ doFile(Mapi mid, stream *fp, int useinse
        if (prompt)
                deinit_readline();
 #endif
+       close_stream(fp);
        return errseen;
 }
 
@@ -3322,6 +3328,7 @@ main(int argc, char **argv)
        if (command != NULL) {
 #ifdef HAVE_ICONV
                iconv_t cd_in;
+               int free_command = 0;
 
                if (encoding != NULL &&
                    (cd_in = iconv_open("utf-8", encoding)) != (iconv_t) -1) {
@@ -3331,6 +3338,7 @@ main(int argc, char **argv)
                        int factor = 4;
                        size_t tolen = factor * fromlen + 1;
                        char *to = malloc(tolen);
+                       free_command = 1;
 
                  try_again:
                        command = to;
@@ -3367,6 +3375,10 @@ main(int argc, char **argv)
                timerStart();
                c = doRequest(mid, command);
                timerEnd();
+#ifdef HAVE_ICONV
+               if (free_command)
+                       free(command);
+#endif
        }
 
        if (optind < argc) {
@@ -3375,7 +3387,9 @@ main(int argc, char **argv)
                        stream *s;
 
                        if (fp == NULL &&
-                           (fp = fopen(argv[optind], "r")) == NULL) {
+                           (fp = (strcmp(argv[optind], "-") == 0 ?
+                                  stdin :
+                                  fopen(argv[optind], "r"))) == NULL) {
                                fprintf(stderr, "%s: cannot open\n", 
argv[optind]);
                                c |= 1;
                        } else if ((s = file_rastream(fp, argv[optind])) == 
NULL) {
@@ -3383,7 +3397,6 @@ main(int argc, char **argv)
                                c |= 1;
                        } else {
                                c |= doFile(mid, s, useinserts, interactive, 
save_history);
-                               close_stream(s);
                        }
                        fp = NULL;
                        optind++;
@@ -3394,7 +3407,6 @@ main(int argc, char **argv)
        if (!has_fileargs && command == NULL) {
                stream *s = file_rastream(stdin, "<stdin>");
                c = doFile(mid, s, useinserts, interactive, save_history);
-               mnstr_destroy(s);
        }
 
        mapi_destroy(mid);
diff --git a/clients/mapiclient/msqldump.c b/clients/mapiclient/msqldump.c
--- a/clients/mapiclient/msqldump.c
+++ b/clients/mapiclient/msqldump.c
@@ -222,12 +222,12 @@ main(int argc, char **argv)
                c = dump_database(mid, out, describe, useinserts);
        mnstr_flush(out);
 
-       mapi_disconnect(mid);
+       mapi_destroy(mid);
        if (mnstr_errnr(out)) {
                fprintf(stderr, "%s: %s", argv[0], mnstr_error(out));
                return 1;
        }
 
+       mnstr_destroy(out);
        return c;
-
 }
diff --git a/common/stream/stream.c b/common/stream/stream.c
--- a/common/stream/stream.c
+++ b/common/stream/stream.c
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to