[mapserver-users] DEBUG statement - lets actually do something about it!

david blasby dblasby at refractions.net
Tue Oct 1 13:11:49 EDT 2002


We've had a few discussion about having a mapfile-wide "DEBUG on/off"
and LAYER-level "DEBUG on/off".

I dont think much has actually come of this (did I miss something?).  I
think it would be very useful for, at least, the
PostGIS layer to have it report the SQL statement it's executing and
what kind of indexes its using.  I'm sure other portions of mapserver
would appreciate it too.

Proposal
-------------

Change the parser so it handles layers like:

LAYER
    DEBUG on/off
    ...
END

DEBUG will default to "off".

Add, to layerObj, a boolean debug flag:
        char        debug; //boolean: false = no debug info, true =
write debugging info to stderr

It would be wise to add (also to map.h) a constant so new code is
compatible with older version of layer:
#DEFINE LAYERHASDEBUGFLAG


Then in layer functions, one can do something like:

#ifdef LAYERHASDEBUGFLAG
   if (layer->debug)
    {
         printf(stderr,"POSTGIS layer opening\n");
        // report DATA statement
        // report CONNECTION information
        // execute an EXPLAIN command to get the query plan & report
       // execute EXPLAIN VERBOSE, parse and report more information
about the query
       // query DB and report all the indexes on the appropriate tables
      //  query pg_stats and ensure the DB statistical analysis is
up-to-date
        // ....
    }
#endif


Alternatively, we could have DEBUG be off/on/full (0/1/128) to provide a
bit more control over how much debugging is done.
--------
I understand that this isn't necessarily the best way, but we've had
this discussion a few times and we have almost nothing.  At least this
way we'll have something.  And it shouldn't take very long (I'd do it
myself, but I dont want to mess around with the parser).

What say?

dave




More information about the mapserver-users mailing list