Changeset: 19543ade4f6c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=19543ade4f6c
Added Files:
        
sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-distinct.Bug-6411.stable.err
        
sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-distinct.Bug-6411.stable.out
        
sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-not-in.Bug-6416.sql
        sql/test/bugs/Tests/in.sql
        sql/test/bugs/Tests/in.stable.err
        sql/test/bugs/Tests/in.stable.out
Removed Files:
        ChangeLog.Dec2016
        buildtools/ChangeLog.Dec2016
        clients/ChangeLog.Dec2016
        clients/mapilib/ChangeLog.Dec2016
        common/stream/ChangeLog.Dec2016
        gdk/ChangeLog.Dec2016
        geom/ChangeLog.Dec2016
        monetdb5/ChangeLog.Dec2016
        sql/ChangeLog.Dec2016
        testing/ChangeLog.Dec2016
        tools/merovingian/ChangeLog.Dec2016
Modified Files:
        clients/odbc/driver/SQLGetInfo.c
        gdk/gdk_utils.c
        monetdb5/mal/mal_instruction.c
        monetdb5/mal/mal_interpreter.c
        monetdb5/mal/mal_linker.c
        monetdb5/mal/mal_listing.c
        monetdb5/mal/mal_sabaoth.c
        monetdb5/modules/mal/mal_mapi.c
        monetdb5/modules/mal/mdb.c
        monetdb5/modules/mal/remote.c
        monetdb5/optimizer/opt_mergetable.c
        monetdb5/optimizer/opt_remoteQueries.c
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/vaults/bam/Tests/query2.1.stable.out
        sql/backends/monet5/vaults/bam/Tests/query2.10.stable.out
        sql/backends/monet5/vaults/bam/Tests/query2.2.stable.out
        sql/backends/monet5/vaults/bam/Tests/query2.2.stable.out.int128
        sql/backends/monet5/vaults/bam/Tests/query2.6.sql
        sql/backends/monet5/vaults/bam/Tests/query2.6.stable.out
        sql/server/rel_dump.c
        sql/server/rel_exp.c
        sql/server/rel_exp.h
        sql/server/rel_optimizer.c
        sql/server/rel_rel.c
        sql/server/rel_select.c
        sql/server/sql_semantic.c
        
sql/test/BugDay_2005-10-06_2.9.3/Tests/simple_union.SF-1005596.stable.out
        sql/test/BugTracker-2012/Tests/null_except_null.Bug-3040.stable.out
        sql/test/BugTracker-2015/Tests/and_or_in.Bug-3655.stable.out
        
sql/test/BugTracker-2016/Tests/memory-consumption-query-PLAN-25joins.Bug-3972.stable.out
        sql/test/BugTracker-2017/Tests/All
        sql/test/BugTracker-2017/Tests/caching_stats_bug.6374.stable.out
        
sql/test/BugTracker-2017/Tests/statistics_nils_not_eq_zero.Bug-6331.stable.out
        sql/test/Dependencies/Tests/Dependencies.stable.out
        sql/test/Dependencies/Tests/Dependencies.stable.out.int128
        sql/test/Tests/str-pad.sql
        sql/test/Tests/str-pad.stable.out
        sql/test/bugs/Tests/All
        
sql/test/bugs/Tests/subselect_multiple_unionall_where_1=1-bug-sf-1005596.stable.out
        sql/test/bugs/Tests/union_all-bug-sf-941788.stable.out
        sql/test/mergetables/Tests/part-elim.stable.out
Branch: default
Log Message:

Merge with Jul2017


diffs (truncated from 3064 to 300 lines):

