cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jean-Baptiste Quenot (JIRA)" <j...@apache.org>
Subject [jira] Assigned: (COCOON-1740) Modular DatabaseSelectAction incorrectly handles multiple rows
Date Tue, 21 Feb 2006 16:58:10 GMT
     [ http://issues.apache.org/jira/browse/COCOON-1740?page=all ]

Jean-Baptiste Quenot reassigned COCOON-1740:
--------------------------------------------

    Assign To: Jean-Baptiste Quenot

> Modular DatabaseSelectAction incorrectly handles multiple rows
> --------------------------------------------------------------
>
>          Key: COCOON-1740
>          URL: http://issues.apache.org/jira/browse/COCOON-1740
>      Project: Cocoon
>         Type: Bug
>   Components: Blocks: Databases
>     Versions: 2.1.8, 2.2-dev (Current SVN), 2.1.9-dev (current SVN)
>     Reporter: Tuomo Lesonen
>     Assignee: Jean-Baptiste Quenot
>     Priority: Minor
>  Attachments: DatabaseAction.java, DatabaseSelectAction.java
>
> When one needs to select multiple rows from a table, and the keys used to identify the
rows vary, for example when request-param inputmodule is used with parameter-value of  "id[*]",
the outputted parameters are not unique. For example, when there are 3 different variations
of the keys, and every variation returns a single row, the following is outputted:
> ==> row #0
> o.a.c.components.modules.output.OutputModule:user.id[0]
> o.a.c.components.modules.output.OutputModule:user.username[0]
> o.a.c.components.modules.output.OutputModule:user.password[0]
> ==> row #1
> o.a.c.components.modules.output.OutputModule:user.id[1]
> o.a.c.components.modules.output.OutputModule:user.username[0]
> o.a.c.components.modules.output.OutputModule:user.password[0]
> ==> row #2
> o.a.c.components.modules.output.OutputModule:user.id[2]
> o.a.c.components.modules.output.OutputModule:user.username[0]
> o.a.c.components.modules.output.OutputModule:user.password[0]
> What happens is that on every row the names of the previous output-parameters from the
value-fields (in descriptor) are overwritten with the new names, since the index is always
forced back to zero.
> Because of this, the values from matching rows cannot be "forwarded" to other actions
for additional processing (ie. DatabaseDeleteAction).
> The correct output should be:
> ==> row #0
> o.a.c.components.modules.output.OutputModule:user.id[0]
> o.a.c.components.modules.output.OutputModule:user.username[0]
> o.a.c.components.modules.output.OutputModule:user.password[0]
> ==> row #1
> o.a.c.components.modules.output.OutputModule:user.id[1]
> o.a.c.components.modules.output.OutputModule:user.username[1]
> o.a.c.components.modules.output.OutputModule:user.password[1]
> ==> row #2
> o.a.c.components.modules.output.OutputModule:user.id[2]
> o.a.c.components.modules.output.OutputModule:user.username[2]
> o.a.c.components.modules.output.OutputModule:user.password[2]
> The only way this output can be achieved is when the keys do not vary, and multiple rows
are returned. But this is not always the case, as the example above demonstrates.
> Here's the descriptor-snippet from the previous example:
>  <table name="user">
>   <keys>
>     <key name="id" type="int" set="master">
>       <mode name="request-param" parameter="id*" type="all"/>
>     </key>
>   </keys>
>   <values>
>     <value name="username" type="string"/>
>     <value name="password" type="string"/>
>   </values>
>  </table>
> I have fixed this by adding a class variable "sumIndex" to DatabaseAction.java, which
is incremented in DatabaseSelectAction.java in method "processRow". sumIndex is then used
to produce unique names for the output-parameters. Finally sumIndex contains the total rows
selected.
> Patched files (2) attached.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message