From b206e1c8cbbef536f9e13831950eadd01874e262 Mon Sep 17 00:00:00 2001
From: Lubomir Bucek <lubomir.bucek@eox.at>
Date: Fri, 24 Jul 2020 10:16:47 +0200
Subject: [PATCH] change mapcache val queries to DISTINCT to catch unique
 intervals

---
 config/dem_mapcache-dev.xml   | 28 ++++++++++++++--------------
 config/dem_mapcache-ops.xml   | 28 ++++++++++++++--------------
 config/emg_mapcache-dev.xml   |  6 +++---
 config/emg_mapcache-ops.xml   |  6 +++---
 config/vhr18_mapcache-dev.xml | 24 ++++++++++++------------
 config/vhr18_mapcache-ops.xml | 24 ++++++++++++------------
 6 files changed, 58 insertions(+), 58 deletions(-)

diff --git a/config/dem_mapcache-dev.xml b/config/dem_mapcache-dev.xml
index d38deab2..031e5062 100644
--- a/config/dem_mapcache-dev.xml
+++ b/config/dem_mapcache-dev.xml
@@ -255,7 +255,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'DEM';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -277,7 +277,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'DEM';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -299,7 +299,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'DEM_COP-DEM_EEA-10-DGED';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_EEA-10-DGED' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_EEA-10-DGED' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -321,7 +321,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'DEM_COP-DEM_EEA-10-DGED';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_EEA-10-DGED' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_EEA-10-DGED' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -343,7 +343,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'DEM_COP-DEM_EEA-10-INSP';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_EEA-10-INSP' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_EEA-10-INSP' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -365,7 +365,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'DEM_COP-DEM_EEA-10-INSP';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_EEA-10-INSP' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_EEA-10-INSP' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -387,7 +387,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'DEM_COP-DEM_GLO-30-DTED';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_GLO-30-DTED' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_GLO-30-DTED' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -409,7 +409,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'DEM_COP-DEM_GLO-30-DTED';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_GLO-30-DTED' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_GLO-30-DTED' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -431,7 +431,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'DEM_COP-DEM_GLO-30-DGED';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_GLO-30-DGED' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_GLO-30-DGED' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -453,7 +453,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'DEM_COP-DEM_GLO-30-DGED';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_GLO-30-DGED' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_GLO-30-DGED' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -475,7 +475,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'DEM_COP-DEM_GLO-90-DGED';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_GLO-90-DGED' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_GLO-90-DGED' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -497,7 +497,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'DEM_COP-DEM_GLO-90-DGED';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_GLO-90-DGED' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_GLO-90-DGED' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -519,7 +519,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'DEM_COP-DEM_GLO-90-DTED';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_GLO-90-DTED' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_GLO-90-DTED' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -541,7 +541,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'DEM_COP-DEM_GLO-90-DTED';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_GLO-90-DTED' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'DEM_COP-DEM_GLO-90-DTED' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
diff --git a/config/dem_mapcache-ops.xml b/config/dem_mapcache-ops.xml
index 52f96024..a2a9db50 100644
--- a/config/dem_mapcache-ops.xml
+++ b/config/dem_mapcache-ops.xml
@@ -262,7 +262,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'DEM';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
         </validate_query>
       </dimension>
     </dimensions>
@@ -285,7 +285,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'DEM';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
         </validate_query>
       </dimension>
     </dimensions>
@@ -308,7 +308,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'DEM_COP-DEM_EEA-10-DGED';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_EEA-10-DGED' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_EEA-10-DGED' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
         </validate_query>
       </dimension>
     </dimensions>
@@ -331,7 +331,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'DEM_COP-DEM_EEA-10-DGED';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_EEA-10-DGED' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_EEA-10-DGED' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
         </validate_query>
       </dimension>
     </dimensions>
@@ -354,7 +354,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'DEM_COP-DEM_EEA-10-INSP';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_EEA-10-INSP' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_EEA-10-INSP' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
         </validate_query>
       </dimension>
     </dimensions>
