in reply to Re^2: SQL Parsing with Parse::RecDescent
in thread SQL Parsing with Parse::RecDescent

You only need one row per table to be able to log many of the SQL statements.

And let's try to be serious: which developer writes an application without having a single test data set, even if it's an inveted and not very natural one?

Update: another idea is an incremental approach: Run the program once, and hope that it will run a SQL statement. Then generate some test data for that query, and run again.

I just think that "blind" searching in source code for SQL statements will not work reliably, it will have both many false positives and false negatvies.

  • Comment on Re^3: SQL Parsing with Parse::RecDescent

Replies are listed 'Best First'.
Re^4: SQL Parsing with Parse::RecDescent
by DACONTI (Scribe) on Mar 05, 2008 at 15:57 UTC
    Hi moritz
    You only need one row per table to be able to log many of the SQL statements.
    And thats already a difficulty if your sql query is 3-4 pages long.
    Of course you can do the job manually by adding here and there in the tables proper values by hand, but this approach is tedious and it can take hours just to fill a few rows.
    Saluti, Davide
      You only have to generate a sample dataset once
        Thanks for your advices
        but I think it is difficult for you to understand the motivation behind.
        Please stop digging into this.
        Thanks to moritz, however I think I got it.
        He said:

        I just think that "blind" searching in source code for SQL statements will not work reliably, it will have both many false positives and false negatvies.

        BUT THAT'S EXACTLY THE POINT: WHY SHOULD IT WORK RELIABLY?
        I dont need to have exact matches for each data row:
        for testing its even better if I got negative as well as positive matches.
        That's exactly boundary testing, and I get it for free!
        So today I reprogrammed my RD engine to take only expressions of this kind:
        - column = 'value' (or whatever other operator)
        - column1 = column2
        In my context I dont even want to find out the correspondig table
        because I will insert the value in all the tables having this column.
        I already modified my parser and detected successfully a lot of values in a huge query.
        I'll try to publish the program in my scratchpad
        (but first I've to ask because I'm working in a bank).


        PERLMONKS IS GREAT!

        Ciao!
        Davide.