Changeset: fbae507267a3 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fbae507267a3
Modified Files:
        configure.ag
        monetdb5/mal/mal_instruction.mx
        monetdb5/mal/mal_interpreter.mx
        monetdb5/optimizer/Tests/dataflow4.mal
        sql/storage/m4/Makefile.ag
        sql/storage/m4/bpm.c
        sql/storage/m4/bpm.h
Branch: default
Log Message:

Merged from Aug2011


diffs (truncated from 1191 to 300 lines):

diff --git a/buildtools/Mx/Code.c b/buildtools/Mx/Code.c
--- a/buildtools/Mx/Code.c
+++ b/buildtools/Mx/Code.c
@@ -46,7 +46,7 @@
                        if (isspace((int) (*s)))
                                *s = 0;
                        if (s == fname) {
-                               Error("File name missing. %s", d->d_line);
+                               Error("File name missing. %d", d->d_line);
                        }
                }
                        break;
diff --git a/buildtools/Mx/MxFcnDef.h b/buildtools/Mx/MxFcnDef.h
--- a/buildtools/Mx/MxFcnDef.h
+++ b/buildtools/Mx/MxFcnDef.h
@@ -147,10 +147,14 @@
 extern char *StrDup(const char *);
 extern char *Strndup(const char *, size_t);
 
-extern void ofile_printf(char *, ...);
-extern void Fatal(char *, char *, ...);
-extern void Error(char *, ...);
-extern void Message(char *, ...);
+extern void ofile_printf(_In_z_ _Printf_format_string_ const char *, ...)
+       __attribute__((__format__(__printf__, 1, 2)));
+extern void Fatal(const char *, _In_z_ _Printf_format_string_ const char *, 
...)
+       __attribute__((__format__(__printf__, 2, 3)));
+extern void Error(_In_z_ _Printf_format_string_ const char *, ...)
+       __attribute__((__format__(__printf__, 1, 2)));
+extern void Message(_In_z_ _Printf_format_string_ const char *, ...)
+       __attribute__((__format__(__printf__, 1, 2)));
 
 /* Tok.c
  */
diff --git a/buildtools/Mx/Print.c b/buildtools/Mx/Print.c
--- a/buildtools/Mx/Print.c
+++ b/buildtools/Mx/Print.c
@@ -253,7 +253,7 @@
        extern char *defHideText;
 
        if (pr_hide == opt_hide && !pr_hide_text && defHideText != 0)
-               ofile_printf(defHideText);
+               ofile_printf("%s", defHideText);
        pr_hide--;
        pr_hide_text = 0;
 }
diff --git a/buildtools/Mx/Sys.c b/buildtools/Mx/Sys.c
--- a/buildtools/Mx/Sys.c
+++ b/buildtools/Mx/Sys.c
@@ -32,7 +32,7 @@
 
 /* VARARGS */
 void
-ofile_printf(char *format, ...)
+ofile_printf(const char *format, ...)
 {
        va_list ap;
 
@@ -70,7 +70,7 @@
 
 
 void
-Fatal(char *fcn, char *format, ...)
+Fatal(const char *fcn, const char *format, ...)
 {
        va_list ap;
 
@@ -115,7 +115,7 @@
 }
 
  /*VARGARGS*/ void
-Error(char *format, ...)
+Error(const char *format, ...)
 {
        va_list ap;
 
@@ -132,7 +132,7 @@
 
 /*VARGARGS1*/
 void
-Message(char *format, ...)
+Message(const char *format, ...)
 {
        va_list ap;
 
diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c
--- a/clients/mapilib/mapi.c
+++ b/clients/mapilib/mapi.c
@@ -4257,9 +4257,9 @@
                printf("mapi_query_part:" SZFMT ":%.*s\n", size, (int) size, 
query);
        }
        hdl->needmore = 0;
-       mnstr_write(mid->to, (char *) query, 1, size);
+       mnstr_write(mid->to, query, 1, size);
        if (mid->tracelog) {
-               mnstr_write(mid->tracelog, (char *) query, 1, size);
+               mnstr_write(mid->tracelog, query, 1, size);
                mnstr_flush(mid->tracelog);
        }
        check_stream(mid, mid->to, "write error on stream", "mapi_query_part", 
mid->error);
diff --git a/clients/odbc/driver/ODBCGlobal.h b/clients/odbc/driver/ODBCGlobal.h
--- a/clients/odbc/driver/ODBCGlobal.h
+++ b/clients/odbc/driver/ODBCGlobal.h
@@ -130,7 +130,8 @@
                                }                                       \
                        } while (0)
 #else
