Changeset: 4281ea8b8699 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4281ea8b8699
Added Files:
        sql/server/rel_remote.c
        sql/server/rel_remote.h
        sql/test/Users/Tests/copyinto.stable.err
        sql/test/Users/Tests/copyinto.stable.out
        sql/test/miscellaneous/Tests/trace_test.stable.out
Modified Files:
        clients/Tests/exports.stable.out
        common/stream/Makefile.ag
        common/stream/stream.c
        configure.ag
        monetdb5/mal/Tests/tst611.stable.err
        monetdb5/mal/mal.c
        monetdb5/mal/mal_client.c
        monetdb5/mal/mal_dataflow.c
        monetdb5/mal/mal_debugger.c
        monetdb5/mal/mal_interpreter.c
        monetdb5/mal/mal_interpreter.h
        monetdb5/mal/mal_module.c
        monetdb5/mal/mal_module.h
        monetdb5/mal/mal_resolve.c
        monetdb5/mal/mal_resolve.h
        monetdb5/mal/mal_runtime.c
        monetdb5/mal/mal_runtime.h
        monetdb5/mal/mal_stack.c
        monetdb5/mal/mal_stack.h
        monetdb5/mal/mal_type.c
        monetdb5/mal/mal_type.h
        monetdb5/modules/mal/clients.c
        monetdb5/optimizer/opt_mitosis.c
        monetdb5/optimizer/opt_pushselect.c
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_gencode.h
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sql_statement.h
        sql/common/sql_mem.c
        sql/common/sql_string.c
        sql/common/sql_string.h
        sql/include/sql_catalog.h
        sql/include/sql_mem.h
        sql/include/sql_relation.h
        sql/server/Makefile.ag
        sql/server/rel_distribute.h
        sql/server/rel_dump.c
        sql/server/rel_exp.c
        sql/server/rel_exp.h
        sql/server/rel_optimizer.c
        sql/server/rel_planner.c
        sql/server/rel_psm.c
        sql/server/rel_psm.h
        sql/server/rel_schema.c
        sql/server/rel_schema.h
        sql/server/rel_select.c
        sql/server/rel_select.h
        sql/server/rel_updates.c
        sql/server/rel_xml.c
        sql/server/sql_atom.c
        sql/server/sql_atom.h
        sql/server/sql_mvc.c
        sql/server/sql_mvc.h
        sql/server/sql_parser.y
        sql/server/sql_semantic.c
        sql/server/sql_semantic.h
        sql/server/sql_symbol.c
        sql/server/sql_symbol.h
        sql/storage/sql_catalog.c
        sql/test/BugTracker-2015/Tests/constant-random.Bug-3836.sql
        sql/test/BugTracker-2015/Tests/constant-random.Bug-3836.stable.out
        sql/test/Users/Tests/dropManyUsers.Bug-3764.stable.out
        sql/test/miscellaneous/Tests/All
        sql/test/miscellaneous/Tests/trace_test.sql
        testing/Mfilter.py
Branch: leftmart
Log Message:

Merge with default branch.


