Changeset: 3a5e7b302732 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3a5e7b302732
Modified Files:
        configure.ag
        gdk/Makefile.ag
        gdk/gdk.h
        gdk/gdk_cbp.c
        gdk/gdk_system.c
        gdk/gdk_system.h
        gdk/gdk_utils.c
        monetdb5/mal/Tests/All
        monetdb5/mal/Tests/dataflow00.mal
        monetdb5/mal/mal_interpreter.c
        monetdb5/modules/atoms/url.c
        monetdb5/modules/mal/tablet.c
        monetdb5/optimizer/Tests/All
        monetdb5/optimizer/Tests/dataflow.mal
        monetdb5/optimizer/opt_commonTerms.c
        monetdb5/optimizer/opt_joinpath.c
        monetdb5/optimizer/opt_mitosis.c
        monetdb5/optimizer/opt_pipes.c
        monetdb5/optimizer/opt_prelude.c
        monetdb5/optimizer/opt_support.c
        sql/backends/monet5/sql.mx
        sql/backends/monet5/sql_user.c
        sql/backends/monet5/vaults/fits.c
        sql/backends/monet5/vaults/mseed.c
Branch: headless
Log Message:

Merge with default branch.


diffs (truncated from 2226 to 300 lines):

diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c
--- a/clients/mapilib/mapi.c
+++ b/clients/mapilib/mapi.c
@@ -795,6 +795,9 @@
 # include <netdb.h>
 # include <netinet/in.h>
 #endif
+#ifdef HAVE_SYS_UIO_H
+# include <sys/uio.h>
+#endif
 
 #ifdef HAVE_MALLOC_H
 #include <malloc.h>
diff --git a/common/utils/mutils.c b/common/utils/mutils.c
--- a/common/utils/mutils.c
+++ b/common/utils/mutils.c
@@ -36,12 +36,12 @@
 # include <mach-o/dyld.h>  /* _NSGetExecutablePath on OSX >=10.5 */
 #endif
 
-#ifdef HAVE_SYS_PARAM_H
-# include <sys/param.h>  /* realpath on OSX */
+#ifdef HAVE_LIMITS_H
+# include <limits.h>  /* PATH_MAX on Solaris */
 #endif
 
-#ifdef HAVE_LIMITS_H
-# include <limits.h>  /* PATH_MAX on Solaris */
+#ifdef HAVE_SYS_PARAM_H
+# include <sys/param.h>  /* realpath on OSX, prerequisite of sys/sysctl on 
OpenBSD */
 #endif
 
 #ifdef HAVE_SYS_SYSCTL_H
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -50,6 +50,10 @@
 
 PKG_PROG_PKG_CONFIG
 
+if test x"$PKG_CONFIG" = x ; then
+       AC_MSG_ERROR([pkg-config is required to configure MonetDB])
+fi
+
 dnl VERSION_TO_NUMBER macro (copied from libxslt)
 AC_DEFUN([MONETDB_VERSION_TO_NUMBER],
 [`$1 | sed 's|[[_\-]][[a-zA-Z0-9]]*$||' | awk 'BEGIN { FS = "."; } { printf 
"%d", ([$]1 * 1000 + [$]2) * 1000 + [$]3;}'`])
@@ -1272,9 +1276,6 @@
 AC_CHECK_PROG(MV,mv,mv -f)
 AC_PROG_LN_S
 AC_CHECK_PROG(LOCKFILE,lockfile,lockfile -r 2,echo)
-if test x"$LOCKFILE" = x"echo" ; then
-       AC_MSG_WARN([no lockfile found, please do NOT parallelise the build 
process!])
-fi
 
 AC_CHECK_PROGS(RPMBUILD,rpmbuild rpm)
 
@@ -1598,15 +1599,18 @@
 AC_PROG_YACC
 AC_DEFINE(YYENABLE_NLS, 0, [Needed to compile bison-generated code.])
 AC_DEFINE(YYLTYPE_IS_TRIVIAL, 0, [Needed to compile bison-generated code.])
-if test "x$YACC" = x; then
-       if test "x$enable_sql" = xyes; then
-               AC_MSG_ERROR([MonetDB/SQL requires YACC or BISON.])
-       fi
-       enable_sql=no
-       if test "x$disable_sql" = x; then
-               disable_sql="(MonetDB/SQL requires YACC or BISON.)"
-       fi
-fi
+case "$YACC" in
+       bison*)  YACC="$YACC"  ;;
+       *)
+               if test "x$enable_sql" = xyes; then
+                       AC_MSG_ERROR([MonetDB/SQL requires bison])
+               fi
+               enable_sql=no
+               if test "x$disable_sql" = x; then
+                       disable_sql="(MonetDB/SQL requires bison)"
+               fi
+       ;;
+esac
 
 AC_CHECK_PROG(TEXI2HTML,texi2html,texi2html)
 AC_CHECK_PROG(LATEX2HTML,latex2html,latex2html)
