Changeset: 737634ffb010 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=737634ffb010
Modified Files:
HowToStart.rst
clients/mapiclient/mclient.c
clients/mapiclient/msqldump.c
configure.ag
monetdb5/modules/mal/mal_mapi.c
tools/merovingian/client/monetdb.c
Branch: Jan2014
Log Message:
merge changes
diffs (truncated from 382 to 300 lines):
diff --git a/HowToStart.rst b/HowToStart.rst
--- a/HowToStart.rst
+++ b/HowToStart.rst
@@ -95,13 +95,22 @@ iconv
On Ubuntu, you can search with `apt-file` what provides these
files:
- $ apt-file search iconv.m4
+ ``$ apt-file search iconv.m4``
gettext: /usr/share/aclocal/iconv.m4
gnulib: /usr/share/gnulib/m4/iconv.m4
The .m4 that usually works is in gettext. Simply run,
- $ sudo apt-get install gettext
+ ``$ sudo apt-get install gettext``
+
+ On Fedora, you can search with `yum`:
+
+ ``$ yum provides /usr/share/aclocal/iconv.m4``
+
+ This shows the file is provided by the gettext-devel package.
+ Run
+
+ ``$ sudo yum install gettext-devel``
standard software development tools
To compile MonetDB, you also need to have the following
@@ -109,16 +118,15 @@ standard software development tools
use on you system:
- a C compiler (e.g. GNU's ``gcc``);
- - GNU ``make`` (``gmake``) (native ``make`` on, e.g., IRIX and Solaris
- usually don't work).
-
- The following are not needed when you start with the source
- distribution:
-
- - a C++ compiler (e.g. GNU's ``g++``);
+ - GNU ``make`` (``gmake``) (native ``make`` on, e.g., IRIX and
+ Solaris usually don't work);
- a lexical analyzer generator (e.g., ``lex`` or ``flex``);
- a parser generator (e.g., ``yacc`` or ``bison``).
+ If ``lex`` and ``flex`` are missing, you won't be able to
+ build the jaql front end. If ``yacc`` and ``bison`` are
+ missing, you won't be able to build the SQL front end.
+
The following are optional. They are checked for during
configuration and if they are missing, the feature is just
missing:
@@ -127,21 +135,22 @@ standard software development tools
- php
libxml2
- The XML parsing library `libxml2`__ is used by
- the xml module of monetdb5.
+ The XML parsing library `libxml2`__ is used by the xml module
+ of monetdb5.
- MonetDB5 cannot be compiled without libxml2. Current Linux
- distributions all come with libxml2.
+ MonetDB5 cannot be compiled without libxml2. Current Linux
+ distributions all come with libxml2.
pcre
- The Perl Compatible Regular Expressions library `pcre`__ is used by
- monetdb5 and sql. Most prominently, complex SQL LIKE expressions are
- evaluated with help of the pcre library.
+ The Perl Compatible Regular Expressions library `pcre`__ is
+ used by monetdb5 and sql. Most prominently, complex SQL LIKE
+ expressions are evaluated with help of the pcre library.
openssl
- The `OpenSSL`__ toolkit implementing SSL v2/v3 and TLS protocols is used
- for its with full-strength world-wide cryptography functions. The
- client-server login procedures make use of these functions.
+ The `OpenSSL`__ toolkit implementing SSL v2/v3 and TLS
+ protocols is used for its with full-strength world-wide
+ cryptography functions. The client-server login procedures
+ make use of these functions.
__ http://dev.monetdb.org/downloads/sources/
__ http://www.gnu.org/software/autoconf/
@@ -194,7 +203,7 @@ development sources on your computer.
hg clone http://dev.monetdb.org/hg/MonetDB
This will create the directory MonetDB in your current working directory
-with underneath all subcomponents.
+with underneath all subcomponents.
Bootstrap, Configure and Make
@@ -227,7 +236,9 @@ where ``...`` is replaced with the (abso
The directory where you execute ``configure`` is the place where all
intermediate source and object files are generated during compilation
-via ``make``.
+via ``make``. It is useful to have this be a new directory so that
+there is an easy way to remove all intermediates in case you want to
+rebuild (just empty or remove the directory).
By default, MonetDB is installed in ``/usr/local``. To choose another
target directory, you need to call
@@ -238,10 +249,18 @@ target directory, you need to call
Some other useful ``configure`` options are:
---enable-debug enable full debugging default=[see `Configure defaults
and recommendations`_ below]
---enable-optimize enable extra optimization default=[see `Configure
defaults and recommendations`_ below]
---enable-assert enable assertions in the code default=[see `Configure
defaults and recommendations`_ below]
---enable-strict enable strict compiler flags default=[see `Configure
defaults and recommendations`_ below]
+--enable-debug enable full debugging
+ default=[see `Configure defaults and
+ recommendations`_ below]
+--enable-optimize enable extra optimization
+ default=[see `Configure defaults and
+ recommendations`_ below]
+--enable-assert enable assertions in the code
+ default=[see `Configure defaults and
+ recommendations`_ below]
+--enable-strict enable strict compiler flags
+ default=[see `Configure defaults and
+ recommendations`_ below]
You can also add options such as ``CC=<compiler>`` to specify the
compiler and compiler flags to use.
@@ -251,35 +270,21 @@ Use ``configure --help`` to find out mor
Configure defaults and recommendations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-For convenience of both developers and users as well as to comply even more
-with open source standards, we now set/use the following defaults for the
-configure options
+For convenience of both developers and users, we use the following
+defaults for the configure options.
-::
+When compiling from Mercurial sources (as mainly done by developers)::
- --enable-strict, --enable-assert, --enable-debug, --enable-optimize
+ --enable-strict --enable-assert --enable-debug --disable-optimize
-When compiling from Mercurial sources
-(as mainly done by developers):
+When compiling from the pre-packages source distribution::
-::
+ --disable-strict --disable-assert --disable-debug --disable-optimize
- strict=yes assert=yes debug=yes optimize=no (*)
+When building a binary distribution, we use::
-When compiling from packaged/distributed sources (i.e., tarballs)
-(as mainly done by users):
+ --disable-strict --disable-assert --disable-debug --enable-optimize
-::
-
- strict=no assert=no debug=no optimize=no (*)
-
-For building binary distributions (RPMs):
-
-::
-
- strict=no assert=no debug=no optimize=yes
-
-``(*)``
IMPORTANT NOTE:
Since ``--enable-optimize=yes`` is not the default for any case except
@@ -290,7 +295,7 @@ scratch, *explicitly configured* with
--enable-debug=no --enable-assert=no --enable-optimize=yes
-in case you want/need to run any performance experiments with MonetDB!
+in case you want to run any performance experiments with MonetDB!
Please note:
``--enable-X=yes`` is equivalent to ``--enable-X``, and
@@ -307,24 +312,7 @@ command
make
to compile the source code. Please note that parallel make
-runs (e.g. ``make -j2``) are currently known to be unsuccessful.
-
-Testing the Build
-~~~~~~~~~~~~~~~~~
-
-This step is optional and only relevant for the packages clients,
-MonetDB5 and sql.
-
-If ``make`` went successfully, you can try
-
-::
-
- make check
-
-This will perform a large number of tests, some are unfortunately
-still expected to fail, but most should go successfully. At the end
-of the output there is a reference to an HTML file which is created by
-the test process that shows the test results.
+runs (e.g. ``make -j2``) are fully supported.
Install
~~~~~~~
@@ -343,8 +331,7 @@ privileges.
Testing the Installation
~~~~~~~~~~~~~~~~~~~~~~~~
-This step is optional and only relevant for the packages clients,
-MonetDB5 and sql.
+This step is optional.
Make sure that *prefix*/bin is in your ``PATH``. Then
in the package top-level directory issue the command
@@ -363,13 +350,10 @@ using a Mercurial checkout; see
for more options).
-This should produce much the same output as ``make check`` above, but
-uses the installed version of MonetDB.
-
You need write permissions in part of the installation directory for
this command: it will create subdirectories ``var/dbfarm`` and
-``Tests``.
-
+``Tests``, although there are options to ``Mtest.py`` to change the
+paths.
Usage
-----
@@ -402,8 +386,7 @@ for details.
At the ``mclient`` prompt some extra commands are available. Type
a single question mark to get a list of options. Note that one of the
-options is to read input from a file using ``<``.
-
+options is to read input from a file using ``\<``.
Troubleshooting
---------------
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -2002,14 +2002,12 @@ doFile(Mapi mid, const char *file, int u
if (line == NULL) {
/* end of file */
if (hdl == NULL) {
- if (line != NULL)
- continue;
/* nothing more to do */
+ free(buf);
goto bailout;
}
/* hdl != NULL, we should finish the current query */
- line = NULL;
length = 0;
} else
length = strlen(line);
diff --git a/clients/mapiclient/msqldump.c b/clients/mapiclient/msqldump.c
--- a/clients/mapiclient/msqldump.c
+++ b/clients/mapiclient/msqldump.c
@@ -182,6 +182,7 @@ main(int argc, char **argv)
host = optarg;
break;
case 'p':
+ assert(optarg != NULL);
port = atoi(optarg);
break;
case 'd':
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -396,7 +396,7 @@ case "$CC_version" in
;;
*clang*)
dnl `clang -dumpversion` reports the original/old gcc version it is
based on
- gcc_ver="`$CC -v 2>&1 | grep -w '[[Vv]]ersion [[0-9]]\+\.[[0-9]]\+' |
sed 's|^.*[[Vv]]ersion \([[0-9]]\+\(\.[[0-9]]\+\)\+\).*$|\1|'`"
+ gcc_ver="`$CC -v 2>&1 | grep -w '[[Vv]]ersion [[0-9]]\+\.[[0-9]]\+' |
sed 's|^.*[[Vv]]ersion
\([[0-9]][[0-9]]*\(\.[[0-9]][[0-9]]*\)\(\.[[0-9]][[0-9]]*\)*\).*$|\1|'`"
CC_ver="clang-$gcc_ver"
;;
*)
@@ -591,15 +591,18 @@ yes-*-*)
MCHECK_ADD_FLAG([-Wmissing-include-dirs])
MCHECK_ADD_FLAG([-Wlogical-op])
- dnl With clang 2.8 & 3.3 (no other tested, yet) and gcc < 4.5
+ dnl With clang 2.8, 3.3, 5.0 (no other tested) and gcc < 4.5
dnl (tested 3.4.6, 4.2.1, 4.3.2, 4.4.4, 4.4.5, 4.5.1, 4.5.2),
dnl "-Wunreachable-code" triggers numerous "will never be
dnl executed" (at least) in our stream code, mostly (if
dnl not all) false positives, though, as well as in
dnl YACC/BISON-generated code; thus, we do not use
- dnl "-Wunreachable-code" with clang 2.8 and gcc < 4.5 .
+ dnl "-Wunreachable-code" with clang and gcc < 4.5 .
+ dnl At the same time, Apple deprecated OpenSSL in favour of
+ dnl their own CommonCrypto API. We don't mind about that.
case "$CC_ver" in
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list