diffs (truncated from 4046 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
@@ -2016,7 +2016,6 @@ void deriveModule(Module scope, str nme)
 malType destinationType(MalBlkPtr mb, InstrPtr p);
 str diffRef;
 str disconnectRef;
-void displayVolume(Client cntxt, lng vol);
 str divRef;
 void dumpExceptionsToStream(stream *out, str msg);
 void dumpHelpTable(stream *f, Module s, str text, int flag);
@@ -2031,7 +2030,6 @@ void expandMalBlk(MalBlkPtr mb, int line
 str expandRef;
 str exportOperationRef;
 str export_tableRef;
-int fcnBinder(stream *out, Module scope, MalBlkPtr mb, InstrPtr p);
 str fcnDefinition(MalBlkPtr mb, InstrPtr p, str s, int flg, str base, size_t 
len);
 int findGDKtype(int type);
 int findInstruction(Module scope, MalBlkPtr mb, InstrPtr pci);
@@ -2126,7 +2124,6 @@ str ilikethetasubselectRef;
 str ilikeuselectRef;
 void initHeartbeat(void);
 void initLibraries(void);
-void initMALstack(MalBlkPtr mb, MalStkPtr stk);
 void initNamespace(void);
 void initParser(void);
 void initProfiler(void);
@@ -2146,7 +2143,6 @@ str io_stderr(Client cntxt, MalBlkPtr mb
 str io_stdin(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str io_stdout(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 int isAllScalar(MalBlkPtr mb, InstrPtr p);
-int isAmbiguousType(int type);
 int isBlocking(InstrPtr p);
 int isDelta(InstrPtr q);
 int isDependent(InstrPtr p, InstrPtr q);
@@ -2175,7 +2171,6 @@ int isSubJoin(InstrPtr q);
 int isSubSelect(InstrPtr q);
 int isTmpName(const char *n);
 int isTopn(InstrPtr q);
-int isTypeName(str n);
 int isUnsafeFunction(InstrPtr q);
 int isUnsafeInstruction(InstrPtr q);
 int isUpdateInstruction(InstrPtr p);
@@ -2293,7 +2288,6 @@ InstrPtr newStmt(MalBlkPtr mb, char *mod
 InstrPtr newStmt1(MalBlkPtr mb, str module, char *name);
 InstrPtr newStmt2(MalBlkPtr mb, str module, char *name);
 Symbol newSymbol(str nme, int kind);
-str newTmpName(char tag, int i);
 int newTmpSink(MalBlkPtr mb, malType type);
 int newTmpVariable(MalBlkPtr mb, malType type);
 int newTypeVariable(MalBlkPtr mb, malType type);
@@ -2376,7 +2370,6 @@ str rankRef;
 str rapiRef;
 int readConsole(Client cntxt);
 MalStkPtr reallocGlobalStack(MalStkPtr s, int cnt);
-MalStkPtr reallocStack(MalStkPtr s, int cnt);
 str reconnectRef;
 MalBlkPtr recycleBlk;
 int recycleCacheLimit;
@@ -2384,7 +2377,6 @@ str recycleRef;
 str reenterMAL(Client cntxt, MalBlkPtr mb, int startpc, int stoppc, MalStkPtr 
stk);
 str refineRef;
 str registerRef;
-void releaseBAT(MalBlkPtr mb, MalStkPtr stk, int bid);
 str remapRef;
 str remoteRef;
 void removeDataflow(MalBlkPtr mb);
@@ -2416,7 +2408,6 @@ void runtimeProfileBegin(Client cntxt, M
 void runtimeProfileExit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci, RuntimeProfile prof);
 void runtimeProfileFinish(Client cntxt, MalBlkPtr mb);
 void runtimeProfileInit(Client cntxt, MalBlkPtr mb, MalStkPtr stk);
-str safeguardStack(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 int safetyBarrier(InstrPtr p, InstrPtr q);
 str schedulerRef;
 str selectNotNilRef;
@@ -2443,7 +2434,6 @@ void showException(stream *out, enum mal
 void showFlowGraph(MalBlkPtr mb, MalStkPtr stk, str fname);
 void showHelp(Module m, str txt, stream *fs);
 void showMalBlkHistory(stream *out, MalBlkPtr mb);
-void showModuleStatistics(stream *f, Module s);
 void showOptimizerHistory(void);
 void showOptimizerStep(str fnme, int i, int flg);
 void showScenario(stream *f, Scenario s);
@@ -2519,7 +2509,6 @@ void unloadLibraries(void);
 str unlockRef;
 str unpackRef;
 str unpinRef;
-void updateFootPrint(MalBlkPtr mb, MalStkPtr stk, int varid);
 str updateRef;
 void updateScenario(str scen, str nme, MALfcn fcn);
 str userRef;
diff --git a/common/stream/Makefile.ag b/common/stream/Makefile.ag
--- a/common/stream/Makefile.ag
+++ b/common/stream/Makefile.ag
@@ -10,6 +10,7 @@ MTSAFE
 
 INCLUDES = $(zlib_CFLAGS) \
                   $(BZ_CFLAGS) \
+                  $(liblzma_CFLAGS) \
                   $(openssl_CFLAGS) \
                   $(curl_CFLAGS)
 
@@ -19,6 +20,7 @@ lib_stream  =  {
        LIBS = $(SOCKET_LIBS) \
                   $(zlib_LIBS) \
                   $(BZ_LIBS) \
+                  $(liblzma_LIBS) \
                   $(openssl_LIBS) \
                   $(curl_LIBS) \
                   $(LTLIBICONV)
diff --git a/common/stream/stream.c b/common/stream/stream.c
--- a/common/stream/stream.c
+++ b/common/stream/stream.c
@@ -90,6 +90,9 @@
 #ifdef HAVE_LIBBZ2
 #include <bzlib.h>
 #endif
+#ifdef HAVE_LIBLZMA
+#include <lzma.h>
+#endif
 
 #ifdef HAVE_ICONV
 #ifdef HAVE_ICONV_H
@@ -1389,6 +1392,295 @@ open_bzwastream(const char *filename, co
 #endif
 
 /* ------------------------------------------------------------------ */
+/* streams working on a lzma-compressed disk file */
+
+#ifdef HAVE_LIBLZMA
+#define XZBUFSIZ 64*1024
+typedef struct xz_stream {
+       FILE *fp;
+       lzma_stream strm;
+       int  todo;
+       uint8_t buf[XZBUFSIZ]; 
+} xz_stream;
+
+static ssize_t
+stream_xzread(stream *s, void *buf, size_t elmsize, size_t cnt)
+{
+       xz_stream *xz = s->stream_data.p;
+       size_t size = elmsize * cnt, origsize = size, ressize = 0;
+       uint8_t *outbuf = buf;
+       lzma_action action = LZMA_RUN;
+
+       if (xz == NULL) {
+               s->errnr = MNSTR_READ_ERROR;
+               return -1;
+       }
+
+       xz->strm.next_in = xz->buf;
+       xz->strm.avail_in = xz->todo;
+       xz->strm.next_out = outbuf;
+       xz->strm.avail_out = size;
+       while (size && (xz->strm.avail_in || !feof(xz->fp))) {
+               lzma_ret ret;
+               size_t sz = (size>XZBUFSIZ) ? XZBUFSIZ : size;
+
+               if (!xz->strm.avail_in &&
+                   (xz->strm.avail_in = fread(xz->buf, 1, sz, xz->fp)) == 0) {
+                       s->errnr = MNSTR_READ_ERROR;
+                       return -1;
+               }
+               xz->strm.next_in = xz->buf;
+               if (feof(xz->fp))
+                       action = LZMA_FINISH;
+               ret = lzma_code(&xz->strm, action);
+               if (xz->strm.avail_out == 0 || ret == LZMA_STREAM_END) {
+                       origsize -= xz->strm.avail_out; /* remaining space */
+                       xz->todo = xz->strm.avail_in;
+                       if (xz->todo > 0)
+                               memmove(xz->buf, xz->strm.next_in, xz->todo);
+                       outbuf[origsize] = 0; /* add EOS */
+                       ressize = origsize;
+                       break;
+               }
+               if (ret != LZMA_OK) {
+                       s->errnr = MNSTR_READ_ERROR;
+                       return -1;
+               }
+       }
+       if (ressize) {
+#ifdef WIN32
+               /* on Windows when in text mode, convert \r\n line
+                * endings to \n */
+               if (s->type == ST_ASCII) {
+                       char *p1, *p2, *pe;
+
+                       p1 = buf;
+                       pe = p1 + ressize;
+                       while (p1 < pe && *p1 != '\r')
+                               p1++;
+                       p2 = p1;
+                       while (p1 < pe) {
+                               if (*p1 == '\r' && p1[1] == '\n')
+                                       ressize--;
+                               else
+                                       *p2++ = *p1;
+                               p1++;
+                       }
+               }
+#endif
+               return (ssize_t) (ressize / elmsize);
+       }
+       return 0;
+}
+
+static ssize_t
+stream_xzwrite(stream *s, const void *buf, size_t elmsize, size_t cnt)
+{
+       xz_stream *xz = s->stream_data.p;
+       size_t size = elmsize * cnt;
+       lzma_action action = LZMA_RUN;
+
+       if (xz == NULL) {
+               s->errnr = MNSTR_WRITE_ERROR;
+               return -1;
+       }
+
+       xz->strm.next_in = buf;
+       xz->strm.avail_in = size;
+       xz->strm.next_out = xz->buf;
+       xz->strm.avail_out = XZBUFSIZ;
+
+       size = 0;
+       while (xz->strm.avail_in) {
+               size_t sz = 0, isz = xz->strm.avail_in;
+
+               lzma_ret ret = lzma_code(&xz->strm, action);
+               if (xz->strm.avail_out == 0 || ret != LZMA_OK) {
+                       s->errnr = MNSTR_WRITE_ERROR;
+                       return -1;
+               }
+               sz = XZBUFSIZ - xz->strm.avail_out;
+               if (fwrite(xz->buf, 1, sz, xz->fp) != sz) {
+                       s->errnr = MNSTR_WRITE_ERROR;
+                       return -1;
+               }
+               assert(xz->strm.avail_in == 0);
+               size += isz;
+               xz->strm.next_out = xz->buf;
+               xz->strm.avail_out = XZBUFSIZ;
+       }
+       if (size) 
+               return (ssize_t) (size / elmsize);
+       return (ssize_t) cnt;
+}
+
+static void
+stream_xzclose(stream *s)
+{
+       xz_stream *xz = s->stream_data.p;
+
+       if (xz) {
+               if (s->access == ST_WRITE) {
+                       lzma_ret ret = lzma_code(&xz->strm, LZMA_FINISH);
+
+                       if (xz->strm.avail_out && ret == LZMA_STREAM_END) {
+                               size_t sz = XZBUFSIZ - xz->strm.avail_out;
+                               if (fwrite(xz->buf, 1, sz, xz->fp) != sz) 
+                                       s->errnr = MNSTR_WRITE_ERROR;
+                       }
+               }
+               fflush(xz->fp);
+               fclose(xz->fp);
+               lzma_end(&xz->strm);
+               free(xz);
+       }
+       s->stream_data.p = NULL;
+}
+
+static int
+stream_xzflush(stream *s)
+{
+       xz_stream *xz = s->stream_data.p;
+
+       if (xz == NULL)
+               return -1;
+       if (s->access == ST_WRITE && fflush(xz->fp)) 
+               return -1;
+       return 0;
+}
+
+static stream *
+open_xzstream(const char *filename, const char *flags)
+{
+       stream *s;
+       xz_stream *xz;
+       uint32_t preset = 0;
+
+       if ((xz = malloc(sizeof(struct xz_stream))) == NULL)
+               return NULL;
+       if (xz)
+               memset(xz, 0, sizeof(xz_stream));
+       if (((flags[0] == 'r' && 
+             lzma_stream_decoder(&xz->strm, UINT64_MAX, LZMA_CONCATENATED) != 
LZMA_OK)) ||
+            (flags[0] == 'w' &&
+             lzma_easy_encoder(&xz->strm, preset, LZMA_CHECK_CRC64) != 
LZMA_OK)) {
+               free(xz);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to