]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 364161: Inefficient SQL: Selecting subclass from setting table
authormkanat%bugzilla.org <>
Sat, 6 Sep 2008 04:03:03 +0000 (04:03 +0000)
committermkanat%bugzilla.org <>
Sat, 6 Sep 2008 04:03:03 +0000 (04:03 +0000)
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=LpSolit

Bugzilla/User/Setting.pm

index f13bfe97247df7de02dd4aee497740efff7c8012..7a6c72fd3fa902924036e0dd46e237fdcb7c92ad 100644 (file)
@@ -99,15 +99,12 @@ sub new {
         }
     }
     else {
-        ($subclass) = $dbh->selectrow_array(
-            q{SELECT subclass FROM setting WHERE name = ?},
-            undef,
-            $setting_name);
         # If the values were passed in, simply assign them and return.
         $self->{'is_enabled'}    = shift;
         $self->{'default_value'} = shift;
         $self->{'value'}         = shift;
         $self->{'is_default'}    = shift;
+        $subclass                = shift;
     }
     if ($subclass) {
         eval('require ' . $class . '::' . $subclass);
@@ -172,7 +169,7 @@ sub get_all_settings {
     my $dbh = Bugzilla->dbh;
 
     my $sth = $dbh->prepare(
-           q{SELECT name, default_value, is_enabled, setting_value
+           q{SELECT name, default_value, is_enabled, setting_value, subclass
                FROM setting
           LEFT JOIN profile_setting
                  ON setting.name = profile_setting.setting_name
@@ -180,8 +177,9 @@ sub get_all_settings {
            ORDER BY name});
 
     $sth->execute($user_id);
-    while (my ($name, $default_value, $is_enabled, $value) 
-               = $sth->fetchrow_array()) {
+    while (my ($name, $default_value, $is_enabled, $value, $subclass) 
+               = $sth->fetchrow_array()) 
+    {
 
         my $is_default;
 
@@ -194,7 +192,7 @@ sub get_all_settings {
 
         $settings->{$name} = new Bugzilla::User::Setting(
            $name, $user_id, $is_enabled, 
-           $default_value, $value, $is_default);
+           $default_value, $value, $is_default, $subclass);
     }
 
     return $settings;
@@ -207,14 +205,17 @@ sub get_defaults {
 
     $user_id ||= 0;
 
-    my $sth = $dbh->prepare(q{SELECT name, default_value, is_enabled
+    my $sth = $dbh->prepare(q{SELECT name, default_value, is_enabled, subclass
                                 FROM setting
                             ORDER BY name});
     $sth->execute();
-    while (my ($name, $default_value, $is_enabled) = $sth->fetchrow_array()) {
+    while (my ($name, $default_value, $is_enabled, $subclass) 
+           = $sth->fetchrow_array()) 
+    {
 
         $default_settings->{$name} = new Bugzilla::User::Setting(
-            $name, $user_id, $is_enabled, $default_value, $default_value, 1);
+            $name, $user_id, $is_enabled, $default_value, $default_value, 1,
+            $subclass);
     }
 
     return $default_settings;