[prev in list] [next in list] [prev in thread] [next in thread] 

List:       monetdb-developers
Subject:    Re: [Monetdb-developers] [Monetdb-pf-checkins] pathfinder/runtime
From:       Stefan Manegold <Stefan.Manegold () cwi ! nl>
Date:       2008-06-18 8:40:46
Message-ID: 20080618084046.GA29502 () cwi ! nl
[Download RAW message or body]

On Wed, Jun 18, 2008 at 10:25:41AM +0200, Peter Boncz wrote:
> Stefan,
> 
> The pre-parser still uses MPS. It loads and caches modules. When it sees a
> query that is just a function call with simle atomic parameters, it uses the
> fast-path (i.e. execute a precompiled MIL tree). XRPC always enters on the
> fast-path.
> 
> If the query is of any other form, it is fully recompiled and then executed
> with whatever compiler is active (ALG or MPS). This means that indeed
> imported modules may be compiled twice (that was already the case). First,
> the preparser compiles them with MPS and caches them. Second, when re-use it
> is not possible, the complete query is compiled again.

I see. Thanks!

> Porting XRPC to algebra is on Jennie's plate. However, Jennie is not such a
> fast eater and it is a big meal. Therefore, this workaround should go into
> the HEAD also.

Well, it is already there, since you checked it in there, first ;-)

Stefan

