Changeset: e31299d8163d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e31299d8163d
Added Files:
        sql/test/BugTracker-2015/Tests/not-like-without-wildcard.Bug-3811.sql
        
sql/test/BugTracker-2015/Tests/not-like-without-wildcard.Bug-3811.stable.err
        
sql/test/BugTracker-2015/Tests/not-like-without-wildcard.Bug-3811.stable.out
Modified Files:
        gdk/gdk_private.h
        sql/backends/monet5/vaults/fits.c
        sql/backends/monet5/vaults/netcdf.c
        sql/server/rel_optimizer.c
        sql/test/BugTracker-2015/Tests/All
Branch: default
Log Message:

Merge with Jul2015 branch.


diffs (truncated from 469 to 300 lines):

diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -426,6 +426,25 @@ extern MT_Lock MT_system_lock;
                                __func__, __FILE__, __LINE__);          \
                _res;                                                   \
         })
+#define GDKmremap(p, m, oa, os, ns)                                    \
+       ({                                                              \
+               const char *_path = (p);                                \
+               int _mode = (m);                                        \
+               void *_oa = (oa);                                       \
+               size_t _os = (os);                                      \
+               size_t *_ns = (ns);                                     \
+               size_t _ons = *_ns;                                     \
+               void *_res = GDKmremap(_path, _mode, _oa, _os, _ns);    \
+               ALLOCDEBUG                                              \
+                       fprintf(stderr,                                 \
+                               "#GDKmremap(%s,0x%x," PTRFMT "," SZFMT "," 
SZFMT " > " SZFMT ") -> " PTRFMT \
+                               " %s[%s:%d]\n",                         \
+                               _path ? _path : "NULL", _mode,          \
+                               PTRFMTCAST _oa, _os, _ons, *_ns,        \
+                               PTRFMTCAST _res,                        \
+                               __func__, __FILE__, __LINE__);          \
+               _res;                                                   \
+        })
 #else
 static inline void *
 GDKmallocmax_debug(size_t size, size_t *psize, int emergency,
@@ -462,6 +481,23 @@ GDKreallocmax_debug(void *ptr, size_t si
        return res;
 }
 #define GDKreallocmax(p, s, ps, e)     GDKreallocmax_debug((p), (s), (ps), 
(e), __FILE__, __LINE__)
+#define GDKmremap(p, m, oa, os, ns)    GDKmremap_debug(p, m, os, os, ns, 
__FILE__, __LINE__)
+static inline void *
+GDKmremap_debug(const char *path, int mode, void *old_address, size_t 
old_size, size_t *new_size, const char *filename, int lineno)
+{
+       size_t orig_new_size = *new_size;
+       void *res = GDKmremap(path, mode, old_address, old_size, new_size);
+       ALLOCDEBUG
+               fprintf(stderr,
+                       "#GDKmremap(%s,0x%x," PTRFMT "," SZFMT "," SZFMT " > " 
SZFMT ") -> " PTRFMT
+                       " [%s:%d]\n",
+                       path ? path : "NULL", mode,
+                       PTRFMTCAST old_address, old_size, orig_new_size, 
*new_size,
+                       PTRFMTCAST res,
+                       filename, lineno);
+       return res;
+}
+
 #endif
 #endif
 
diff --git a/sql/backends/monet5/vaults/fits.c 
b/sql/backends/monet5/vaults/fits.c
--- a/sql/backends/monet5/vaults/fits.c
+++ b/sql/backends/monet5/vaults/fits.c
@@ -180,18 +180,18 @@ str FITSexportTable(Client cntxt, MalBlk
        rids * rs;
 
        int tm0, texportboolean=0, texportchar=0, texportstring=0, 
texportshort=0, texportint=0, texportlong=0, texportfloat=0, texportdouble=0;
-       int numberrow = 0, cc = 0, status = 0, j = 0, columns, fid, dimension = 
0, block = 0;
+       int numberrow = 0, cc = 0, status = 0, j = 0, columns, *fid, dimension 
= 0, block = 0;
        int boolcols = 0, charcols = 0, strcols = 0, shortcols = 0, intcols = 
0, longcols = 0, floatcols = 0, doublecols = 0;
        int hdutype;
 
-       char charvalue, *readcharrows;
+       char *charvalue, *readcharrows;
        str strvalue; char **readstrrows;
-       short shortvalue, *readshortrows;
-       int intvalue, *readintrows;
-       long longvalue, *readlongrows;
-       float realvalue, *readfloatrows;
-       double doublevalue, *readdoublerows;
-       _Bool boolvalue, *readboolrows;
+       short *shortvalue, *readshortrows;
+       int *intvalue, *readintrows;
+       long *longvalue, *readlongrows;
+       float *realvalue, *readfloatrows;
+       double *doublevalue, *readdoublerows;
+       _Bool *boolvalue, *readboolrows;
        struct list * set;
 
        if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != MAL_SUCCEED)
