From bd911c86586b6de2e1a0599cb87e48aede9493b9 Mon Sep 17 00:00:00 2001 From: Madhura Jayaratne Date: Wed, 10 Jun 2015 22:54:39 +0530 Subject: [PATCH] Using dataSeek should be more efficient Signed-off-by: Madhura Jayaratne --- libraries/navigation/Nodes/Node.class.php | 13 ++++--- .../navigation/Nodes/Node_Database.class.php | 39 ++++++++++++------- .../navigation/Nodes/Node_Table.class.php | 26 ++++++++----- 3 files changed, 48 insertions(+), 30 deletions(-) diff --git a/libraries/navigation/Nodes/Node.class.php b/libraries/navigation/Nodes/Node.class.php index 1bb1f08c09..96aefe1bb3 100644 --- a/libraries/navigation/Nodes/Node.class.php +++ b/libraries/navigation/Nodes/Node.class.php @@ -388,12 +388,15 @@ class Node $handle = $GLOBALS['dbi']->tryQuery($query); if ($handle !== false) { $count = 0; - while ($arr = $GLOBALS['dbi']->fetchArray($handle)) { - if ($pos <= 0 && $count < $maxItems) { - $retval[] = $arr[0]; - $count++; + if ($GLOBALS['dbi']->dataSeek($handle, $pos)) { + while ($arr = $GLOBALS['dbi']->fetchArray($handle)) { + if ($count < $maxItems) { + $retval[] = $arr[0]; + $count++; + } else { + break; + } } - $pos--; } } return $retval; diff --git a/libraries/navigation/Nodes/Node_Database.class.php b/libraries/navigation/Nodes/Node_Database.class.php index 2db8896ada..f5385707d3 100644 --- a/libraries/navigation/Nodes/Node_Database.class.php +++ b/libraries/navigation/Nodes/Node_Database.class.php @@ -437,12 +437,15 @@ class Node_Database extends Node $handle = $GLOBALS['dbi']->tryQuery($query); if ($handle !== false) { $count = 0; - while ($arr = $GLOBALS['dbi']->fetchArray($handle)) { - if ($pos <= 0 && $count < $maxItems) { - $retval[] = $arr[0]; - $count++; + if ($GLOBALS['dbi']->dataSeek($handle, $pos)) { + while ($arr = $GLOBALS['dbi']->fetchArray($handle)) { + if ($count < $maxItems) { + $retval[] = $arr[0]; + $count++; + } else { + break; + } } - $pos--; } } } @@ -519,12 +522,15 @@ class Node_Database extends Node $handle = $GLOBALS['dbi']->tryQuery($query); if ($handle !== false) { $count = 0; - while ($arr = $GLOBALS['dbi']->fetchArray($handle)) { - if ($pos <= 0 && $count < $maxItems) { - $retval[] = $arr['Name']; - $count++; + if ($GLOBALS['dbi']->dataSeek($handle, $pos)) { + while ($arr = $GLOBALS['dbi']->fetchArray($handle)) { + if ($count < $maxItems) { + $retval[] = $arr['Name']; + $count++; + } else { + break; + } } - $pos--; } } } @@ -599,12 +605,15 @@ class Node_Database extends Node $handle = $GLOBALS['dbi']->tryQuery($query); if ($handle !== false) { $count = 0; - while ($arr = $GLOBALS['dbi']->fetchArray($handle)) { - if ($pos <= 0 && $count < $maxItems) { - $retval[] = $arr['Name']; - $count++; + if ($GLOBALS['dbi']->dataSeek($handle, $pos)) { + while ($arr = $GLOBALS['dbi']->fetchArray($handle)) { + if ($count < $maxItems) { + $retval[] = $arr['Name']; + $count++; + } else { + break; + } } - $pos--; } } } diff --git a/libraries/navigation/Nodes/Node_Table.class.php b/libraries/navigation/Nodes/Node_Table.class.php index 10a521a52c..b4c4493825 100644 --- a/libraries/navigation/Nodes/Node_Table.class.php +++ b/libraries/navigation/Nodes/Node_Table.class.php @@ -180,12 +180,15 @@ class Node_Table extends Node_DatabaseChild } $count = 0; - while ($arr = $GLOBALS['dbi']->fetchArray($handle)) { - if ($pos <= 0 && $count < $maxItems) { - $retval[] = $arr['Field']; - $count++; + if ($GLOBALS['dbi']->dataSeek($handle, $pos)) { + while ($arr = $GLOBALS['dbi']->fetchArray($handle)) { + if ($count < $maxItems) { + $retval[] = $arr['Field']; + $count++; + } else { + break; + } } - $pos--; } break; case 'indexes': @@ -234,12 +237,15 @@ class Node_Table extends Node_DatabaseChild } $count = 0; - while ($arr = $GLOBALS['dbi']->fetchArray($handle)) { - if ($pos <= 0 && $count < $maxItems) { - $retval[] = $arr['Trigger']; - $count++; + if ($GLOBALS['dbi']->dataSeek($handle, $pos)) { + while ($arr = $GLOBALS['dbi']->fetchArray($handle)) { + if ($count < $maxItems) { + $retval[] = $arr['Trigger']; + $count++; + } else { + break; + } } - $pos--; } break; default: