You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by tc...@apache.org on 2002/12/27 16:19:02 UTC

cvs commit: xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/components/language/markup/xsp AbstractEsqlQuery.java MysqlEsqlQuery.java OracleEsqlQuery.java PostgresEsqlQuery.java PostgresOldEsqlQuery.java SybaseEsqlQuery.java

tcurdt      2002/12/27 07:19:02

  Modified:    src/blocks/databases/java/org/apache/cocoon/components/language/markup/xsp
                        AbstractEsqlQuery.java MysqlEsqlQuery.java
                        OracleEsqlQuery.java PostgresEsqlQuery.java
                        PostgresOldEsqlQuery.java SybaseEsqlQuery.java
  Log:
  fixed the esql:more-results bug as reported by Antonio Gallardo
  
  Revision  Changes    Path
  1.5       +21 -0     xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/components/language/markup/xsp/AbstractEsqlQuery.java
  
  Index: AbstractEsqlQuery.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/components/language/markup/xsp/AbstractEsqlQuery.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- AbstractEsqlQuery.java	10 Dec 2002 00:51:45 -0000	1.4
  +++ AbstractEsqlQuery.java	27 Dec 2002 15:19:02 -0000	1.5
  @@ -122,6 +122,27 @@
        * Return the query string ("select * from bla")
        *
        * NOTE: Might want to be overridden by indiviual EsqlQuery implementations
  +     * e.g. for database specific LIMIT features. Be aware that there a two different
  +     * limit approaches:
  +     * <pre>
  +     * retrieve                   query
  +     * time                       time
  +     * +---------+                ...........
  +     * |JDBC     |                :         :
  +     * |ResultSet|                :         :
  +     * |.........|-+              :_________:_
  +     * |         | | skip/max+1   |JDBC     | | skip/max+1
  +     * |         | | window       |ResultSet| | window
  +     * |.........| |              |_________| |
  +     * |         |-+              :         :_|
  +     * |         |                :         :
  +     * +---------+                :.........:
  +     *  </pre>
  +     * With the "retrieve time" limit the JDBC ResultSet includes ALL of the rows of the
  +     * query.
  +     * With the "query time" limit only a small window of rows are in the actuall JDBC
  +     * ResultSet. In order to know whether there are more rows available (without an additional
  +     * query) we need to have at least one more row in the JDBC ResultSet. So we ask for getMaxRows()+1
        *
        * @return
        * @throws SQLException
  
  
  
  1.5       +2 -2      xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/components/language/markup/xsp/MysqlEsqlQuery.java
  
  Index: MysqlEsqlQuery.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/components/language/markup/xsp/MysqlEsqlQuery.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- MysqlEsqlQuery.java	10 Dec 2002 00:51:45 -0000	1.4
  +++ MysqlEsqlQuery.java	27 Dec 2002 15:19:02 -0000	1.5
  @@ -88,7 +88,7 @@
               if (getMaxRows() > -1) {
                   return (new StringBuffer(super.getQueryString())
                           .append(" LIMIT ").append(getSkipRows())
  -                        .append(",").append(getMaxRows())
  +                        .append(",").append(getMaxRows()+1)
                           .toString());
               }
               else {
  @@ -98,7 +98,7 @@
           else {
               if (getMaxRows() > -1) {
                   return (new StringBuffer(super.getQueryString())
  -                        .append(" LIMIT ").append(getMaxRows())
  +                        .append(" LIMIT ").append(getMaxRows()+1)
                           .toString());
               }
               else {
  
  
  
  1.4       +1 -1      xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/components/language/markup/xsp/OracleEsqlQuery.java
  
  Index: OracleEsqlQuery.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/components/language/markup/xsp/OracleEsqlQuery.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- OracleEsqlQuery.java	10 Dec 2002 00:51:45 -0000	1.3
  +++ OracleEsqlQuery.java	27 Dec 2002 15:19:02 -0000	1.4
  @@ -87,7 +87,7 @@
                   return (new StringBuffer("select * from (select a.*, rownum rnum from (")
                           .append(super.getQueryString())
                           .append(") a where rownum <= ")
  -                        .append(getSkipRows() + getMaxRows())
  +                        .append(getSkipRows() + getMaxRows() + 1)
                           .append(") where rnum >= ")
                           .append(getSkipRows())
                           .append(")")
  
  
  
  1.6       +2 -2      xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/components/language/markup/xsp/PostgresEsqlQuery.java
  
  Index: PostgresEsqlQuery.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/components/language/markup/xsp/PostgresEsqlQuery.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- PostgresEsqlQuery.java	19 Dec 2002 11:09:42 -0000	1.5
  +++ PostgresEsqlQuery.java	27 Dec 2002 15:19:02 -0000	1.6
  @@ -84,9 +84,9 @@
   
       public String getQueryString() throws SQLException {
           StringBuffer sb = new StringBuffer(super.getQueryString());
  -        if (getMaxRows() > -1) sb.append(" LIMIT ").append(getMaxRows());
  +        if (getMaxRows() > -1) sb.append(" LIMIT ").append(getMaxRows()+1);
           if (getSkipRows() > 0) sb.append(" OFFSET ").append(getSkipRows());
  -        return sb.toString();
  +        return(sb.toString());
       }
   
       public void getResultRows() throws SQLException {
  
  
  
  1.2       +2 -2      xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/components/language/markup/xsp/PostgresOldEsqlQuery.java
  
  Index: PostgresOldEsqlQuery.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/components/language/markup/xsp/PostgresOldEsqlQuery.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PostgresOldEsqlQuery.java	19 Dec 2002 11:09:42 -0000	1.1
  +++ PostgresOldEsqlQuery.java	27 Dec 2002 15:19:02 -0000	1.2
  @@ -85,7 +85,7 @@
           if (getSkipRows() > 0) {
               if (getMaxRows() > -1) {
                   return (new StringBuffer(super.getQueryString())
  -                        .append(" LIMIT ").append(getMaxRows())
  +                        .append(" LIMIT ").append(getMaxRows()+1)
                           .append(",").append(getSkipRows())
                           .toString());
               }
  @@ -98,7 +98,7 @@
           else {
               if (getMaxRows() > -1) {
                   return (new StringBuffer(super.getQueryString())
  -                        .append(" LIMIT ").append(getMaxRows())
  +                        .append(" LIMIT ").append(getMaxRows()+1)
                           .toString());
               }
               else {
  
  
  
  1.5       +1 -1      xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/components/language/markup/xsp/SybaseEsqlQuery.java
  
  Index: SybaseEsqlQuery.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/blocks/databases/java/org/apache/cocoon/components/language/markup/xsp/SybaseEsqlQuery.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SybaseEsqlQuery.java	10 Dec 2002 00:51:45 -0000	1.4
  +++ SybaseEsqlQuery.java	27 Dec 2002 15:19:02 -0000	1.5
  @@ -90,7 +90,7 @@
               int command = original.indexOf(' ');
               return (new StringBuffer()
                       .append(original.substring(0,command))
  -                    .append(" TOP ").append(getMaxRows()+getSkipRows())
  +                    .append(" TOP ").append(getMaxRows()+1 + getSkipRows())
                       .append(original.substring(command))
                       .toString());
           }
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     webmaster@xml.apache.org
To unsubscribe, e-mail:          cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org