> Peter
> 
> -----Original Message-----
> From: Stefan Manegold [mailto:Stefan.Manegold@cwi.nl]
> Sent: woensdag 18 juni 2008 10:11
> To: monetdb-developers@lists.sourceforge.net; Peter Boncz
> Subject: Re: [Monetdb-pf-checkins] pathfinder/runtime pathfinder.mx,
> ,1.421, 1.422 pf_support.mx, , 1.301, 1.302
> 
> 
> On Tue, Jun 17, 2008 at 05:07:29PM +0000, Peter Boncz wrote:
> > Update of /cvsroot/monetdb/pathfinder/runtime
> > In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv2937
> >
> > Modified Files:
> > 	pathfinder.mx pf_support.mx
> > Log Message:
> > - BUG 1995879: only use algebra for normal queries
> >
> >   cachable queries and the XRPC server still use mps
> 
> Peter,
> 
> just for clarification and the records:
> am I right that this means that now all XQuery modules are compiled with
> MPS, but when a (non-XRPC?) query uses an XQuery module, this XQuery itself
> is compiled with ALG? Or are such queries compiled with MPS, too?
> 
> Thanks in advance!
> 
> Stefan
> 
> >
> >
> >
> > U pathfinder.mx
> > Index: pathfinder.mx
> > ===================================================================
> > RCS file: /cvsroot/monetdb/pathfinder/runtime/pathfinder.mx,v
> > retrieving revision 1.421
> > retrieving revision 1.422
> > diff -u -d -r1.421 -r1.422
> > --- pathfinder.mx	16 Jun 2008 23:38:41 -0000	1.421
> > +++ pathfinder.mx	17 Jun 2008 17:07:26 -0000	1.422
> > @@ -4246,7 +4246,7 @@
> >   * - execute MIL buffer (parse & execute)
> >   *
> >   * int
> > - * xquery_compile_exec(xquery_client *ctx, char* xquery, int is_url,
> > + * xquery_compile_exec(xquery_client *ctx, int options, char* xquery, int
> is_url,
> >   *                     char** prologue, char** query, char** epilogue,
> char* nsurl)
> >   * - translate xquery to MIL and execute
> >   *
> > @@ -4345,6 +4345,7 @@
> >  extern char* PFmaxstack;
> >  static int
> >  xquery_compile_exec(xquery_client *ctx,
> > +                    int options,
> >                      char* url,
> >                      int is_url,
> >                      char** prologue,
> > @@ -4356,22 +4357,9 @@
> >      char *xquery = url;
> >      char *err = NULL;
> >
> > -    int options = 0;
> >      /* Setting the StandOff flag based on runtime settings */
> >      if ((GDKgetenv("standoff") != NULL) &&
> (strcmp(GDKgetenv("standoff"),"enabled") == 0))
> >          options |= COMPILE_OPTION_STANDOFF;
> > -    /* Setting the Algebra flag; server setting overules compile-time
> default; client choice overrules server setting */
> > -#if MILPRINT_SUMMER_IS_DEFAULT
> > -    if (((ctx->mode & XQ_ALGEBRA) != 0) || \
> > -        (((ctx->mode & XQ_MILPRINT_SUMMER) == 0) && \
> > -         (GDKgetenv("xquery_backend") != NULL) &&
> (strcmp(GDKgetenv("xquery_backend"),"algebra") == 0)))
> > -        options |= COMPILE_OPTION_ALGEBRA;
> > -#else /* ALGEBRA_IS_DEFAULT */
> > -    if (((ctx->mode & XQ_MILPRINT_SUMMER) == 0) && \
> > -        (((ctx->mode & XQ_ALGEBRA) != 0) || \
> > -         (GDKgetenv("xquery_backend") == NULL) ||
> (strcmp(GDKgetenv("xquery_backend"),"milprint_summer") != 0)))
> > -        options |= COMPILE_OPTION_ALGEBRA;
> > -#endif
> >
> >      MT_set_lock(pf_compiler_lock, "xquery_compile_exec");
> >      if (is_url) {
> > @@ -4910,7 +4898,7 @@
> >      strcpy(mod->url, url);
> >      mod->nsurl = mod->url + url_len;
> >
> > -    ret = xquery_compile_exec(ctx, url, 1, &mod->prologue, NULL,
> &mod->epilogue, mod->nsurl);
> > +    ret = xquery_compile_exec(ctx, 0, url, 1, &mod->prologue, NULL,
> &mod->epilogue, mod->nsurl);
> >      if (!ret) {
> >          xquery_module_free(mod);
> >          return NULL;
> > @@ -5745,9 +5733,22 @@
> >          char *sec1 = NULL;
> >          char *sec2 = NULL;
> >          char *sec3 = NULL;
> > +        int options = 0;
> >          /* compile and execute the query (minus module imports) */
> >          err = xquery_nondescriptive_error;
> > -        if (xquery_compile_exec(ctx, query, 0, &sec1, &sec2, &sec3,
> NULL))
> > +    /* Setting the Algebra flag; server setting overules compile-time
> default; client choice overrules server setting */
> > +#if MILPRINT_SUMMER_IS_DEFAULT
> > +         if (((ctx->mode & XQ_ALGEBRA) != 0) || \
> > +            (((ctx->mode & XQ_MILPRINT_SUMMER) == 0) && \
> > +              (GDKgetenv("xquery_backend") != NULL) &&
> (strcmp(GDKgetenv("xquery_backend"),"algebra") == 0)))
> > +            options = COMPILE_OPTION_ALGEBRA;
> > +#else /* ALGEBRA_IS_DEFAULT */
> > +        if (((ctx->mode & XQ_MILPRINT_SUMMER) == 0) && \
> > +            (((ctx->mode & XQ_ALGEBRA) != 0) || \
> > +             (GDKgetenv("xquery_backend") == NULL) ||
> (strcmp(GDKgetenv("xquery_backend"),"milprint_summer") != 0)))
> > +            options = COMPILE_OPTION_ALGEBRA;
> > +#endif
> > +        if (xquery_compile_exec(ctx, options, query, 0, &sec1, &sec2,
> &sec3, NULL))
> >                  err = NULL;
> >          if (sec1) free(sec1);
> >          if (sec2) free(sec2);
> >
> > U pf_support.mx
> > Index: pf_support.mx
> > ===================================================================
> > RCS file: /cvsroot/monetdb/pathfinder/runtime/pf_support.mx,v
> > retrieving revision 1.301
> > retrieving revision 1.302
> > diff -u -d -r1.301 -r1.302
> > --- pf_support.mx	10 Jun 2008 09:22:17 -0000	1.301
> > +++ pf_support.mx	17 Jun 2008 17:07:27 -0000	1.302
> > @@ -8373,7 +8373,7 @@
> >          BUNins(*res, &docpre, &docid[j], FALSE);
> >
> >          /* skip all nodes of this document */
> > -        docpre = docpre + size[docpre];
> > +        docpre = docpre + size[docpre] + 1;
> >          for (delta = (n-i) >> 4; delta > 40; delta >>= 4)
> >              while (i+delta < n && * (oid *) BUNtail(inputi, i+delta) <=
> docpre)
> >                  i += delta;
> >
> >
> > -------------------------------------------------------------------------
> > Check out the new SourceForge.net Marketplace.
> > It's the best place to buy or sell services for
> > just about anything Open Source.
> > http://sourceforge.net/services/buy/index.php
> > _______________________________________________
> > Monetdb-pf-checkins mailing list
> > Monetdb-pf-checkins@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins
> 
> --
> | Dr. Stefan Manegold | mailto:Stefan.Manegold@cwi.nl |
> | CWI,  P.O.Box 94079 | http://www.cwi.nl/~manegold/  |
> | 1090 GB Amsterdam   | Tel.: +31 (20) 592-4212       |
> | The Netherlands     | Fax : +31 (20) 592-4312       |

-- 
| Dr. Stefan Manegold | mailto:Stefan.Manegold@cwi.nl |
| CWI,  P.O.Box 94079 | http://www.cwi.nl/~manegold/  |
| 1090 GB Amsterdam   | Tel.: +31 (20) 592-4212       |
| The Netherlands     | Fax : +31 (20) 592-4312       |

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Monetdb-developers mailing list
Monetdb-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/monetdb-developers
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic