diff --git a/ecrire/base/abstract_sql.php b/ecrire/base/abstract_sql.php index e5612f7428d68803752c27a08c0eaf056866e3ab..dc3a8c2594e3f94ce6450b48e38208f726d81ed8 100644 --- a/ecrire/base/abstract_sql.php +++ b/ecrire/base/abstract_sql.php @@ -126,6 +126,11 @@ function sql_fetch_all($res, $serveur='', $option=true){ return $rows; } +function sql_seek($res, $row_number, $serveur='', $option=true) { + $f = sql_serveur('seek', $serveur, $option==='continue' OR $option===false); + if (!is_string($f) OR !$f) return false; + return $f($res, $row_number, $serveur, $option!==false); +} // http://doc.spip.org/@sql_listdbs function sql_listdbs($serveur='', $option=true) { diff --git a/ecrire/req/mysql.php b/ecrire/req/mysql.php index fd6992187d1172a22d039259b02c7481f243e718..1a75d6ddcf19b5f87fa664bc6184a89ea52193f3 100644 --- a/ecrire/req/mysql.php +++ b/ecrire/req/mysql.php @@ -55,6 +55,7 @@ $GLOBALS['spip_mysql_functions_1'] = array( 'error' => 'spip_mysql_error', 'explain' => 'spip_mysql_explain', 'fetch' => 'spip_mysql_fetch', + 'seek' => 'spip_mysql_seek', 'free' => 'spip_mysql_free', 'hex' => 'spip_mysql_hex', 'in' => 'spip_mysql_in', @@ -486,6 +487,10 @@ function spip_mysql_fetch($r, $t='', $serveur='',$requeter=true) { if ($r) return mysql_fetch_array($r, $t); } +function spip_mysql_seek($r, $row_number, $serveur='',$requeter=true) { + if ($r) return mysql_data_seek($r,$row_number); +} + // http://doc.spip.org/@spip_mysql_countsel function spip_mysql_countsel($from = array(), $where = array(), diff --git a/ecrire/req/pg.php b/ecrire/req/pg.php index 9f287e717d9d361cc5d274424861b9f7011d74a3..a6e7cc3405d6f15f8b4a1720422d7573c27b411e 100644 --- a/ecrire/req/pg.php +++ b/ecrire/req/pg.php @@ -80,6 +80,7 @@ $GLOBALS['spip_pg_functions_1'] = array( 'error' => 'spip_pg_error', 'explain' => 'spip_pg_explain', 'fetch' => 'spip_pg_fetch', + 'seek' => 'spip_pg_seek', 'free' => 'spip_pg_free', 'hex' => 'spip_pg_hex', 'in' => 'spip_pg_in', @@ -451,7 +452,7 @@ function spip_pg_select($select, $from, $where='', . (!$limit ? '' : (" LIMIT $count" . (!$offset ? '' : " OFFSET $offset"))); // Erreur ? C'est du debug, ou une erreur du serveur - // il faudrait mettre ici le déclenchement du message SQL + // il faudrait mettre ici le d�clenchement du message SQL // actuellement dans erreur_requete_boucle if ($requeter && $GLOBALS['var_mode'] == 'debug') { @@ -705,6 +706,11 @@ function spip_pg_fetch($res, $t='', $serveur='',$requeter=true) { return $res; } +function spip_pg_seek($r, $row_number, $serveur='',$requeter=true) { + if ($r) return pg_result_seek($r,$row_number); +} + + // http://doc.spip.org/@spip_pg_countsel function spip_pg_countsel($from = array(), $where = array(), $groupby=array(), $having = array(), $serveur='',$requeter=true) @@ -724,7 +730,7 @@ function spip_pg_count($res, $serveur='',$requeter=true) { // http://doc.spip.org/@spip_pg_free function spip_pg_free($res, $serveur='',$requeter=true) { - // rien à faire en postgres + // rien � faire en postgres } // http://doc.spip.org/@spip_pg_delete diff --git a/ecrire/req/sqlite_generique.php b/ecrire/req/sqlite_generique.php index 53b9b5af757f0ce1f8b140033d80126487b7a481..f5ca191ed0f0cd7e37a9d5aaf3b86b79980af9d8 100644 --- a/ecrire/req/sqlite_generique.php +++ b/ecrire/req/sqlite_generique.php @@ -617,6 +617,27 @@ function spip_sqlite_fetch($r, $t='', $serveur='',$requeter=true) { } +function spip_sqlite_seek($r, $row_number, $serveur='',$requeter=true) { + if ($r){ + $link = _sqlite_link($serveur); + if (_sqlite_is_version(3, $link)){ + if ($numrow==0) { + return $r->rewind(); + } else { + return $r->seek($numrow); + } + } + else { + if ($numrow==0) { + return sql_rewind($result); + } else { + return sql_seek($result, $numrow); + } + } + } +} + + // http://doc.spip.org/@spip_sqlite_free function spip_sqlite_free(&$r, $serveur='',$requeter=true) { unset($r); @@ -1363,6 +1384,7 @@ function _sqlite_ref_fonctions(){ 'error' => 'spip_sqlite_error', 'explain' => 'spip_sqlite_explain', 'fetch' => 'spip_sqlite_fetch', + 'seek' => 'spip_sqlite_seek', 'free' => 'spip_sqlite_free', 'hex' => 'spip_sqlite_hex', 'in' => 'spip_sqlite_in',