[PATCH] Datacage config: Oracle has no boolean data type and thus can not handle such CASE-statement in WHERE-clause
Wald Commits
scm-commit at wald.intevation.org
Tue Dec 2 12:59:55 CET 2014
# HG changeset patch
# User Tom Gottfried <tom at intevation.de>
# Date 1417521592 -3600
# Node ID 3e5d69e143e969828d5774595b091f5727b6b77a
# Parent d0719e98a9dacc29e62a993af03d7fc83970e0dc
Datacage config: Oracle has no boolean data type and thus can not handle such CASE-statement in WHERE-clause.
diff -r d0719e98a9da -r 3e5d69e143e9 artifacts/doc/conf/meta-data.xml
--- a/artifacts/doc/conf/meta-data.xml Tue Dec 02 12:03:50 2014 +0100
+++ b/artifacts/doc/conf/meta-data.xml Tue Dec 02 12:59:52 2014 +0100
@@ -1042,10 +1042,7 @@
<dc:variable name="stop" type="number"
expr="dc:date-format('yyyyMMdd',
number(substring-after($year_range, ';')))"/>
- <dc:variable name="refgauge" type="number"
- expr="dc:get('reference_gauge')"/>
- <dc:context>
- <dc:call-macro name="discharge_curves"/>
+ <dc:call-macro name="discharge_curve_choose_context">
<dc:filter expr="$kind = 1 and
number(dc:date-format('yyyyMMdd', $start_time))
< $stop and
@@ -1053,14 +1050,11 @@
> $start">
<dc:call-macro name="hist_discharge_factory"/>
</dc:filter>
- </dc:context>
+ </dc:call-macro>
</dc:macro>
<dc:macro name="discharge_table_gauge">
- <dc:variable name="refgauge" type="number"
- expr="dc:get('reference_gauge')"/>
- <dc:context>
- <dc:call-macro name="discharge_curves"/>
+ <dc:call-macro name="discharge_curve_choose_context">
<dc:filter expr="$kind = 0">
<dc:group expr="$gauge_name">
<gauge name="{dc:group-key()}">
@@ -1071,14 +1065,11 @@
</gauge>
</dc:group>
</dc:filter>
- </dc:context>
+ </dc:call-macro>
</dc:macro>
<dc:macro name="historical_discharge_curve">
- <dc:variable name="refgauge" type="number"
- expr="dc:get('reference_gauge')"/>
- <dc:context>
- <dc:call-macro name="discharge_curves"/>
+ <dc:call-macro name="discharge_curve_choose_context">
<dc:filter expr="$kind = 1">
<historical_discharge_curves>
<dc:group expr="$gauge_name">
@@ -1088,10 +1079,29 @@
</dc:group>
</historical_discharge_curves>
</dc:filter>
- </dc:context>
+ </dc:call-macro>
</dc:macro>
- <dc:macro name="discharge_curves">
+ <dc:macro name="discharge_curve_choose_context">
+ <dc:choose>
+ <dc:when test="$fromkm > -99999 and $tokm < 99999">
+ <dc:context>
+ <dc:call-macro name="discharge_curves_km"/>
+ <dc:macro-body/>
+ </dc:context>
+ </dc:when>
+ <dc:otherwise>
+ <dc:variable name="refgauge" type="number"
+ expr="dc:get('reference_gauge')"/>
+ <dc:context>
+ <dc:call-macro name="discharge_curves_refgauge"/>
+ <dc:macro-body/>
+ </dc:context>
+ </dc:otherwise>
+ </dc:choose>
+ </dc:macro>
+
+ <dc:macro name="discharge_curves_km">
<dc:statement>
SELECT g.name AS gauge_name,
dt.id AS dt_id,
@@ -1103,13 +1113,29 @@
JOIN discharge_tables dt ON g.id = dt.gauge_id
LEFT JOIN time_intervals t ON dt.time_interval_id = t.id
WHERE g.river_id = ${river_id}
- AND CASE WHEN ${fromkm} > -99999 AND ${tokm} < 99999
- THEN g.station BETWEEN ${fromkm} AND ${tokm}
- ELSE g.official_number = ${refgauge} END
+ AND g.station BETWEEN ${fromkm} AND ${tokm}
ORDER BY start_time
</dc:statement>
</dc:macro>
+ <dc:macro name="discharge_curves_refgauge">
+ <dc:statement>
+ SELECT g.name AS gauge_name,
+ dt.id AS dt_id,
+ t.start_time AS start_time,
+ t.stop_time AS stop_time,
+ dt.bfg_id AS bfg_id,
+ dt.kind AS kind
+ FROM gauges g
+ JOIN discharge_tables dt ON g.id = dt.gauge_id
+ LEFT JOIN time_intervals t ON dt.time_interval_id = t.id
+ WHERE g.river_id = ${river_id}
+ AND g.official_number = ${refgauge}
+ ORDER BY start_time
+ </dc:statement>
+ </dc:macro>
+
+ <!-- Cross sections -->
<dc:macro name="cross_sections">
<cross_sections id="flood-protections-{$river_id}">
<dc:context connection="system">
More information about the Dive4Elements-commits
mailing list