Changeset: 69ecf7008711 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=69ecf7008711
Modified Files:
        monetdb5/misc/Makefile.ag
        monetdb5/misc/msabaoth.c
        monetdb5/misc/msabaoth.h
        monetdb5/modules/mal/Makefile.ag
        sql/backends/monet5/Makefile.ag
        sql/include/sql_catalog.h
        sql/server/rel_dump.c
        sql/server/rel_schema.c
        sql/server/rel_select.c
        sql/server/sql_mvc.c
        sql/server/sql_parser.y
        sql/server/sql_scan.c
        sql/storage/store.c
Branch: sciql
Log Message:

merged from default


diffs (truncated from 5326 to 300 lines):

diff --git a/NT/wincompile.py b/NT/wincompile.py
--- a/NT/wincompile.py
+++ b/NT/wincompile.py
@@ -76,4 +76,7 @@ p = subprocess.Popen(argv, shell = False
 out, err = p.communicate()
 sys.stdout.write(out.replace('\r\n', '\n'))
 sys.stderr.write(err.replace('\r\n', '\n'))
+if p.returncode and not verbose:
+    sys.stderr.write('failed invocation: %s\n' % ' '.join(argv))
+    sys.stderr.flush()
 sys.exit(p.returncode)
diff --git a/buildtools/Mx/Code.c b/buildtools/Mx/Code.c
--- a/buildtools/Mx/Code.c
+++ b/buildtools/Mx/Code.c
@@ -341,8 +341,7 @@ CodeSubBlk(char *sub, char **argv)
       outofmem:
        Error("Limit of %d characters per block reached.", blk_size);
        exit(1);
-       return 0;
-
+       return NULL; /* icc demands this, clang-3.0 chokes on it */
 }
 
 void
diff --git a/buildtools/Mx/Def.c b/buildtools/Mx/Def.c
--- a/buildtools/Mx/Def.c
+++ b/buildtools/Mx/Def.c
@@ -281,12 +281,14 @@ MakeDefs(char *name)
                        if (allTrue()) {
                                d = NwDef(dir, mod, sec, lino, file);
                                /* specially for Windows: replace all /'s with 
DIR_SEP's */
-                               if (DIR_SEP != '/') {
+#if DIR_SEP != '/'
+                               {
                                        char *tmp = cmd;
 
                                        while ((tmp = strchr(tmp, '/')) != NULL)
                                                *tmp++ = DIR_SEP;
                                }
+#endif
                                d->d_cmd = cmd;
                                lastdir = Continue;
                        }
@@ -361,7 +363,6 @@ MakeDefs(char *name)
                        break;
                default:
                        Fatal("MakeDefs", "Unknown directive:%c%c", MARK, dir);
-                       break;
                }
        }
        d = NwDef(Efile, mod, sec, mx_line, mx_file);
diff --git a/buildtools/Mx/Mx.c b/buildtools/Mx/Mx.c
--- a/buildtools/Mx/Mx.c
+++ b/buildtools/Mx/Mx.c
@@ -146,8 +146,7 @@ main(int argc, char **argv)
        if (mode & M_DRAFT)
                GenForm();
 
