Changeset: d1074b742151 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d1074b742151
Added Files:
        gdk/gdk_select.c
        monetdb5/modules/mal/groups.c
        monetdb5/modules/mal/groups.h
        monetdb5/modules/mal/joinpath.c
        monetdb5/modules/mal/joinpath.h
Removed Files:
        gdk/gdk_scanselect.mx
        gdk/gdk_scanselect_defs.mx
        gdk/gdk_scanselect_defs_bte.mx
        gdk/gdk_scanselect_defs_dbl.mx
        gdk/gdk_scanselect_defs_fix.mx
        gdk/gdk_scanselect_defs_flt.mx
        gdk/gdk_scanselect_defs_int.mx
        gdk/gdk_scanselect_defs_lng.mx
        gdk/gdk_scanselect_defs_sht.mx
        gdk/gdk_scanselect_defs_str.mx
        gdk/gdk_scanselect_defs_var.mx
        monetdb5/optimizer/opt_trace.c
        monetdb5/optimizer/opt_trace.h
        monetdb5/tests/gdkTests/Tests/casts.stable.out.SunOS5.10
        monetdb5/tests/gdkTests/Tests/casts.stable.out.SunOS5.10.oid64
        
sql/test/BugTracker-2011/Tests/func_iter_vs_bulk.Bug-2826.stable.out.single
        sql/test/Tests/setoptimizer.stable.out.Windows
Modified Files:
        clients/Tests/exports.stable.out
        clients/mapiclient/mclient.c
        clients/python/monetdb/sql/cursors.py
        clients/python/monetdb/sql/monetize.py
        configure.ag
        gdk/Makefile.ag
        gdk/gdk.h
        gdk/gdk_align.c
        gdk/gdk_bat.c
        gdk/gdk_batop.c
        gdk/gdk_private.h
        gdk/gdk_qsort.c
        gdk/gdk_rangejoin.mx
        gdk/gdk_relop.mx
        gdk/gdk_sample.c
        gdk/gdk_search.c
        gdk/gdk_setop.mx
        gdk/gdk_ssort.c
        gdk/gdk_ssort_impl.h
        monetdb5/extras/jaql/jaqlfunc.mal
        monetdb5/extras/jaql/parser/jaql.l
        monetdb5/extras/mal_optimizer_template/opt_sql_append.c
        monetdb5/mal/Tests/tst1200.stable.out
        monetdb5/mal/Tests/tst1201.stable.out
        monetdb5/mal/Tests/tst1202.stable.out
        monetdb5/mal/Tests/tst1203.stable.out
        monetdb5/mal/Tests/tst1205.stable.out
        monetdb5/mal/Tests/tst850.stable.out
        monetdb5/mal/Tests/tst901b.mal
        monetdb5/mal/Tests/tst901b.stable.out
        monetdb5/mal/Tests/tst902.mal
        monetdb5/mal/Tests/tst902.stable.out
        monetdb5/mal/Tests/tst903.stable.out
        monetdb5/mal/Tests/tst904.stable.out
        monetdb5/mal/Tests/tst905.stable.out
        monetdb5/mal/Tests/tst907.stable.out
        monetdb5/mal/mal_debugger.c
        monetdb5/mal/mal_profiler.c
        monetdb5/modules/kernel/aggr.mx
        monetdb5/modules/kernel/aggr_be_avg.mx
        monetdb5/modules/kernel/aggr_be_count.mx
        monetdb5/modules/kernel/aggr_be_minmax.mx
        monetdb5/modules/kernel/aggr_be_prod.mx
        monetdb5/modules/kernel/aggr_be_sum.mx
        monetdb5/modules/kernel/aggr_bge_avg.mx
        monetdb5/modules/kernel/aggr_bge_count.mx
        monetdb5/modules/kernel/aggr_bge_minmax.mx
        monetdb5/modules/kernel/aggr_bge_prod.mx
        monetdb5/modules/kernel/aggr_bge_sum.mx
        monetdb5/modules/kernel/algebra.mx
        monetdb5/modules/kernel/batmtime.mx
        monetdb5/modules/kernel/group.mx
        monetdb5/modules/mal/Makefile.ag
        monetdb5/modules/mal/Tests/modulechk.mal
        monetdb5/modules/mal/Tests/modulechk.stable.out
        monetdb5/modules/mal/language.c
        monetdb5/modules/mal/pcre.c
        monetdb5/modules/mal/pcre.mal
        monetdb5/modules/mal/profiler.c
        monetdb5/optimizer/Makefile.ag
        monetdb5/optimizer/Tests/All
        monetdb5/optimizer/Tests/Mexample.stable.out
        monetdb5/optimizer/Tests/remap.stable.out
        monetdb5/optimizer/opt_groups.c
        monetdb5/optimizer/opt_groups.h
        monetdb5/optimizer/opt_joinpath.c
        monetdb5/optimizer/opt_joinpath.h
        monetdb5/optimizer/opt_multiplex.c
        monetdb5/optimizer/opt_prejoin.c
        monetdb5/optimizer/opt_support.c
        monetdb5/optimizer/opt_wrapper.c
        monetdb5/tests/gdkTests/Tests/casts.mal
        monetdb5/tests/gdkTests/Tests/casts.stable.out
        monetdb5/tests/gdkTests/Tests/casts.stable.out.Windows
        monetdb5/tests/gdkTests/Tests/casts.stable.out.Windows.64bit.oid64
        monetdb5/tests/gdkTests/Tests/casts.stable.out.oid64
        monetdb5/tests/gdkTests/Tests/intersect_diff_void.stable.out
        sql/backends/monet5/sql.mx
        sql/server/sql_parser.h
        sql/server/sql_parser.y
        sql/server/sql_scan.c
        sql/test/BugTracker-2011/Tests/func_iter_vs_bulk.Bug-2826.sql
        sql/test/BugTracker-2011/Tests/func_iter_vs_bulk.Bug-2826.stable.out
        sql/test/Tests/trace.stable.out
        tools/mserver/Makefile.ag
        tools/mserver/mserver5.c
