Re: show table status

From: Jack O'Connor (jo418..ristol.ac.uk)
Date: Fri Jul 20 2007 - 18:15:11 EDT

  • Next message: Ajay H. Daptardar: "Re: Usage in Axis2"

    Good news! It's getting correct results:

    INFO QueryLogger: show table status
    INFO QueryLogger: === returned 34 rows. - took 86 ms.
    Exception in thread "main" INFO QueryLogger: +++ no commit -
    transaction controlled externally.
    java.lang.ClassCastException: org.objectstyle.cayenne.DataRow
            at
    com.statistics.ComputeStatistics.getcsDiskSpace(ComputeStatistics.java:838)
            at com.statistics.MainStatistics.main(MainStatistics.java:66)

    It recieved the correct number of rows (34), but when I try to access
    them, I get errors. I've tried using an arbitrary class, and creating a
    model in cayenne especially for the "show table status" table, with
    attributes "Data_length" etc, so I have the correct getters and setters,
    but no luck...

    Is there a way to extract generic data form an undefined "Map"?
    Many Thanks
    Jack

    Andrus Adamchik wrote:
    > Just try it :-)
    >
    > Don't forget to call "setFetchingDataRows(true)" as mentioned by
    > Michael. This is what makes the difference. The result will be a list of
    > Maps.
    >
    > Andrus
    >
    >
    > On Jul 20, 2007, at 8:45 PM, Jack O'Connor wrote:
    >> OK, but then if I use
    >>
    >> SQLTemplate select = new SQLTemplate(Artist.class, "show table status");
    >> List artists = dataContext.performQuery(select);
    >>
    >> Surely I will have Artist objects, and will only be able to use that
    >> classes defined "getters and setters"? i.e. How will I extract data
    >> from columns: data_length and index_length?
    >>
    >> Thanks
    >> Jack
    >>
    >> Andrus Adamchik wrote:
    >>> In this case it is needed to pick the right database (Cayenne
    >>> potentially can access more than one). You can use an arbitrary class
    >>> from your model in this case.
    >>> Andrus
    >>> On Jul 20, 2007, at 5:24 PM, Jack O'Connor wrote:
    >>>> Thanks for the reply, but all the SQLTemplates on that page require
    >>>> a class/table to refer to (all the examples are for Artist.class).
    >>>> The MySQL command "show table status" doesn't apply to any
    >>>> particular class...
    >>>>
    >>>> Jack
    >>>>
    >>>> Michael Gentry wrote:
    >>>>> I would think you'd be able to use an SQLTemplate to perform that
    >>>>> kind of query:
    >>>>> http://cayenne.apache.org/doc20/sqltemplate-query.html
    >>>>> You'll want to call setFetchingDataRows(true) on your SQLTemplate
    >>>>> object, too, otherwise Cayenne will try to make CayenneDataObjects out
    >>>>> of it. Do this before you run performQuery().
    >>>>> /dev/mrg
    >>>>> On 7/19/07, Jack O'Connor <jo418..ristol.ac.uk> wrote:
    >>>>>> Hi all, in my project I need to extract the total db size(kb). Im
    >>>>>> using
    >>>>>> Cayenne 1.2.3 and MySQL and I found the SQL command "show table
    >>>>>> status
    >>>>>> from <db name>" which displays a table of information about all of
    >>>>>> the
    >>>>>> tables in a certain db. This table has columns like "Name"(of table),
    >>>>>> "Data_length" and "Index_length", and apparently the best way to
    >>>>>> extract
    >>>>>> the size(kb) of a db is to sum the Data_length and Index_length
    >>>>>> columns
    >>>>>> of this table.
    >>>>>>
    >>>>>> Does anyone know how I can get the results of this query into java?
    >>>>>>
    >>>>>> Many Thanks
    >>>>>> Jack
    >>>>>>
    >>>>
    >>
    >



    This archive was generated by hypermail 2.0.0 : Fri Jul 20 2007 - 18:19:57 EDT