@@ -223,18 +223,20 @@ str FITSexportTable(Client cntxt, MalBlk
        rid = table_funcs.column_find_row(m->session->tr, col, tname, NULL);
 
        col = mvc_bind_column(m, tables, "id");
-       fid = *(int*) table_funcs.column_find_value(m->session->tr, col, rid);
+       fid = (int*) table_funcs.column_find_value(m->session->tr, col, rid);
 
        column =  mvc_bind_table(m, sch, "_columns");
        col = mvc_bind_column(m, column, "table_id");
 
-       rs = table_funcs.rids_select(m->session->tr, col, (void *) &fid, (void 
*) &fid, NULL);
+       rs = table_funcs.rids_select(m->session->tr, col, (void *) fid, (void 
*) fid, NULL);
+       GDKfree(fid);
 
        while ((rid = table_funcs.rids_next(rs)) != oid_nil)
        {
                col = mvc_bind_column(m, column, "name");
                name = (char *) table_funcs.column_find_value(m->session->tr, 
col, rid);
                colname[j] = toLower(name);
+               GDKfree(name);
 
                col = mvc_bind_column(m, column, "type");
                type = (char *) table_funcs.column_find_value(m->session->tr, 
col, rid);
@@ -254,6 +256,7 @@ str FITSexportTable(Client cntxt, MalBlk
                if (strcmp(type,"real")==0) tform[j] = "1E";
 
                if (strcmp(type,"double")==0) tform[j] = "1D";
+               GDKfree(type);
 
                j++;
        }
@@ -291,8 +294,9 @@ str FITSexportTable(Client cntxt, MalBlk
 
                        for (numberrow = 0; numberrow < nrows ; numberrow++)
                        {
-                               boolvalue = *(_Bool*) 
table_funcs.column_find_value(m->session->tr, col, numberrow);
-                               readboolrows[dimension] = boolvalue;
+                               boolvalue = (_Bool*) 
table_funcs.column_find_value(m->session->tr, col, numberrow);
+                               readboolrows[dimension] = *boolvalue;
+                               GDKfree(boolvalue);
                                dimension++;
 
                                if (dimension == optimal)
@@ -320,8 +324,9 @@ str FITSexportTable(Client cntxt, MalBlk
 
                        for (numberrow = 0; numberrow < nrows ; numberrow++)
                        {
-                               charvalue = *(char*) 
table_funcs.column_find_value(m->session->tr, col, numberrow);
-                               readcharrows[dimension] = charvalue;
+                               charvalue = (char*) 
table_funcs.column_find_value(m->session->tr, col, numberrow);
+                               readcharrows[dimension] = *charvalue;
+                               GDKfree(charvalue);
                                dimension++;
 
                                if (dimension == optimal)
@@ -359,6 +364,9 @@ str FITSexportTable(Client cntxt, MalBlk
                                        tm0 = GDKms();
                                        fits_write_col_str(fptr, cc+1, 
(optimal*block)+1, 1, optimal, readstrrows, &status);
                                        texportstring += GDKms() - tm0;
+                                       for (dimension = 0; dimension < 
optimal; dimension++)
+                                               GDKfree(readstrrows[dimension]);
+                                       dimension = 0;
                                        GDKfree(readstrrows);
                                        readstrrows = (char **) 
GDKmalloc(sizeof(char *) * optimal);
                                        block++;
@@ -367,6 +375,8 @@ str FITSexportTable(Client cntxt, MalBlk
                        tm0 = GDKms();
                        fits_write_col_str(fptr, cc+1, (optimal*block)+1, 1, 
dimension, readstrrows, &status);
                        texportstring += GDKms() - tm0;
+                       for (numberrow = 0; numberrow < dimension; numberrow++)
+                               GDKfree(readstrrows[numberrow]);
                        GDKfree(readstrrows);
                }
 
@@ -378,8 +388,9 @@ str FITSexportTable(Client cntxt, MalBlk
 
                        for (numberrow = 0; numberrow < nrows ; numberrow++)
                        {
-                               shortvalue = *(short*) 
table_funcs.column_find_value(m->session->tr, col, numberrow);
-                               readshortrows[dimension] = shortvalue;
+                               shortvalue = (short*) 
table_funcs.column_find_value(m->session->tr, col, numberrow);
+                               readshortrows[dimension] = *shortvalue;
+                               GDKfree(shortvalue);
                                dimension++;
 
                                if (dimension == optimal)
@@ -407,8 +418,9 @@ str FITSexportTable(Client cntxt, MalBlk
 
                        for (numberrow = 0; numberrow < nrows ; numberrow++)
                        {
-                               intvalue = *(int*) 
table_funcs.column_find_value(m->session->tr, col, numberrow);
-                               readintrows[dimension] = intvalue;
+                               intvalue = (int*) 
table_funcs.column_find_value(m->session->tr, col, numberrow);
+                               readintrows[dimension] = *intvalue;
+                               GDKfree(intvalue);
                                dimension++;
 
                                if (dimension == optimal)
@@ -436,8 +448,9 @@ str FITSexportTable(Client cntxt, MalBlk
 
                        for (numberrow = 0; numberrow < nrows ; numberrow++)
                        {
-                               longvalue = *(long*) 
table_funcs.column_find_value(m->session->tr, col, numberrow);
-                               readlongrows[dimension] = longvalue;
+                               longvalue = (long*) 
table_funcs.column_find_value(m->session->tr, col, numberrow);
+                               readlongrows[dimension] = *longvalue;
+                               GDKfree(longvalue);
                                dimension++;
 
                                if (dimension == optimal)
@@ -465,8 +478,9 @@ str FITSexportTable(Client cntxt, MalBlk
 
                        for (numberrow = 0; numberrow < nrows ; numberrow++)
                        {
-                               realvalue = *(float*) 
table_funcs.column_find_value(m->session->tr, col, numberrow);
-                               readfloatrows[dimension] = realvalue;
+                               realvalue = (float*) 
table_funcs.column_find_value(m->session->tr, col, numberrow);
+                               readfloatrows[dimension] = *realvalue;
+                               GDKfree(realvalue);
                                dimension++;
 
                                if (dimension == optimal)
@@ -494,8 +508,9 @@ str FITSexportTable(Client cntxt, MalBlk
 
                        for (numberrow = 0; numberrow < nrows ; numberrow++)
                        {
-                               doublevalue = *(double*) 
table_funcs.column_find_value(m->session->tr, col, numberrow);
-                               readdoublerows[dimension] = doublevalue;
+                               doublevalue = (double*) 
table_funcs.column_find_value(m->session->tr, col, numberrow);
+                               readdoublerows[dimension] = *doublevalue;
+                               GDKfree(doublevalue);
                                dimension++;
 
                                if (dimension == optimal)
@@ -814,7 +829,7 @@ str FITSloadTable(Client cntxt, MalBlkPt
        str fname;
        str msg = MAL_SUCCEED;
        oid rid = oid_nil, frid = oid_nil;
-       int status = 0, cnum = 0, fid, hdu, hdutype, i, j, anynull = 0, mtype;
+       int status = 0, cnum = 0, *fid, *hdu, hdutype, i, j, anynull = 0, mtype;
        int *tpcode = NULL;
        long *rep = NULL, *wid = NULL, rows;
        char keywrd[80], **cname, nm[FLEN_VALUE];
@@ -847,26 +862,31 @@ str FITSloadTable(Client cntxt, MalBlkPt
 
        /* Open FITS file and move to the table HDU */
        col = mvc_bind_column(m, fits_tbl, "file_id");
-       fid = *(int*)table_funcs.column_find_value(m->session->tr, col, rid);
+       fid = (int*)table_funcs.column_find_value(m->session->tr, col, rid);
 
        fits_fl = mvc_bind_table(m, sch, "fits_files");
        col = mvc_bind_column(m, fits_fl, "id");
-       frid = table_funcs.column_find_row(m->session->tr, col, (void *)&fid, 
NULL);
+       frid = table_funcs.column_find_row(m->session->tr, col, (void *)fid, 
NULL);
+       GDKfree(fid);
        col = mvc_bind_column(m, fits_fl, "name");
        fname = (char *)table_funcs.column_find_value(m->session->tr, col, 
frid);
        if (fits_open_file(&fptr, fname, READONLY, &status)) {
                msg = createException(MAL, "fits.loadtable", "Missing FITS file 
%s.\n", fname);
+               GDKfree(fname);
                return msg;
        }
+       GDKfree(fname);
 
        col = mvc_bind_column(m, fits_tbl, "hdu");
-       hdu = *(int*)table_funcs.column_find_value(m->session->tr, col, rid);
-       fits_movabs_hdu(fptr, hdu, &hdutype, &status);
+       hdu = (int*)table_funcs.column_find_value(m->session->tr, col, rid);
+       fits_movabs_hdu(fptr, *hdu, &hdutype, &status);
        if (hdutype != ASCII_TBL && hdutype != BINARY_TBL) {
-               msg = createException(MAL, "fits.loadtable", "HDU %d is not a 
table.\n", hdu);
+               msg = createException(MAL, "fits.loadtable", "HDU %d is not a 
table.\n", *hdu);
+               GDKfree(hdu);
                fits_close_file(fptr, &status);
                return msg;
        }
+       GDKfree(hdu);
 
        /* create a SQL table to hold the FITS table */
        /*      col = mvc_bind_column(m, fits_tbl, "columns");
diff --git a/sql/backends/monet5/vaults/netcdf.c 
b/sql/backends/monet5/vaults/netcdf.c
--- a/sql/backends/monet5/vaults/netcdf.c
+++ b/sql/backends/monet5/vaults/netcdf.c
@@ -656,9 +656,13 @@ NCDFimportVariable(Client cntxt, MalBlkP
        fname = (str)table_funcs.column_find_value(m->session->tr, col, rid);
 
        /* Open NetCDF file  */
-       if ((retval = nc_open(fname, NC_NOWRITE, &ncid)))
-               return createException(MAL, "netcdf.importvar", "Cannot open 
NetCDF file %s: %s", 
+       if ((retval = nc_open(fname, NC_NOWRITE, &ncid))) {
+               char *msg = createException(MAL, "netcdf.importvar", "Cannot 
open NetCDF file %s: %s", 
                           fname, nc_strerror(retval));
+               GDKfree(fname);
+               return msg;
+       }
+       GDKfree(fname);
 
        /* Get info for variable vname from NetCDF file */
        if ( (retval = nc_inq_varid(ncid, vname, &varid)) )
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -5818,7 +5818,7 @@ rel_simplify_like_select(int *changes, m
                        list *l = e->l;
                        list *r = e->r;
 
-                       if (e->type == e_cmp && get_cmp(e) == cmp_filter && 
strcmp(((sql_subfunc*)e->f)->func->base.name, "like") == 0 && list_length(l) == 
1 && list_length(r) <= 2) {
+                       if (e->type == e_cmp && get_cmp(e) == cmp_filter && 
strcmp(((sql_subfunc*)e->f)->func->base.name, "like") == 0 && list_length(l) == 
1 && list_length(r) <= 2 && !(e->flag & ANTISEL)) {
                                list *r = e->r;
                                sql_exp *fmt = r->h->data;
                                sql_exp *esc = 
(r->h->next)?r->h->next->data:NULL;
@@ -5860,7 +5860,7 @@ rel_simplify_like_select(int *changes, m
                                        list *l = e->l;
                                        list *r = e->r;
                                        sql_exp *ne = exp_compare(sql->sa, 
l->h->data, r->h->data, cmp_equal);
-                                       /* if rewriten don't cache this query */
+                                       /* if rewritten don't cache this query 
*/
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to