Branch: sciql
Log Message:

merge


diffs (truncated from 20181 to 300 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -172,9 +172,11 @@ BAT *BATsort(BAT *b);
 BAT *BATsort_rev(BAT *b);
 BAT *BATssort(BAT *b);
 BAT *BATssort_rev(BAT *b);
+BAT *BATsubselect(BAT *b, BAT *s, const void *tl, const void *th, int li, int 
hi, int anti);
 BAT *BATsunion(BAT *b, BAT *c);
 BAT *BATsunique(BAT *b);
 BAT *BATthetajoin(BAT *l, BAT *r, int mode, BUN estimate);
+BAT *BATthetasubselect(BAT *b, BAT *s, const void *val, const char *op);
 int BATtopN(BAT *b, BUN topN);
 BAT *BATundo(BAT *b);
 BAT *BATuselect(BAT *b, const void *tl, const void *th);
@@ -244,8 +246,8 @@ int GDKms(void);
 int GDKnr_threads;
 void GDKprotect(void);
 int GDKprotected;
-void GDKqsort(void *h, void *t, void *base, size_t n, int hs, int ts, int tpe);
-void GDKqsort_rev(void *h, void *t, void *base, size_t n, int hs, int ts, int 
tpe);
+void GDKqsort(void *h, void *t, const void *base, size_t n, int hs, int ts, 
int tpe);
+void GDKqsort_rev(void *h, void *t, const void *base, size_t n, int hs, int 
ts, int tpe);
 void *GDKrealloc(void *pold, size_t size);
 void GDKsetenv(str name, str value);
 ssize_t GDKstrFromStr(unsigned char *dst, const unsigned char *src, ssize_t 
len);
@@ -624,7 +626,6 @@ str ALGjoinPath(Client cntxt, MalBlkPtr 
 BAT *ALGjoinPathBody(Client cntxt, int top, BAT **joins, int flag);
 str ALGjoinestimate(int *result, int *lid, int *rid, lng *estimate);
 str ALGkdiff(int *result, int *lid, int *rid);
-str ALGkintersect(int *result, int *lid, int *rid);
 str ALGkunion(int *result, int *lid, int *rid);
 str ALGkunique(int *result, int *bid);
 str ALGleftfetchjoin(int *result, int *lid, int *rid);
@@ -715,6 +716,8 @@ str ALGstdev_int(dbl *res, int *bid);
 str ALGstdev_lng(dbl *res, int *bid);
 str ALGstdev_sht(dbl *res, int *bid);
 str ALGstdev_wrd(dbl *res, int *bid);
+str ALGsubselect1(bat *result, bat *bid, const void *low, const void *high, 
const bit *li, const bit *hi, const bit *anti);
+str ALGsubselect2(bat *result, bat *bid, bat *sid, const void *low, const void 
*high, const bit *li, const bit *hi, const bit *anti);
 str ALGsum_bte_bte(bte *res, int *bid, bit *empty_is_nil);
 str ALGsum_bte_dbl(dbl *res, int *bid, bit *empty_is_nil);
 str ALGsum_bte_int(int *res, int *bid, bit *empty_is_nil);
@@ -744,6 +747,8 @@ str ALGtdiff(int *result, int *lid, int 
 str ALGthetajoin(int *result, int *lid, int *rid, int *opc);
 str ALGthetajoinEstimate(int *result, int *lid, int *rid, int *opc, lng 
*estimate);
 str ALGthetaselect(int *result, int *bid, ptr low, str *op);
+str ALGthetasubselect1(bat *result, bat *bid, const void *val, const char 
**op);
+str ALGthetasubselect2(bat *result, bat *bid, bat *sid, const void *val, const 
char **op);
 str ALGthetauselect(int *result, int *bid, ptr value, str *op);
 str ALGthsort(int *result, int *lid);
 str ALGtintersect(int *result, int *lid, int *rid);
@@ -1769,60 +1774,6 @@ void MSresetInstructions(MalBlkPtr mb, i
 void MSresetVariables(Client cntxt, MalBlkPtr mb, MalStkPtr glb, int start);
 void MSscheduleClient(str command, str challenge, bstream *fin, stream *fout);
 void MSserveClient(void *dummy);
-str MTIMEaccum_date_EQ(int *ret, int *d, int *l, int *r);
-str MTIMEaccum_date_EQ_cst(int *ret, int *r, int *l, date *cst);
-str MTIMEaccum_date_GE(int *ret, int *d, int *l, int *r);
-str MTIMEaccum_date_GE_cst(int *ret, int *r, int *l, date *cst);
-str MTIMEaccum_date_GT(int *ret, int *d, int *l, int *r);
-str MTIMEaccum_date_GT_cst(int *ret, int *r, int *l, date *cst);
-str MTIMEaccum_date_LE(int *ret, int *d, int *l, int *r);
-str MTIMEaccum_date_LE_cst(int *ret, int *r, int *l, date *cst);
-str MTIMEaccum_date_LT(int *ret, int *d, int *l, int *r);
-str MTIMEaccum_date_LT_cst(int *ret, int *r, int *l, date *cst);
-str MTIMEaccum_date_NEQ(int *ret, int *d, int *l, int *r);
-str MTIMEaccum_date_NEQ_cst(int *ret, int *r, int *l, date *cst);
-str MTIMEaccum_date_cst_EQ(int *ret, int *r, date *cst, int *l);
-str MTIMEaccum_date_cst_GE(int *ret, int *r, date *cst, int *l);
-str MTIMEaccum_date_cst_GT(int *ret, int *r, date *cst, int *l);
-str MTIMEaccum_date_cst_LE(int *ret, int *r, date *cst, int *l);
-str MTIMEaccum_date_cst_LT(int *ret, int *r, date *cst, int *l);
-str MTIMEaccum_date_cst_NEQ(int *ret, int *r, date *cst, int *l);
-str MTIMEaccum_daytime_EQ(int *ret, int *d, int *l, int *r);
-str MTIMEaccum_daytime_EQ_cst(int *ret, int *r, int *l, daytime *cst);
-str MTIMEaccum_daytime_GE(int *ret, int *d, int *l, int *r);
-str MTIMEaccum_daytime_GE_cst(int *ret, int *r, int *l, daytime *cst);
-str MTIMEaccum_daytime_GT(int *ret, int *d, int *l, int *r);
-str MTIMEaccum_daytime_GT_cst(int *ret, int *r, int *l, daytime *cst);
-str MTIMEaccum_daytime_LE(int *ret, int *d, int *l, int *r);
-str MTIMEaccum_daytime_LE_cst(int *ret, int *r, int *l, daytime *cst);
-str MTIMEaccum_daytime_LT(int *ret, int *d, int *l, int *r);
-str MTIMEaccum_daytime_LT_cst(int *ret, int *r, int *l, daytime *cst);
-str MTIMEaccum_daytime_NEQ(int *ret, int *d, int *l, int *r);
-str MTIMEaccum_daytime_NEQ_cst(int *ret, int *r, int *l, daytime *cst);
-str MTIMEaccum_daytime_cst_EQ(int *ret, int *r, daytime *cst, int *l);
-str MTIMEaccum_daytime_cst_GE(int *ret, int *r, daytime *cst, int *l);
-str MTIMEaccum_daytime_cst_GT(int *ret, int *r, daytime *cst, int *l);
-str MTIMEaccum_daytime_cst_LE(int *ret, int *r, daytime *cst, int *l);
-str MTIMEaccum_daytime_cst_LT(int *ret, int *r, daytime *cst, int *l);
-str MTIMEaccum_daytime_cst_NEQ(int *ret, int *r, daytime *cst, int *l);
-str MTIMEaccum_timestamp_EQ(int *ret, int *d, int *l, int *r);
-str MTIMEaccum_timestamp_EQ_cst(int *ret, int *r, int *l, timestamp *cst);
-str MTIMEaccum_timestamp_GE(int *ret, int *d, int *l, int *r);
-str MTIMEaccum_timestamp_GE_cst(int *ret, int *r, int *l, timestamp *cst);
-str MTIMEaccum_timestamp_GT(int *ret, int *d, int *l, int *r);
-str MTIMEaccum_timestamp_GT_cst(int *ret, int *r, int *l, timestamp *cst);
-str MTIMEaccum_timestamp_LE(int *ret, int *d, int *l, int *r);
-str MTIMEaccum_timestamp_LE_cst(int *ret, int *r, int *l, timestamp *cst);
-str MTIMEaccum_timestamp_LT(int *ret, int *d, int *l, int *r);
-str MTIMEaccum_timestamp_LT_cst(int *ret, int *r, int *l, timestamp *cst);
-str MTIMEaccum_timestamp_NEQ(int *ret, int *d, int *l, int *r);
-str MTIMEaccum_timestamp_NEQ_cst(int *ret, int *r, int *l, timestamp *cst);
-str MTIMEaccum_timestamp_cst_EQ(int *ret, int *r, timestamp *cst, int *l);
-str MTIMEaccum_timestamp_cst_GE(int *ret, int *r, timestamp *cst, int *l);
-str MTIMEaccum_timestamp_cst_GT(int *ret, int *r, timestamp *cst, int *l);
-str MTIMEaccum_timestamp_cst_LE(int *ret, int *r, timestamp *cst, int *l);
-str MTIMEaccum_timestamp_cst_LT(int *ret, int *r, timestamp *cst, int *l);
-str MTIMEaccum_timestamp_cst_NEQ(int *ret, int *r, timestamp *cst, int *l);
 str MTIMEbat_date_EQ(int *ret, int *l, int *r);
 str MTIMEbat_date_EQ_cst(int *ret, int *l, date *cst);
 str MTIMEbat_date_GE(int *ret, int *l, int *r);
@@ -2088,8 +2039,6 @@ int OPTremoteQueriesImplementation(Clien
 int OPTreorderImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
 str OPTsetDebugStr(int *ret, str *nme);
 int OPTstrengthReductionImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr 
stk, InstrPtr pci);
-str OPTtraceCall(MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
-int OPTtraceImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 str OPTvector(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str OPTvectorOid(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str OPTwrapper(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p);
@@ -2108,6 +2057,8 @@ str PCRElike3(bit *ret, str *s, str *pat
 str PCRElike_join_pcre(int *ret, int *b, int *pat, str *esc);
 str PCRElike_select_pcre(int *ret, int *b, str *pat, str *esc);
 str PCRElike_uselect_pcre(int *ret, int *b, str *pat, str *esc);
+str PCRElikesubselect1(bat *ret, bat *bid, str *pat, str *esc, bit 
*caseignore, bit *anti);
+str PCRElikesubselect2(bat *ret, bat *bid, bat *sid, str *pat, str *esc, bit 
*caseignore, bit *anti);
 str PCREmatch(bit *ret, str *val, str *pat);
 str PCREnotilike2(bit *ret, str *s, str *pat);
 str PCREnotilike3(bit *ret, str *s, str *pat, str *esc);
diff --git a/clients/python/monetdb/sql/cursors.py 
b/clients/python/monetdb/sql/cursors.py
--- a/clients/python/monetdb/sql/cursors.py
+++ b/clients/python/monetdb/sql/cursors.py
@@ -158,6 +158,9 @@ class Cursor(object):
         # clear message history
         self.messages = []
 
+        # convert to utf-8
+        operation = unicode(operation).encode('utf-8')
+
         # set the number of rows to fetch
         self.connection.command('Xreply_size %s' % self.arraysize)
 
@@ -172,12 +175,8 @@ class Cursor(object):
             if isinstance(parameters, dict):
                 query = operation % dict([(k, monetize.convert(v))
                     for (k,v) in parameters.items()])
-            elif type(parameters) == list:
-                query = operation % tuple([monetize.convert(item)
-                    for item in parameters])
-            elif type(parameters) == tuple:
-                query = operation % tuple([monetize.convert(item)
-                    for item in parameters])
+            elif type(parameters) == list or type(parameters) == tuple:
+                query = operation % tuple([monetize.convert(item) for item in 
parameters])
             elif isinstance(parameters, str):
                 query = operation % monetize.convert(parameters)
             else:
diff --git a/clients/python/monetdb/sql/monetize.py 
b/clients/python/monetdb/sql/monetize.py
--- a/clients/python/monetdb/sql/monetize.py
+++ b/clients/python/monetdb/sql/monetize.py
@@ -22,6 +22,7 @@ functions for converting python objects 
 import datetime
 import decimal
 
+from monetdb.exceptions import ProgrammingError
 
 def monet_none(data):
     """
@@ -76,4 +77,9 @@ def convert(data):
     try:
         return mapping[type(data)](data)
     except KeyError:
-        raise ProgrammingError("type %s not supported as value" % type(data))
\ No newline at end of file
+        if hasattr(data, '__unicode__'):
+            return unicode(data).encode('utf-8')
+        elif hasattr(data, '__str__'):
+            return str(data)
+        else:
+            raise ProgrammingError("type %s not supported as value" % 
type(data))
\ No newline at end of file
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -1648,28 +1648,30 @@ if test "x$have_pthread" != xno; then
        esac
        CPPFLAGS="$save_CPPFLAGS"
 
-       case $GCC in
-               yes)
+       save_LIBS="$LIBS"
+       save_CPPFLAGS="$CPPFLAGS"
+       case $GCC-$have_pthread in
+               yes-auto|yes-yes)
                        # use GCC's knowledge about the target platform, sets 
flags
                        # for both the preprocessor as well as the linker
-                       PTHREAD_INCS="$PTHREAD_INCS -pthread"
-                       PTHREAD_LIBS="$PTHREAD_LIBS -pthread"
-                       CPPFLAGS="$CPPFLAGS -pthread"
-                       LIBS="$LIBS -pthread"
+                       PTHREAD_INCS="-pthread"
+                       PTHREAD_LIBS="-pthread"
+                       CPPFLAGS="$CPPFLAGS $PTHREAD_INCS"
+                       LIBS="$LIBS $PTHREAD_LIBS"
                ;;
                *)
-                       save_LIBS="$LIBS"
                        # ok, do old-fashioned stuff
-                       LIBS="$LIBS $PTHREAD_LIBS" # in case user did 
--with-pthreads
+                       CPPFLAGS="$CPPFLAGS $PTHREAD_INCS" # in case user did 
--with-pthreads
+                       LIBS="$LIBS $PTHREAD_LIBS"
                        pthread_found=yes
                        AC_SEARCH_LIBS([sem_init], [pthreadGC2 pthreadGC1 
pthreadGC pthread],
-                               [PTHREAD_LIBS="$PTHREAD_LIBS 
$ac_cv_search_sem_init"],
+                               [LIBS="$LIBS $ac_cv_search_sem_init"],
                                [pthread_found=no])
                        if test x"$pthread_found" = xno ; then
                                pthread_found=yes
                                dnl sun
                                AC_SEARCH_LIBS([sem_post], [pthread],
-                                       [PTHREAD_LIBS="$PTHREAD_LIBS -lpthread 
-lposix4"],
+                                       [LIBS="$LIBS -lpthread -lposix4"],
                                        [pthread_found=no],
                                        "-lposix4")
                        fi
@@ -1677,7 +1679,7 @@ if test "x$have_pthread" != xno; then
                                pthread_found=yes
                                dnl hp-ux
                                AC_SEARCH_LIBS([sem_post], [pthread],
-                                       [PTHREAD_LIBS="$PTHREAD_LIBS -lpthread 
-lrt"],
+                                       [LIBS="$LIBS -lpthread -lrt"],
                                        [pthread_found=no],
                                        "-lrt")
                        fi
@@ -1687,7 +1689,7 @@ if test "x$have_pthread" != xno; then
                                fi
                                have_pthread=no
                        fi
-                       LIBS="$save_LIBS"
+                       PTHREAD_LIBS="$LIBS"
                ;;
        esac
 
@@ -1706,11 +1708,9 @@ if test "x$have_pthread" != xno; then
        dnl this function very ugly is overloaded with semaphore stuff
        dnl so we DO need to check for it, for platforms which have it
        dnl in a separate lib, like Solaris
-       oldLIBS="$LIBS"
-       LIBS="$PTHREAD_LIBS"
        AC_SEARCH_LIBS(sem_wait, rt)
-       PTHREAD_LIBS="$LIBS"
-       LIBS="$oldLIBS"
+
+       LIBS="$save_LIBS"
        CPPFLAGS="$save_CPPFLAGS"
 
 fi
diff --git a/gdk/Makefile.ag b/gdk/Makefile.ag
--- a/gdk/Makefile.ag
+++ b/gdk/Makefile.ag
@@ -19,22 +19,11 @@ MTSAFE
 
 INCLUDES = ../common/options ../common/stream ../common/utils 
$(valgrind_CFLAGS)
 
-EXTRA_DIST = gdk_scanselect_defs.mx
-
 lib_gdk = {
        VERSION = $(GDK_VERSION)
        NAME = bat
        SOURCES = \
-               gdk_scanselect_defs_bte.mx \
-               gdk_scanselect_defs_sht.mx \
-               gdk_scanselect_defs_int.mx \
-               gdk_scanselect_defs_flt.mx \
-               gdk_scanselect_defs_dbl.mx \
-               gdk_scanselect_defs_lng.mx \
-               gdk_scanselect_defs_str.mx \
-               gdk_scanselect_defs_fix.mx \
-               gdk_scanselect_defs_var.mx \
-               gdk_scanselect.mx gdk.h gdk_batop.c \
+               gdk.h gdk_batop.c gdk_select.c \
                gdk_search.c gdk_search.h gdk_tm.c \
                gdk_align.c gdk_bbp.c gdk_bbp.h \
                gdk_heap.c gdk_setop.mx gdk_utils.c gdk_utils.h \
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1683,8 +1683,8 @@ gdk_export int BATordered_rev(BAT *b);
 gdk_export BAT *BATssort(BAT *b);
 gdk_export BAT *BATssort_rev(BAT *b);
 
-gdk_export void GDKqsort(void *h, void *t, void *base, size_t n, int hs, int 
ts, int tpe);
-gdk_export void GDKqsort_rev(void *h, void *t, void *base, size_t n, int hs, 
int ts, int tpe);
+gdk_export void GDKqsort(void *h, void *t, const void *base, size_t n, int hs, 
int ts, int tpe);
+gdk_export void GDKqsort_rev(void *h, void *t, const void *base, size_t n, int 
hs, int ts, int tpe);
 
 #define BAThordered(b) ((b)->htype == TYPE_void || (b)->hsorted)
 #define BATtordered(b) ((b)->ttype == TYPE_void || (b)->tsorted)
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to