@@ -377,7 +377,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'DEM_COP-DEM_EEA-10-INSP';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_EEA-10-INSP' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_EEA-10-INSP' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
         </validate_query>
       </dimension>
     </dimensions>
@@ -400,7 +400,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-30-DTED';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-30-DTED' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-30-DTED' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
         </validate_query>
       </dimension>
     </dimensions>
@@ -423,7 +423,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-30-DTED';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-30-DTED' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-30-DTED' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
         </validate_query>
       </dimension>
     </dimensions>
@@ -446,7 +446,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-30-DGED';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-30-DGED' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-30-DGED' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
         </validate_query>
       </dimension>
     </dimensions>
@@ -469,7 +469,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-30-DGED';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-30-DGED' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-30-DGED' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
         </validate_query>
       </dimension>
     </dimensions>
@@ -492,7 +492,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-90-DGED';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-90-DGED' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-90-DGED' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
         </validate_query>
       </dimension>
     </dimensions>
@@ -515,7 +515,7 @@
       <dimension type="postresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-90-DGED';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-90-DGED' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-90-DGED' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
         </validate_query>
       </dimension>
     </dimensions>
@@ -538,7 +538,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-90-DTED';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-90-DTED' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-90-DTED' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
         </validate_query>
       </dimension>
     </dimensions>
@@ -561,7 +561,7 @@
       <dimension type="postgresql" name="time" default="2011/2012" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-90-DTED';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-90-DTED' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'DEM_COP-DEM_GLO-90-DTED' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;
         </validate_query>
       </dimension>
     </dimensions>