-extern void ODBCLOG(const char *fmt, ...);
+extern void ODBCLOG(_In_z_ _Printf_format_string_ const char *fmt, ...)
+       __attribute__((__format__(__printf__, 1, 2)));
 #endif
 #endif
 
diff --git a/clients/odbc/driver/ODBCUtil.c b/clients/odbc/driver/ODBCUtil.c
--- a/clients/odbc/driver/ODBCUtil.c
+++ b/clients/odbc/driver/ODBCUtil.c
@@ -73,7 +73,7 @@
        char *tmp = (char *) malloc((length + 1) * sizeof(char));
 
        assert(tmp);
-       strncpy(tmp, (char *) inStr, length);
+       strncpy(tmp, (const char *) inStr, length);
        tmp[length] = '\0';     /* make it null terminated */
        return tmp;
 }
diff --git a/clients/odbc/driver/ODBCUtil.h b/clients/odbc/driver/ODBCUtil.h
--- a/clients/odbc/driver/ODBCUtil.h
+++ b/clients/odbc/driver/ODBCUtil.h
@@ -99,7 +99,7 @@
                }                                                       \
                _l = (str) ? (lent) (strlen) : 0;                       \
                if (buf)                                                \
-                       strncpy((char *) (buf), (str) ? (char *) (str) : "", 
(len)); \
+                       strncpy((char *) (buf), (str) ? (const char *) (str) : 
"", (len)); \
                if (lenp)                                               \
                        *(lenp) = _l;                                   \
                if ((buf) == NULL || _l >= (len))                       \
diff --git a/clients/perl/Mapi.pm b/clients/perl/Mapi.pm
--- a/clients/perl/Mapi.pm
+++ b/clients/perl/Mapi.pm
@@ -197,8 +197,8 @@
 sub doRequest {
   my($self,$cmd) = @_;
 
-  $cmd =~ s/\n/ /g;    # remove newlines ???
   $cmd = "S" . $cmd if $self->{lang} eq 'sql';
+  $cmd = $cmd . ";\n" unless $cmd =~ m/;\n$/;
   print "doRequest:$cmd\n" if ($self->{trace});
   $self->putblock($cmd); # TODO handle exceptions || die "!ERROR can't send 
$cmd: $!";
   $self->resetState();
@@ -242,29 +242,34 @@
 
   if (@chars[0] eq '!') { 
     $self->error($row);
-               my $i = 1;
-       while ($self->{lines}[$i] =~ '!') {
+    my $i = 1;
+    while ($self->{lines}[$i] =~ '!') {
       $self->error($self->{lines}[$i]);
       $i++;
-               }
+    }
     $self->{active} = 0;
     return -1
   } elsif (@chars[0] eq '&') {
     # not expected
   } elsif (@chars[0] eq '%') {
-         # header line
+    # header line
   } elsif (@chars[0] eq '[') {
-         # row result
+    # row result
     $self->{row} = $row;
+    if ($self->{nrcols} < 0) {
+      $self->{nrcols} = () = $row =~ /,\t/g;
+      $self->{nrcols}++;
+    }
     $self->{active} = 1;
   } elsif (@chars[0] eq '=') {
-         # xml result line
+    # xml result line
     $self->{row} = substr($row, 1); # skip = 
     $self->{active} = 1;
   } elsif (@chars[0] eq '^') {
-         # ^ redirect, ie use different server
+    # ^ redirect, ie use different server
   } elsif (@chars[0] eq '#') {
-         # warnings etc
+    # warnings etc, skip, and return what follows
+    return $self->getRow;
   }
   return $self->{active};
 }