@@ -1815,16 +1819,14 @@
        fi
        ;;
 *)
-       req_java_ver_min=1.5 # >= $req_java_ver_min required
-       req_java_ver_max=1.6 # <  $req_java_ver_max required
-       if test MONETDB_VERSION_TO_NUMBER(echo $JAVA_VERSION) -ge 
MONETDB_VERSION_TO_NUMBER(echo "$req_java_ver_min") -a 
MONETDB_VERSION_TO_NUMBER(echo $JAVA_VERSION) -lt 
MONETDB_VERSION_TO_NUMBER(echo "$req_java_ver_max"); then
+       if test MONETDB_VERSION_TO_NUMBER(echo $JAVA_VERSION) = 
MONETDB_VERSION_TO_NUMBER(echo "1.5") ; then
                have_java_jdbc=yes
        else
                if test "x$enable_jdbc" = xyes; then
-                       AC_MSG_ERROR([MonetDB JDBC requires ant and Java >= 
$req_java_ver_min, but < $req_java_ver_max.])
+                       AC_MSG_ERROR([MonetDB JDBC requires ant and Java 1.5])
                else
                        enable_jdbc=no
-                       disable_jdbc="(MonetDB JDBC currently requires Java >= 
$req_java_ver_min, but < $req_java_ver_max to build)"
+                       disable_jdbc="(MonetDB JDBC currently requires Java 1.5 
to build)"
                fi
        fi
        ;;
@@ -2498,10 +2500,10 @@
        sys/param.h \
        sys/resource.h \
        sys/socket.h \
-       sys/sysctl.h \
        sys/time.h \
        sys/times.h \
        sys/types.h \
+       sys/uio.h \
        sys/un.h \
        sys/utime.h \
        sys/wait.h \
@@ -2514,6 +2516,15 @@
        xmmintrin.h \
        ])
 
+dnl on OpenBSD, sys/sysctl.h requires sys/param.h to be included beforehand
+AC_CHECK_HEADERS([sys/sysctl.h], [], [],
+[
+  #ifdef HAVE_SYS_PARAM_H
+  # include <sys/param.h>
+  #endif
+])
+
+
 SOCKET_LIBS=""
 have_setsockopt=no
 
@@ -2541,8 +2552,6 @@
          AC_CHECK_LIB(socket, setsockopt, [ SOCKET_LIBS="-lsocket 
$SOCKET_LIBS"; have_setsockopt=yes; ]))
 fi
 
-AC_CHECK_HEADERS([sys/socket.h winsock.h])
-
 have_getaddrinfo=no
 save_LIBS="$LIBS"
 LIBS="$LIBS $SOCKET_LIBS"
@@ -2965,10 +2974,14 @@
 AC_SUBST(QXlocalstatedir)
 Xlogdir="`$translatepath "$logdir"`"
 eval "Elogdir=${Xlogdir}"
+# need second eval because localstatedir defaults to being ${prefix}/var
+eval "Elogdir=${Elogdir}"
 AC_SUBST(logdir)
 AC_SUBST(Elogdir)
 Xrundir="`$translatepath "$rundir"`"
 eval "Erundir=${Xrundir}"
+# need second eval because localstatedir defaults to being ${prefix}/var
+eval "Erundir=${Erundir}"
 AC_SUBST(rundir)
 AC_SUBST(Erundir)
 Qlibdir="$libdir"
@@ -3231,3 +3244,28 @@
 echo
 echo "* Important options:"
 echo "    OID size:   " ${bits} bits
+echo
+
+dnl give some hints to the user
+case "`make -v 2>&1`" in
+'GNU Make '*)
+       ;;
+*)
+       echo "'make' not found in PATH or not GNU Make."
+       case "`gmake -v 2>&1`" in
+       'GNU Make '*)
+               echo "Please use 'gmake' to build MonetDB."
+               ;;
+       *)
+               echo "'gmake' not found in PATH or not GNU Make."
+               echo "Please make sure you have GNU Make installed and use it 
to build MonetDB."
+               ;;
+       esac
+       echo
+       ;;
+esac
+
+if test x"$LOCKFILE" = x"echo" ; then
+       echo "'lockfile' not found (usually part of a package named procmail)"
+       echo "Please do NOT parallelise the build process! (use -j1 with make)"
+fi
diff --git a/gdk/ChangeLog b/gdk/ChangeLog
--- a/gdk/ChangeLog
+++ b/gdk/ChangeLog
@@ -1,3 +1,7 @@
 # ChangeLog file for MonetDB
 # This file is updated with Maddlog
 
