Hello Tim Speetjens,

I'd like you to do a code review.  Please visit

    http://gerrit.ovirt.org/34387

to review the following change.

Change subject: userportal: optimize GetAllFromVms query
......................................................................

userportal: optimize GetAllFromVms query

Rewrote the stored function to optimize the query inside GetAllFromVms
Splitting out the boolean for simplicity
Joining instead of using exists on a complicated view
Removing distinct, as it's already inside the joined view

Change-Id: I541c9172c3ba9bcf989f9660baf06ec2e1fd02d7
Bug-Url: https://bugzilla.redhat.com/1151477
Signed-off-by: Tim Speetjens <[email protected]>
---
M packaging/dbscripts/vms_sp.sql
1 file changed, 11 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/87/34387/1

diff --git a/packaging/dbscripts/vms_sp.sql b/packaging/dbscripts/vms_sp.sql
index 4331011..83dc5b5 100644
--- a/packaging/dbscripts/vms_sp.sql
+++ b/packaging/dbscripts/vms_sp.sql
@@ -851,12 +851,17 @@
 Create or replace FUNCTION GetAllFromVms(v_user_id UUID, v_is_filtered 
boolean) RETURNS SETOF vms STABLE
    AS $procedure$
 BEGIN
-RETURN QUERY SELECT DISTINCT vms.*
-   FROM vms
-   WHERE (NOT v_is_filtered OR EXISTS (SELECT 1
-                                       FROM user_vm_permissions_view
-                                       WHERE user_id = v_user_id AND entity_id 
= vm_guid))
-   ORDER BY vm_guid;
+IF v_is_filtered THEN
+   RETURN QUERY SELECT vms.*
+      FROM vms INNER JOIN user_vm_permissions_view ON vms.vm_guid = 
user_vm_permissions_view.entity_id
+      WHERE user_id = v_user_id
+      ORDER BY vm_guid;
+ELSE
+   RETURN QUERY SELECT DISTINCT vms.*
+      FROM vms
+      ORDER BY vm_guid;
+END IF;
+
 END; $procedure$
 LANGUAGE plpgsql;
 


-- 
To view, visit http://gerrit.ovirt.org/34387
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I541c9172c3ba9bcf989f9660baf06ec2e1fd02d7
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5
Gerrit-Owner: Oved Ourfali <[email protected]>
Gerrit-Reviewer: Tim Speetjens <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to