@@ -278,9 +283,9 @@
   my $header = $self->{lines}[0];
   my @chars = split(//, $header);
 
-       $self->{id} = -1;
+  $self->{id} = -1;
   $self->{count} = scalar(@{$self->{lines}}); 
-  $self->{nrcols} = 1;
+  $self->{nrcols} = -1;
   $self->{replysize} = $self->{count};
   $self->{active} = 0;
   $self->{skip} = 0; # next+skip is current result row
@@ -289,56 +294,56 @@
   $self->{hdrs} = [];
 
   if (@chars[0] eq '&') {
-         if (@chars[1] eq '1' || @chars[1] eq 6) {
-           if (@chars[1] eq '1') {
-                   # &1 id result-count nr-cols rows-in-this-block
-                   my ($dummy,$id,$cnt,$nrcols,$replysize) = split(' ', 
$header);
-                   $self->{id} = $id;
-                   $self->{count} = $cnt;
-                   $self->{nrcols} = $nrcols;
-                   $self->{replysize} = $replysize;
+    if (@chars[1] eq '1' || @chars[1] eq 6) {
+      if (@chars[1] eq '1') {
+        # &1 id result-count nr-cols rows-in-this-block
+        my ($dummy,$id,$cnt,$nrcols,$replysize) = split(' ', $header);
+        $self->{id} = $id;
+        $self->{count} = $cnt;
+        $self->{nrcols} = $nrcols;
+        $self->{replysize} = $replysize;
       } else {
-                   # &6 id nr-cols,rows-in-this-block,offset
-                   my ($dummy,$id,$nrcols,$replysize,$offset) = split(' ', 
$header);
-                   $self->{id} = $id;
-                   $self->{nrcols} = $nrcols;
-                   $self->{replysize} = $replysize;
+        # &6 id nr-cols,rows-in-this-block,offset
+        my ($dummy,$id,$nrcols,$replysize,$offset) = split(' ', $header);
+        $self->{id} = $id;
+        $self->{nrcols} = $nrcols;
+        $self->{replysize} = $replysize;
         $self->{offset} = $offset;
       }
-                 # for now skip table header information
+      # for now skip table header information
       my $i = 1;
       while ($self->{lines}[$i] =~ '%') {
         $self->{hdrs}[$i - 1] = $self->{lines}[$i];
         $i++;
       }
       $self->{skip} = $i;
-                 $self->{next} = $i;
-                 $self->{row} = $self->{lines}[$self->{next}++];
+      $self->{next} = $i;
+      $self->{row} = $self->{lines}[$self->{next}++];
 
-               $self->{active} = 1;
-       } elsif (@chars[1] eq '2') { # updates
-                 my ($dummy,$cnt) = split(' ', $header);
-                 $self->{count} = $cnt;
-                 $self->{nrcols} = 1;
-                 $self->{replysize} = 1;
+      $self->{active} = 1;
+    } elsif (@chars[1] eq '2') { # updates
+      my ($dummy,$cnt) = split(' ', $header);
+      $self->{count} = $cnt;
+      $self->{nrcols} = 1;
+      $self->{replysize} = 1;
       $self->{row} = "" . $cnt;
       $self->{next} = $cnt; # all done
       return -2;
-       } elsif (@chars[1] eq '3') { # transaction 
+    } elsif (@chars[1] eq '3') { # transaction 
       # nothing todo
-       } elsif (@chars[1] eq '4') { # auto_commit 
-                 my ($dummy,$ac) = split(' ', $header);
+    } elsif (@chars[1] eq '4') { # auto_commit 
+      my ($dummy,$ac) = split(' ', $header);
       if ($ac eq 't') {
         $self->{auto_commit} = 1;
       } else {
         $self->{auto_commit} = 0;
       }
-       } elsif (@chars[1] eq '5') { # prepare 
-                 my ($dummy,$id,$cnt,$nrcols,$replysize) = split(' ', $header);
+    } elsif (@chars[1] eq '5') { # prepare 
+      my ($dummy,$id,$cnt,$nrcols,$replysize) = split(' ', $header);
       # TODO parse result, rows (type, digits, scale)
-                 $self->{count} = $cnt;
-                 $self->{nrcols} = $nrcols;
-                 $self->{replysize} = $replysize;
+      $self->{count} = $cnt;
+      $self->{nrcols} = $nrcols;
+      $self->{replysize} = $replysize;
       $self->{row} = "";
       $self->{next} = $cnt; # all done
     }
diff --git a/clients/perl/MonetDB-CLI-MapiPP/MonetDB/CLI/MapiPP.pm 
b/clients/perl/MonetDB-CLI-MapiPP/MonetDB/CLI/MapiPP.pm
--- a/clients/perl/MonetDB-CLI-MapiPP/MonetDB/CLI/MapiPP.pm
+++ b/clients/perl/MonetDB-CLI-MapiPP/MonetDB/CLI/MapiPP.pm
@@ -106,11 +106,11 @@
       # TODO: table_name
     }
     do {
-      my @cols = split(/,\t/, $h->{row});
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to