From b58417cbee6a5ed3356fdb351072eff5e1cb9c2c Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Wed, 26 Nov 2014 15:05:10 +0200 Subject: [PATCH] Use cached nameservers in zonefile procedure --- .../20141121093125_add_zonefile_procedure.rb | 37 ++++++++----------- ...20141125111414_create_nameservers_cache.rb | 6 ++- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/db/migrate/20141121093125_add_zonefile_procedure.rb b/db/migrate/20141121093125_add_zonefile_procedure.rb index 59d5f3e2e..d4c710f98 100644 --- a/db/migrate/20141121093125_add_zonefile_procedure.rb +++ b/db/migrate/20141121093125_add_zonefile_procedure.rb @@ -52,25 +52,17 @@ class AddZonefileProcedure < ActiveRecord::Migration chr(10) ) INTO ns_records; - -- use caching - - /*SELECT concat(cns.hostname, '. IN A ', cns.ipv4, '.') FROM cached_nameservers cns WHERE EXISTS ( - SELECT 1 - FROM nameservers ns - JOIN domains d ON d.id = ns.domain_id - WHERE d.name LIKE include_filter AND d.name NOT LIKE exclude_filter - AND ns.hostname = cns.hostname AND ns.ipv4 = cns.ipv4 AND ns.ipv6 = cns.ipv6 - AND ns.ipv4 IS NOT NULL AND ns.ipv4 <> '' - );*/ - -- a records SELECT array_to_string( array( - SELECT concat(ns.hostname, '. IN A ', ns.ipv4, '.') - FROM domains d - JOIN nameservers ns ON ns.domain_id = d.id - WHERE d.name LIKE include_filter AND d.name NOT LIKE exclude_filter - AND ns.ipv4 IS NOT NULL AND ns.ipv4 <> '' + SELECT concat(cns.hostname, '. IN A ', cns.ipv4, '.') FROM cached_nameservers cns WHERE EXISTS ( + SELECT 1 + FROM nameservers ns + JOIN domains d ON d.id = ns.domain_id + WHERE d.name LIKE include_filter AND d.name NOT LIKE exclude_filter + AND ns.hostname = cns.hostname AND ns.ipv4 = cns.ipv4 AND ns.ipv6 = cns.ipv6 + AND ns.ipv4 IS NOT NULL AND ns.ipv4 <> '' + ) ), chr(10) ) INTO a_records; @@ -78,11 +70,14 @@ class AddZonefileProcedure < ActiveRecord::Migration -- aaaa records SELECT array_to_string( array( - SELECT concat(ns.hostname, '. IN AAAA ', ns.ipv6, '.') - FROM domains d - JOIN nameservers ns ON ns.domain_id = d.id - WHERE d.name LIKE include_filter AND d.name NOT LIKE exclude_filter - AND ns.ipv6 IS NOT NULL AND ns.ipv6 <> '' + SELECT concat(cns.hostname, '. IN AAAA ', cns.ipv6, '.') FROM cached_nameservers cns WHERE EXISTS ( + SELECT 1 + FROM nameservers ns + JOIN domains d ON d.id = ns.domain_id + WHERE d.name LIKE include_filter AND d.name NOT LIKE exclude_filter + AND ns.hostname = cns.hostname AND ns.ipv6 = cns.ipv6 AND ns.ipv6 = cns.ipv6 + AND ns.ipv6 IS NOT NULL AND ns.ipv6 <> '' + ) ), chr(10) ) INTO a4_records; diff --git a/db/migrate/20141125111414_create_nameservers_cache.rb b/db/migrate/20141125111414_create_nameservers_cache.rb index db56cd767..f305e7e1c 100644 --- a/db/migrate/20141125111414_create_nameservers_cache.rb +++ b/db/migrate/20141125111414_create_nameservers_cache.rb @@ -1,5 +1,5 @@ class CreateNameserversCache < ActiveRecord::Migration - def change + def up create_table :cached_nameservers, id: false do |t| t.string :hostname t.string :ipv4 @@ -13,4 +13,8 @@ class CreateNameserversCache < ActiveRecord::Migration ); SQL end + + def down + drop_table :cached_nameservers + end end