comparison pkg/imports/bn.go @ 4110:861760675497 request_hist_bns

Merged default
author Sascha Wilde <wilde@intevation.de>
date Tue, 30 Jul 2019 11:30:31 +0200
parents 3d2f02c16765 af2b20d6c921
children f39d20427e89
comparison
equal deleted inserted replaced
4102:3d2f02c16765 4110:861760675497
54 (SELECT b FROM bounds ORDER BY b USING >~ FETCH FIRST ROW ONLY)) AS r) 54 (SELECT b FROM bounds ORDER BY b USING >~ FETCH FIRST ROW ONLY)) AS r)
55 INSERT INTO waterway.bottlenecks ( 55 INSERT INTO waterway.bottlenecks (
56 bottleneck_id, 56 bottleneck_id,
57 validity, 57 validity,
58 gauge_location, 58 gauge_location,
59 gauge_validity,
60 objnam, 59 objnam,
61 nobjnm, 60 nobjnm,
62 stretch, 61 stretch,
63 area, 62 area,
64 rb, 63 rb,
66 responsible_country, 65 responsible_country,
67 revisiting_time, 66 revisiting_time,
68 limiting, 67 limiting,
69 date_info, 68 date_info,
70 source_organization 69 source_organization
71 ) SELECT 70 ) VALUES (
72 $1, 71 $1,
73 validity * $2, -- intersections with gauge validity ranges 72 $2::tstzrange,
74 location, 73 isrs_fromText($3),
75 validity,
76 $4, 74 $4,
77 $5, 75 $5,
78 (SELECT r FROM r), 76 (SELECT r FROM r),
79 ISRSrange_area( 77 ISRSrange_area(
80 ISRSrange_axis((SELECT r FROM r), 78 ISRSrange_axis((SELECT r FROM r),
86 $10, 84 $10,
87 $11, 85 $11,
88 $12, 86 $12,
89 $13, 87 $13,
90 $14 88 $14
91 FROM waterway.gauges 89 )
92 WHERE location = isrs_fromText($3) AND validity && $2
93 RETURNING id 90 RETURNING id
94 ` 91 `
95 92
96 updateBottleneckSQL = ` 93 updateBottleneckSQL = `
97 WITH 94 WITH
101 (SELECT b FROM bounds ORDER BY b USING >~ FETCH FIRST ROW ONLY)) AS r) 98 (SELECT b FROM bounds ORDER BY b USING >~ FETCH FIRST ROW ONLY)) AS r)
102 UPDATE waterway.bottlenecks SET ( 99 UPDATE waterway.bottlenecks SET (
103 bottleneck_id, 100 bottleneck_id,
104 validity, 101 validity,
105 gauge_location, 102 gauge_location,
106 gauge_validity,
107 objnam, 103 objnam,
108 nobjnm, 104 nobjnm,
109 stretch, 105 stretch,
110 area, 106 area,
111 rb, 107 rb,
113 responsible_country, 109 responsible_country,
114 revisiting_time, 110 revisiting_time,
115 limiting, 111 limiting,
116 date_info, 112 date_info,
117 source_organization 113 source_organization
118 ) = ( SELECT 114 ) = (
119 $2, 115 $2,
120 validity * $3, -- intersections with gauge validity ranges 116 $3::tstzrange,
121 location, 117 isrs_fromText($4),
122 validity,
123 $5, 118 $5,
124 $6, 119 $6,
125 (SELECT r FROM r), 120 (SELECT r FROM r),
126 ISRSrange_area( 121 ISRSrange_area(
127 ISRSrange_axis((SELECT r FROM r), 122 ISRSrange_axis((SELECT r FROM r),
133 $11, 128 $11,
134 $12::smallint, 129 $12::smallint,
135 $13, 130 $13,
136 $14::timestamptz, 131 $14::timestamptz,
137 $15 132 $15
138 FROM waterway.gauges 133 )
139 WHERE location = isrs_fromText($4) AND validity && $3 )
140 WHERE id=$1 134 WHERE id=$1
141 RETURNING id 135 RETURNING id
142 ` 136 `
143 137
144 findExactMatchBottleneckSQL = ` 138 findExactMatchBottleneckSQL = `
150 SELECT id FROM waterway.bottlenecks 144 SELECT id FROM waterway.bottlenecks
151 WHERE ( 145 WHERE (
152 bottleneck_id, 146 bottleneck_id,
153 validity, 147 validity,
154 gauge_location, 148 gauge_location,
155 gauge_validity,
156 objnam, 149 objnam,
157 nobjnm, 150 nobjnm,
158 stretch, 151 stretch,
159 rb, 152 rb,
160 lb, 153 lb,
164 date_info, 157 date_info,
165 source_organization, 158 source_organization,
166 staging_done 159 staging_done
167 ) = ( SELECT 160 ) = ( SELECT
168 $1, 161 $1,
169 validity * $2, -- intersections with gauge validity ranges 162 $2::tstzrange,
170 location, 163 isrs_fromText($3),
171 validity,
172 $4, 164 $4,
173 $5, 165 $5,
174 (SELECT r FROM r), 166 (SELECT r FROM r),
175 $8, 167 $8,
176 $9, 168 $9,
178 $11::smallint, 170 $11::smallint,
179 $12, 171 $12,
180 $13::timestamptz, 172 $13::timestamptz,
181 $14, 173 $14,
182 true 174 true
183 FROM waterway.gauges
184 WHERE location = isrs_fromText($3) AND validity && $2
185 ) 175 )
186 ` 176 `
187 177
188 findMatchBottleneckSQL = ` 178 findMatchBottleneckSQL = `
189 SELECT id FROM waterway.bottlenecks 179 SELECT id FROM waterway.bottlenecks
190 WHERE ( 180 WHERE (
191 bottleneck_id, 181 bottleneck_id,
192 validity, 182 validity,
193 staging_done 183 staging_done
194 ) = ( SELECT 184 ) = (
195 $1, 185 $1,
196 validity * $2, -- intersections with gauge validity ranges 186 $2::tstzrange,
197 true 187 true
198 FROM waterway.gauges
199 WHERE location = isrs_fromText($3) AND validity && $2
200 ) 188 )
201 ` 189 `
190 // FIXME: Is this still neede wtih the new simplified historization
191 // model? My intuition is: no it isn't and should be removed, but we
192 // should double check before doing so... [sw]
193 //
202 // Alignment with gauge validity might have generated new entries 194 // Alignment with gauge validity might have generated new entries
203 // for the same time range. Thus, remove the old ones 195 // for the same time range. Thus, remove the old ones
204 deleteObsoleteBNSQL = ` 196 deleteObsoleteBNSQL = `
205 DELETE FROM waterway.bottlenecks 197 DELETE FROM waterway.bottlenecks
206 WHERE bottleneck_id = $1 AND validity <@ $2 AND id <> ALL($3) 198 WHERE bottleneck_id = $1 AND validity <@ $2 AND id <> ALL($3)
538 // exists: 530 // exists:
539 var existing_bn_id *int64 531 var existing_bn_id *int64
540 err = findMatchingBNStmt.QueryRowContext(ctx, 532 err = findMatchingBNStmt.QueryRowContext(ctx,
541 bn.Bottleneck_id, 533 bn.Bottleneck_id,
542 &validity, 534 &validity,
543 bn.Fk_g_fid,
544 ).Scan(&existing_bn_id) 535 ).Scan(&existing_bn_id)
545 switch { 536 switch {
546 case err == sql.ErrNoRows: 537 case err == sql.ErrNoRows:
547 existing_bn_id = nil 538 existing_bn_id = nil
548 case err != nil: 539 case err != nil: