Bonjour,

J'utilise DB2 avec ZF , pour le développement d'une application de monitoring, et au boulot on me pose toujours la même question.
En regardant la méthode Limit() de Zend/Db/Adapter/Db2.php, elle souffre d'une légère erreur, en effet dans le code suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
 /**
         * DB2 does not implement the LIMIT clause as some RDBMS do.
         * We have to simulate it with subqueries and ROWNUM.
         * Unfortunately because we use the column wildcard "*",
         * this puts an extra column into the query result set.
         */
        $limit_sql = "SELECT z2.*
            FROM (
                SELECT ROW_NUMBER() OVER() AS \"ZEND_DB_ROWNUM\", z1.*
                FROM (
                    " . $sql . "
                ) z1
            ) z2
            WHERE z2.zend_db_rownum BETWEEN " . ($offset+1) . " AND " . ($offset+$count);
        return $limit_sql;
on ne note pas de ORDER BY dans le OVER(), or si cela n'est pas fais on ne peut assurer que le select ressortira toujours les données dans le même ordre.
cfr: la doc de chez IBM
Citation Envoyé par IBM
ROW_NUMBER specifies that a sequential row number is computed for the row that is defined by the ordering, starting with 1 for the first row. If the ORDER BY clause is not specified in the window, the row numbers are assigned to the rows in an arbitrary order, as the rows are returned (but not according to any ORDER BY clause in the select-statement). You can use ROW_NUMBER to number the result rows of a query. Row numbers also enable easy formulation of queries for computing histogram statistics (quantile computations), and they enable formation of other OLAP specifications (for example, moving sums, moving averages, and so on).
Il manque donc un paramètre(ou deux) dans la méthode.
Comment le signaler?, si ce n'est déjà fais