Here's an alternative hack: do it all in mclient.
--- MapiClient.mx 13 Apr 2010 15:40:07 z 1.203
+++ MapiClient.mx 14 Apr 2010 11:16:21 z
@@ -881,12 +881,19 @@
RAWrenderer(MapiHdl hdl)
{
char *line;
+ size_t n;
SQLqueryEcho(hdl);
while ((line = fetch_line(hdl)) != 0) {
if (*line == '=')
line++;
- stream_printf(toConsole, "%s\n", line);
+ if (mode == XQUERY && mark &&
+ (n = strlen(line)) > 5 &&
+ strncmp(line + n - 5, " msec", 5) == 0) {
+ stream_flush(toConsole);
+ fprintf(stderr, "%s\n", line);
+ } else
+ stream_printf(toConsole, "%s\n", line);
}
}
On 14-4-2010 12:39, Stefan Manegold wrote:
> On Tue, Apr 13, 2010 at 12:43:06PM +0000, Sjoerd Mullender wrote:
>> Update of /cvsroot/monetdb/clients/src/mapiclient
>> In directory sfp-cvsdas-4.v30.ch3.sourceforge.com:/tmp/cvs-serv15694
>>
>> Modified Files:
>> MapiClient.mx
>> Log Message:
>> Once again print timer information to stderr.
>> If you want to combine timer information with the regular output, you
>> can do
>> mclient -t ... 2>&1
>> This works since the standard output is flushed before the timer
>> information is printed.
>> And if you only want timer information, you can do
>> mclient -t ... >/dev/null
>>
>
> I briefly tried to do the same for break-down timings given by pathfinder
> (MonetDB/XQuery), but the changes (see diff below) don't help, mainly since
> the break-down timings are printed in MIL, and even fprintf(stderr(), ...)
> in MIL goes to stdout due to
> MonetDB/src/gdk/gdk.mx:2737:#define GDKerr GDKout
>
> which is probably required because MAPI only used one stream.
>
> I'm not sure whether it's worth to persue this fruther, e.g., by making
> mclient aware of the pathfinder/XQuery break-down timings and have re-direct
> them to (its) stderr ...
>
> Stefan
>
> ========
> Index: pathfinder/compiler/include/mil.h
> ===================================================================
> RCS file: /cvsroot/monetdb/pathfinder/compiler/include/mil.h,v
> retrieving revision 1.89
> diff -u -r1.89 mil.h
> --- pathfinder/compiler/include/mil.h 7 Jan 2010 15:24:27 -0000 1.89
> +++ pathfinder/compiler/include/mil.h 14 Apr 2010 10:33:26 -0000
> @@ -385,6 +385,7 @@
>
> , m_print /**< MIL print() function */
> , m_printf /**< MIL printf() function */
> + , m_printerr /**< MIL fprintf(stderr(),...) function */
>
> , m_col_name /**< assign BAT column name (for debugging only) */
>
> @@ -1014,6 +1015,7 @@
>
> PFmil_t * PFmil_print (const PFmil_t *);
> PFmil_t * PFmil_printf (const PFmil_t *);
> +PFmil_t * PFmil_printerr (const PFmil_t *);
> PFmil_t * PFmil_col_name (const PFmil_t *, const PFmil_t *);
> PFmil_t * PFmil_comment (const char *, ...)
> __attribute__ ((format (printf, 1, 2)));
> Index: pathfinder/compiler/compile.c
> ===================================================================
> RCS file: /cvsroot/monetdb/pathfinder/compiler/compile.c,v
> retrieving revision 1.186
> diff -u -r1.186 compile.c
> --- pathfinder/compiler/compile.c 7 Jan 2010 15:24:27 -0000 1.186
> +++ pathfinder/compiler/compile.c 14 Apr 2010 10:33:26 -0000
> @@ -801,7 +801,7 @@
> /* make runtime timing available */
> if (status->timing) {
> mroot = PFmil_seq (mroot,
> - PFmil_printf (
> + PFmil_printerr (
> PFmil_arg (PFmil_lit_str ("\nShred % 10.3f
> msec"
> "\nQuery % 10.3f
> msec"
> "\nPrint % 10.3f
> msec\n"),
> @@ -1082,7 +1082,7 @@
> if (!strncmp ("timing", genType, 6))
> /* add timing information */
> mroot = PFmil_seq (mroot,
> - PFmil_printf (
> + PFmil_printerr (
> PFmil_arg (PFmil_lit_str ("\nTrans %
> 10.3f msec"
> "\nShred %
> 10.3f msec"
> "\nQuery %
> 10.3f msec"
> Index: pathfinder/compiler/mil/mil.c
> ===================================================================
> RCS file: /cvsroot/monetdb/pathfinder/compiler/mil/mil.c,v
> retrieving revision 1.86
> diff -u -r1.86 mil.c
> --- pathfinder/compiler/mil/mil.c 7 Jan 2010 15:24:28 -0000 1.86
> +++ pathfinder/compiler/mil/mil.c 14 Apr 2010 10:33:26 -0000
> @@ -1896,6 +1896,12 @@
> }
>
> PFmil_t *
> +PFmil_printerr (const PFmil_t *args)
> +{
> + return wire1 (m_printerr, args);
> +}
> +
> +PFmil_t *
> PFmil_col_name (const PFmil_t *bat, const PFmil_t *name)
> {
> return wire2 (m_col_name, bat, name);
> Index: pathfinder/compiler/mil/mil_dce.c
> ===================================================================
> RCS file: /cvsroot/monetdb/pathfinder/compiler/mil/mil_dce.c,v
> retrieving revision 1.34
> diff -u -r1.34 mil_dce.c
> --- pathfinder/compiler/mil/mil_dce.c 7 Jan 2010 15:24:28 -0000 1.34
> +++ pathfinder/compiler/mil/mil_dce.c 14 Apr 2010 10:33:27 -0000
> @@ -474,6 +474,7 @@
> case m_error:
> case m_print:
> case m_printf:
> + case m_printerr:
> case m_break:
> case m_use:
> case m_update_tape:
> Index: pathfinder/compiler/mil/milprint.c
> ===================================================================
> RCS file: /cvsroot/monetdb/pathfinder/compiler/mil/milprint.c,v
> retrieving revision 1.101
> diff -u -r1.101 milprint.c
> --- pathfinder/compiler/mil/milprint.c 7 Jan 2010 15:24:28 -0000
> 1.101
> +++ pathfinder/compiler/mil/milprint.c 14 Apr 2010 10:33:27 -0000
> @@ -28,6 +28,7 @@
> | 'ERROR (' expression ')' <m_error>
> | 'print (' args ')' <m_print>
> | 'printf (' args ')' <m_printf>
> + | 'printerr (' args ')' <m_printerr>
> | 'col_name (' expr ',' expr ')' <m_col_name>
> | 'destroy_ws (' expression ')' <m_destroy_ws>
> | 'end_ws (' expression ',' expression ')' <m_end_ws>
> @@ -673,6 +674,13 @@
> milprintf (")");
> break;
>
> + /* statement: 'fprintf ( stderr (), ' expression ')' */
> + case m_printerr:
> + milprintf ("fprintf ( stderr (),");
> + print_args (n->child[0]);
> + milprintf (")");
> + break;
> +
> case m_col_name:
> print_expression (n->child[0]);
> milprintf (".%s (", ID[n->kind]);
> Index: pathfinder/compiler/mil/milprint_summer.c
> ===================================================================
> RCS file: /cvsroot/monetdb/pathfinder/compiler/mil/milprint_summer.c,v
> retrieving revision 1.438
> diff -u -r1.438 milprint_summer.c
> --- pathfinder/compiler/mil/milprint_summer.c 12 Jan 2010 09:22:14 -0000
> 1.438
> +++ pathfinder/compiler/mil/milprint_summer.c 14 Apr 2010 10:33:27 -0000
> @@ -11616,7 +11616,7 @@
> " ERROR(err); -(try);\n"\
> "} else if (genType.startsWith(\"timing\")) {\n"\
> " time_print := usec() - time_print;\n"\
> - " printf(\"\\nTrans %% 10.3f msec\\nShred %% 10.3f msec\\nQuery
> %% 10.3f msec\\n" LASTPHASE " %% 10.3f msec\\n\","\
> + " fprintf(stderr(),\"\\nTrans %% 10.3f msec\\nShred %% 10.3f
> msec\\nQuery %% 10.3f msec\\n" LASTPHASE " %% 10.3f msec\\n\","\
> " dbl(time_compile)/1000.0, dbl(time_shred)/1000.0,
> dbl(time_exec - time_shred)/1000.0, time_print/1000.0);\n}"
>
> const char* PFstopMIL(int statement_type) {
> Index: pathfinder/runtime/pathfinder.mx
> ===================================================================
> RCS file: /cvsroot/monetdb/pathfinder/runtime/pathfinder.mx,v
> retrieving revision 1.480
> diff -u -r1.480 pathfinder.mx
> --- pathfinder/runtime/pathfinder.mx 12 Apr 2010 09:20:51 -0000 1.480
> +++ pathfinder/runtime/pathfinder.mx 14 Apr 2010 10:33:27 -0000
> @@ -6336,7 +6336,7 @@
> /* execute query */
> xquery = p+1;
> if (p[1] == '4' && p[2] == '2' && p[3] == '\n' && p[4] == 0 && genType ==
> buf && output[2] == 0) { /* use '42' as latency query test */
> - stream_printf(GDKout, "42\n\nTrans 0.000 msec\nShred 0.000
> msec\nQuery 0.000 msec\nPrint 0.000 msec\n");
> + stream_printf(GDKerr, "42\n\nTrans 0.000 msec\nShred 0.000
> msec\nQuery 0.000 msec\nPrint 0.000 msec\n");
> } else {
> err = xquery_change_genType(ctx, genType);
> if (err == NULL)
> ========
>
>>
>> Index: MapiClient.mx
>> ===================================================================
>> RCS file: /cvsroot/monetdb/clients/src/mapiclient/MapiClient.mx,v
>> retrieving revision 1.201
>> retrieving revision 1.202
>> diff -u -d -r1.201 -r1.202
>> --- MapiClient.mx 29 Mar 2010 18:45:15 -0000 1.201
>> +++ MapiClient.mx 13 Apr 2010 12:43:04 -0000 1.202
>> @@ -332,10 +332,11 @@
>> static void
>> timerEnd(void)
>> {
>> + stream_flush(toConsole);
>> t1 = gettime();
>> if (mark && specials == NOmodifier) {
>> - stream_printf(toConsole, "%s %7ld.%03ld msec %s\n", mark,
>> (long) ((t1 - t0) / 1000), (long) ((t1 - t0) % 1000), mark2 ? mark2 : "");
>> - stream_flush(toConsole);
>> + fprintf(stderr, "%s %7ld.%03ld msec %s\n", mark, (long) ((t1 -
>> t0) / 1000), (long) ((t1 - t0) % 1000), mark2 ? mark2 : "");
>> + fflush(stderr);
>> }
>> }
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Download Intel® Parallel Studio Eval
>> Try the new software tools for yourself. Speed compiling, find bugs
>> proactively, and fine-tune applications for parallel performance.
>> See why Intel Parallel Studio got high marks during beta.
>> http://p.sf.net/sfu/intel-sw-dev
>> _______________________________________________
>> Monetdb-checkins mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/monetdb-checkins
>
--
Sjoerd Mullender
signature.asc
Description: OpenPGP digital signature
------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev
_______________________________________________ Monetdb-developers mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/monetdb-developers