+* Wed May 11 2011 Sjoerd Mullender <[email protected]>
+- Implemented automatic conversion of a 64-bit database with 32-bit OIDs
+  to one with 64-bit OIDs.
+
diff --git a/gdk/gdk_cbp.c b/gdk/gdk_cbp.c
--- a/gdk/gdk_cbp.c
+++ b/gdk/gdk_cbp.c
@@ -375,17 +375,235 @@
 static int CBPrecover_subdir(void);
 static int CBPdiskscan(const char *);
 
+#if SIZEOF_SIZE_T == 8 && SIZEOF_OID == 8
+/* Convert 32-bit OIDs to 64 bits.
+ * This function must be called at the end of CBPinit(), just before
+ * "normal processing" starts.  All errors that happen during the
+ * conversion are fatal.  This function is "safe" in the sense that
+ * when it is interrupted, recovery will just start over.  No
+ * permanent changes are made to the database until all string heaps
+ * have been converted, and then the changes are made atomically. */
+
+static void
+fixoidheapcolumn(COL *b, const char *nme, const char *filename)
+{
+       Heap h1, h2;
+       int *old;
+       oid *new;
+       oid i;
+       char *s;
+       unsigned short w;
+
+       if (b->type == TYPE_str) {
+               h1 = b->heap;
+               h1.filename = NULL;
+               h1.base = NULL;
+               h1.dirty = 0;
+               h1.parentid = 0;
+               h2 = *b->vheap;
+               h2.filename = NULL;
+               h2.base = NULL;
+               h2.dirty = 0;
+               h2.parentid = 0;
+
+               /* load old string heap */
+               if (HEAPload(&h1, filename, "tail", 0) < 0)
+                       GDKfatal("fixoidheap: loading old heap "
+                                "for COL %d failed\n", b->cacheid);
+               if (HEAPload(&h2, filename, "theap", 0) < 0)
+                       GDKfatal("fixoidheap: loading old string heap "
+                                "for COL %d failed\n", b->cacheid);
+
+               /* create new string heap */
+               if (HEAPdelete(&b->heap, nme, "tail"))
+                       GDKfatal("fixoidheap: deleting heap "
+                                "for COL %d failed\n", b->cacheid);
+               b->heap.filename = GDKmalloc(strlen(nme) + 12);
+               if (b->heap.filename == NULL)
+                       GDKfatal("fixoidheap: GDKmalloc failed\n");
+               GDKfilepath(b->heap.filename, NULL, nme, "tail");
+               w = b->width; /* remember old width */
+               b->width = 1;
+               b->shift = 0;
+               if (HEAPalloc(&b->heap, b->capacity, SIZEOF_OID) < 0)
+                       GDKfatal("fixoidheap: allocating new heap "
+                                "for COL %d failed\n", b->cacheid);
+
+               b->heap.dirty = TRUE;
+               if (HEAPdelete(b->vheap, nme, "theap"))
+                       GDKfatal("fixoidheap: deleting string heap "
+                                "for COL %d failed\n", b->cacheid);
+               b->vheap->filename = GDKmalloc(strlen(nme) + 12);
+               if (b->vheap->filename == NULL)
+                       GDKfatal("fixoidheap: GDKmalloc failed\n");
+               GDKfilepath(b->vheap->filename, NULL, nme, "theap");
+               if (ATOMheap(TYPE_str, b->vheap, b->capacity))
+                       GDKfatal("fixoidheap: initializing new string "
+                                "heap for COL %d failed\n", b->cacheid);
+               b->vheap->parentid = b->cacheid;
+
+               /* do the conversion */
+               b->heap.dirty = TRUE;
+               b->vheap->dirty = TRUE;
+               for (i = 0; i < b->count; i++) {
+                       /* s = h2.base + VarHeapVal(h1.base, i, w); */
+                       switch (w) {
+                       case 1:
+                               s = (char *) h2.base + (((var_t) ((unsigned 
char *) h1.base)[i] + ((GDK_STRHASHTABLE * sizeof(unsigned short)) >> 3)) << 3);
+                               break;
+                       case 2:
+                               s = (char *) h2.base + (((var_t) ((unsigned 
short *) h1.base)[i] + ((GDK_STRHASHTABLE * sizeof(unsigned short)) >> 3)) << 
3);
+                               break;
+                       case 4:
+                               s = (char *) h2.base + ((var_t) ((unsigned int 
*) h1.base)[i] << 3);
+                               break;
+                       default:
+                               assert(0);
+                       }
+                       b->heap.free += b->width;
+                       COLset_str(b, i, s, 0);
+               }
+               HEAPfree(&h1);
+               HEAPfree(&h2);
+       } else if (b->type == TYPE_oid ||
+                  (b->type != TYPE_void && b->varsized)) {
+               h1 = b->heap;
+               h1.filename = NULL;
+               h1.base = NULL;
+               h1.dirty = 0;
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to