Re: [jira] Updated: (CAY-1282) Use #result as optional directive for only few columns (not all)

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Sun Oct 11 2009 - 10:21:12 EDT

  • Next message: Andrus Adamchik: "Re: svn commit: r824078 - /cayenne/main/trunk/pom.xml"

    Hi Evgeny,

    As always, thanks for the patch. A few comments:

    1. A refactoring suggestion: move the new static methods introduced in
    ColumnDescriptor to non-static methods of RowDescriptorBuilder.
    2. In 3.0 unit test classes are using *Test suffix instead of *Tst,
    and also we no longer put..uthor tags in the code.

    Both items above are minor, and I can change them myself. Here is one
    potentially bigger issue with the patch though:

    3. The patch merges 2 strategies for creation of columns descriptor
    into one, that requires access to ResultSetMetadata. I am not sure
    that ResultSet.getMetaData() is a trivial operation for all JDBC
    drivers that we support. I suspect there may be overhead accessing
    this data at least on some DBs. While we can verify this theory, I am
    wondering if we should, as in most cases we control the query syntax
    and don't need to consult ResultSetMetadata at all.

    So maybe preserve the flow in RowDescriptorBuilder, and use your
    strategy merging explicit and implicit column descriptors *only* when
    an optional metadata object is initialized?

    Andrus

    On Oct 9, 2009, at 2:08 PM, Evgeny Ryabitskiy (JIRA) wrote:

    >
    > [ https://issues.apache.org/jira/browse/CAY-1282?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
    > ]
    >
    > Evgeny Ryabitskiy updated CAY-1282:
    > -----------------------------------
    >
    > Attachment: CAY-1282-3.patch
    >
    > Done!
    >
    >> Use #result as optional directive for only few columns (not all)
    >> ----------------------------------------------------------------
    >>
    >> Key: CAY-1282
    >> URL: https://issues.apache.org/jira/browse/CAY-1282
    >> Project: Cayenne
    >> Issue Type: Improvement
    >> Components: Cayenne Core Library
    >> Affects Versions: 1.2.5, 2.0.5, 3.0
    >> Reporter: Evgeny Ryabitskiy
    >> Assignee: Andrus Adamchik
    >> Fix For: 3.0 beta 1
    >>
    >> Attachments: CAY-1282-3.patch, CAY-1282-3.patch,
    >> CAY-1282-3.patch, CAY-1282-3.patch, CAY-1282-3.patch, CAY-1282.patch
    >>
    >>
    >> Here is few queries to show the problem:
    >> SELECT ARTIST_ID, ARTIST_NAME FROM ARTIST
    >> - working properly
    >> SELECT #result('ARTIST_ID' 'java.lang.Integer'),
    >> #result('ARTIST_NAME' 'java.lang.String') FROM ARTIST
    >> - also working properly
    >> SELECT ARTIST_ID, #result('ARTIST_NAME' 'java.lang.String') FROM
    >> ARTIST
    >> - first column is returned as null!!! Not nice...
    >
    > --
    > This message is automatically generated by JIRA.
    > -
    > You can reply to this email to add a comment to the issue online.
    >
    >



    This archive was generated by hypermail 2.0.0 : Sun Oct 11 2009 - 10:24:06 EDT