java/code/src/com/redhat/rhn/common/db/datasource/xml/Task_queries.xml | 51 +++++++++-
1 file changed, 50 insertions(+), 1 deletion(-)
New commits:
commit 438f6e1820ae9ce7fad8529c484ce4b6bebabacd
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Wed Jul 13 09:42:51 2011 +0200
720533 - replacing rhnServerNeededView with custom subselect which is generally
equivalent, in the erratamailer_get_relevant_servers context.
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Task_queries.xml
b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Task_queries.xml
index e038aa1..cbb969b 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Task_queries.xml
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Task_queries.xml
@@ -471,7 +471,56 @@ ORDER BY next_action DESC
<query params="errata_id,org_id, channel_id">
SELECT snv.server_id AS server_id, S.name, S.release, SA.name as arch,
urn.user_id
- FROM rhnServerNeededCache snv
+ FROM (
+--
+select rhnChannelErrata.errata_id, rhnChannelErrata.channel_id,
rhnServerChannel.server_id, rhnErrataPackage.package_id
+from rhnChannelErrata, rhnErrataPackage, rhnChannelNewestPackage, rhnPackageEVR,
+ rhnServerChannel, rhnServerPackage, rhnPackageUpgradeArchCompat
+where rhnChannelErrata.errata_id = rhnErrataPackage.errata_id
+--
+ and rhnChannelErrata.channel_id = rhnChannelNewestPackage.channel_id
+ and rhnErrataPackage.package_id = rhnChannelNewestPackage.package_id
+--
+ and rhnChannelErrata.channel_id = rhnServerChannel.channel_id
+ and rhnChannelNewestPackage.name_id = rhnServerPackage.name_id
+ and rhnServerChannel.server_id = rhnServerPackage.server_id
+--
+ and rhnChannelNewestPackage.evr_id = rhnPackageEVR.id
+--
+ and rhnServerPackage.package_arch_id =
rhnPackageUpgradeArchCompat.package_arch_id
+ and rhnPackageUpgradeArchCompat.package_upgrade_arch_id =
rhnChannelNewestPackage.package_arch_id
+--
+ and not exists (
+ -- rule out records where channels with lower id exist == get min
+ select 1 from rhnChannelPackage cp, rhnServerChannel csc
+ where cp.channel_id = csc.channel_id
+ and rhnChannelNewestPackage.package_id = cp.package_id
+ and rhnServerChannel.server_id = csc.server_id
+ and cp.channel_id < rhnChannelNewestPackage.channel_id
+ )
+ and not exists (
+ -- rule out records where the server has the same package name with higher evr
+ select 1 from rhnServerPackage sp, rhnPackageEVR sevr,
rhnPackageUpgradeArchCompat puac
+ where rhnServerPackage.server_id = sp.server_id
+ and rhnServerPackage.name_id = sp.name_id
+ and sp.evr_id = sevr.id
+ and rhnPackageEVR.evr <= sevr.evr
+ and rhnServerPackage.package_arch_id = puac.package_arch_id
+ and puac.package_upgrade_arch_id = sp.package_arch_id
+ )
+ and not exists (
+ -- rule out records where other channel provides the same package name with higher evr
+ select 1 from rhnServerChannel csc, rhnChannelNewestPackage ocnp,
rhnPackageEVR oevr, rhnPackageUpgradeArchCompat puac
+ where rhnServerChannel.server_id = csc.server_id
+ and csc.channel_id = ocnp.channel_id
+ and rhnServerPackage.name_id = ocnp.name_id
+ and ocnp.evr_id = oevr.id
+ and rhnPackageEVR.evr < oevr.evr
+ and rhnServerPackage.package_arch_id = puac.package_arch_id
+ and puac.package_upgrade_arch_id = ocnp.package_arch_id
+ )
+--
+ ) svn
JOIN rhnUserReceiveNotifications urn
ON snv.server_id = urn.server_id
JOIN rhnServerChannel sc
Show replies by date