-       exit(mx_err ? 1 : 0);
-       return 1;
+       return(mx_err ? 1 : 0);
 }
 
 Directive str2dir[] = {
diff --git a/buildtools/Mx/Tok.c b/buildtools/Mx/Tok.c
--- a/buildtools/Mx/Tok.c
+++ b/buildtools/Mx/Tok.c
@@ -122,7 +122,7 @@ NxtTok(Tok * t)
 
                if (!HideDir(t->t_dir))
                        for (; t->t_nxt[0]; t->t_nxt++) {
-                               if ((t->t_nxt[0] == '\n'))
+                               if (t->t_nxt[0] == '\n')
                                        break;
                                if ((t->t_nxt[0] == MARK) && (t->t_nxt[-1] != 
'\\'))
                                        break;
diff --git a/buildtools/conf/rules.mk b/buildtools/conf/rules.mk
--- a/buildtools/conf/rules.mk
+++ b/buildtools/conf/rules.mk
@@ -26,7 +26,7 @@ MX = $(top_builddir)/buildtools/Mx/Mx
 # first, also with bison-generated files.  This is crucial
 # to prevent inconsistent (re-)definitions of macros.
 %.tab.c: %.y
-       $(LOCKFILE) waiting
+       touch waiting.$$$$ && until ln waiting.$$$$ waiting 2>/dev/null; do 
sleep 1; done && rm waiting.$$$$
        $(YACC) $(YFLAGS) $(AM_YFLAGS) $< || { $(RM) waiting ; exit 1 ; }
        if [ -f y.tab.c ]; then $(MV) y.tab.c $*.tab.c ; fi
        $(MV) $*.tab.c $*.tab.c.tmp
@@ -37,14 +37,14 @@ MX = $(top_builddir)/buildtools/Mx/Mx
        $(RM) waiting
 
 %.tab.h: %.y
-       $(LOCKFILE) waiting
+       touch waiting.$$$$ && until ln waiting.$$$$ waiting 2>/dev/null; do 
sleep 1; done && rm waiting.$$$$
        $(YACC) $(YFLAGS) $(AM_YFLAGS) $< || { $(RM) waiting ; exit 1 ; }
        if [ -f y.tab.h ]; then $(MV) y.tab.h $*.tab.h ; fi
        [ ! -f y.tab.c ] || $(RM) y.tab.c
        $(RM) waiting
 
 %.yy.c: %.l
-       $(LOCKFILE) waiting
+       touch waiting.$$$$ && until ln waiting.$$$$ waiting 2>/dev/null; do 
sleep 1; done && rm waiting.$$$$
        $(LEX) $(LFLAGS) $(AM_LFLAGS) $< || { $(RM) waiting ; exit 1 ; }
        if [ -f $(LEX_OUTPUT_ROOT).c ]; then $(MV) $(LEX_OUTPUT_ROOT).c $*.yy.c 
; fi
        $(MV) $*.yy.c $*.yy.c.tmp
diff --git a/clients/ChangeLog.Dec2011 b/clients/ChangeLog.Dec2011
--- a/clients/ChangeLog.Dec2011
+++ b/clients/ChangeLog.Dec2011
@@ -1,6 +1,15 @@
 # ChangeLog file for clients
 # This file is updated with Maddlog
 
+* Wed Dec  7 2011 Fabian Groffen <fab...@cwi.nl>
+- Fix making connections with stethoscope to hosts without monetdbd.
+  Bug #2944.
+
+* Tue Dec  6 2011 Fabian Groffen <fab...@cwi.nl>
+- Fixed some bugs in the PHP interface affecting the mapi_ping(),
+  monetdb_insert_id() and auto_commit() functions.  Bugs #2936, #2937,
+  #2938.
+
 * Tue Nov 15 2011 Sjoerd Mullender <sjo...@acm.org>
 - ODBC: Fixed SQLNumResultCols and SQLDescribeCol to return useful
   information after a call to SQLPrepare and before any SQLExecute.
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
@@ -375,6 +375,21 @@ char *mo_find_option(opt *set, int setle
 void mo_free_options(opt *set, int setlen);
 void mo_print_options(opt *set, int setlen);
 int mo_system_config(opt **Set, int setlen);
+char *msab_deserialise(sabdb **ret, char *sabdb);
+char *msab_freeStatus(sabdb **ret);
+char *msab_getDBfarm(char **ret);
+char *msab_getDBname(char **ret);
+char *msab_getMyStatus(sabdb **ret);
+char *msab_getStatus(sabdb **ret, char *dbname);
+char *msab_getUplogInfo(sabuplog *ret, const sabdb *db);
+void msab_init(char *dbfarm, char *dbname);
+char *msab_marchConnection(const char *host, const int port);
+char *msab_marchScenario(const char *lang);
+char *msab_registerStart(void);
+char *msab_registerStop(void);
+char *msab_retreatScenario(const char *lang);
+char *msab_serialise(char **ret, const sabdb *db);
+char *msab_wildRetreat(void);
 const oid oid_nil;
 DIR *opendir(const char *dirname);
 void print_trace(void);
@@ -6044,21 +6059,6 @@ int moreClients(int reruns);
 void moveInstruction(MalBlkPtr mb, int pc, int target);
 lng msComputeTime;
 lng msFindTime;
-char *msab_deserialise(sabdb **ret, char *sabdb);
-char *msab_freeStatus(sabdb **ret);
-char *msab_getDBfarm(char **ret);
-char *msab_getDBname(char **ret);
-char *msab_getMyStatus(sabdb **ret);
-char *msab_getStatus(sabdb **ret, char *dbname);
-char *msab_getUplogInfo(sabuplog *ret, const sabdb *db);
-void msab_init(char *dbfarm, char *dbname);
-char *msab_marchConnection(const char *host, const int port);
-char *msab_marchScenario(const char *lang);
-char *msab_registerStart(void);
-char *msab_registerStop(void);
-char *msab_retreatScenario(const char *lang);
-char *msab_serialise(char **ret, const sabdb *db);
-char *msab_wildRetreat(void);
 str mtimeRef;
 str multiplexRef;
 str mvcRef;
diff --git a/clients/mapiclient/stethoscope.c b/clients/mapiclient/stethoscope.c
--- a/clients/mapiclient/stethoscope.c
+++ b/clients/mapiclient/stethoscope.c
@@ -238,6 +238,7 @@ doProfile(void *d)
        MapiHdl hdl = NULL;
 
        /* set up the profiler */
+       id[0] = '\0';
        dbh = mapi_mapiuri(wthr->uri, wthr->user, wthr->pass, "mal");
        if (dbh == NULL || mapi_error(dbh))
                die(dbh, hdl);
@@ -248,7 +249,6 @@ doProfile(void *d)
                snprintf(id, 10, "[%d] ", wthr->tid);
                printf("-- connection with server %s is %s\n", wthr->uri, id);
        } else {
-               id[0] = '\0';
                printf("-- connection with server %s\n", wthr->uri);
        }
 
@@ -437,7 +437,7 @@ main(int argc, char **argv)
                dbname = "";
        }
 
-       if (alts == NULL) {
+       if (alts == NULL || *alts == NULL) {
                /* nothing to redirect, so a single host to try */
                char uri[512];
                snprintf(uri, 512, "mapi:monetdb://%s:%d/%s", host, portnr, 
dbname);
@@ -465,31 +465,26 @@ main(int argc, char **argv)
        } else {
                /* fork runner threads for all alternatives */
                i = 1;
-               if (*alts != NULL) {
-                       walk = thds = malloc(sizeof(wthread));
-                       while (1) {
-                               walk->tid = i++;
-                               walk->uri = *alts;
-                               walk->user = user;
-                               walk->pass = password;
-                               walk->argc = argc - a;
-                               walk->argv = &argv[a];
-                               walk->s = NULL;
+               walk = thds = malloc(sizeof(wthread));
+               while (1) {
+                       walk->tid = i++;
+                       walk->uri = *alts;
+                       walk->user = user;
+                       walk->pass = password;
+                       walk->argc = argc - a;
+                       walk->argv = &argv[a];
+                       walk->s = NULL;
 #if !defined(HAVE_PTHREAD_H) && defined(_MSC_VER)
-                               walk->id = CreateThread(NULL, 0, doProfile, 
walk, 0, NULL);
+                       walk->id = CreateThread(NULL, 0, doProfile, walk, 0, 
NULL);
 #else
-                               pthread_create(&walk->id, NULL, &doProfile, 
walk);
+                       pthread_create(&walk->id, NULL, &doProfile, walk);
 #endif
-                               alts++;
-                               if (*alts == NULL)
-                                       break;
-                               walk = walk->next = malloc(sizeof(wthread));
-                       }
-                       walk->next = NULL;
-               } else {
-                       fprintf(stderr, "%s: no databases found for '%s'\n",
-                                       argv[0], dbname);
+                       alts++;
+                       if (*alts == NULL)
+                               break;
+                       walk = walk->next = malloc(sizeof(wthread));
                }
+               walk->next = NULL;
                free(oalts);
                for (walk = thds; walk != NULL; walk = walk->next) {
 #if !defined(HAVE_PTHREAD_H) && defined(_MSC_VER)
diff --git a/clients/odbc/driver/ODBCConvert.c 
b/clients/odbc/driver/ODBCConvert.c
--- a/clients/odbc/driver/ODBCConvert.c
+++ b/clients/odbc/driver/ODBCConvert.c
@@ -1009,6 +1009,8 @@ ODBCFetch(ODBCStmt *stmt,
        TIMESTAMP_STRUCT tsval;
        double fval = 0;
 
+       assert(ptr != NULL);
+
        ird = stmt->ImplRowDescr;
        ard = stmt->ApplRowDescr;
 
@@ -1022,13 +1024,13 @@ ODBCFetch(ODBCStmt *stmt,
        ardrec = col <= ard->sql_desc_count ? &ard->descRec[col] : NULL;
        sql_type = irdrec->sql_desc_concise_type;
 
-       if (ptr && offset)
-               ptr = (SQLPOINTER) ((char *) ptr + offset + row * (bind_type == 
SQL_BIND_BY_COLUMN ? sizeof(SQLPOINTER) : bind_type));
+       if (offset > 0)
+               ptr = (SQLPOINTER) ((char *) ptr + offset);
 
-       if (lenp && offset)
-               lenp = (SQLLEN *) ((char *) lenp + offset + row * (bind_type == 
SQL_BIND_BY_COLUMN ? sizeof(SQLINTEGER) : bind_type));
-       if (nullp && offset)
-               nullp = (SQLLEN *) ((char *) nullp + offset + row * (bind_type 
== SQL_BIND_BY_COLUMN ? sizeof(SQLINTEGER) : bind_type));
+       if (lenp)
+               lenp = (SQLLEN *) ((char *) lenp + offset + row * (bind_type == 
SQL_BIND_BY_COLUMN ? sizeof(*lenp) : bind_type));
+       if (nullp)
+               nullp = (SQLLEN *) ((char *) nullp + offset + row * (bind_type 
== SQL_BIND_BY_COLUMN ? sizeof(*nullp) : bind_type));
 
        /* translate default type */
        /* note, type can't be SQL_ARD_TYPE since when this function
@@ -1233,9 +1235,12 @@ ODBCFetch(ODBCStmt *stmt,
                if (type == SQL_C_WCHAR) {
                        /* allocate temporary space */
                        buflen = 511; /* should be enough for most types */
-                       if (sql_type == SQL_CHAR && data != NULL)
-                               buflen = (SQLLEN) datalen; /* but this is 
certainly enough for strings */
-                       ptr = malloc(buflen + 1);
+                       if (data != NULL &&
+                           (sql_type == SQL_CHAR ||
+                            sql_type == SQL_VARCHAR ||
+                            sql_type == SQL_LONGVARCHAR))
+                               buflen = (SQLLEN) datalen + 1; /* but this is 
certainly enough for strings */
+                       ptr = malloc(buflen);
 
                        lenp = NULL;
                }
diff --git a/clients/odbc/driver/ODBCGlobal.h b/clients/odbc/driver/ODBCGlobal.h
--- a/clients/odbc/driver/ODBCGlobal.h
+++ b/clients/odbc/driver/ODBCGlobal.h
@@ -95,18 +95,20 @@
 #ifdef SQLLEN                  /* it's a define for 32, a typedef for 64 */
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to