Changeset: aed165a30e88 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=aed165a30e88 Added Files: clients/odbc/samples/arraytest.c monetdb5/extras/jaql/30_jaql.mal monetdb5/extras/jaql/Makefile.ag monetdb5/extras/jaql/Tests/All monetdb5/extras/jaql/Tests/expand00.mal monetdb5/extras/jaql/Tests/expand00.stable.err monetdb5/extras/jaql/Tests/expand00.stable.out monetdb5/extras/jaql/Tests/expand01.mal monetdb5/extras/jaql/Tests/expand01.stable.err monetdb5/extras/jaql/Tests/expand01.stable.out monetdb5/extras/jaql/Tests/filter00.mal monetdb5/extras/jaql/Tests/filter00.stable.err monetdb5/extras/jaql/Tests/filter00.stable.out monetdb5/extras/jaql/Tests/filter01.mal monetdb5/extras/jaql/Tests/filter01.stable.err monetdb5/extras/jaql/Tests/filter01.stable.out monetdb5/extras/jaql/Tests/func00.mal monetdb5/extras/jaql/Tests/func00.stable.err monetdb5/extras/jaql/Tests/func00.stable.out monetdb5/extras/jaql/Tests/func01.mal monetdb5/extras/jaql/Tests/func01.stable.err monetdb5/extras/jaql/Tests/func01.stable.out monetdb5/extras/jaql/Tests/group00.mal monetdb5/extras/jaql/Tests/group00.stable.err monetdb5/extras/jaql/Tests/group00.stable.out monetdb5/extras/jaql/Tests/group01.mal monetdb5/extras/jaql/Tests/group01.stable.err monetdb5/extras/jaql/Tests/group01.stable.out monetdb5/extras/jaql/Tests/join00.mal monetdb5/extras/jaql/Tests/join00.stable.err monetdb5/extras/jaql/Tests/join00.stable.out monetdb5/extras/jaql/Tests/join01.mal monetdb5/extras/jaql/Tests/join01.stable.err monetdb5/extras/jaql/Tests/join01.stable.out monetdb5/extras/jaql/Tests/join02.mal monetdb5/extras/jaql/Tests/join02.stable.err monetdb5/extras/jaql/Tests/join02.stable.out monetdb5/extras/jaql/Tests/json00.mal monetdb5/extras/jaql/Tests/json00.stable.err monetdb5/extras/jaql/Tests/json00.stable.out monetdb5/extras/jaql/Tests/json01.mal monetdb5/extras/jaql/Tests/json01.stable.err monetdb5/extras/jaql/Tests/json01.stable.out monetdb5/extras/jaql/Tests/json02.mal monetdb5/extras/jaql/Tests/json02.stable.err monetdb5/extras/jaql/Tests/json02.stable.out monetdb5/extras/jaql/Tests/json03.mal monetdb5/extras/jaql/Tests/json03.stable.err monetdb5/extras/jaql/Tests/json03.stable.out monetdb5/extras/jaql/Tests/json04.mal monetdb5/extras/jaql/Tests/json04.stable.err monetdb5/extras/jaql/Tests/json04.stable.out monetdb5/extras/jaql/Tests/json05.mal monetdb5/extras/jaql/Tests/json05.stable.err monetdb5/extras/jaql/Tests/json05.stable.out monetdb5/extras/jaql/Tests/plan00.mal monetdb5/extras/jaql/Tests/plan00.stable.err monetdb5/extras/jaql/Tests/plan00.stable.out monetdb5/extras/jaql/Tests/plan01.mal monetdb5/extras/jaql/Tests/plan01.stable.err monetdb5/extras/jaql/Tests/plan01.stable.out monetdb5/extras/jaql/Tests/plan02.mal monetdb5/extras/jaql/Tests/plan02.stable.err monetdb5/extras/jaql/Tests/plan02.stable.out monetdb5/extras/jaql/Tests/sort00.mal monetdb5/extras/jaql/Tests/sort00.stable.err monetdb5/extras/jaql/Tests/sort00.stable.out monetdb5/extras/jaql/Tests/sort01.mal monetdb5/extras/jaql/Tests/sort01.stable.err monetdb5/extras/jaql/Tests/sort01.stable.out monetdb5/extras/jaql/Tests/top00.mal monetdb5/extras/jaql/Tests/top00.stable.err monetdb5/extras/jaql/Tests/top00.stable.out monetdb5/extras/jaql/Tests/top01.mal monetdb5/extras/jaql/Tests/top01.stable.err monetdb5/extras/jaql/Tests/top01.stable.out monetdb5/extras/jaql/Tests/transform00.mal monetdb5/extras/jaql/Tests/transform00.stable.err monetdb5/extras/jaql/Tests/transform00.stable.out monetdb5/extras/jaql/Tests/transform01.mal monetdb5/extras/jaql/Tests/transform01.stable.err monetdb5/extras/jaql/Tests/transform01.stable.out monetdb5/extras/jaql/Tests/transform02.mal monetdb5/extras/jaql/Tests/transform02.stable.err monetdb5/extras/jaql/Tests/transform02.stable.out monetdb5/extras/jaql/Tests/variable00.mal monetdb5/extras/jaql/Tests/variable00.stable.err monetdb5/extras/jaql/Tests/variable00.stable.out monetdb5/extras/jaql/jaql.c monetdb5/extras/jaql/jaql.h monetdb5/extras/jaql/jaql.mal monetdb5/extras/jaql/jaqlfunc.mal monetdb5/extras/jaql/jaqlgencode.c monetdb5/extras/jaql/jaqlgencode.h monetdb5/extras/jaql/jaqlscenario.c monetdb5/extras/jaql/jaqlscenario.h monetdb5/extras/jaql/jaqltests/Tests/All monetdb5/extras/jaql/jaqltests/Tests/expand.jaql monetdb5/extras/jaql/jaqltests/Tests/expand.stable.err monetdb5/extras/jaql/jaqltests/Tests/expand.stable.out monetdb5/extras/jaql/jaqltests/Tests/filter.jaql monetdb5/extras/jaql/jaqltests/Tests/filter.stable.err monetdb5/extras/jaql/jaqltests/Tests/filter.stable.out monetdb5/extras/jaql/jaqltests/Tests/group.jaql monetdb5/extras/jaql/jaqltests/Tests/group.stable.err monetdb5/extras/jaql/jaqltests/Tests/group.stable.out monetdb5/extras/jaql/jaqltests/Tests/join.jaql monetdb5/extras/jaql/jaqltests/Tests/join.stable.err monetdb5/extras/jaql/jaqltests/Tests/join.stable.out monetdb5/extras/jaql/jaqltests/Tests/sort.jaql monetdb5/extras/jaql/jaqltests/Tests/sort.stable.err monetdb5/extras/jaql/jaqltests/Tests/sort.stable.out monetdb5/extras/jaql/jaqltests/Tests/top.jaql monetdb5/extras/jaql/jaqltests/Tests/top.stable.err monetdb5/extras/jaql/jaqltests/Tests/top.stable.out monetdb5/extras/jaql/jaqltests/Tests/transform.jaql monetdb5/extras/jaql/jaqltests/Tests/transform.stable.err monetdb5/extras/jaql/jaqltests/Tests/transform.stable.out monetdb5/extras/jaql/json.c monetdb5/extras/jaql/json.h monetdb5/extras/jaql/json.mal monetdb5/extras/jaql/parser/Makefile.ag monetdb5/extras/jaql/parser/force-jaql-yy-h-gen.c monetdb5/extras/jaql/parser/jaql.l monetdb5/extras/jaql/parser/jaql.y Removed Files: monetdb5/tests/gdkTests/Tests/casts.stable.out.Windows.64bit.oid32 Modified Files: NT/rules.msc buildtools/Mx/Sys.c buildtools/autogen/autogen/codegen.py buildtools/conf/rules.mk clients/mapiclient/Makefile.ag clients/mapiclient/mclient.c clients/mapiclient/stethoscope.c clients/mapilib/mapi.c clients/mapilib/mapi.h clients/odbc/driver/ODBCConvert.c clients/odbc/driver/ODBCDbc.c clients/odbc/driver/ODBCDbc.h clients/odbc/driver/ODBCEnv.c clients/odbc/driver/ODBCEnv.h clients/odbc/driver/ODBCError.c clients/odbc/driver/ODBCError.h clients/odbc/driver/ODBCGlobal.h clients/odbc/driver/ODBCStmt.c clients/odbc/driver/ODBCStmt.h clients/odbc/driver/ODBCUtil.c clients/odbc/driver/ODBCUtil.h clients/odbc/driver/SQLAllocConnect.c clients/odbc/driver/SQLAllocEnv.c clients/odbc/driver/SQLAllocHandle.c clients/odbc/driver/SQLAllocStmt.c clients/odbc/driver/SQLBindCol.c clients/odbc/driver/SQLBindParameter.c clients/odbc/driver/SQLBrowseConnect.c clients/odbc/driver/SQLBulkOperations.c clients/odbc/driver/SQLCancel.c clients/odbc/driver/SQLCloseCursor.c clients/odbc/driver/SQLColAttribute.c clients/odbc/driver/SQLColAttributes.c clients/odbc/driver/SQLColumnPrivileges.c clients/odbc/driver/SQLConnect.c clients/odbc/driver/SQLCopyDesc.c clients/odbc/driver/SQLDataSources.c clients/odbc/driver/SQLDescribeCol.c clients/odbc/driver/SQLDescribeParam.c clients/odbc/driver/SQLDisconnect.c clients/odbc/driver/SQLDriverConnect.c clients/odbc/driver/SQLEndTran.c clients/odbc/driver/SQLError.c clients/odbc/driver/SQLExecDirect.c clients/odbc/driver/SQLExecute.c clients/odbc/driver/SQLExtendedFetch.c clients/odbc/driver/SQLFetch.c clients/odbc/driver/SQLFetchScroll.c clients/odbc/driver/SQLForeignKeys.c clients/odbc/driver/SQLFreeConnect.c clients/odbc/driver/SQLFreeEnv.c clients/odbc/driver/SQLFreeHandle.c clients/odbc/driver/SQLFreeStmt.c clients/odbc/driver/SQLGetConnectAttr.c clients/odbc/driver/SQLGetConnectOption.c clients/odbc/driver/SQLGetCursorName.c clients/odbc/driver/SQLGetData.c clients/odbc/driver/SQLGetDescField.c clients/odbc/driver/SQLGetDescRec.c clients/odbc/driver/SQLGetDiagField.c clients/odbc/driver/SQLGetDiagRec.c clients/odbc/driver/SQLGetEnvAttr.c clients/odbc/driver/SQLGetFunctions.c clients/odbc/driver/SQLGetInfo.c clients/odbc/driver/SQLGetStmtAttr.c clients/odbc/driver/SQLGetStmtOption.c clients/odbc/driver/SQLGetTypeInfo.c clients/odbc/driver/SQLMoreResults.c clients/odbc/driver/SQLNativeSql.c clients/odbc/driver/SQLNumParams.c clients/odbc/driver/SQLNumResultCols.c clients/odbc/driver/SQLParamData.c clients/odbc/driver/SQLParamOptions.c clients/odbc/driver/SQLPrepare.c clients/odbc/driver/SQLPrimaryKeys.c clients/odbc/driver/SQLProcedureColumns.c clients/odbc/driver/SQLProcedures.c clients/odbc/driver/SQLPutData.c clients/odbc/driver/SQLRowCount.c clients/odbc/driver/SQLSetConnectAttr.c clients/odbc/driver/SQLSetConnectOption.c clients/odbc/driver/SQLSetCursorName.c clients/odbc/driver/SQLSetDescField.c clients/odbc/driver/SQLSetDescRec.c clients/odbc/driver/SQLSetEnvAttr.c clients/odbc/driver/SQLSetParam.c clients/odbc/driver/SQLSetPos.c clients/odbc/driver/SQLSetScrollOptions.c clients/odbc/driver/SQLSetStmtAttr.c clients/odbc/driver/SQLSetStmtOption.c clients/odbc/driver/SQLSpecialColumns.c clients/odbc/driver/SQLStatistics.c clients/odbc/driver/SQLTablePrivileges.c clients/odbc/driver/SQLTables.c clients/odbc/driver/SQLTransact.c clients/odbc/samples/Makefile.ag configure.ag gdk/gdk_atoms.mx gdk/gdk_utils.mx monetdb5/extras/Makefile.ag monetdb5/mal/mal_interpreter.mx monetdb5/mal/mal_resolve.c monetdb5/modules/kernel/algebra.mx monetdb5/modules/mal/Tests/inspect05.stable.out monetdb5/modules/mal/mat.mx monetdb5/optimizer/Tests/All monetdb5/optimizer/Tests/mat00.stable.out monetdb5/optimizer/Tests/mat01.mal monetdb5/optimizer/Tests/mat01.stable.out monetdb5/optimizer/opt_centipede.mx monetdb5/optimizer/opt_groups.mx monetdb5/optimizer/opt_pipes.c monetdb5/scheduler/srvpool.c monetdb5/tests/gdkTests/Tests/casts.stable.out.Windows monetdb5/tests/gdkTests/Tests/casts.stable.out.Windows.64bit.oid64 sql/backends/monet5/UDF/udf.c sql/backends/monet5/UDF/udf.h sql/backends/monet5/datacell/basket.c sql/backends/monet5/datacell/datacell.c sql/backends/monet5/sql.mx sql/backends/monet5/sql_emptyset.c sql/backends/monet5/vaults/fits.c sql/test/bugs/Tests/crash_order_by.stable.out testing/Mfilter.py.in testing/Mtest.py.in tools/merovingian/daemon/controlrunner.c tools/merovingian/daemon/merovingian.c Branch: DVframework Log Message:
merge with default. diffs (truncated from 23330 to 300 lines): diff --git a/NT/rules.msc b/NT/rules.msc --- a/NT/rules.msc +++ b/NT/rules.msc @@ -385,6 +385,11 @@ create_winconfig_conds_new_py: !ELSE $(ECHO) HAVE_SQL_FALSE='' >> "$(TOPDIR)\winconfig_conds_new.py" !ENDIF +!IFDEF HAVE_JAQL + $(ECHO) HAVE_JAQL_FALSE='#' >> "$(TOPDIR)\winconfig_conds_new.py" +!ELSE + $(ECHO) HAVE_JAQL_FALSE='' >> "$(TOPDIR)\winconfig_conds_new.py" +!ENDIF !IFDEF HAVE_TESTING $(ECHO) HAVE_TESTING_FALSE='#' >> "$(TOPDIR)\winconfig_conds_new.py" !ELSE diff --git a/buildtools/Mx/Sys.c b/buildtools/Mx/Sys.c --- a/buildtools/Mx/Sys.c +++ b/buildtools/Mx/Sys.c @@ -30,7 +30,6 @@ int mx_out = 1; extern int somethingPrinted; /* used for preventing to empty display lines */ -/* VARARGS */ void ofile_printf(const char *format, ...) { diff --git a/buildtools/autogen/autogen/codegen.py b/buildtools/autogen/autogen/codegen.py --- a/buildtools/autogen/autogen/codegen.py +++ b/buildtools/autogen/autogen/codegen.py @@ -77,7 +77,7 @@ end_code_extract = { 'mx': e_mx, 'mx.in' # direct rules code_gen = {'y': [ '.tab.c', '.tab.h' ], 'tab.c': [ '.tab.o' ], - 'l': [ '.yy.c' ], + 'l': [ '.yy.c', '.yy.h' ], 'yy.c': [ '.yy.o' ], 'mt': [ '.symbols.h', '.c' ], 'brg': [ '.c' ], diff --git a/buildtools/conf/rules.mk b/buildtools/conf/rules.mk --- a/buildtools/conf/rules.mk +++ b/buildtools/conf/rules.mk @@ -51,6 +51,14 @@ MX = $(top_builddir)/buildtools/Mx/Mx echo '#include <'"$(CONFIG_H)"'>' > $*.yy.c grep -v '^#include.*[<"]'"$(CONFIG_H)"'[">]' $*.yy.c.tmp >> $*.yy.c $(RM) $*.yy.c.tmp + [ -f $(LEX_OUTPUT_ROOT).h ] && $(RM) $(LEX_OUTPUT_ROOT).h + $(RM) waiting + +%.yy.h: %.l + 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).h ]; then $(MV) $(LEX_OUTPUT_ROOT).h $*.yy.h ; fi + [ -f $(LEX_OUTPUT_ROOT).c ] && $(RM) $(LEX_OUTPUT_ROOT).c $(RM) waiting %.def: %.syms diff --git a/clients/mapiclient/Makefile.ag b/clients/mapiclient/Makefile.ag --- a/clients/mapiclient/Makefile.ag +++ b/clients/mapiclient/Makefile.ag @@ -42,7 +42,7 @@ bin_stethoscope = { SOURCES = stethoscope.c LIBS = libmcutil ../mapilib/libmapi \ ../../common/stream/libstream \ - $(curl_LIBS) $(MALLOC_LIBS) $(PTHREAD_LIBS) + $(curl_LIBS) $(MALLOC_LIBS) $(PTHREAD_LIBS) $(SOCKET_LIBS) } bin_mnc = { diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -83,7 +83,8 @@ enum modes { MAL, - SQL + SQL, + JAQL }; static enum modes mode = SQL; @@ -112,7 +113,8 @@ enum formatters { TABLEformatter, CSVformatter, XMLformatter, - TESTformatter + TESTformatter, + CLEANformatter }; static enum formatters formatter = NOformatter; char *output = NULL; /* output format as string */ @@ -654,7 +656,9 @@ CSVrenderer(MapiHdl hdl) s = mapi_fetch_field(hdl, i); if (s == NULL) s = nullstring == default_nullstring ? "" : nullstring; - if (strchr(s, *sep) != NULL || strchr(s, '\n') != NULL || strchr(s, '"') != NULL) { + if (strchr(s, *sep) != NULL || + strchr(s, '\n') != NULL || + strchr(s, '"') != NULL) { mnstr_printf(toConsole, "%s\"", i == 0 ? "" : sep); while (*s) { @@ -675,8 +679,6 @@ CSVrenderer(MapiHdl hdl) mnstr_write(toConsole, "\"\"", 1, 2); break; default: - if (*s == *sep) - mnstr_write(toConsole, "\\", 1, 1); mnstr_write(toConsole, s, 1, 1); break; } @@ -969,6 +971,21 @@ TESTrenderer(MapiHdl hdl) } static void +CLEANrenderer(MapiHdl hdl) +{ + char *reply; + + SQLqueryEcho(hdl); + while (!mnstr_errnr(toConsole) && (reply = fetch_line(hdl)) != 0) { + if (*reply == '%') + continue; + if (*reply == '=') + reply++; + mnstr_printf(toConsole, "%s\n", reply); + } +} + +static void RAWrenderer(MapiHdl hdl) { char *line; @@ -1304,6 +1321,8 @@ setFormatter(char *s) #endif if (strcmp(s, "sql") == 0) { formatter = TABLEformatter; + } else if (strcmp(s, "jaql") == 0) { + formatter = CLEANformatter; } else if (strcmp(s, "csv") == 0) { formatter = CSVformatter; separator = strdup(","); @@ -1414,7 +1433,7 @@ format_result(Mapi mid, MapiHdl hdl, cha /* handle errors first */ if ((reply = mapi_result_error(hdl)) != NULL) { mnstr_flush(toConsole); - if (formatter == TABLEformatter) { + if (formatter == TABLEformatter || formatter == CLEANformatter) { fprintf(stderr, "%s", reply); } else { mapi_explain_result(hdl, stderr); @@ -1527,6 +1546,9 @@ format_result(Mapi mid, MapiHdl hdl, cha case TESTformatter: TESTrenderer(hdl); break; + case CLEANformatter: + CLEANrenderer(hdl); + break; case TABLEformatter: switch (specials) { case DEBUGmodifier: @@ -2411,6 +2433,9 @@ doFile(Mapi mid, const char *file, int u case TESTformatter: mnstr_printf(toConsole, "test\n"); break; + case CLEANformatter: + mnstr_printf(toConsole, "jaql\n"); + break; case XMLformatter: mnstr_printf(toConsole, "xml\n"); break; @@ -2699,6 +2724,9 @@ main(int argc, char **argv) } else if (strcmp(language, "mal") == 0) { mode = MAL; q = NULL; + } else if (strcmp(language, "jaql") == 0) { + mode = JAQL; + q = NULL; } else { /* make sure we don't set garbage */ mnstr_printf(stderr_stream, @@ -2775,14 +2803,22 @@ main(int argc, char **argv) case 'l': /* accept unambiguous prefix of language */ if (strcmp(optarg, "sql") == 0 || - strcmp(optarg, "sq") == 0 || strcmp(optarg, "s") == 0 || - strcmp(optarg, "sql") == 0) { + strcmp(optarg, "sq") == 0 || + strcmp(optarg, "s") == 0) + { language = optarg; mode = SQL; } else if (strcmp(optarg, "mal") == 0 || strcmp(optarg, "ma") == 0) { language = "mal"; mode = MAL; + } else if (strcmp(optarg, "jaql") == 0 || + strcmp(optarg, "jaq") == 0 || + strcmp(optarg, "ja") == 0 || + strcmp(optarg, "j") == 0) + { + language = "jaql"; + mode = JAQL; } else if (strcmp(optarg, "msql") == 0) { language = "msql"; mode = MAL; @@ -2968,6 +3004,8 @@ main(int argc, char **argv) } else { if (mode == SQL) { setFormatter("sql"); + } else if (mode == JAQL) { + setFormatter("jaql"); } else { setFormatter("raw"); } @@ -2977,10 +3015,13 @@ main(int argc, char **argv) if (!has_fileargs && command == NULL && isatty(fileno(stdin))) { char *lang; - if (mode == SQL) + if (mode == SQL) { lang = "/SQL"; - else + } else if (mode == JAQL) { + lang = "/JAQL"; + } else { lang = ""; + } mnstr_printf(toConsole, "Welcome to mclient, the MonetDB%s " diff --git a/clients/mapiclient/stethoscope.c b/clients/mapiclient/stethoscope.c --- a/clients/mapiclient/stethoscope.c +++ b/clients/mapiclient/stethoscope.c @@ -17,11 +17,6 @@ * All Rights Reserved. */ -/** - * stethoscope - * author Martin Kersten - */ - #include "monetdb_config.h" #include "monet_options.h" #include <mapi.h> @@ -107,6 +102,7 @@ typedef struct _wthread { } wthread; static wthread *thds = NULL; +static char hostname[128]; static void usage(void) @@ -243,10 +239,11 @@ doProfile(void *d) goto stop_cleanup; } - printf("-- %sopened UDP profile stream for %s:%d\n", id, host, portnr); + printf("-- %sopened UDP profile stream %s:%d for %s\n", + id, hostname, portnr, host); snprintf(buf, BUFSIZ, "port := profiler.openStream(\"%s\", %d);", - host, portnr); + hostname, portnr); doQ(buf); /* Set Filters */ @@ -452,6 +449,9 @@ main(int argc, char **argv) close(0); /* get rid of stdin */ + /* our hostname, how remote servers have to contact us */ + gethostname(hostname, sizeof(hostname)); + /* try and find multiple options, we assume that we always need a * local merovingian for that, in the future we probably need to fix * this in a decent manner */ @@ -507,7 +507,6 @@ main(int argc, char **argv) if (*alts == NULL) break; walk = walk->next = malloc(sizeof(wthread)); - printf("Alternative route created '%s'\n",walk->uri); } walk->next = NULL; free(oalts); diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c --- a/clients/mapilib/mapi.c +++ b/clients/mapilib/mapi.c @@ -1373,6 +1373,9 @@ mapi_ping(Mapi mid) case LANG_MAL: hdl = mapi_query(mid, "io.print(1);"); break; + case LANG_JAQL: + hdl = mapi_query(mid, "[1];"); + break; } if (hdl) mapi_close_handle(hdl); @@ -1912,6 +1915,8 @@ mapi_mapiuri(const char *url, const char _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list