Changeset: b6f77b0655f6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b6f77b0655f6
Branch: default
Log Message:

Merge with Oct2020 branch.


diffs (truncated from 2077 to 300 lines):

diff --git a/clients/mapiclient/ReadlineTools.c 
b/clients/mapiclient/ReadlineTools.c
--- a/clients/mapiclient/ReadlineTools.c
+++ b/clients/mapiclient/ReadlineTools.c
@@ -291,10 +291,6 @@ continue_completion(rl_completion_func_t
        rl_attempted_completion_function = func;
 }
 
-#ifndef BUFSIZ
-#define BUFSIZ 1024
-#endif
-
 static void
 readline_show_error(const char *msg) {
        rl_save_prompt();
@@ -303,13 +299,19 @@ readline_show_error(const char *msg) {
        rl_clear_message();
 }
 
+#ifndef BUFFER_SIZE
+#define BUFFER_SIZE 1024
+#endif
+
 static int
 invoke_editor(int cnt, int key) {
        char template[] = "/tmp/mclient_temp_XXXXXX";
-       char cmd[BUFSIZ];
-       char *editor;
+       char editor_command[BUFFER_SIZE];
+       char *read_buff = NULL;
+       char *editor = NULL;
        FILE *fp;
-       size_t cmd_len;
+       size_t content_len;
+       size_t read_bytes, idx;
 
        (void) cnt;
        (void) key;
@@ -324,35 +326,64 @@ invoke_editor(int cnt, int key) {
        fflush(fp);
 
        editor = getenv("VISUAL");
-       if (!editor) {
+       if (editor == NULL) {
                editor = getenv("EDITOR");
-               if (!editor) {
+               if (editor == NULL) {
                        readline_show_error("invoke_editor: EDITOR/VISUAL env 
variable not set\n");
                        goto bailout;
                }
        }
 
-       snprintf(cmd, BUFSIZ, "%s %s", editor, template);
-       if (system(cmd) != 0) {
+       snprintf(editor_command, BUFFER_SIZE, "%s %s", editor, template);
+       if (system(editor_command) != 0) {
                readline_show_error("invoke_editor: Starting editor failed\n");
                goto bailout;
        }
 
-       fseek(fp, 0, SEEK_SET);
-       cmd_len = fread(cmd, sizeof(char), BUFSIZ, fp);
-       fclose(fp);
+       fseek(fp, 0L, SEEK_END);
+       content_len = ftell(fp);
+       rewind(fp);
+
+       if (content_len > 0) {
+               read_buff = (char *)malloc(content_len*sizeof(char));
+               if (read_buff == NULL) {
+                       readline_show_error("invoke_editor: Cannot allocate 
memory\n");
+                       goto bailout;
+               }
+
+               read_bytes = fread(read_buff, sizeof(char), content_len, fp);
+               if (read_bytes != content_len) {
+                       readline_show_error("invoke_editor: Did not read from 
file correctly\n");
+                       goto bailout;
+               }
 
-       *(cmd + cmd_len) = 0;
+               *(read_buff + read_bytes) = 0;
+
+               /* Remove trailing whitespace */
+               idx = read_bytes - 1;
+               while(isspace(*(read_buff + idx))) {
+                       *(read_buff + idx) = 0;
+                       idx--;
+               }
 
-       rl_replace_line(cmd, 0);
-       rl_point = cmd_len - 1;
+               rl_replace_line(read_buff, 0);
+               rl_point = idx + 1;  // place the point one character after the 
end of the string
 
+               free(read_buff);
+       } else {
+               rl_replace_line("", 0);
+               rl_point = 0;
+       }
+
+       fclose(fp);
        unlink(template);
 
        return 0;
 
 bailout:
        fclose(fp);
+       free(read_buff);
+       unlink(template);
        return 1;
 }
 
@@ -375,7 +406,8 @@ init_readline(Mapi mid, const char *lang
                rl_attempted_completion_function = mal_completion;
        }
 
-       rl_bind_key(024, invoke_editor);
+       rl_add_funmap_entry("invoke-editor", invoke_editor);
+       rl_bind_keyseq("\\M-e", invoke_editor);
 
        if (save_history) {
                int len;
diff --git a/common/stream/Tests/All b/common/stream/Tests/All
--- a/common/stream/Tests/All
+++ b/common/stream/Tests/All
@@ -1,13 +1,13 @@
 read_uncompressed
 HAVE_LIBBZ2?read_bz2
 HAVE_LIBZ?read_gz
-HAVE_LIBLZ4?read_lz4
+HAVE_LIBLZ4&HAVE_PYTHON_LZ4?read_lz4
 HAVE_LIBLZMA?read_xz
 
 write_uncompressed
 HAVE_LIBBZ2?write_bz2
 HAVE_LIBZ?write_gz
-HAVE_LIBLZ4?write_lz4
+HAVE_LIBLZ4&HAVE_PYTHON_LZ4?write_lz4
 HAVE_LIBLZMA?write_xz
 
 urlstream
diff --git a/common/stream/Tests/testdata.py b/common/stream/Tests/testdata.py
--- a/common/stream/Tests/testdata.py
+++ b/common/stream/Tests/testdata.py
@@ -2,10 +2,7 @@
 
 # Generating test files and verifying them after transmission.
 
-import bz2
 import gzip
-import lz4.frame
-import lzma
 
 import os
 import sys
@@ -208,10 +205,13 @@ class TestFile:
         elif self.compression == 'gz':
             f = gzip.GzipFile(filename, 'wb', fileobj=fileobj, 
mtime=131875200, compresslevel=1)
         elif self.compression == 'bz2':
+            import bz2
             f = bz2.BZ2File(fileobj, 'wb', compresslevel=1)
         elif self.compression == 'xz':
+            import lzma
             f = lzma.LZMAFile(fileobj, 'wb', preset=1)
         elif self.compression == 'lz4': # ok
+            import lz4.frame
             f = lz4.frame.LZ4FrameFile(fileobj, 'wb', compression_level=1)
         else:
             raise Exception("Unknown compression scheme: " + self.compression)
@@ -225,10 +225,13 @@ class TestFile:
         elif self.compression == 'gz':
             f = gzip.GzipFile(filename, 'rb', mtime=131875200)
         elif self.compression == 'bz2':
+            import bz2
             f = bz2.BZ2File(filename, 'rb')
         elif self.compression == 'xz':
+            import lzma
             f = lzma.LZMAFile(filename, 'rb')
         elif self.compression == 'lz4':
+            import lz4.frame
             f = lz4.frame.LZ4FrameFile(filename, 'rb')
         else:
             raise Exception("Unknown compression scheme: " + self.compression)
diff --git 
a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
 
b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
--- 
a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
+++ 
b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
@@ -72,14 +72,14 @@ stdout of test 'opt_sql_append` in direc
 % clob # type
 % 235 # length
 function user.main():void;
-    X_1:void := querylog.define("explain copy into ttt from 
E\\'\\\\\\\\tmp/xyz\\';":str, "sequential_pipe":str, 21:int);
+    X_1:void := querylog.define("explain copy into ttt from 
E\\'\\\\\\\\tmp/xyz\\';":str, "sequential_pipe":str, 22:int);
     X_4:int := sql.mvc();
-    (X_26:bat[:int], X_27:bat[:int], X_28:bat[:int]) := 
sql.copy_from(0x3698b20:ptr, "|":str, "\n":str, nil:str, "null":str, 
"\\tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int);
-    X_30:int := sql.append(X_4:int, "sys":str, "ttt":str, 
"averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str,
 X_26:bat[:int]);
-    X_35:int := sql.append(X_30:int, "sys":str, "ttt":str, "b":str, 
X_27:bat[:int]);
-    X_38:int := sql.append(X_35:int, "sys":str, "ttt":str, "c":str, 
X_28:bat[:int]);
-    X_40:lng := aggr.count(X_28:bat[:int]);
-    sql.affectedRows(X_38:int, X_40:lng);
+    (X_28:bat[:int], X_29:bat[:int], X_30:bat[:int]) := 
sql.copy_from(0xXXXXXX:ptr, "|":str, "\n":str, nil:str, "null":str, 
"\\tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int, 1:int);
+    X_32:int := sql.append(X_4:int, "sys":str, "ttt":str, 
"averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str,
 X_28:bat[:int]);
+    X_37:int := sql.append(X_32:int, "sys":str, "ttt":str, "b":str, 
X_29:bat[:int]);
+    X_40:int := sql.append(X_37:int, "sys":str, "ttt":str, "c":str, 
X_30:bat[:int]);
+    X_42:lng := aggr.count(X_30:bat[:int]);
+    sql.affectedRows(X_40:int, X_42:lng);
 end user.main;
 #inline               actions= 0 time=0 usec 
 #remap                actions= 0 time=0 usec 
@@ -113,14 +113,14 @@ end user.main;
 % clob # type
 % 235 # length
 function user.main():void;
-    X_1:void := querylog.define("explain copy into ttt from 
E\\'a:\\\\\\\\tmp/xyz\\';":str, "sequential_pipe":str, 21:int);
+    X_1:void := querylog.define("explain copy into ttt from 
E\\'a:\\\\\\\\tmp/xyz\\';":str, "sequential_pipe":str, 22:int);
     X_4:int := sql.mvc();
-    (X_26:bat[:int], X_27:bat[:int], X_28:bat[:int]) := 
sql.copy_from(0x3698b20:ptr, "|":str, "\n":str, nil:str, "null":str, 
"a:\\tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int);
-    X_30:int := sql.append(X_4:int, "sys":str, "ttt":str, 
"averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str,
 X_26:bat[:int]);
-    X_35:int := sql.append(X_30:int, "sys":str, "ttt":str, "b":str, 
X_27:bat[:int]);
-    X_38:int := sql.append(X_35:int, "sys":str, "ttt":str, "c":str, 
X_28:bat[:int]);
-    X_40:lng := aggr.count(X_28:bat[:int]);
-    sql.affectedRows(X_38:int, X_40:lng);
+    (X_28:bat[:int], X_29:bat[:int], X_30:bat[:int]) := 
sql.copy_from(0xXXXXXX:ptr, "|":str, "\n":str, nil:str, "null":str, 
"a:\\tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int, 1:int);
+    X_32:int := sql.append(X_4:int, "sys":str, "ttt":str, 
"averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str,
 X_28:bat[:int]);
+    X_37:int := sql.append(X_32:int, "sys":str, "ttt":str, "b":str, 
X_29:bat[:int]);
+    X_40:int := sql.append(X_37:int, "sys":str, "ttt":str, "c":str, 
X_30:bat[:int]);
+    X_42:lng := aggr.count(X_30:bat[:int]);
+    sql.affectedRows(X_40:int, X_42:lng);
 end user.main;
 #inline               actions= 0 time=1 usec 
 #remap                actions= 0 time=2 usec 
@@ -171,14 +171,14 @@ end user.main;
 % clob # type
 % 235 # length
 function user.main():void;
-    X_1:void := querylog.define("explain copy into ttt from 
E\\'\\\\\\\\tmp/xyz\\';":str, "user_0":str, 21:int);
+    X_1:void := querylog.define("explain copy into ttt from 
E\\'\\\\\\\\tmp/xyz\\';":str, "user_0":str, 22:int);
     X_4:int := sql.mvc();
-    (X_26:bat[:int], X_27:bat[:int], X_28:bat[:int]) := 
sql.copy_from(0x3698b20:ptr, "|":str, "\n":str, nil:str, "null":str, 
"\\tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int);
-    X_30:int := sql.append(X_4:int, "sys":str, "ttt":str, 
"averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str,
 X_26:bat[:int]);
-    X_35:int := sql.append(X_30:int, "sys":str, "ttt":str, "b":str, 
X_27:bat[:int]);
-    X_40:lng := aggr.count(X_28:bat[:int]);
-    X_38:int := sql.append(X_35:int, "sys":str, "ttt":str, "c":str, 
X_28:bat[:int]);
-    sql.affectedRows(X_38:int, X_40:lng);
+    (X_28:bat[:int], X_29:bat[:int], X_30:bat[:int]) := 
sql.copy_from(0xXXXXXX:ptr, "|":str, "\n":str, nil:str, "null":str, 
"\\tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int, 1:int);
+    X_32:int := sql.append(X_4:int, "sys":str, "ttt":str, 
"averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str,
 X_28:bat[:int]);
+    X_37:int := sql.append(X_32:int, "sys":str, "ttt":str, "b":str, 
X_29:bat[:int]);
+    X_42:lng := aggr.count(X_30:bat[:int]);
+    X_40:int := sql.append(X_37:int, "sys":str, "ttt":str, "c":str, 
X_30:bat[:int]);
+    sql.affectedRows(X_40:int, X_42:lng);
 end user.main;
 #inline               actions= 0 time=0 usec 
 #remap                actions= 0 time=0 usec 
@@ -213,14 +213,14 @@ end user.main;
 % clob # type
 % 235 # length
 function user.main():void;
-    X_1:void := querylog.define("explain copy into ttt from 
\\'Z:/tmp/xyz\\';":str, "user_0":str, 21:int);
+    X_1:void := querylog.define("explain copy into ttt from 
\\'Z:/tmp/xyz\\';":str, "user_0":str, 22:int);
     X_4:int := sql.mvc();
-    (X_26:bat[:int], X_27:bat[:int], X_28:bat[:int]) := 
sql.copy_from(0x2e73790:ptr, "|":str, "\n":str, nil:str, "null":str, 
"Z:/tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int);
-    X_30:int := sql.append(X_4:int, "sys":str, "ttt":str, 
"averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str,
 X_26:bat[:int]);
-    X_35:int := sql.append(X_30:int, "sys":str, "ttt":str, "b":str, 
X_27:bat[:int]);
-    X_40:lng := aggr.count(X_28:bat[:int]);
-    X_38:int := sql.append(X_35:int, "sys":str, "ttt":str, "c":str, 
X_28:bat[:int]);
-    sql.affectedRows(X_38:int, X_40:lng);
+    (X_28:bat[:int], X_29:bat[:int], X_30:bat[:int]) := 
sql.copy_from(0xXXXXXX:ptr, "|":str, "\n":str, nil:str, "null":str, 
"Z:/tmp/xyz":str, -1:lng, 0:lng, 0:int, 0:int, nil:str, 0:int, 1:int);
+    X_32:int := sql.append(X_4:int, "sys":str, "ttt":str, 
"averylongcolumnnametomakeitlargeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee":str,
 X_28:bat[:int]);
+    X_37:int := sql.append(X_32:int, "sys":str, "ttt":str, "b":str, 
X_29:bat[:int]);
+    X_42:lng := aggr.count(X_30:bat[:int]);
+    X_40:int := sql.append(X_37:int, "sys":str, "ttt":str, "c":str, 
X_30:bat[:int]);
+    sql.affectedRows(X_40:int, X_42:lng);
 end user.main;
 #inline               actions= 0 time=0 usec 
 #remap                actions= 0 time=2 usec 
diff --git a/monetdb5/modules/mal/mal_mapi.c b/monetdb5/modules/mal/mal_mapi.c
--- a/monetdb5/modules/mal/mal_mapi.c
+++ b/monetdb5/modules/mal/mal_mapi.c
@@ -272,60 +272,51 @@ static ATOMIC_TYPE threadno = ATOMIC_VAR
 static void
 SERVERlistenThread(SOCKET *Sock)
 {
-       char *msg = 0;
+       char *msg = NULL;
        int retval;
-       SOCKET sock = Sock[0];
-       SOCKET usock = Sock[1];
-       SOCKET msgsock = INVALID_SOCKET;
+       SOCKET socks[3] = {Sock[0], Sock[1], Sock[2]};
        struct challengedata *data;
        MT_Id tid;
        stream *s;
+       int i;
 
        GDKfree(Sock);
 
        (void) ATOMIC_INC(&nlistener);
 
        do {
+               SOCKET msgsock = INVALID_SOCKET;
 #ifdef HAVE_POLL
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to