diff --git a/ChangeLog.Dec2016 b/ChangeLog.Dec2016
deleted file mode 100644
--- a/ChangeLog.Dec2016
+++ /dev/null
@@ -1,3 +0,0 @@
-# ChangeLog file for devel
-# This file is updated with Maddlog
-
diff --git a/buildtools/ChangeLog.Dec2016 b/buildtools/ChangeLog.Dec2016
deleted file mode 100644
--- a/buildtools/ChangeLog.Dec2016
+++ /dev/null
@@ -1,3 +0,0 @@
-# ChangeLog file for buildtools
-# This file is updated with Maddlog
-
diff --git a/clients/ChangeLog.Dec2016 b/clients/ChangeLog.Dec2016
deleted file mode 100644
--- a/clients/ChangeLog.Dec2016
+++ /dev/null
@@ -1,7 +0,0 @@
-# ChangeLog file for clients
-# This file is updated with Maddlog
-
-* Mon Jun 12 2017 Sjoerd Mullender <[email protected]>
-- A bug was fixed in the implementation of the functions SQLTables in
-  the ODBC driver where not enough memory was allocated.
-
diff --git a/clients/mapilib/ChangeLog.Dec2016 
b/clients/mapilib/ChangeLog.Dec2016
deleted file mode 100644
--- a/clients/mapilib/ChangeLog.Dec2016
+++ /dev/null
@@ -1,3 +0,0 @@
-# ChangeLog file for mapilib
-# This file is updated with Maddlog
-
diff --git a/clients/odbc/driver/SQLGetInfo.c b/clients/odbc/driver/SQLGetInfo.c
--- a/clients/odbc/driver/SQLGetInfo.c
+++ b/clients/odbc/driver/SQLGetInfo.c
@@ -1145,10 +1145,14 @@ MNDBGetInfo(ODBCDbc *dbc,
        if (sValue) {
                copyString(sValue, strlen(sValue), InfoValuePtr, BufferLength, 
StringLengthPtr, SQLSMALLINT, addDbcError, dbc, return SQL_ERROR);
        } else if (InfoValuePtr) {
-               if (len == sizeof(SQLULEN))
+               if (len == sizeof(SQLUINTEGER))
+                       *(SQLUINTEGER *) InfoValuePtr = (SQLUINTEGER) nValue;
+#ifndef SQLULEN
+               /* if SQLULEN is defined, it's defined as SQLUINTEGER
+                * which we've handled */
+               else if (len == sizeof(SQLULEN))
                        *(SQLULEN *) InfoValuePtr = (SQLULEN) nValue;
-               else if (len == sizeof(SQLUINTEGER))
-                       *(SQLUINTEGER *) InfoValuePtr = (SQLUINTEGER) nValue;
+#endif
                else if (len == sizeof(SQLUSMALLINT))
                        *(SQLUSMALLINT *) InfoValuePtr = (SQLUSMALLINT) nValue;
                if (StringLengthPtr)
diff --git a/common/stream/ChangeLog.Dec2016 b/common/stream/ChangeLog.Dec2016
deleted file mode 100644
--- a/common/stream/ChangeLog.Dec2016
+++ /dev/null
@@ -1,3 +0,0 @@
-# ChangeLog file for stream
-# This file is updated with Maddlog
-
diff --git a/gdk/ChangeLog.Dec2016 b/gdk/ChangeLog.Dec2016
deleted file mode 100644
--- a/gdk/ChangeLog.Dec2016
+++ /dev/null
@@ -1,3 +0,0 @@
-# ChangeLog file for MonetDB
-# This file is updated with Maddlog
-
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -1659,11 +1659,12 @@ GDKstrndup(const char *s, size_t size)
 {
        char *p;
 
-       if (s == NULL || size == 0)
+       if (s == NULL)
                return NULL;
        if ((p = GDKmalloc_internal(size + 1)) == NULL)
                return NULL;
-       memcpy(p, s, size);
+       if (size > 0)
+               memcpy(p, s, size);
        p[size] = '\0';         /* make sure it's NULL terminated */
        return p;
 }
diff --git a/geom/ChangeLog.Dec2016 b/geom/ChangeLog.Dec2016
deleted file mode 100644
--- a/geom/ChangeLog.Dec2016
+++ /dev/null
@@ -1,3 +0,0 @@
-# ChangeLog file for geom
-# This file is updated with Maddlog
-
diff --git a/monetdb5/ChangeLog.Dec2016 b/monetdb5/ChangeLog.Dec2016
deleted file mode 100644
--- a/monetdb5/ChangeLog.Dec2016
+++ /dev/null
@@ -1,3 +0,0 @@
-# ChangeLog file for MonetDB5
-# This file is updated with Maddlog
-
diff --git a/monetdb5/mal/mal_instruction.c b/monetdb5/mal/mal_instruction.c
--- a/monetdb5/mal/mal_instruction.c
+++ b/monetdb5/mal/mal_instruction.c
@@ -875,12 +875,12 @@ trimMalVariables_(MalBlkPtr mb, MalStkPt
                        freeVariable(mb, i);
                        continue;
                }
-        if (i > cnt) {
-            /* remap temporary variables */
-            VarRecord t = mb->var[cnt];
-            mb->var[cnt] = mb->var[i];
-            mb->var[i] = t;
-        }
+               if (i > cnt) {
+                       /* remap temporary variables */
+                       VarRecord t = mb->var[cnt];
+                       mb->var[cnt] = mb->var[i];
+                       mb->var[i] = t;
+               }
 
                /* valgrind finds a leak when we move these variable record
                 * pointers around. */
@@ -1041,7 +1041,8 @@ convertConstant(int type, ValPtr vr)
                str w;
                if (vr->vtype == TYPE_void || ATOMcmp(vr->vtype, 
ATOMnilptr(vr->vtype), VALptr(vr)) == 0) {
                        vr->vtype = type;
-                       vr->val.sval = GDKstrdup(str_nil);
+                       if ((vr->val.sval = GDKstrdup(str_nil)) == NULL)
+                               throw(SYNTAX, "convertConstant", 
SQLSTATE(HY001) GDK_EXCEPTION);
                        vr->len = (int) strlen(vr->val.sval);
                        return MAL_SUCCEED;
                }
diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c
--- a/monetdb5/mal/mal_interpreter.c
+++ b/monetdb5/mal/mal_interpreter.c
@@ -409,6 +409,8 @@ callMAL(Client cntxt, MalBlkPtr mb, MalS
                 */
                if (*env == NULL) {
                        stk = prepareMALstack(mb, mb->vsize);
+                       if (stk == NULL)
+                               throw(MAL, "mal.interpreter", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
                        stk->up = 0;
                        *env = stk;
                } else {
diff --git a/monetdb5/mal/mal_linker.c b/monetdb5/mal/mal_linker.c
--- a/monetdb5/mal/mal_linker.c
+++ b/monetdb5/mal/mal_linker.c
@@ -110,10 +110,12 @@ getAddress(str fcnname)
        adr = (MALfcn) dlsym(dl, fcnname);
        filesLoaded[lastfile].modname = GDKstrdup("libmonetdb5");
        if(filesLoaded[lastfile].modname == NULL) {
+               dlclose(dl);
                return NULL;
        }
        filesLoaded[lastfile].fullname = GDKstrdup("libmonetdb5");
        if(filesLoaded[lastfile].fullname == NULL) {
+               dlclose(dl);
                GDKfree(filesLoaded[lastfile].modname);
                return NULL;
        }
diff --git a/monetdb5/mal/mal_sabaoth.c b/monetdb5/mal/mal_sabaoth.c
--- a/monetdb5/mal/mal_sabaoth.c
+++ b/monetdb5/mal/mal_sabaoth.c
@@ -108,6 +108,8 @@ str SABAOTHgetLocalConnection(str *ret) 
 
        if (stats != NULL)
                SABAOTHfreeStatus(&stats);
+       if(*ret == NULL)
+               throw(MAL,"sabaoth.getlocalconnection", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
        return(MAL_SUCCEED);
 }
 
diff --git a/monetdb5/modules/mal/mal_mapi.c b/monetdb5/modules/mal/mal_mapi.c
--- a/monetdb5/modules/mal/mal_mapi.c
+++ b/monetdb5/modules/mal/mal_mapi.c
@@ -1157,7 +1157,9 @@ SERVERsetAlias(void *ret, int *key, str 
        int i;
        Mapi mid;
        accessTest(*key, "setAlias");
-    SERVERsessions[i].dbalias= GDKstrdup(*dbalias);
+       SERVERsessions[i].dbalias= GDKstrdup(*dbalias);
+       if(SERVERsessions[i].dbalias == NULL)
+               throw(MAL, "mapi.set_alias", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        (void) ret;
        return MAL_SUCCEED;
 }
@@ -1348,6 +1350,8 @@ SERVERfetch_field_str(str *ret, int *key
        accessTest(*key, "fetch_field");
        fld= mapi_fetch_field(SERVERsessions[i].hdl,*fnr);
        *ret= GDKstrdup(fld? fld: str_nil);
+       if(*ret == NULL)
+               throw(MAL, "mapi.fetch_field_str", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
        if( mapi_error(mid) )
                throw(MAL, "mapi.fetch_field_str", "%s",
                        mapi_result_error(SERVERsessions[i].hdl));
@@ -1465,6 +1469,8 @@ SERVERfetch_line(str *ret, int *key){
                throw(MAL, "mapi.fetch_line", "%s",
                        mapi_result_error(SERVERsessions[i].hdl));
        *ret= GDKstrdup(fld? fld:str_nil);
+       if(*ret == NULL)
+               throw(MAL, "mapi.fetch_line", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        return MAL_SUCCEED;
 }
 
@@ -1538,6 +1544,8 @@ SERVERgetError(str *ret, int *key){
        int i;
        accessTest(*key, "getError");
        *ret= GDKstrdup(mapi_error_str(mid));
+       if(*ret == NULL)
+               throw(MAL, "mapi.get_error", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        return MAL_SUCCEED;
 }
 
@@ -1548,6 +1556,8 @@ SERVERexplain(str *ret, int *key){
 
        accessTest(*key, "explain");
        *ret= GDKstrdup(mapi_error_str(mid));
+       if(*ret == NULL)
+               throw(MAL, "mapi.explain", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        return MAL_SUCCEED;
 }
 /*
@@ -1562,7 +1572,7 @@ SERVERexplain(str *ret, int *key){
  * The generic scheme for handling a remote MAL
  * procedure call with a single row answer.
  */
-static void SERVERfieldAnalysis(str fld, int tpe, ValPtr v){
+static int SERVERfieldAnalysis(str fld, int tpe, ValPtr v){
        v->vtype= tpe;
        switch(tpe){
        case TYPE_void:
@@ -1623,14 +1633,17 @@ static void SERVERfieldAnalysis(str fld,
                break;
        case TYPE_str:
                if(fld==0 || strcmp(fld,"nil")==0){
-                       v->val.sval= GDKstrdup(str_nil);
+                       if((v->val.sval= GDKstrdup(str_nil)) == NULL)
+                               return -1;
                        v->len= (int) strlen(v->val.sval);
                } else {
-                       v->val.sval= GDKstrdup(fld);
+                       if((v->val.sval= GDKstrdup(fld)) == NULL)
+                               return -1;
                        v->len= (int) strlen(fld);
                }
                break;
        }
+       return 0;
 }
 
 str
@@ -1650,9 +1663,11 @@ SERVERmapi_rpc_single_row(Client cntxt, 
        /* glue all strings together */
        for(i= pci->retc+1; i<pci->argc; i++){
                fld= * getArgReference_str(stk,pci,i);
-               if( qry == 0)
+               if( qry == 0) {
                        qry= GDKstrdup(fld);
-               else {
+                       if ( qry == NULL)
+                               throw(MAL, "mapi.rpc",SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
+               } else {
                        s= (char*) GDKmalloc(strlen(qry)+strlen(fld)+1);
                        if ( s == NULL) {
                                GDKfree(qry);
@@ -1689,9 +1704,8 @@ SERVERmapi_rpc_single_row(Client cntxt, 
                        case TYPE_flt:
                        case TYPE_dbl:
                        case TYPE_str:
-                               SERVERfieldAnalysis(fld,
-                                       getVarType(mb,getArg(pci,j)),
-                                       &stk->stk[pci->argv[j]]);
+                               
if(SERVERfieldAnalysis(fld,getVarType(mb,getArg(pci,j)),&stk->stk[pci->argv[j]])
 < 0)
+                                       throw(MAL, "mapi.rpc", MAL_MALLOC_FAIL);
                                break;
                        default:
                                throw(MAL, "mapi.rpc",
@@ -1737,7 +1751,10 @@ SERVERmapi_rpc_bat(Client cntxt, MalBlkP
                throw(MAL,"mapi.rpc", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        while( mapi_fetch_row(hdl)){
                fld2= mapi_fetch_field(hdl,1);
-               SERVERfieldAnalysis(fld2, tt, &tval);
+               if(SERVERfieldAnalysis(fld2, tt, &tval) < 0) {
+                       BBPreclaim(b);
+                       throw(MAL, "mapi.rpc", SQLSTATE(HY001) MAL_MALLOC_FAIL);
+               }
                if (BUNappend(b,VALptr(&tval), FALSE) != GDK_SUCCEED) {
                        BBPreclaim(b);
                        throw(MAL, "mapi.rpc", SQLSTATE(HY001) MAL_MALLOC_FAIL);
@@ -1800,7 +1817,7 @@ SERVERput(Client cntxt, MalBlkPtr mb, Ma
                break;
        default:
                if ((w = ATOMformat(tpe,val)) == NULL)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to