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