diff --git a/config/emg_mapcache-dev.xml b/config/emg_mapcache-dev.xml
index c8e0da98..41f44167 100644
--- a/config/emg_mapcache-dev.xml
+++ b/config/emg_mapcache-dev.xml
@@ -111,7 +111,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'Emergency';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'Emergency' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'Emergency' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -133,7 +133,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'Emergency';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'Emergency' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'Emergency' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -155,7 +155,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'Emergency';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'Emergency' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'Emergency' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
diff --git a/config/emg_mapcache-ops.xml b/config/emg_mapcache-ops.xml
index f2f930f4..1a38d7bd 100644
--- a/config/emg_mapcache-ops.xml
+++ b/config/emg_mapcache-ops.xml
@@ -118,7 +118,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'Emergency';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'Emergency' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'Emergency' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -140,7 +140,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'Emergency';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'Emergency' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'Emergency' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -162,7 +162,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'Emergency';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'Emergency' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'Emergency' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
diff --git a/config/vhr18_mapcache-dev.xml b/config/vhr18_mapcache-dev.xml
index fecabba6..a06b9370 100644
--- a/config/vhr18_mapcache-dev.xml
+++ b/config/vhr18_mapcache-dev.xml
@@ -124,7 +124,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'VHR_IMAGE_2018';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -146,7 +146,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'VHR_IMAGE_2018';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -168,7 +168,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'VHR_IMAGE_2018';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -190,7 +190,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'VHR_IMAGE_2018';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -269,7 +269,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'VHR_IMAGE_2018_Level_1';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018_Level_1' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018_Level_1' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -291,7 +291,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'VHR_IMAGE_2018_Level_1';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018_Level_1' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018_Level_1' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -313,7 +313,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'VHR_IMAGE_2018_Level_1';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018_Level_1' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018_Level_1' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -335,7 +335,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'VHR_IMAGE_2018_Level_1';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018_Level_1' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018_Level_1' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -438,7 +438,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'VHR_IMAGE_2018_Level_3';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018_Level_3' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018_Level_3' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -460,7 +460,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'VHR_IMAGE_2018_Level_3';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018_Level_3' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018_Level_3' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -482,7 +482,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'VHR_IMAGE_2018_Level_3';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018_Level_3' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018_Level_3' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -504,7 +504,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(mapcache_items."begin_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(mapcache_items."end_time"), 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM mapcache_items WHERE mapcache_items."collection" = 'VHR_IMAGE_2018_Level_3';</list_query>
-        <validate_query>SELECT * FROM (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018_Level_3' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT interval FROM mapcache_items WHERE (mapcache_items."collection" = 'VHR_IMAGE_2018_Level_3' AND ((mapcache_items."begin_time" &lt; to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt; to_timestamp(:start_timestamp)) or (mapcache_items."begin_time" = mapcache_items."end_time" AND mapcache_items."begin_time" &lt;= to_timestamp(:end_timestamp) AND mapcache_items."end_time" &gt;= to_timestamp(:start_timestamp)))) AND mapcache_items."footprint" &amp;&amp; ST_MakeEnvelope(:minx, :miny, :maxx, :maxy, 4326) ORDER BY mapcache_items."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
diff --git a/config/vhr18_mapcache-ops.xml b/config/vhr18_mapcache-ops.xml
index d61ec651..73fa139c 100644
--- a/config/vhr18_mapcache-ops.xml
+++ b/config/vhr18_mapcache-ops.xml
@@ -139,7 +139,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'VHR_IMAGE_2018';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -161,7 +161,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'VHR_IMAGE_2018';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -183,7 +183,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'VHR_IMAGE_2018';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -205,7 +205,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'VHR_IMAGE_2018';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -284,7 +284,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_1';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_1' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_1' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -306,7 +306,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_1';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_1' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_1' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -328,7 +328,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_1';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_1' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_1' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -350,7 +350,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_1';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_1' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_1' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -465,7 +465,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_3';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_3' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_3' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -487,7 +487,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_3';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_3' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_3' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -509,7 +509,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_3';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_3' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_3' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
@@ -531,7 +531,7 @@
       <dimension type="postgresql" name="time" default="2017/2019" time="true" unit="ISO8601">
         <connection>host={{DB_HOST}} user={{DB_USER}} password={{DB_PW}} dbname={{DB_NAME}} port={{DB_PORT}}</connection>
         <list_query>SELECT CONCAT(to_char(MIN(T5."begin_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(MAX(T5."end_time"),'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE "coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_3';</list_query>
-        <validate_query>SELECT * FROM (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_3' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
+        <validate_query>SELECT DISTINCT interval (SELECT CONCAT(to_char(T5."begin_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'), CONCAT('/', to_char(T5."end_time",'YYYY-MM-DD"T"HH24:MI:SS"Z"'))) AS "interval" FROM "coverages_product" INNER JOIN "coverages_product_collections" ON ("coverages_product"."eoobject_ptr_id" = "coverages_product_collections"."product_id") INNER JOIN "coverages_collection" ON ("coverages_product_collections"."collection_id" = "coverages_collection"."eoobject_ptr_id") INNER JOIN "coverages_eoobject" ON ("coverages_collection"."eoobject_ptr_id" = "coverages_eoobject"."id") INNER JOIN "coverages_eoobject" T5 ON ("coverages_product"."eoobject_ptr_id" = T5."id") WHERE ("coverages_eoobject"."identifier" = 'VHR_IMAGE_2018_Level_3' AND ((T5."begin_time" &lt; to_timestamp(:end_timestamp) AND T5."end_time" &gt; to_timestamp(:start_timestamp)) or (T5."begin_time" = T5."end_time" AND T5."begin_time" &lt;= to_timestamp(:end_timestamp) AND T5."end_time" &gt;= to_timestamp(:start_timestamp)))) AND T5."footprint" &amp;&amp; ST_MakeEnvelope(:minx,:miny,:maxx,:maxy,4326) ORDER BY T5."end_time" DESC LIMIT 100) AS sub ORDER BY interval ASC;</validate_query>
       </dimension>
     </dimensions>
   </tileset>
-- 
GitLab